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.