Reduce ring size for dpdk NICs and overtal mem footprint
[vpp.git] / vnet / vnet / devices / dpdk / init.c
index c685fb4..1f73949 100644 (file)
@@ -355,7 +355,10 @@ dpdk_lib_init (dpdk_main_t * dm)
         {
           xd->rx_q_used = devconf->num_rx_queues;
           xd->port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
-          xd->port_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP;
+          if (devconf->rss_fn == 0)
+            xd->port_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP;
+          else
+            xd->port_conf.rx_adv_conf.rss_conf.rss_hf = devconf->rss_fn;
         }
       else
         xd->rx_q_used = 1;
@@ -396,6 +399,9 @@ dpdk_lib_init (dpdk_main_t * dm)
             xd->nb_rx_desc = DPDK_NB_RX_DESC_10GE;
             xd->nb_tx_desc = DPDK_NB_TX_DESC_10GE;
             break;
+         case VNET_DPDK_PMD_DPAA2:
+           xd->port_type = VNET_DPDK_PORT_TYPE_ETH_10G;
+           break;
 
           /* Cisco VIC */
           case VNET_DPDK_PMD_VICE:
@@ -854,6 +860,7 @@ dpdk_device_config (dpdk_config_main_t * conf, vlib_pci_addr_t pci_addr, unforma
   clib_error_t * error = 0;
   uword * p;
   dpdk_device_config_t * devconf;
+  unformat_input_t sub_input;
 
   if (is_default)
     {
@@ -891,6 +898,12 @@ dpdk_device_config (dpdk_config_main_t * conf, vlib_pci_addr_t pci_addr, unforma
       else if (unformat (input, "workers %U", unformat_bitmap_list,
                         &devconf->workers))
        ;
+      else if (unformat (input, "rss %U", unformat_vlib_cli_sub_input, &sub_input))
+        {
+          error = unformat_rss_fn(&sub_input, &devconf->rss_fn);
+          if (error)
+            break;
+        }
       else
        {
          error = clib_error_return (0, "unknown input `%U'",
@@ -1134,7 +1147,7 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
          clib_bitmap_foreach (c, tm->cpu_socket_bitmap, (
            {
              vec_validate(mem_by_socket, c);
-             mem_by_socket[c] = 512; /* default per-socket mem */
+             mem_by_socket[c] = 256; /* default per-socket mem */
            }
          ));
        }