]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bnxt_en: only set dev->queue_mgmt_ops if supported by FW
authorDavid Wei <dw@davidwei.uk>
Thu, 8 Aug 2024 05:15:18 +0000 (22:15 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 11 Aug 2024 12:48:02 +0000 (13:48 +0100)
The queue API calls bnxt_hwrm_vnic_update() to stop/start the flow of
packets, which can only properly flush the pipeline if FW indicates
support.

Add a macro BNXT_SUPPORTS_QUEUE_API that checks for the required flags
and only set queue_mgmt_ops if true.

Signed-off-by: David Wei <dw@davidwei.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h

index e1eadab82261af0db4b9144f412e1d6aa5e9c4cb..75e2cfed5769669866da9f211ff3f2ee0184a980 100644 (file)
@@ -15718,7 +15718,6 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        dev->stat_ops = &bnxt_stat_ops;
        dev->watchdog_timeo = BNXT_TX_TIMEOUT;
        dev->ethtool_ops = &bnxt_ethtool_ops;
-       dev->queue_mgmt_ops = &bnxt_queue_mgmt_ops;
        pci_set_drvdata(pdev, dev);
 
        rc = bnxt_alloc_hwrm_resources(bp);
@@ -15899,6 +15898,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        if (BNXT_SUPPORTS_NTUPLE_VNIC(bp))
                bp->rss_cap |= BNXT_RSS_CAP_MULTI_RSS_CTX;
+       if (BNXT_SUPPORTS_QUEUE_API(bp))
+               dev->queue_mgmt_ops = &bnxt_queue_mgmt_ops;
 
        rc = register_netdev(dev);
        if (rc)
index a2233b2d9329d01be2748a79803e2e235093e576..62e637c5be31a8843dba0d732225e9ccf70d5727 100644 (file)
@@ -2451,6 +2451,9 @@ struct bnxt {
 #define BNXT_SUPPORTS_MULTI_RSS_CTX(bp)                                \
        (BNXT_PF(bp) && BNXT_SUPPORTS_NTUPLE_VNIC(bp) &&        \
         ((bp)->rss_cap & BNXT_RSS_CAP_MULTI_RSS_CTX))
+#define BNXT_SUPPORTS_QUEUE_API(bp)                            \
+       (BNXT_PF(bp) && BNXT_SUPPORTS_NTUPLE_VNIC(bp) &&        \
+        ((bp)->fw_cap & BNXT_FW_CAP_VNIC_RE_FLUSH))
 
        u32                     hwrm_spec_code;
        u16                     hwrm_cmd_seq;