From: Qi Zhang <qi.z.zh...@intel.com>

Enlarge max queue number from 16 to 64 by using "large" vc ops.

Signed-off-by: Qi Zhang <qi.z.zh...@intel.com>
---
 drivers/net/iavf/iavf.h       |  4 ++--
 drivers/net/iavf/iavf_vchnl.c | 35 ++++++++++++++++++-----------------
 2 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h
index 9be8a2381..039517af9 100644
--- a/drivers/net/iavf/iavf.h
+++ b/drivers/net/iavf/iavf.h
@@ -19,7 +19,7 @@
 #define IAVF_FRAME_SIZE_MAX       9728
 #define IAVF_QUEUE_BASE_ADDR_UNIT 128
 
-#define IAVF_MAX_NUM_QUEUES       16
+#define IAVF_MAX_NUM_QUEUES       64
 
 #define IAVF_NUM_MACADDR_MAX      64
 
@@ -138,7 +138,7 @@ struct iavf_info {
        uint16_t nb_msix;   /* number of MSI-X interrupts on Rx */
        uint16_t msix_base; /* msix vector base from */
        /* queue bitmask for each vector */
-       uint16_t rxq_map[IAVF_MAX_MSIX_VECTORS];
+       uint64_t rxq_map[IAVF_MAX_MSIX_VECTORS];
        struct iavf_flow_list flow_list;
        rte_spinlock_t flow_ops_lock;
        struct iavf_parser_list rss_parser_list;
diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
index 33acea54a..2b28d0577 100644
--- a/drivers/net/iavf/iavf_vchnl.c
+++ b/drivers/net/iavf/iavf_vchnl.c
@@ -383,7 +383,8 @@ iavf_get_vf_resource(struct iavf_adapter *adapter)
        caps = IAVF_BASIC_OFFLOAD_CAPS | VIRTCHNL_VF_CAP_ADV_LINK_SPEED |
                VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC |
                VIRTCHNL_VF_OFFLOAD_FDIR_PF |
-               VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF;
+               VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF |
+               VIRTCHNL_VF_OFFLOAD_LARGE_VF;
 
        args.in_args = (uint8_t *)&caps;
        args.in_args_size = sizeof(caps);
@@ -450,7 +451,7 @@ int
 iavf_enable_queues(struct iavf_adapter *adapter)
 {
        struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
-       struct virtchnl_queue_select queue_select;
+       struct virtchnl_large_queue_select queue_select;
        struct iavf_cmd_info args;
        int err;
 
@@ -460,7 +461,7 @@ iavf_enable_queues(struct iavf_adapter *adapter)
        queue_select.rx_queues = BIT(adapter->eth_dev->data->nb_rx_queues) - 1;
        queue_select.tx_queues = BIT(adapter->eth_dev->data->nb_tx_queues) - 1;
 
-       args.ops = VIRTCHNL_OP_ENABLE_QUEUES;
+       args.ops = VIRTCHNL_OP_ENABLE_LARGE_QUEUES;
        args.in_args = (u8 *)&queue_select;
        args.in_args_size = sizeof(queue_select);
        args.out_buffer = vf->aq_resp;
@@ -468,7 +469,7 @@ iavf_enable_queues(struct iavf_adapter *adapter)
        err = iavf_execute_vf_cmd(adapter, &args);
        if (err) {
                PMD_DRV_LOG(ERR,
-                           "Failed to execute command of OP_ENABLE_QUEUES");
+                           "Failed to execute command of 
OP_ENABLE_LARGE_QUEUES");
                return err;
        }
        return 0;
@@ -478,7 +479,7 @@ int
 iavf_disable_queues(struct iavf_adapter *adapter)
 {
        struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
-       struct virtchnl_queue_select queue_select;
+       struct virtchnl_large_queue_select queue_select;
        struct iavf_cmd_info args;
        int err;
 
@@ -488,7 +489,7 @@ iavf_disable_queues(struct iavf_adapter *adapter)
        queue_select.rx_queues = BIT(adapter->eth_dev->data->nb_rx_queues) - 1;
        queue_select.tx_queues = BIT(adapter->eth_dev->data->nb_tx_queues) - 1;
 
-       args.ops = VIRTCHNL_OP_DISABLE_QUEUES;
+       args.ops = VIRTCHNL_OP_DISABLE_LARGE_QUEUES;
        args.in_args = (u8 *)&queue_select;
        args.in_args_size = sizeof(queue_select);
        args.out_buffer = vf->aq_resp;
@@ -496,7 +497,7 @@ iavf_disable_queues(struct iavf_adapter *adapter)
        err = iavf_execute_vf_cmd(adapter, &args);
        if (err) {
                PMD_DRV_LOG(ERR,
-                           "Failed to execute command of OP_DISABLE_QUEUES");
+                           "Failed to execute command of 
OP_DISABLE_LARGE_QUEUES");
                return err;
        }
        return 0;
@@ -507,7 +508,7 @@ iavf_switch_queue(struct iavf_adapter *adapter, uint16_t 
qid,
                 bool rx, bool on)
 {
        struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
-       struct virtchnl_queue_select queue_select;
+       struct virtchnl_large_queue_select queue_select;
        struct iavf_cmd_info args;
        int err;
 
@@ -519,9 +520,9 @@ iavf_switch_queue(struct iavf_adapter *adapter, uint16_t 
qid,
                queue_select.tx_queues |= 1 << qid;
 
        if (on)
-               args.ops = VIRTCHNL_OP_ENABLE_QUEUES;
+               args.ops = VIRTCHNL_OP_ENABLE_LARGE_QUEUES;
        else
-               args.ops = VIRTCHNL_OP_DISABLE_QUEUES;
+               args.ops = VIRTCHNL_OP_DISABLE_LARGE_QUEUES;
        args.in_args = (u8 *)&queue_select;
        args.in_args_size = sizeof(queue_select);
        args.out_buffer = vf->aq_resp;
@@ -529,7 +530,7 @@ iavf_switch_queue(struct iavf_adapter *adapter, uint16_t 
qid,
        err = iavf_execute_vf_cmd(adapter, &args);
        if (err)
                PMD_DRV_LOG(ERR, "Failed to execute command of %s",
-                           on ? "OP_ENABLE_QUEUES" : "OP_DISABLE_QUEUES");
+                           on ? "OP_ENABLE_LARGE_QUEUES" : 
"OP_DISABLE_LARGE_QUEUES");
        return err;
 }
 
@@ -686,13 +687,13 @@ int
 iavf_config_irq_map(struct iavf_adapter *adapter)
 {
        struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
-       struct virtchnl_irq_map_info *map_info;
-       struct virtchnl_vector_map *vecmap;
+       struct virtchnl_large_irq_map_info *map_info;
+       struct virtchnl_large_vector_map *vecmap;
        struct iavf_cmd_info args;
        int len, i, err;
 
-       len = sizeof(struct virtchnl_irq_map_info) +
-             sizeof(struct virtchnl_vector_map) * vf->nb_msix;
+       len = sizeof(struct virtchnl_large_irq_map_info) +
+             sizeof(struct virtchnl_large_vector_map) * vf->nb_msix;
 
        map_info = rte_zmalloc("map_info", len, 0);
        if (!map_info)
@@ -708,14 +709,14 @@ iavf_config_irq_map(struct iavf_adapter *adapter)
                vecmap->rxq_map = vf->rxq_map[vf->msix_base + i];
        }
 
-       args.ops = VIRTCHNL_OP_CONFIG_IRQ_MAP;
+       args.ops = VIRTCHNL_OP_CONFIG_LARGE_IRQ_MAP;
        args.in_args = (u8 *)map_info;
        args.in_args_size = len;
        args.out_buffer = vf->aq_resp;
        args.out_size = IAVF_AQ_BUF_SZ;
        err = iavf_execute_vf_cmd(adapter, &args);
        if (err)
-               PMD_DRV_LOG(ERR, "fail to execute command OP_CONFIG_IRQ_MAP");
+               PMD_DRV_LOG(ERR, "fail to execute command 
OP_CONFIG_LARGE_IRQ_MAP");
 
        rte_free(map_info);
        return err;
-- 
2.17.1

Reply via email to