@@ -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;
@@ -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 *)∩︀
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;