| From b840c9cf14249b4fd8a564cb4395ab3ee81eefdb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 10 Jul 2025 14:39:36 -0700 |
| Subject: bnxt_en: Fix DCB ETS validation |
| |
| From: Shravya KN <shravya.k-n@broadcom.com> |
| |
| [ Upstream commit b74c2a2e9cc471e847abd87e50a2354c07e02040 ] |
| |
| In bnxt_ets_validate(), the code incorrectly loops over all possible |
| traffic classes to check and add the ETS settings. Fix it to loop |
| over the configured traffic classes only. |
| |
| The unconfigured traffic classes will default to TSA_ETS with 0 |
| bandwidth. Looping over these unconfigured traffic classes may |
| cause the validation to fail and trigger this error message: |
| |
| "rejecting ETS config starving a TC\n" |
| |
| The .ieee_setets() will then fail. |
| |
| Fixes: 7df4ae9fe855 ("bnxt_en: Implement DCBNL to support host-based DCBX.") |
| Reviewed-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
| Signed-off-by: Shravya KN <shravya.k-n@broadcom.com> |
| Signed-off-by: Michael Chan <michael.chan@broadcom.com> |
| Link: https://patch.msgid.link/20250710213938.1959625-2-michael.chan@broadcom.com |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c |
| index 228a5db7e1434..596513ffdfd9c 100644 |
| --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c |
| +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c |
| @@ -479,7 +479,9 @@ static int bnxt_ets_validate(struct bnxt *bp, struct ieee_ets *ets, u8 *tc) |
| |
| if ((ets->tc_tx_bw[i] || ets->tc_tsa[i]) && i > bp->max_tc) |
| return -EINVAL; |
| + } |
| |
| + for (i = 0; i < max_tc; i++) { |
| switch (ets->tc_tsa[i]) { |
| case IEEE_8021QAZ_TSA_STRICT: |
| break; |
| -- |
| 2.39.5 |
| |