mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-13 21:02:35 +00:00
bnx2x: update fairness parameters following DCB negotiation
ETS can be enabled as a result of DCB negotiation, then fairness must be recalculated after each negotiation. Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Ariel Elior <ariele@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
507393eb29
commit
568e24260f
@ -2453,4 +2453,6 @@ enum bnx2x_pci_bus_speed {
|
|||||||
BNX2X_PCI_LINK_SPEED_5000 = 5000,
|
BNX2X_PCI_LINK_SPEED_5000 = 5000,
|
||||||
BNX2X_PCI_LINK_SPEED_8000 = 8000
|
BNX2X_PCI_LINK_SPEED_8000 = 8000
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void bnx2x_set_local_cmng(struct bnx2x *bp);
|
||||||
#endif /* bnx2x.h */
|
#endif /* bnx2x.h */
|
||||||
|
@ -753,6 +753,10 @@ void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)
|
|||||||
bnx2x_pfc_set_pfc(bp);
|
bnx2x_pfc_set_pfc(bp);
|
||||||
|
|
||||||
bnx2x_dcbx_update_ets_params(bp);
|
bnx2x_dcbx_update_ets_params(bp);
|
||||||
|
|
||||||
|
/* ets may affect cmng configuration: reinit it in hw */
|
||||||
|
bnx2x_set_local_cmng(bp);
|
||||||
|
|
||||||
bnx2x_dcbx_resume_hw_tx(bp);
|
bnx2x_dcbx_resume_hw_tx(bp);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -2476,7 +2476,7 @@ static void bnx2x_cmng_fns_init(struct bnx2x *bp, u8 read_cfg, u8 cmng_type)
|
|||||||
|
|
||||||
input.port_rate = bp->link_vars.line_speed;
|
input.port_rate = bp->link_vars.line_speed;
|
||||||
|
|
||||||
if (cmng_type == CMNG_FNS_MINMAX) {
|
if (cmng_type == CMNG_FNS_MINMAX && input.port_rate) {
|
||||||
int vn;
|
int vn;
|
||||||
|
|
||||||
/* read mf conf from shmem */
|
/* read mf conf from shmem */
|
||||||
@ -2533,6 +2533,21 @@ static void storm_memset_cmng(struct bnx2x *bp,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* init cmng mode in HW according to local configuration */
|
||||||
|
void bnx2x_set_local_cmng(struct bnx2x *bp)
|
||||||
|
{
|
||||||
|
int cmng_fns = bnx2x_get_cmng_fns_mode(bp);
|
||||||
|
|
||||||
|
if (cmng_fns != CMNG_FNS_NONE) {
|
||||||
|
bnx2x_cmng_fns_init(bp, false, cmng_fns);
|
||||||
|
storm_memset_cmng(bp, &bp->cmng, BP_PORT(bp));
|
||||||
|
} else {
|
||||||
|
/* rate shaping and fairness are disabled */
|
||||||
|
DP(NETIF_MSG_IFUP,
|
||||||
|
"single function mode without fairness\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* This function is called upon link interrupt */
|
/* This function is called upon link interrupt */
|
||||||
static void bnx2x_link_attn(struct bnx2x *bp)
|
static void bnx2x_link_attn(struct bnx2x *bp)
|
||||||
{
|
{
|
||||||
@ -2568,17 +2583,8 @@ static void bnx2x_link_attn(struct bnx2x *bp)
|
|||||||
bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP);
|
bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bp->link_vars.link_up && bp->link_vars.line_speed) {
|
if (bp->link_vars.link_up && bp->link_vars.line_speed)
|
||||||
int cmng_fns = bnx2x_get_cmng_fns_mode(bp);
|
bnx2x_set_local_cmng(bp);
|
||||||
|
|
||||||
if (cmng_fns != CMNG_FNS_NONE) {
|
|
||||||
bnx2x_cmng_fns_init(bp, false, cmng_fns);
|
|
||||||
storm_memset_cmng(bp, &bp->cmng, BP_PORT(bp));
|
|
||||||
} else
|
|
||||||
/* rate shaping and fairness are disabled */
|
|
||||||
DP(NETIF_MSG_IFUP,
|
|
||||||
"single function mode without fairness\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
__bnx2x_link_report(bp);
|
__bnx2x_link_report(bp);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user