net/i40e: fix floating VEB
authorBeilei Xing <beilei.xing@intel.com>
Fri, 4 Nov 2016 11:08:08 +0000 (19:08 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 7 Nov 2016 16:43:09 +0000 (17:43 +0100)
Turning off S-TAG identification will impact floating VEB,
VFs can't communicate with each other.
This patch fixes this issue by judging whether floating
VEB is enabled, S-TAG identification will be turned off
only when floating VEB is disabled.

Fixes: 4d61120d5ce7 ("net/i40e: fix dropping packets with ethertype 0x88A8")

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
doc/guides/nics/i40e.rst
drivers/net/i40e/i40e_ethdev.c

index c0163fc..5780268 100644 (file)
@@ -453,3 +453,9 @@ To work around this issue, ``ethtool -s <dev> autoneg on`` should be
 set first and then the link can be brought up through ``ifconfig <dev> up``.
 
 NOTE: requires Linux kernel i40e driver version >= 1.4.X
+
+Receive packets with Ethertype 0x88A8
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Due to the FW limitation, PF can receive packets with Ethertype 0x88A8
+only when floating VEB is disabled.
index 5afca1e..5dd162e 100644 (file)
@@ -1121,11 +1121,13 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)
        /* Disable double vlan by default */
        i40e_vsi_config_double_vlan(vsi, FALSE);
 
-       /* Disable S-TAG identification by default */
-       ret = I40E_READ_REG(hw, I40E_PRT_L2TAGSEN);
-       if (ret & I40E_L2_TAGS_S_TAG_MASK) {
-               ret &= ~I40E_L2_TAGS_S_TAG_MASK;
-               I40E_WRITE_REG(hw, I40E_PRT_L2TAGSEN, ret);
+       /* Disable S-TAG identification when floating_veb is disabled */
+       if (!pf->floating_veb) {
+               ret = I40E_READ_REG(hw, I40E_PRT_L2TAGSEN);
+               if (ret & I40E_L2_TAGS_S_TAG_MASK) {
+                       ret &= ~I40E_L2_TAGS_S_TAG_MASK;
+                       I40E_WRITE_REG(hw, I40E_PRT_L2TAGSEN, ret);
+               }
        }
 
        if (!vsi->max_macaddrs)