bnxt_en: Skip ethtool RSS context configuration in ifdown state
authorPavan Chebbi <pavan.chebbi@broadcom.com>
Tue, 9 Apr 2024 21:54:25 +0000 (14:54 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 11 Apr 2024 02:55:05 +0000 (19:55 -0700)
The current implementation requires the ifstate to be up when
configuring the RSS contexts.  It will try to fetch the RX ring
IDs and will crash if it is in ifdown state.  Return error if
!netif_running() to prevent the crash.

An improved implementation is in the works to allow RSS contexts
to be changed while in ifdown state.

Fixes: b3d0083caf9a ("bnxt_en: Support RSS contexts in ethtool .{get|set}_rxfh()")
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://lore.kernel.org/r/20240409215431.41424-2-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

index 9c49f629d56579d7896d46b3bfe89fcc8bc89c76..68444234b268adf28f6abd4afee1ef73a452c021 100644 (file)
@@ -1876,6 +1876,11 @@ static int bnxt_set_rxfh_context(struct bnxt *bp,
                return -EOPNOTSUPP;
        }
 
+       if (!netif_running(bp->dev)) {
+               NL_SET_ERR_MSG_MOD(extack, "Unable to set RSS contexts when interface is down");
+               return -EAGAIN;
+       }
+
        if (*rss_context != ETH_RXFH_CONTEXT_ALLOC) {
                rss_ctx = bnxt_get_rss_ctx_from_index(bp, *rss_context);
                if (!rss_ctx) {