From 9c53d4df491e3c383c0d02daba8c8ea36f3db577 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Sun, 30 Nov 2008 18:08:27 +0800 Subject: [PATCH] Remove jumbo frame support for 8169; it never works (except slow ping) and pullute the TX path a lot. --- sys/dev/netif/re/if_re.c | 60 +------------------------------------ sys/dev/netif/re/if_revar.h | 4 --- 2 files changed, 1 insertion(+), 63 deletions(-) diff --git a/sys/dev/netif/re/if_re.c b/sys/dev/netif/re/if_re.c index dee72f0f01..a2a018b70b 100644 --- a/sys/dev/netif/re/if_re.c +++ b/sys/dev/netif/re/if_re.c @@ -199,7 +199,7 @@ static const struct re_hwrev re_hwrevs[] = { { RE_HWREV_8139CPLUS, RE_MACVER_UNKN, ETHERMTU, RE_C_HWCSUM | RE_C_8139CP }, - { RE_HWREV_8169, RE_MACVER_UNKN, RE_MTU_6K, + { RE_HWREV_8169, RE_MACVER_UNKN, ETHERMTU, RE_C_HWCSUM | RE_C_8169 }, { RE_HWREV_8110S, RE_MACVER_03, RE_MTU_6K, @@ -968,15 +968,11 @@ re_probe(device_t dev) sc->re_macver = hw_rev->re_macver; sc->re_caps = hw_rev->re_caps; sc->re_maxmtu = hw_rev->re_maxmtu; - sc->re_swcsum_lim = RE_SWCSUM_UNLIMITED; /* * Apply chip property fixup */ switch (sc->re_hwrev) { - case RE_HWREV_8169: - sc->re_swcsum_lim = RE_SWCSUM_LIM_8169; - break; case RE_HWREV_8101E1: case RE_HWREV_8101E2: if (macmode == 0) @@ -2365,60 +2361,6 @@ re_encap(struct re_softc *sc, struct mbuf **m_head, int *idx0) else ctl_csum = 0; - if (m->m_pkthdr.len > sc->re_swcsum_lim && - (m->m_pkthdr.csum_flags & (CSUM_DELAY_IP | CSUM_DELAY_DATA))) { - struct ether_header *eh; - struct ip *ip; - u_short offset; - - m = m_pullup(m, sizeof(struct ether_header *)); - if (m == NULL) { - *m_head = NULL; - return ENOBUFS; - } - eh = mtod(m, struct ether_header *); - - /* XXX */ - if (eh->ether_type == ETHERTYPE_VLAN) - offset = sizeof(struct ether_vlan_header); - else - offset = sizeof(struct ether_header); - - m = m_pullup(m, offset + sizeof(struct ip *)); - if (m == NULL) { - *m_head = NULL; - return ENOBUFS; - } - ip = (struct ip *)(mtod(m, uint8_t *) + offset); - - if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) { - u_short csum; - - offset += IP_VHL_HL(ip->ip_vhl) << 2; - csum = in_cksum_skip(m, ntohs(ip->ip_len), offset); - if (m->m_pkthdr.csum_flags & CSUM_UDP && csum == 0) - csum = 0xffff; - offset += m->m_pkthdr.csum_data; /* checksum offset */ - *(u_short *)(m->m_data + offset) = csum; - - m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA; - } - if (m->m_pkthdr.csum_flags & CSUM_DELAY_IP) { - ip->ip_sum = 0; - if (ip->ip_vhl == IP_VHL_BORING) { - ip->ip_sum = in_cksum_hdr(ip); - } else { - ip->ip_sum = - in_cksum(m, IP_VHL_HL(ip->ip_vhl) << 2); - } - m->m_pkthdr.csum_flags &= ~CSUM_DELAY_IP; - } - *m_head = m; /* 'm' may be changed by above two m_pullup() */ - - /* Clear hardware CSUM flags */ - cmd_csum = ctl_csum = 0; - } - if ((sc->re_caps & RE_C_AUTOPAD) == 0) { /* * With some of the RealTek chips, using the checksum offload diff --git a/sys/dev/netif/re/if_revar.h b/sys/dev/netif/re/if_revar.h index a9a0a45938..f73a49a9ac 100644 --- a/sys/dev/netif/re/if_revar.h +++ b/sys/dev/netif/re/if_revar.h @@ -71,9 +71,6 @@ #define RE_FRAMELEN_9K RE_FRAMELEN(RE_MTU_9K) #define RE_FRAMELEN_MAX RE_FRAMELEN_9K -#define RE_SWCSUM_LIM_8169 2038 -#define RE_SWCSUM_UNLIMITED 65536 /* XXX should be enough */ - #define RE_BUF_ALIGN 8 #define RE_JBUF_SIZE roundup2(RE_FRAMELEN_MAX, RE_BUF_ALIGN) @@ -178,7 +175,6 @@ struct re_softc { uint32_t re_rxlenmask; int re_txstart; int re_eewidth; - int re_swcsum_lim; int re_maxmtu; int re_rx_desc_cnt; int re_tx_desc_cnt; -- 2.41.0