Use extended RX descriptor format
This is not committable, but it demonstrates the implementation.
So here's the deal, the MQ implementation is still not working right even with the extended descriptors.
The card continuously increments recv_no_buff when using 2 queues on this card and I can't for the life of me figure out why it is having issues here. Its as though it thinks one of the queues is full but the driver thinks that queue is fine.
Add diagnostic printf's for mrq/rss_hash to display and verify that
the rx interrupt thread/queue is processing a packet that should have
been hashed correctly. This debug printf shows that packets are being
processed by the wrong queue and sometimes indicate non-existent queues.
If there are any specific test cases to check I would be glad to run them. Otherwise r289897M with just this patch applies behaves just fine on the two pieces of hardware below.
Supermicro X9SCM with an Intel 82579LM and 82574L
em0: <Intel(R) PRO/1000 Network Connection 7.4.2> port 0xf020-0xf03f mem 0xfba00000-0xfba1ffff,0xfba24000-0xfba24fff irq 20 at device 25.0 on pci0 em0: Using an MSI interrupt em0: Ethernet address: 00:25:90:xx:xx:xx em0: netmap queues/slots: TX 1/1024, RX 1/1024 ... em1: <Intel(R) PRO/1000 Network Connection 7.4.2> port 0xe000-0xe01f mem 0xfb900000-0xfb91ffff,0xfb920000-0xfb923fff irq 16 at device 0.0 on pci5 em1: Using MSIX interrupts with 3 vectors em1: Ethernet address: 00:25:90:xx:xx:xx em1: netmap queues/slots: TX 1/1024, RX 1/1024
Soekris 6501 with 4x Intel 82574L
em0: <Intel(R) PRO/1000 Network Connection 7.4.2> port 0x2000-0x201f mem 0xa1000000-0xa101ffff,0xa1020000-0xa1023fff irq 19 at device 0.0 on pci5 em0: Using MSIX interrupts with 3 vectors em0: Ethernet address: 00:00:24:xx:xx:xx em0: netmap queues/slots: TX 1/1024, RX 1/1024