On 22.10.2021. 11:25, Jan Klemkow wrote: > Hi, > > this diff add hardware checksum offloading for the receive path of > ixl(4) interfaces. > > Tested on: > ixl1 at pci3 dev 0 function 1 "Intel X710 SFP+" rev 0x02: port 1, FW > 6.0.48442 API 1.7, msix, 8 queues, address 40:a6:b7:02:38:3d > > OK? >
Hi, I've applied this diff and i can't see anything regarding offload with ifconfig ixl hwfeatures? smc24# ifconfig ixl0 hwfeatures ixl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 hwfeatures=10<VLAN_MTU> hardmtu 9712 lladdr 3c:fd:fe:04:0d:64 index 7 priority 0 llprio 3 media: Ethernet autoselect (10GSFP+Cu full-duplex) status: active inet 192.168.15.1 netmask 0xffffff00 broadcast 192.168.15.255 smc24# dmesg | grep ixl ixl0 at pci21 dev 0 function 0 "Intel X710 SFP+" rev 0x01: port 0, FW 8.2.64244 API 1.13, msix, 8 queues, address 3c:fd:fe:04:0d:64 ixl1 at pci21 dev 0 function 1 "Intel X710 SFP+" rev 0x01: port 1, FW 8.2.64244 API 1.13, msix, 8 queues, address 3c:fd:fe:04:0d:66 > Index: dev/pci/if_ixl.c > =================================================================== > RCS file: /cvs/src/sys/dev/pci/if_ixl.c,v > retrieving revision 1.75 > diff -u -p -r1.75 if_ixl.c > --- dev/pci/if_ixl.c 23 Jul 2021 00:29:14 -0000 1.75 > +++ dev/pci/if_ixl.c 22 Oct 2021 09:20:59 -0000 > @@ -1388,6 +1388,7 @@ static int ixl_rxeof(struct ixl_softc *, > static void ixl_rxfill(struct ixl_softc *, struct ixl_rx_ring *); > static void ixl_rxrefill(void *); > static int ixl_rxrinfo(struct ixl_softc *, struct if_rxrinfo *); > +static void ixl_rx_checksum(struct mbuf *, uint64_t); > > #if NKSTAT > 0 > static void ixl_kstat_attach(struct ixl_softc *); > @@ -3190,6 +3191,7 @@ ixl_rxeof(struct ixl_softc *sc, struct i > m->m_pkthdr.csum_flags |= M_FLOWID; > } > > + ixl_rx_checksum(m, word); > ml_enqueue(&ml, m); > } else { > ifp->if_ierrors++; /* XXX */ > @@ -3320,6 +3322,23 @@ ixl_rxrinfo(struct ixl_softc *sc, struct > free(ifr, M_TEMP, ixl_nqueues(sc) * sizeof(*ifr)); > > return (rv); > +} > + > +static void > +ixl_rx_checksum(struct mbuf *m, uint64_t word) > +{ > + if (!ISSET(word, IXL_RX_DESC_L3L4P)) > + return; > + > + if (ISSET(word, IXL_RX_DESC_IPE)) > + return; > + > + m->m_pkthdr.csum_flags |= M_IPV4_CSUM_IN_OK; > + > + if (ISSET(word, IXL_RX_DESC_L4E)) > + return; > + > + m->m_pkthdr.csum_flags |= M_TCP_CSUM_IN_OK | M_UDP_CSUM_IN_OK; > } > > static int >