tested on em0 at pci0 dev 25 function 0 "Intel 82579LM" rev 0x05: msi, address 00:25:90:27:da:51 em1 at pci6 dev 0 function 0 "Intel PRO/1000 MT (82574L)" rev 0x00: msi, address 00:25:90:27:da:50
hwfeatures=36<CSUM_TCPv4,CSUM_UDPv4,VLAN_MTU,VLAN_HWTAGGING> on both On 4 nov 2012, at 15:52, Brad Smith <b...@comstyle.com> wrote: > On Sat, Nov 03, 2012 at 09:49:02PM +0000, Christian Weisgerber wrote: >> Like bge(4), we previously couldn't enable TCP/UDP transmit checksum >> offload on em(4). We can now. >> >> Works fine here on >> em0 at pci1 dev 1 function 0 "Intel PRO/1000MT (82540EM)" rev 0x02 >> and with VLAN on >> em0 at pci5 dev 0 function 0 "Intel PRO/1000 MT (82574L)" rev 0x00 >> >> Does anybody see any value in keeping the #ifdef around? > > Updated diff to disable with hw with known broken driver support. > > > Index: if_em.c > =================================================================== > RCS file: /home/cvs/src/sys/dev/pci/if_em.c,v > retrieving revision 1.267 > diff -u -p -r1.267 if_em.c > --- if_em.c 16 Aug 2012 09:31:53 -0000 1.267 > +++ if_em.c 4 Nov 2012 14:20:30 -0000 > @@ -211,10 +211,8 @@ int em_rxfill(struct em_softc *); > void em_rxeof(struct em_softc *); > void em_receive_checksum(struct em_softc *, struct em_rx_desc *, > struct mbuf *); > -#ifdef EM_CSUM_OFFLOAD > void em_transmit_checksum_setup(struct em_softc *, struct mbuf *, > u_int32_t *, u_int32_t *); > -#endif > void em_iff(struct em_softc *); > #ifdef EM_DEBUG > void em_print_hw_stats(struct em_softc *); > @@ -1121,14 +1119,10 @@ em_encap(struct em_softc *sc, struct mbu > if (map->dm_nsegs > sc->num_tx_desc_avail - 2) > goto fail; > > -#ifdef EM_CSUM_OFFLOAD > if (sc->hw.mac_type >= em_82543) > em_transmit_checksum_setup(sc, m_head, &txd_upper, &txd_lower); > else > txd_upper = txd_lower = 0; > -#else > - txd_upper = txd_lower = 0; > -#endif > > i = sc->next_avail_tx_desc; > if (sc->pcix_82544) > @@ -1853,10 +1847,9 @@ em_setup_interface(struct em_softc *sc) > ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING; > #endif > > -#ifdef EM_CSUM_OFFLOAD > - if (sc->hw.mac_type >= em_82543) > - ifp->if_capabilities |= IFCAP_CSUM_TCPv4|IFCAP_CSUM_UDPv4; > -#endif > + if (sc->hw.mac_type >= em_82543 && sc->hw.mac_type != em_82575 && > + sc->hw.mac_type != em_82580 && sc->hw.mac_type != em_i350) > + ifp->if_capabilities |= IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv4; > > /* > * Specify the media types supported by this adapter and register > @@ -2275,7 +2268,6 @@ em_free_transmit_structures(struct em_so > sc->txtag = NULL; > } > > -#ifdef EM_CSUM_OFFLOAD > /********************************************************************* > * > * The offload context needs to be set when we transfer the first > @@ -2356,7 +2348,6 @@ em_transmit_checksum_setup(struct em_sof > sc->num_tx_desc_avail--; > sc->next_avail_tx_desc = curr_txd; > } > -#endif /* EM_CSUM_OFFLOAD */ > > /********************************************************************** > * > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean.