dpdk: failsafe PMD initialization code 49/12549/4
authorRui Cai <rucai@microsoft.com>
Fri, 11 May 2018 23:38:41 +0000 (23:38 +0000)
committerDamjan Marion <dmarion@me.com>
Thu, 7 Jun 2018 14:35:51 +0000 (14:35 +0000)
Added code to initialize failsafe PMD

This is part of initial effort to enable vpp running over
dpdk on failsafe PMD in Microsoft Azure(4/4).

Change-Id: Ia2469c7087ca4b5c7881dfb11ec5c4fcebaa1d04
Signed-off-by: Rui Cai <rucai@microsoft.com>
src/plugins/dpdk/device/format.c
src/plugins/dpdk/device/init.c

index 4b8e3be..546f6cf 100644 (file)
@@ -373,7 +373,7 @@ format_dpdk_device_type (u8 * s, va_list * args)
       break;
 
     case VNET_DPDK_PMD_FAILSAFE:
-      dev_type = "Failsafe Ethernet";
+      dev_type = "FailsafeEthernet";
       break;
 
     case VNET_DPDK_PMD_LIOVF_ETHER:
index 2232b89..5bdb493 100644 (file)
@@ -503,6 +503,11 @@ dpdk_lib_init (dpdk_main_t * dm)
              xd->port_type = VNET_DPDK_PORT_TYPE_ETH_VF;
              break;
 
+           case VNET_DPDK_PMD_FAILSAFE:
+             xd->port_type = VNET_DPDK_PORT_TYPE_FAILSAFE;
+             xd->port_conf.intr_conf.lsc = 1;
+             break;
+
            default:
              xd->port_type = VNET_DPDK_PORT_TYPE_UNKNOWN;
            }
@@ -632,6 +637,26 @@ dpdk_lib_init (dpdk_main_t * dm)
                }
            }
        }
+
+      if (xd->pmd == VNET_DPDK_PMD_FAILSAFE)
+       {
+         /* failsafe device numerables are reported with active device only,
+          * need to query the mtu for current device setup to overwrite
+          * reported value.
+          */
+         uint16_t dev_mtu;
+         if (!rte_eth_dev_get_mtu (i, &dev_mtu))
+           {
+             mtu = dev_mtu;
+             max_rx_frame = mtu + sizeof (ethernet_header_t);
+
+             if (xd->port_conf.rxmode.hw_strip_crc)
+               {
+                 max_rx_frame += 4;
+               }
+           }
+       }
+
       /*Set port rxmode config */
       xd->port_conf.rxmode.max_rx_pkt_len = max_rx_frame;