Acked-by: Qiming Yang <qiming.y...@intel.com>
> -----Original Message-----
> From: Jiang, JunyuX <junyux.ji...@intel.com>
> Sent: 2020年4月7日 9:48
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zh...@intel.com>; Yang, Qiming
> <qiming.y...@intel.com>; Jiang, JunyuX <junyux.ji...@intel.com>;
> sta...@dpdk.org
> Subject: [PATCH v5] net/ice: fix RSS advanced rule invalid issue
>
> This patch moved the RSS initialization from dev start to dev configure to fix
> RSS advanced rule invalid after running port stop and port start.
>
> Fixes: 5ad3db8d4bdd ("net/ice: enable advanced RSS")
> Cc: sta...@dpdk.org
>
> Signed-off-by: Junyu Jiang <junyux.ji...@intel.com>
> ---
> drivers/net/ice/ice_ethdev.c | 50 +++++++++++++++++++-----------------
> 1 file changed, 26 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index
> 85ef83e92..90a91c9c1 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -2446,24 +2446,6 @@ ice_dev_uninit(struct rte_eth_dev *dev)
> return 0;
> }
>
> -static int
> -ice_dev_configure(struct rte_eth_dev *dev) -{
> - struct ice_adapter *ad =
> - ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> -
> - /* Initialize to TRUE. If any of Rx queues doesn't meet the
> - * bulk allocation or vector Rx preconditions we will reset it.
> - */
> - ad->rx_bulk_alloc_allowed = true;
> - ad->tx_simple_allowed = true;
> -
> - if (dev->data->dev_conf.rxmode.mq_mode &
> ETH_MQ_RX_RSS_FLAG)
> - dev->data->dev_conf.rxmode.offloads |=
> DEV_RX_OFFLOAD_RSS_HASH;
> -
> - return 0;
> -}
> -
> static int ice_init_rss(struct ice_pf *pf) {
> struct ice_hw *hw = ICE_PF_TO_HW(pf);
> @@ -2594,6 +2576,32 @@ static int ice_init_rss(struct ice_pf *pf)
> return 0;
> }
>
> +static int
> +ice_dev_configure(struct rte_eth_dev *dev) {
> + struct ice_adapter *ad =
> + ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> + struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data-
> >dev_private);
> + int ret;
> +
> + /* Initialize to TRUE. If any of Rx queues doesn't meet the
> + * bulk allocation or vector Rx preconditions we will reset it.
> + */
> + ad->rx_bulk_alloc_allowed = true;
> + ad->tx_simple_allowed = true;
> +
> + if (dev->data->dev_conf.rxmode.mq_mode &
> ETH_MQ_RX_RSS_FLAG)
> + dev->data->dev_conf.rxmode.offloads |=
> DEV_RX_OFFLOAD_RSS_HASH;
> +
> + ret = ice_init_rss(pf);
> + if (ret) {
> + PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> static void
> __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect,
> int base_queue, int nb_queue)
> @@ -2797,12 +2805,6 @@ ice_dev_start(struct rte_eth_dev *dev)
> }
> }
>
> - ret = ice_init_rss(pf);
> - if (ret) {
> - PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
> - goto rx_err;
> - }
> -
> ice_set_rx_function(dev);
> ice_set_tx_function(dev);
>
> --
> 2.17.1