From: Igor Romanov Date: Fri, 2 Jul 2021 08:39:38 +0000 (+0300) Subject: net/sfc: support initialising different Rx queue types X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=b8cf5ba549f23ca91b2c56d8e58566cbe6a18100;p=dpdk.git net/sfc: support initialising different Rx queue types Add extra EFX flags to RxQ info initialization API to support choosing different RxQ types and make the API public to use it in for counter queues. Signed-off-by: Igor Romanov Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c index 597785ae02..c7a7bd66ef 100644 --- a/drivers/net/sfc/sfc_rx.c +++ b/drivers/net/sfc/sfc_rx.c @@ -1155,7 +1155,7 @@ sfc_rx_qinit(struct sfc_adapter *sa, sfc_sw_index_t sw_index, else rxq_info->type = EFX_RXQ_TYPE_DEFAULT; - rxq_info->type_flags = + rxq_info->type_flags |= (offloads & DEV_RX_OFFLOAD_SCATTER) ? EFX_RXQ_FLAG_SCATTER : EFX_RXQ_FLAG_NONE; @@ -1594,8 +1594,9 @@ sfc_rx_stop(struct sfc_adapter *sa) efx_rx_fini(sa->nic); } -static int -sfc_rx_qinit_info(struct sfc_adapter *sa, sfc_sw_index_t sw_index) +int +sfc_rx_qinit_info(struct sfc_adapter *sa, sfc_sw_index_t sw_index, + unsigned int extra_efx_type_flags) { struct sfc_adapter_shared * const sas = sfc_sa2shared(sa); struct sfc_rxq_info *rxq_info = &sas->rxq_info[sw_index]; @@ -1606,6 +1607,7 @@ sfc_rx_qinit_info(struct sfc_adapter *sa, sfc_sw_index_t sw_index) SFC_ASSERT(rte_is_power_of_2(max_entries)); rxq_info->max_entries = max_entries; + rxq_info->type_flags = extra_efx_type_flags; return 0; } @@ -1770,7 +1772,7 @@ sfc_rx_configure(struct sfc_adapter *sa) sw_index = sfc_rxq_sw_index_by_ethdev_rx_qid(sas, sas->ethdev_rxq_count); - rc = sfc_rx_qinit_info(sa, sw_index); + rc = sfc_rx_qinit_info(sa, sw_index, 0); if (rc != 0) goto fail_rx_qinit_info; diff --git a/drivers/net/sfc/sfc_rx.h b/drivers/net/sfc/sfc_rx.h index 96c7dc415d..e5a6fde79b 100644 --- a/drivers/net/sfc/sfc_rx.h +++ b/drivers/net/sfc/sfc_rx.h @@ -129,6 +129,8 @@ void sfc_rx_close(struct sfc_adapter *sa); int sfc_rx_start(struct sfc_adapter *sa); void sfc_rx_stop(struct sfc_adapter *sa); +int sfc_rx_qinit_info(struct sfc_adapter *sa, sfc_sw_index_t sw_index, + unsigned int extra_efx_type_flags); int sfc_rx_qinit(struct sfc_adapter *sa, unsigned int rx_queue_id, uint16_t nb_rx_desc, unsigned int socket_id, const struct rte_eth_rxconf *rx_conf,