mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-13 00:20:06 +00:00
bnx2x: Fix PFC setting on BCM57840
This patch handles the second port of a path in a 4-port device of BCM57840. Signed-off-by: Yaniv Rosner <yanivr@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
11b2ec6b73
commit
127302bb42
@ -2502,7 +2502,7 @@ static void bnx2x_update_pfc_nig(struct link_params *params,
|
||||
struct bnx2x_nig_brb_pfc_port_params *nig_params)
|
||||
{
|
||||
u32 xcm_mask = 0, ppp_enable = 0, pause_enable = 0, llfc_out_en = 0;
|
||||
u32 llfc_enable = 0, xcm0_out_en = 0, p0_hwpfc_enable = 0;
|
||||
u32 llfc_enable = 0, xcm_out_en = 0, hwpfc_enable = 0;
|
||||
u32 pkt_priority_to_cos = 0;
|
||||
struct bnx2x *bp = params->bp;
|
||||
u8 port = params->port;
|
||||
@ -2516,9 +2516,8 @@ static void bnx2x_update_pfc_nig(struct link_params *params,
|
||||
* MAC control frames (that are not pause packets)
|
||||
* will be forwarded to the XCM.
|
||||
*/
|
||||
xcm_mask = REG_RD(bp,
|
||||
port ? NIG_REG_LLH1_XCM_MASK :
|
||||
NIG_REG_LLH0_XCM_MASK);
|
||||
xcm_mask = REG_RD(bp, port ? NIG_REG_LLH1_XCM_MASK :
|
||||
NIG_REG_LLH0_XCM_MASK);
|
||||
/*
|
||||
* nig params will override non PFC params, since it's possible to
|
||||
* do transition from PFC to SAFC
|
||||
@ -2533,8 +2532,8 @@ static void bnx2x_update_pfc_nig(struct link_params *params,
|
||||
ppp_enable = 1;
|
||||
xcm_mask &= ~(port ? NIG_LLH1_XCM_MASK_REG_LLH1_XCM_MASK_BCN :
|
||||
NIG_LLH0_XCM_MASK_REG_LLH0_XCM_MASK_BCN);
|
||||
xcm0_out_en = 0;
|
||||
p0_hwpfc_enable = 1;
|
||||
xcm_out_en = 0;
|
||||
hwpfc_enable = 1;
|
||||
} else {
|
||||
if (nig_params) {
|
||||
llfc_out_en = nig_params->llfc_out_en;
|
||||
@ -2545,7 +2544,7 @@ static void bnx2x_update_pfc_nig(struct link_params *params,
|
||||
|
||||
xcm_mask |= (port ? NIG_LLH1_XCM_MASK_REG_LLH1_XCM_MASK_BCN :
|
||||
NIG_LLH0_XCM_MASK_REG_LLH0_XCM_MASK_BCN);
|
||||
xcm0_out_en = 1;
|
||||
xcm_out_en = 1;
|
||||
}
|
||||
|
||||
if (CHIP_IS_E3(bp))
|
||||
@ -2564,13 +2563,16 @@ static void bnx2x_update_pfc_nig(struct link_params *params,
|
||||
REG_WR(bp, port ? NIG_REG_LLH1_XCM_MASK :
|
||||
NIG_REG_LLH0_XCM_MASK, xcm_mask);
|
||||
|
||||
REG_WR(bp, NIG_REG_LLFC_EGRESS_SRC_ENABLE_0, 0x7);
|
||||
REG_WR(bp, port ? NIG_REG_LLFC_EGRESS_SRC_ENABLE_1 :
|
||||
NIG_REG_LLFC_EGRESS_SRC_ENABLE_0, 0x7);
|
||||
|
||||
/* output enable for RX_XCM # IF */
|
||||
REG_WR(bp, NIG_REG_XCM0_OUT_EN, xcm0_out_en);
|
||||
REG_WR(bp, port ? NIG_REG_XCM1_OUT_EN :
|
||||
NIG_REG_XCM0_OUT_EN, xcm_out_en);
|
||||
|
||||
/* HW PFC TX enable */
|
||||
REG_WR(bp, NIG_REG_P0_HWPFC_ENABLE, p0_hwpfc_enable);
|
||||
REG_WR(bp, port ? NIG_REG_P1_HWPFC_ENABLE :
|
||||
NIG_REG_P0_HWPFC_ENABLE, hwpfc_enable);
|
||||
|
||||
if (nig_params) {
|
||||
u8 i = 0;
|
||||
|
@ -2176,6 +2176,7 @@
|
||||
* set to 0x345678021. This is a new register (with 2_) added in E3 B0 to
|
||||
* accommodate the 9 input clients to ETS arbiter. */
|
||||
#define NIG_REG_P0_TX_ARB_PRIORITY_CLIENT2_MSB 0x18684
|
||||
#define NIG_REG_P1_HWPFC_ENABLE 0x181d0
|
||||
#define NIG_REG_P1_MAC_IN_EN 0x185c0
|
||||
/* [RW 1] Output enable for TX MAC interface */
|
||||
#define NIG_REG_P1_MAC_OUT_EN 0x185c4
|
||||
|
Loading…
x
Reference in New Issue
Block a user