> On 11 Jan 2017, at 18:44, Sean Bruno <sbr...@freebsd.org> wrote: > > > > On 01/11/17 10:24, Michael Tuexen wrote: >>> On 10 Jan 2017, at 04:32, Sean Bruno <sbr...@freebsd.org> wrote: >>> >>> tl;dir --> you get to keep your igbX devices(thanks jhb), no POLA >>> violations this week. >>> >>> I've updated sys/dev/e1000 at svn R311849 to match Matt Macy's work on >>> IFLIB in the kernel. >>> >>> At this point, the driver deviates from Intel's code dramatically and >>> you now get to yell directly into the freebsd-net@ megaphone for things >>> that I may have broken. >> My testing shows that sending SCTP/IPv4, SCTP/IPv6, TCP/IPv6, and UDP/IPV6 >> is broken since the checksum offload doesn't work. >> >> The following patch fixes the issue: >> >> Index: if_em.h >> =================================================================== >> --- if_em.h (revision 311887) >> +++ if_em.h (working copy) >> @@ -330,7 +330,7 @@ >> #define EM_MSIX_LINK 0x01000000 /* For 82574 use */ >> #define ETH_ZLEN 60 >> #define ETH_ADDR_LEN 6 >> -#define CSUM_OFFLOAD 7 /* Offload bits in mbuf flag */ >> +#define CSUM_OFFLOAD 0xE0F /* Offload bits in mbuf flag */ >> >> #define IGB_PKTTYPE_MASK 0x0000FFF0 >> #define IGB_DMCTLX_DCFLUSH_DIS 0x80000000 /* Disable DMA Coalesce Flush */ >> >> The magic number 7 is CSUM_IP | CSUM_IP_UDP | CSUM_IP_TCP, which means >> that checksum offloading is working for TCP/IPv4 and UDP/IPv4. >> It should be 0xE0F, which is >> CSUM_IP | CSUM_IP_UDP | CSUM_IP_TCP | CSUM_IP_SCTP | CSUM_IP6_UDP | >> CSUM_IP6_TCP | CSUM_IP6_SCTP. >> >> I have tested the above patch with an igb card which supports all these >> offloads. >> >> Best regards >> Michael >>> >>> man page updates are coming up next. Please let us know if this >>> revision has made things better, worse or none-of-the above on whatever >>> Intel Gigabit NIC you happen to have lying around. >>> >>> sean >>> >>> On 01/05/17 20:18, Sean Bruno wrote: >>>> tl;dr --> igbX devices will become emX devices >>>> >>>> We're about to commit an update to sys/dev/e1000 that will implement and >>>> activate IFLIB for em(4), lem(4) & igb(4) and would appreciate all folks >>>> who can test and poke at the drivers to do so this week. This will have >>>> some really great changes for performance and standardization that have >>>> been bouncing around inside of various FreeBSD shops that have been >>>> collaborating with Matt Macy over the last year. >>>> >>>> This will implement multiple queues for certain em(4) devices that are >>>> capable of such things and add some new sysctl's for you to poke at in >>>> your monitoring tools. >>>> >>>> Due to limitations of device registration, igbX devices will become emX >>>> devices. So, you'll need to make a minor update to your rc.conf and >>>> scripts that manipulate the network devices. >>>> >>>> UPDATING will be bumped to reflect these changes. >>>> >>>> MFC to stable/11 will have a legacy implementation that doesn't use >>>> IFLIB for compatibility reasons. >>>> >>>> A documentation and man page update will follow in the next few days >>>> explaining how to work with the changed driver. >>>> >>>> sean >>>> >>>> bcc net@ current@ re@ >>>> >>>> >>>> >>>> >>>> >>> >> >> > > > Bah, last one was wrong bits. Try this one. > > Index: em_txrx.c > =================================================================== > --- em_txrx.c (revision 311875) > +++ em_txrx.c (working copy) > @@ -304,7 +304,7 @@ > if (do_tso) { > i = em_tso_setup(sc, pi, &txd_upper, &txd_lower); > tso_desc = TRUE; > - } else if (csum_flags & CSUM_OFFLOAD) { > + } else if (csum_flags & EM_CSUM_OFFLOAD) { > i = em_transmit_checksum_setup(sc, pi, &txd_upper, &txd_lower); > } > > Index: if_em.h > =================================================================== > --- if_em.h (revision 311875) > +++ if_em.h (working copy) > @@ -330,7 +330,8 @@ > #define EM_MSIX_LINK 0x01000000 /* For 82574 use */ > #define ETH_ZLEN 60 > #define ETH_ADDR_LEN 6 > -#define CSUM_OFFLOAD 7 /* Offload bits in mbuf flag */ > +#define EM_CSUM_OFFLOAD 7 /* Offload bits in mbuf flag */ > +#define IGB_CSUM_OFFLOAD 0x0E0F /* Offload bits in mbuf flag */ > > #define IGB_PKTTYPE_MASK 0x0000FFF0 > #define IGB_DMCTLX_DCFLUSH_DIS 0x80000000 /* Disable DMA Coalesce > Flush */ > Index: igb_txrx.c > =================================================================== > --- igb_txrx.c (revision 311875) > +++ igb_txrx.c (working copy) > @@ -171,7 +171,7 @@ > */ > if (pi->ipi_mflags & M_VLANTAG) { > vlan_macip_lens |= (pi->ipi_vtag << E1000_ADVTXD_VLAN_SHIFT); > - } else if ((pi->ipi_csum_flags & CSUM_OFFLOAD) == 0) { > + } else if ((pi->ipi_csum_flags & IGB_CSUM_OFFLOAD) == 0) { > return (0); > } Looks good to me...
Best regards Michael > > _______________________________________________ freebsd-net@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"