[PATCH 14/14] net/nfp: modify RSS logic
Ferruh Yigit
ferruh.yigit at xilinx.com
Fri Jun 3 00:56:47 CEST 2022
On 6/2/2022 2:53 AM, Jin Liu wrote:
> Modify RSS-related interface functions, as the NFDK firmware support
> feature NFP_NET_CFG_CTRL_RSS2 rather than NFP_NET_CFG_CTRL_RSS.
>
> Signed-off-by: Jin Liu <jin.liu at corigine.com>
> Signed-off-by: Diana Wang <na.wang at corigine.com>
> Signed-off-by: Peng Zhang <peng.zhang at corigine.com>
> Signed-off-by: Chaoyong He <chaoyong.he at corigine.com>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at corigine.com>
<...>
> diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h
> index e73715e2aa..372d537462 100644
> --- a/drivers/net/nfp/nfp_ctrl.h
> +++ b/drivers/net/nfp/nfp_ctrl.h
> @@ -119,6 +119,7 @@
> #define NFP_NET_CFG_MACADDR 0x0024
>
> #define NFP_NET_CFG_CTRL_LSO_ANY (NFP_NET_CFG_CTRL_LSO | NFP_NET_CFG_CTRL_LSO2)
> +#define NFP_NET_CFG_CTRL_RSS_ANY (NFP_NET_CFG_CTRL_RSS | NFP_NET_CFG_CTRL_RSS2)
>
> /*
> * Read-only words (0x0030 - 0x0050):
> diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
> index 238b2b5451..bd7dd30f10 100644
> --- a/drivers/net/nfp/nfp_ethdev.c
> +++ b/drivers/net/nfp/nfp_ethdev.c
> @@ -123,7 +123,17 @@ nfp_net_start(struct rte_eth_dev *dev)
> if (rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) {
> nfp_net_rss_config_default(dev);
> update |= NFP_NET_CFG_UPDATE_RSS;
> - new_ctrl |= NFP_NET_CFG_CTRL_RSS;
> + switch (NFD_CFG_CLASS_VER_of(hw->ver)) {
> + case NFP_NET_CFG_VERSION_DP_NFD3:
> + new_ctrl |= NFP_NET_CFG_CTRL_RSS;
> + break;
> + case NFP_NET_CFG_VERSION_DP_NFDK:
> + new_ctrl |= NFP_NET_CFG_CTRL_RSS2;
> + break;
> + default:
> + PMD_INIT_LOG(ERR, "nfp_net: no fw version match");
> + return -ENODEV;
> + }
> }
>
> /* Enable device */
> diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
> index bb8206c4f6..8769f07be4 100644
> --- a/drivers/net/nfp/nfp_ethdev_vf.c
> +++ b/drivers/net/nfp/nfp_ethdev_vf.c
> @@ -95,7 +95,17 @@ nfp_netvf_start(struct rte_eth_dev *dev)
> if (rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) {
> nfp_net_rss_config_default(dev);
> update |= NFP_NET_CFG_UPDATE_RSS;
> - new_ctrl |= NFP_NET_CFG_CTRL_RSS;
> + switch (NFD_CFG_CLASS_VER_of(hw->ver)) {
> + case NFP_NET_CFG_VERSION_DP_NFD3:
> + new_ctrl |= NFP_NET_CFG_CTRL_RSS;
> + break;
> + case NFP_NET_CFG_VERSION_DP_NFDK:
> + new_ctrl |= NFP_NET_CFG_CTRL_RSS2;
> + break;
> + default:
> + PMD_INIT_LOG(ERR, "nfp_net: no fw version match");
> + return -ENODEV;
> + }
As this FW specific changes crept into various locations, it can be
harder to maintain the code.
I wonder if something like below can help, what do you think:
unsigned int nfp_FW_RSS[] = { // common for both PF & VF
NFP_NET_CFG_CTRL_RSS,
NFP_NET_CFG_CTRL_RSS2,
};
new_ctrl = nfp_FW_RSS[NFD_CFG_CLASS_VER_of(hw->ver)];
More information about the dev
mailing list