On Mon, Jul 6, 2020 at 11:52 AM Jakub Kicinski <k...@kernel.org> wrote:
> Maybe let me just type out what I had in mind:
>
> unsigned int bnxt_max_rss_ring(bp)
> {
>         int i, tbl_size, max_ring;
>
>         if (!bp->rss_indir_tbl)
>                 return 0;
>
>         max_ring = 0;
>         tbl_size = bnxt_get_rxfh_indir_size(dev);
>         for (i = 0; i < tbl_size; i++)
>                 max_ring = max(max_ring, bp->rss_indir_tbl[i]);
>
>         return max_ring;
> }
>
> Then:
>
>         if (rx_rings != bp->rx_nr_rings) {
>                 netdev_warn(bp->dev, "Able to reserve only %d out of %d 
> requested RX rings\n",
>                             rx_rings, bp->rx_nr_rings);
>
>                 if (netif_is_rxfh_configured(bp->dev) &&
>                     rx_rings < bnxt_max_rss_ring(bp)) {
>                         netdev_err(bp->dev, "RSS table entries reverting to 
> default\n");
>                         bp->dev->priv_flags &= ~IFF_RXFH_CONFIGURED;
>                 }
>         }

OK Got it.  You want to reset the RSS map only when absolutely necessary.

Reply via email to