net/i40e: support MAC loopback
authorYanglong Wu <yanglong.wu@intel.com>
Tue, 2 Jan 2018 02:41:23 +0000 (10:41 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 16 Jan 2018 17:47:49 +0000 (18:47 +0100)
According to loopback mode, setup loopback link or not.
If loopback link is set, packets transmitted will be
looped back to received side directly.

Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
doc/guides/rel_notes/release_18_02.rst
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_ethdev.h

index 24b67bb..f3f196b 100644 (file)
@@ -41,6 +41,12 @@ New Features
      Also, make sure to start the actual text at the margin.
      =========================================================
 
+* **Add MAC loopback support for i40e.**
+
+  Add MAC loopback support for i40e in order to support test task asked by
+  users. According to the device configuration, it will setup TX->RX loopback
+  link or not.
+
 
 API Changes
 -----------
index 0bb1af7..6a0d77d 100644 (file)
@@ -2019,6 +2019,16 @@ i40e_dev_start(struct rte_eth_dev *dev)
                }
        }
 
+       /* Enable mac loopback mode */
+       if (dev->data->dev_conf.lpbk_mode == I40E_AQ_LB_MODE_NONE ||
+           dev->data->dev_conf.lpbk_mode == I40E_AQ_LB_PHY_LOCAL) {
+               ret = i40e_aq_set_lb_modes(hw, dev->data->dev_conf.lpbk_mode, NULL);
+               if (ret != I40E_SUCCESS) {
+                       PMD_DRV_LOG(ERR, "fail to set loopback link");
+                       goto err_up;
+               }
+       }
+
        /* Apply link configure */
        if (dev->data->dev_conf.link_speeds & ~(ETH_LINK_SPEED_100M |
                                ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G |
index ab661a9..52a13ca 100644 (file)
@@ -32,7 +32,8 @@
 #define I40E_NUM_MACADDR_MAX       64
 /* Maximum number of VFs */
 #define I40E_MAX_VF               128
-
+/*flag of no loopback*/
+#define I40E_AQ_LB_MODE_NONE     0x0
 /*
  * vlan_id is a 12 bit number.
  * The VFTA array is actually a 4096 bit array, 128 of 32bit elements.