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

Reply via email to