For completeness and correctness, the VF driver needs to reserve these
RSS and L2 contexts.

Signed-off-by: Michael Chan <michael.c...@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c       |  4 ++++
 drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c | 10 +++++-----
 drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h |  5 +++++
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c 
b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 0884e49..fee1c0d 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -4713,6 +4713,10 @@ int __bnxt_hwrm_get_tx_rings(struct bnxt *bp, u16 fid, 
int *tx_rings)
 
        __bnxt_hwrm_reserve_vf_rings(bp, &req, tx_rings, rx_rings, ring_grps,
                                     cp_rings, vnics);
+       req.enables |= cpu_to_le32(FUNC_VF_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS |
+                                  FUNC_VF_CFG_REQ_ENABLES_NUM_L2_CTXS);
+       req.num_rsscos_ctxs = cpu_to_le16(BNXT_VF_MAX_RSS_CTX);
+       req.num_l2_ctxs = cpu_to_le16(BNXT_VF_MAX_L2_CTX);
        rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
        if (rc)
                return -ENOMEM;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c 
b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
index 18ee471..cc21d87 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
@@ -462,13 +462,13 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, 
int num_vfs)
        vf_vnics = hw_resc->max_vnics - bp->nr_vnics;
        vf_vnics = min_t(u16, vf_vnics, vf_rx_rings);
 
-       req.min_rsscos_ctx = cpu_to_le16(1);
-       req.max_rsscos_ctx = cpu_to_le16(1);
+       req.min_rsscos_ctx = cpu_to_le16(BNXT_VF_MIN_RSS_CTX);
+       req.max_rsscos_ctx = cpu_to_le16(BNXT_VF_MAX_RSS_CTX);
        if (pf->vf_resv_strategy == BNXT_VF_RESV_STRATEGY_MINIMAL) {
                req.min_cmpl_rings = cpu_to_le16(1);
                req.min_tx_rings = cpu_to_le16(1);
                req.min_rx_rings = cpu_to_le16(1);
-               req.min_l2_ctxs = cpu_to_le16(1);
+               req.min_l2_ctxs = cpu_to_le16(BNXT_VF_MIN_L2_CTX);
                req.min_vnics = cpu_to_le16(1);
                req.min_stat_ctx = cpu_to_le16(1);
                req.min_hw_ring_grps = cpu_to_le16(1);
@@ -483,7 +483,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int 
num_vfs)
                req.min_cmpl_rings = cpu_to_le16(vf_cp_rings);
                req.min_tx_rings = cpu_to_le16(vf_tx_rings);
                req.min_rx_rings = cpu_to_le16(vf_rx_rings);
-               req.min_l2_ctxs = cpu_to_le16(4);
+               req.min_l2_ctxs = cpu_to_le16(BNXT_VF_MAX_L2_CTX);
                req.min_vnics = cpu_to_le16(vf_vnics);
                req.min_stat_ctx = cpu_to_le16(vf_stat_ctx);
                req.min_hw_ring_grps = cpu_to_le16(vf_ring_grps);
@@ -491,7 +491,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int 
num_vfs)
        req.max_cmpl_rings = cpu_to_le16(vf_cp_rings);
        req.max_tx_rings = cpu_to_le16(vf_tx_rings);
        req.max_rx_rings = cpu_to_le16(vf_rx_rings);
-       req.max_l2_ctxs = cpu_to_le16(4);
+       req.max_l2_ctxs = cpu_to_le16(BNXT_VF_MAX_L2_CTX);
        req.max_vnics = cpu_to_le16(vf_vnics);
        req.max_stat_ctx = cpu_to_le16(vf_stat_ctx);
        req.max_hw_ring_grps = cpu_to_le16(vf_ring_grps);
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h 
b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h
index 6f6d850..e9b20cd 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h
@@ -23,6 +23,11 @@
        ((offsetof(struct hwrm_reject_fwd_resp_input, encap_request) + n) >\
         offsetof(struct hwrm_reject_fwd_resp_input, encap_resp_target_id))
 
+#define BNXT_VF_MIN_RSS_CTX    1
+#define BNXT_VF_MAX_RSS_CTX    1
+#define BNXT_VF_MIN_L2_CTX     1
+#define BNXT_VF_MAX_L2_CTX     4
+
 int bnxt_get_vf_config(struct net_device *, int, struct ifla_vf_info *);
 int bnxt_set_vf_mac(struct net_device *, int, u8 *);
 int bnxt_set_vf_vlan(struct net_device *, int, u16, u8, __be16);
-- 
1.8.3.1

Reply via email to