ethdev: add flow API to expand RSS flows
[dpdk.git] / drivers / net / cxgbe / cxgbevf_main.c
index 0624267..5b3fb53 100644 (file)
@@ -74,6 +74,11 @@ static void size_nports_qsets(struct adapter *adapter)
        }
 }
 
+void cxgbevf_stats_get(struct port_info *pi, struct port_stats *stats)
+{
+       t4vf_get_port_stats(pi->adapter, pi->pidx, stats);
+}
+
 static int adap_init0vf(struct adapter *adapter)
 {
        u32 param, val = 0;
@@ -108,6 +113,24 @@ static int adap_init0vf(struct adapter *adapter)
        }
 
        adapter->pf = t4vf_get_pf_from_vf(adapter);
+       err = t4vf_sge_init(adapter);
+       if (err) {
+               dev_err(adapter->pdev_dev, "error in sge init\n");
+               return err;
+       }
+
+       err = t4vf_get_rss_glb_config(adapter);
+       if (err) {
+               dev_err(adapter->pdev_dev, "unable to retrieve adapter"
+                       " RSS parameters: err=%d\n", err);
+               return err;
+       }
+       if (adapter->params.rss.mode !=
+           FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL) {
+               dev_err(adapter->pdev_dev, "unable to operate with global RSS"
+                       " mode %d\n", adapter->params.rss.mode);
+               return -EINVAL;
+       }
 
        /* If we're running on newer firmware, let it know that we're
         * prepared to deal with encapsulated CPL messages.  Older
@@ -244,6 +267,11 @@ allocate_mac:
                        err = -ENOMEM;
                        goto out_free;
                }
+
+               if (i > 0) {
+                       /* First port will be notified by upper layer */
+                       rte_eth_dev_probing_finish(eth_dev);
+               }
        }
 
        if (adapter->flags & FW_OK) {
@@ -259,6 +287,9 @@ allocate_mac:
        print_adapter_info(adapter);
        print_port_info(adapter);
 
+       err = init_rss(adapter);
+       if (err)
+               goto out_free;
        return 0;
 
 out_free: