dpdk: use speed_capa to detect i40e device speed 14/6614/2
authorDamjan Marion <damarion@cisco.com>
Mon, 8 May 2017 16:19:45 +0000 (18:19 +0200)
committerChris Luke <chris_luke@comcast.com>
Mon, 8 May 2017 20:29:40 +0000 (20:29 +0000)
Change-Id: I1decca6fb5ce6de74ccbcd5a262ebd3db6f55cdc
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/plugins/dpdk/device/dpdk.h
src/plugins/dpdk/device/format.c
src/plugins/dpdk/device/init.c

index 53f79ff..8dbc091 100644 (file)
@@ -108,6 +108,7 @@ typedef enum
 {
   VNET_DPDK_PORT_TYPE_ETH_1G,
   VNET_DPDK_PORT_TYPE_ETH_10G,
+  VNET_DPDK_PORT_TYPE_ETH_25G,
   VNET_DPDK_PORT_TYPE_ETH_40G,
   VNET_DPDK_PORT_TYPE_ETH_100G,
   VNET_DPDK_PORT_TYPE_ETH_BOND,
index 93eca52..389cd8b 100644 (file)
@@ -168,6 +168,10 @@ format_dpdk_device_name (u8 * s, va_list * args)
       device_name = "TenGigabitEthernet";
       break;
 
+    case VNET_DPDK_PORT_TYPE_ETH_25G:
+      device_name = "TwentyFiveGigabitEthernet";
+      break;
+
     case VNET_DPDK_PORT_TYPE_ETH_40G:
       device_name = "FortyGigabitEthernet";
       break;
index 2d21bfd..c45edc9 100755 (executable)
@@ -444,25 +444,14 @@ dpdk_lib_init (dpdk_main_t * dm)
              xd->flags |= DPDK_DEVICE_FLAG_PMD_SUPPORTS_PTYPE;
              xd->port_type = VNET_DPDK_PORT_TYPE_ETH_40G;
 
-             switch (dev_info.pci_dev->id.device_id)
-               {
-               case I40E_DEV_ID_10G_BASE_T:
-               case I40E_DEV_ID_SFP_XL710:
-                 xd->port_type = VNET_DPDK_PORT_TYPE_ETH_10G;
-                 break;
-               case I40E_DEV_ID_QSFP_A:
-               case I40E_DEV_ID_QSFP_B:
-               case I40E_DEV_ID_QSFP_C:
-                 xd->port_type = VNET_DPDK_PORT_TYPE_ETH_40G;
-                 break;
-               case I40E_DEV_ID_VF:
-                 rte_eth_link_get_nowait (i, &l);
-                 xd->port_type = l.link_speed == 10000 ?
-                   VNET_DPDK_PORT_TYPE_ETH_10G : VNET_DPDK_PORT_TYPE_ETH_40G;
-                 break;
-               default:
-                 xd->port_type = VNET_DPDK_PORT_TYPE_UNKNOWN;
-               }
+             if (dev_info.speed_capa & ETH_LINK_SPEED_40G)
+               xd->port_type = VNET_DPDK_PORT_TYPE_ETH_40G;
+             else if (dev_info.speed_capa & ETH_LINK_SPEED_25G)
+               xd->port_type = VNET_DPDK_PORT_TYPE_ETH_25G;
+             else if (dev_info.speed_capa & ETH_LINK_SPEED_10G)
+               xd->port_type = VNET_DPDK_PORT_TYPE_ETH_10G;
+             else
+               xd->port_type = VNET_DPDK_PORT_TYPE_UNKNOWN;
              break;
 
            case VNET_DPDK_PMD_CXGBE: