net/qede: restrict maximum queues for PF/VF
authorHarish Patil <harish.patil@qlogic.com>
Fri, 23 Dec 2016 00:48:11 +0000 (16:48 -0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 17 Jan 2017 18:40:52 +0000 (19:40 +0100)
HW can support up to 128 queues based on the NIC config/personality.
But most of the testing is done with 32 queues for PF and 16 for VF
device across different qede devices, so change here is to advertise
only those many instead of returning max queues supported by HW.

Fixes: 2ea6f76aff40 ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
drivers/net/qede/qede_ethdev.c
drivers/net/qede/qede_ethdev.h
drivers/net/qede/qede_main.c

index b5fa1a2..258c599 100644 (file)
@@ -974,8 +974,15 @@ qede_dev_info_get(struct rte_eth_dev *eth_dev,
        dev_info->max_rx_pktlen = (uint32_t)ETH_TX_MAX_NON_LSO_PKT_LEN;
        dev_info->rx_desc_lim = qede_rx_desc_lim;
        dev_info->tx_desc_lim = qede_tx_desc_lim;
-       dev_info->max_rx_queues = (uint16_t)QEDE_MAX_RSS_CNT(qdev);
+
+       if (IS_PF(edev))
+               dev_info->max_rx_queues = (uint16_t)RTE_MIN(
+                       QEDE_MAX_RSS_CNT(qdev), QEDE_PF_NUM_CONNS / 2);
+       else
+               dev_info->max_rx_queues = (uint16_t)RTE_MIN(
+                       QEDE_MAX_RSS_CNT(qdev), ECORE_MAX_VF_CHAINS_PER_PF);
        dev_info->max_tx_queues = dev_info->max_rx_queues;
+
        dev_info->max_mac_addrs = qdev->dev_info.num_mac_addrs;
        dev_info->max_vfs = 0;
        dev_info->reta_size = ECORE_RSS_IND_TABLE_SIZE;
@@ -2020,9 +2027,9 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 static void qede_update_pf_params(struct ecore_dev *edev)
 {
        struct ecore_pf_params pf_params;
-       /* 32 rx + 32 tx */
+
        memset(&pf_params, 0, sizeof(struct ecore_pf_params));
-       pf_params.eth_pf_params.num_cons = 64;
+       pf_params.eth_pf_params.num_cons = QEDE_PF_NUM_CONNS;
        qed_ops->common->update_pf_params(edev, &pf_params);
 }
 
index bd85ba3..95e06ef 100644 (file)
 
 extern char fw_file[];
 
+/* Number of PF connections - 32 RX + 32 TX */
+#define QEDE_PF_NUM_CONNS              (64)
+
 /* Port/function states */
 enum qede_dev_state {
        QEDE_DEV_INIT, /* Init the chip and Slowpath */
index b769673..491c921 100644 (file)
@@ -402,11 +402,6 @@ qed_fill_eth_dev_info(struct ecore_dev *edev, struct qed_dev_eth_info *info)
                if (edev->num_hwfns > 1) {
                        ecore_vf_get_num_rxqs(&edev->hwfns[1], &queues);
                        info->num_queues += queues;
-                       /* Restrict 100G VF to advertise 16 queues till the
-                        * required support is available to go beyond 16.
-                        */
-                       info->num_queues = RTE_MIN(info->num_queues,
-                                                  ECORE_MAX_VF_CHAINS_PER_PF);
                }
 
                ecore_vf_get_num_vlan_filters(&edev->hwfns[0],