bnxt_en: Add support to call FW to update a VNIC
authorMichael Chan <michael.chan@broadcom.com>
Thu, 8 Aug 2024 05:15:14 +0000 (22:15 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 11 Aug 2024 12:48:02 +0000 (13:48 +0100)
Add the function bnxt_hwrm_vnic_update() to call FW to update
a VNIC.  This call can be used when disabling and enabling a
receive ring within a VNIC.  The mru which is the maximum receive
size of packets received by the VNIC can be updated.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
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 e27e1082ee33aea2cdd69bf0f286651c83bc940f..6c0c65bed604b32db6aa0d4be7e0d9b8af04d558 100644 (file)
@@ -10089,6 +10089,26 @@ vnic_setup_err:
        return rc;
 }
 
+int bnxt_hwrm_vnic_update(struct bnxt *bp, struct bnxt_vnic_info *vnic,
+                         u8 valid)
+{
+       struct hwrm_vnic_update_input *req;
+       int rc;
+
+       rc = hwrm_req_init(bp, req, HWRM_VNIC_UPDATE);
+       if (rc)
+               return rc;
+
+       req->vnic_id = cpu_to_le32(vnic->fw_vnic_id);
+
+       if (valid & VNIC_UPDATE_REQ_ENABLES_MRU_VALID)
+               req->mru = cpu_to_le16(vnic->mru);
+
+       req->enables = cpu_to_le32(valid);
+
+       return hwrm_req_send(bp, req);
+}
+
 int bnxt_hwrm_vnic_rss_cfg_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 {
        int rc;
index 6bbdc718c3a701ccc26b716f2680e89ad5ad0c18..5de67f71899356bb3db9ad00fbcf0998b9f1f5a2 100644 (file)
@@ -1250,6 +1250,7 @@ struct bnxt_vnic_info {
 #define BNXT_MAX_CTX_PER_VNIC  8
        u16             fw_rss_cos_lb_ctx[BNXT_MAX_CTX_PER_VNIC];
        u16             fw_l2_ctx_id;
+       u16             mru;
 #define BNXT_MAX_UC_ADDRS      4
        struct bnxt_l2_filter *l2_filters[BNXT_MAX_UC_ADDRS];
                                /* index 0 always dev_addr */
@@ -2838,6 +2839,8 @@ int bnxt_hwrm_free_wol_fltr(struct bnxt *bp);
 int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp, bool all);
 int bnxt_hwrm_func_qcaps(struct bnxt *bp);
 int bnxt_hwrm_fw_set_time(struct bnxt *);
+int bnxt_hwrm_vnic_update(struct bnxt *bp, struct bnxt_vnic_info *vnic,
+                         u8 valid);
 int bnxt_hwrm_vnic_rss_cfg_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic);
 int __bnxt_setup_vnic_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic);
 void bnxt_del_one_rss_ctx(struct bnxt *bp, struct bnxt_rss_ctx *rss_ctx,