bnxt_en: Set ETS min_bw parameter for older firmware.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 24 Jul 2017 16:34:26 +0000 (12:34 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Jul 2017 00:29:58 +0000 (17:29 -0700)
In addition to the ETS weight, older firmware also requires the min_bw
parameter to be set for it to work properly.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.h

index c0145898f64c76683b4720d7f13616cc672d3bd4..aa1f3a2c7a7865cce7970e2e7b75f74b218d5df7 100644 (file)
@@ -93,6 +93,12 @@ static int bnxt_hwrm_queue_cos2bw_cfg(struct bnxt *bp, struct ieee_ets *ets,
                        cos2bw.tsa =
                                QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_ETS;
                        cos2bw.bw_weight = ets->tc_tx_bw[i];
+                       /* older firmware requires min_bw to be set to the
+                        * same weight value in percent.
+                        */
+                       cos2bw.min_bw =
+                               cpu_to_le32((ets->tc_tx_bw[i] * 100) |
+                                           BW_VALUE_UNIT_PERCENT1_100);
                }
                memcpy(data, &cos2bw.queue_id, sizeof(cos2bw) - 4);
                if (i == 0) {
index ecd0a5e46a493bf325e93deba1d973a9d1667dbf..d2e0af960bf59c0052ac93d044eedbe285a90779 100644 (file)
@@ -26,6 +26,7 @@ struct bnxt_cos2bw_cfg {
        u8                      queue_id;
        __le32                  min_bw;
        __le32                  max_bw;
+#define BW_VALUE_UNIT_PERCENT1_100             (0x1UL << 29)
        u8                      tsa;
        u8                      pri_lvl;
        u8                      bw_weight;