Hi Alexandre, Thanks. Your patch looks good to me. I assume you have tested it? I will commit that to stable/11.
The issue you report on stable/12 is more worrisome. The 'no space in TX ring' condition (head==cur==tail) is ok per-se: on a subsequent poll() wakeup (e.g. TX interrupt) or explicit ioctl(NIOCTXSYNC) you should see tail moving forward, therefore freeing some space to be used in the ring. However, the ring_reinit means that something is going wrong: either your application is using the TX ring incorrectly, or there is a bug in the netmap iflib code. Since FreeBSD 12, netmap support is provided by iflib, while before netmap support was provided directly by the ixl driver. In any case, it would probably help if you could provide some more detailed info (how to reproduce the problem). Cheers, Vincenzo Il giorno mar 24 mar 2020 alle ore 15:12 Alexandre Snarskii < s...@snar.spb.ru> ha scritto: > On Tue, Mar 24, 2020 at 03:37:36PM +0300, Alexandre Snarskii wrote: > > > > Hi! > > > > Long story short: looks like intel x722 does not by default add CRC to > > outbound frames, so with FreeBSD 11-stable netmap-generated traffic is > > dropped on the next port.. Fix is simple, attached. > > ... add missing attach :( > > > > > The same behaviour of 'unconditionally ask card to compute crc' can > > be found in both if_ixl: > > > https://svnweb.freebsd.org/base/stable/11/sys/dev/ixl/ixl_txrx.c?view=markup#l408 > > and in DPDK i40e driver: > > > https://github.com/DPDK/dpdk/blob/master/drivers/net/i40e/i40e_rxtx.c#L1105 > > so, I guess, it's safe. > > > > PS: of course, first idea was to upgrade to FreeBSD 12-stable, but while > > this upgrade solved the crc problem, this version shows 'stalled tx > queue' > > problem: after CTXSYNC tail == head == cur, 'no space in ring' > condition. > > Attempts to ignore this condition led to continuous ring resets in > txcsync: > > > > Mar 17 20:21:08 host kernel: 668.224836 [1679] nm_txsync_prologue > ixl1 TX3: fail 'head < kring->rhead || head > kring->rtail' h 136 c 136 t > 135 rh 135 rc 135 rt 135 hc 135 ht 135 > > Mar 17 20:21:08 host kernel: 668.238300 [1787] netmap_ring_reinit > called for ixl1 TX3 > > > > PPS: hardware details: Dell VEP4600, based on Xeon D-2100 with > > two onboard X722 ports (actually, four, but two of them are not > > wired). > > > > CPU: Intel(R) Xeon(R) D-2187NT CPU @ 2.00GHz (2000.06-MHz K8-class CPU) > > Origin="GenuineIntel" Id=0x50654 Family=0x6 Model=0x55 Stepping=4 > > > > ixl0: <Intel(R) Ethernet Connection 700 Series PF Driver, Version - > 1.11.9-k> mem 0xfa000000-0xfaffffff,0xfb018000-0xfb01ffff irq 11 at device > 0.0 numa-domain 0 on pci12 > > ixl0: using 1024 tx descriptors and 1024 rx descriptors > > ixl0: fw 3.1.57069 api 1.5 nvm 3.33 etid 80001007 oem 1.263.0 > > ixl0: PF-ID[0]: VFs 32, MSIX 129, VF MSIX 5, QPs 384, I2C > > ixl0: Using MSIX interrupts with 9 vectors > > ixl0: Allocating 8 queues for PF LAN VSI; 8 queues active > > ixl0: Ethernet address: 3c:2c:30:30:59:85 > > ixl0: SR-IOV ready > > ixl0: netmap queues/slots: TX 8/1024, RX 8/1024 > > > > ixl0@pci0:184:0:0: class=0x020000 card=0x00008086 chip=0x37d38086 > rev=0x04 hdr=0x00 > > vendor = 'Intel Corporation' > > device = 'Ethernet Connection X722 for 10GbE SFP+' > > class = network > > subclass = ethernet > > > > > > _______________________________________________ > > 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" > _______________________________________________ > 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" > _______________________________________________ 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"