Hello,

We recently needed to apply a firmware upgrade for some XXV710s to resolve a FEC issue (I'd have to find the details in email) but applied this same firmware to other nics (XL710s) to maintain a consistent baseline.  In testing we have seen the NVM 8.40 resolve the FEC issue but it introduces an issue with QinQ offloading + stripping.  When running NVM 8.15 (previous version), we could send QinQ traffic, and the nic would properly strip and store the values into vlan_tci and vlan_tci_outer as expected.  When running NVM 8.40 (FEC fix version) sending QinQ traffic is only stripping the inner tag.  The code we are using has not changed.

I added some additional lines to drivers/net/i40e/i40e_rxtx.c to help troubleshoot this, specifically one to log the vlans and one to log ext_status.  In comparing the two, ext_status is 0 under 8.40 while it is 1 under 8.15.  This does correspond with not running the second layer processing code in the i40e_rxtx.c (line ~87).  We will continue to investigate but would like to get this out there sooner and ask for assistance in confirming this behavior.

This is a Dell based card so the firmware package used to update/downgrade the card is coming from Dell and not Intel directly.  It is our assumption that the firmware in general should be pretty consistent between the two.

Traffic is being generated by trex with the vlan nesting being pushed by some Juniper switches.  Both vlan tags are 0x8100.

OS: CentOS 7.9
DPDK: 20.08 (we know it's not supported anymore, but were trying to put off that upgrade until some other changes were also completed)
NIC: i40e XL710 -- net_i40e / firmware 8.15 0x800096d0 20.0.17

If there are any additional details needed please let us know.

Thanks,

Ben