net/cxgbe: support flow API for matching all packets on VF
[dpdk.git] / drivers / net / cxgbe / cxgbe_main.c
index f6967a3..a286d85 100644 (file)
@@ -709,11 +709,12 @@ out:
        return ret;
 }
 
-static void cxgbe_get_devargs_int(struct adapter *adap, int *dst,
-                                 const char *key, int default_value)
+static void cxgbe_get_devargs_int(struct adapter *adap, bool *dst,
+                                 const char *key, bool default_value)
 {
        struct rte_pci_device *pdev = adap->pdev;
-       int ret, devarg_value = default_value;
+       int ret;
+       bool devarg_value = default_value;
 
        *dst = default_value;
        if (!pdev)
@@ -729,11 +730,11 @@ static void cxgbe_get_devargs_int(struct adapter *adap, int *dst,
 void cxgbe_process_devargs(struct adapter *adap)
 {
        cxgbe_get_devargs_int(adap, &adap->devargs.keep_ovlan,
-                             CXGBE_DEVARG_CMN_KEEP_OVLAN, 0);
+                             CXGBE_DEVARG_CMN_KEEP_OVLAN, false);
        cxgbe_get_devargs_int(adap, &adap->devargs.tx_mode_latency,
-                             CXGBE_DEVARG_CMN_TX_MODE_LATENCY, 0);
+                             CXGBE_DEVARG_CMN_TX_MODE_LATENCY, false);
        cxgbe_get_devargs_int(adap, &adap->devargs.force_link_up,
-                             CXGBE_DEVARG_VF_FORCE_LINK_UP, 0);
+                             CXGBE_DEVARG_VF_FORCE_LINK_UP, false);
 }
 
 static void configure_vlan_types(struct adapter *adapter)
@@ -1206,6 +1207,15 @@ static int adap_init0(struct adapter *adap)
                adap->params.filter2_wr_support = (ret == 0 && val[0] != 0);
        }
 
+       /* Check if FW supports returning vin.
+        * If this is not supported, driver will interpret
+        * these values from viid.
+        */
+       params[0] = CXGBE_FW_PARAM_DEV(OPAQUE_VIID_SMT_EXTN);
+       ret = t4_query_params(adap, adap->mbox, adap->pf, 0,
+                             1, params, val);
+       adap->params.viid_smt_extn_support = (ret == 0 && val[0] != 0);
+
        /* query tid-related parameters */
        params[0] = CXGBE_FW_PARAM_DEV(NTID);
        ret = t4_query_params(adap, adap->mbox, adap->pf, 0, 1,
@@ -1906,6 +1916,8 @@ allocate_mac:
                         "filter support disabled. Continuing\n");
        }
 
+       t4_os_lock_init(&adapter->flow_lock);
+
        adapter->mpstcam = t4_init_mpstcam(adapter);
        if (!adapter->mpstcam)
                dev_warn(adapter, "could not allocate mps tcam table."