]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
bnxt_en: Fix queue start to update vnic RSS table
authorSomnath Kotur <somnath.kotur@broadcom.com>
Fri, 22 Nov 2024 22:45:43 +0000 (14:45 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 26 Nov 2024 14:29:31 +0000 (15:29 +0100)
HWRM_RING_FREE followed by a HWRM_RING_ALLOC is not guaranteed to
have the same FW ring ID as before.  So we must reinitialize the
RSS table with the correct ring IDs.  Otherwise, traffic may not
resume properly if the restarted ring ID is stale.  Since this
feature is only supported on P5_PLUS chips, we call
bnxt_vnic_set_rss_p5() to update the HW RSS table.

Fixes: 2d694c27d32e ("bnxt_en: implement netdev_queue_mgmt_ops")
Cc: David Wei <dw@davidwei.uk>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 3eeaceb3ff383d6bbd4e194c6b4f5aac63a95487..3bee485b50f0edd621c3ba3846400d93e37e6fe9 100644 (file)
@@ -15477,6 +15477,13 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx)
 
        for (i = 0; i <= BNXT_VNIC_NTUPLE; i++) {
                vnic = &bp->vnic_info[i];
+
+               rc = bnxt_hwrm_vnic_set_rss_p5(bp, vnic, true);
+               if (rc) {
+                       netdev_err(bp->dev, "hwrm vnic %d set rss failure rc: %d\n",
+                                  vnic->vnic_id, rc);
+                       return rc;
+               }
                vnic->mru = bp->dev->mtu + ETH_HLEN + VLAN_HLEN;
                bnxt_hwrm_vnic_update(bp, vnic,
                                      VNIC_UPDATE_REQ_ENABLES_MRU_VALID);