@@ -613,4 +613,39 @@ idpf_config_irq_unmap(struct idpf_vport *vport, uint16_t nb_rx_queues)
return 0;
}
+int
+idpf_create_vport_info_init(struct idpf_vport *vport,
+ struct virtchnl2_create_vport *vport_info)
+{
+ struct idpf_adapter *adapter = vport->adapter;
+
+ vport_info->vport_type = rte_cpu_to_le_16(VIRTCHNL2_VPORT_TYPE_DEFAULT);
+ if (adapter->txq_model == 0) {
+ vport_info->txq_model =
+ rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SPLIT);
+ vport_info->num_tx_q = IDPF_DEFAULT_TXQ_NUM;
+ vport_info->num_tx_complq =
+ IDPF_DEFAULT_TXQ_NUM * IDPF_TX_COMPLQ_PER_GRP;
+ } else {
+ vport_info->txq_model =
+ rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SINGLE);
+ vport_info->num_tx_q = IDPF_DEFAULT_TXQ_NUM;
+ vport_info->num_tx_complq = 0;
+ }
+ if (adapter->rxq_model == 0) {
+ vport_info->rxq_model =
+ rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SPLIT);
+ vport_info->num_rx_q = IDPF_DEFAULT_RXQ_NUM;
+ vport_info->num_rx_bufq =
+ IDPF_DEFAULT_RXQ_NUM * IDPF_RX_BUFQ_PER_GRP;
+ } else {
+ vport_info->rxq_model =
+ rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SINGLE);
+ vport_info->num_rx_q = IDPF_DEFAULT_RXQ_NUM;
+ vport_info->num_rx_bufq = 0;
+ }
+
+ return 0;
+}
+
RTE_LOG_REGISTER_SUFFIX(idpf_common_logtype, common, NOTICE);
@@ -16,6 +16,11 @@
#define IDPF_CTLQ_LEN 64
#define IDPF_DFLT_MBX_BUF_SIZE 4096
+#define IDPF_DEFAULT_RXQ_NUM 16
+#define IDPF_RX_BUFQ_PER_GRP 2
+#define IDPF_DEFAULT_TXQ_NUM 16
+#define IDPF_TX_COMPLQ_PER_GRP 1
+
#define IDPF_MAX_PKT_TYPE 1024
#define IDPF_DFLT_INTERVAL 16
@@ -33,6 +38,9 @@ struct idpf_adapter {
uint8_t *mbx_resp; /* buffer to store the mailbox response from cp */
uint32_t ptype_tbl[IDPF_MAX_PKT_TYPE] __rte_cache_min_aligned;
+
+ uint32_t txq_model; /* 0 - split queue model, non-0 - single queue model */
+ uint32_t rxq_model; /* 0 - split queue model, non-0 - single queue model */
};
struct idpf_chunks_info {
@@ -168,5 +176,8 @@ __rte_internal
int idpf_config_irq_map(struct idpf_vport *vport, uint16_t nb_rx_queues);
__rte_internal
int idpf_config_irq_unmap(struct idpf_vport *vport, uint16_t nb_rx_queues);
+__rte_internal
+int idpf_create_vport_info_init(struct idpf_vport *vport,
+ struct virtchnl2_create_vport *vport_info);
#endif /* _IDPF_COMMON_DEVICE_H_ */
@@ -6,6 +6,7 @@ INTERNAL {
idpf_config_irq_map;
idpf_config_irq_unmap;
idpf_config_rss;
+ idpf_create_vport_info_init;
idpf_ctlq_clean_sq;
idpf_ctlq_deinit;
idpf_ctlq_init;
@@ -142,42 +142,6 @@ idpf_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused)
return ptypes;
}
-static int
-idpf_init_vport_req_info(struct rte_eth_dev *dev,
- struct virtchnl2_create_vport *vport_info)
-{
- struct idpf_vport *vport = dev->data->dev_private;
- struct idpf_adapter_ext *adapter = IDPF_ADAPTER_TO_EXT(vport->adapter);
-
- vport_info->vport_type = rte_cpu_to_le_16(VIRTCHNL2_VPORT_TYPE_DEFAULT);
- if (adapter->txq_model == 0) {
- vport_info->txq_model =
- rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SPLIT);
- vport_info->num_tx_q = IDPF_DEFAULT_TXQ_NUM;
- vport_info->num_tx_complq =
- IDPF_DEFAULT_TXQ_NUM * IDPF_TX_COMPLQ_PER_GRP;
- } else {
- vport_info->txq_model =
- rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SINGLE);
- vport_info->num_tx_q = IDPF_DEFAULT_TXQ_NUM;
- vport_info->num_tx_complq = 0;
- }
- if (adapter->rxq_model == 0) {
- vport_info->rxq_model =
- rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SPLIT);
- vport_info->num_rx_q = IDPF_DEFAULT_RXQ_NUM;
- vport_info->num_rx_bufq =
- IDPF_DEFAULT_RXQ_NUM * IDPF_RX_BUFQ_PER_GRP;
- } else {
- vport_info->rxq_model =
- rte_cpu_to_le_16(VIRTCHNL2_QUEUE_MODEL_SINGLE);
- vport_info->num_rx_q = IDPF_DEFAULT_RXQ_NUM;
- vport_info->num_rx_bufq = 0;
- }
-
- return 0;
-}
-
static int
idpf_init_rss(struct idpf_vport *vport)
{
@@ -566,12 +530,12 @@ idpf_parse_devargs(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *adap
goto bail;
ret = rte_kvargs_process(kvlist, IDPF_TX_SINGLE_Q, &parse_bool,
- &adapter->txq_model);
+ &adapter->base.txq_model);
if (ret != 0)
goto bail;
ret = rte_kvargs_process(kvlist, IDPF_RX_SINGLE_Q, &parse_bool,
- &adapter->rxq_model);
+ &adapter->base.rxq_model);
if (ret != 0)
goto bail;
@@ -672,7 +636,7 @@ idpf_dev_vport_init(struct rte_eth_dev *dev, void *init_params)
struct idpf_vport_param *param = init_params;
struct idpf_adapter_ext *adapter = param->adapter;
/* for sending create vport virtchnl msg prepare */
- struct virtchnl2_create_vport vport_req_info;
+ struct virtchnl2_create_vport create_vport_info;
int ret = 0;
dev->dev_ops = &idpf_eth_dev_ops;
@@ -680,14 +644,14 @@ idpf_dev_vport_init(struct rte_eth_dev *dev, void *init_params)
vport->sw_idx = param->idx;
vport->devarg_id = param->devarg_id;
- memset(&vport_req_info, 0, sizeof(vport_req_info));
- ret = idpf_init_vport_req_info(dev, &vport_req_info);
+ memset(&create_vport_info, 0, sizeof(create_vport_info));
+ ret = idpf_create_vport_info_init(vport, &create_vport_info);
if (ret != 0) {
PMD_INIT_LOG(ERR, "Failed to init vport req_info.");
goto err;
}
- ret = idpf_vport_init(vport, &vport_req_info, dev->data);
+ ret = idpf_vport_init(vport, &create_vport_info, dev->data);
if (ret != 0) {
PMD_INIT_LOG(ERR, "Failed to init vports.");
goto err;
@@ -22,14 +22,9 @@
#define IDPF_MAX_VPORT_NUM 8
-#define IDPF_DEFAULT_RXQ_NUM 16
-#define IDPF_DEFAULT_TXQ_NUM 16
-
#define IDPF_INVALID_VPORT_IDX 0xffff
#define IDPF_TXQ_PER_GRP 1
-#define IDPF_TX_COMPLQ_PER_GRP 1
#define IDPF_RXQ_PER_GRP 1
-#define IDPF_RX_BUFQ_PER_GRP 2
#define IDPF_DFLT_Q_VEC_NUM 1
@@ -78,9 +73,6 @@ struct idpf_adapter_ext {
char name[IDPF_ADAPTER_NAME_LEN];
- uint32_t txq_model; /* 0 - split queue model, non-0 - single queue model */
- uint32_t rxq_model; /* 0 - split queue model, non-0 - single queue model */
-
struct idpf_vport **vports;
uint16_t max_vport_nb;