On Sun,  5 Jul 2020 18:22:10 -0400 Michael Chan wrote:
> +     /* Reset the RSS indir table if we cannot reserve all the RX rings */
> +     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 (bp->dev->priv_flags & IFF_RXFH_CONFIGURED) {
> +                     netdev_warn(bp->dev, "RSS table entries reverting to 
> default\n");
> +                     bp->dev->priv_flags &= ~IFF_RXFH_CONFIGURED;
> +             }
> +     }

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;
                }
        }

Reply via email to