mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-03 11:13:56 +08:00
bnx2x: Activate LFA
In case Link Flap Avoidance feature is supported by the MCP, bnx2x will enable it, and will pass the appropriate parameter when load request is sent to the MCP. 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
03f52a0a55
commit
b884d95b82
@ -2248,7 +2248,8 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
|
||||
DRV_PULSE_SEQ_MASK);
|
||||
BNX2X_DEV_INFO("drv_pulse 0x%x\n", bp->fw_drv_pulse_wr_seq);
|
||||
|
||||
load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ, 0);
|
||||
load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ,
|
||||
DRV_MSG_CODE_LOAD_REQ_WITH_LFA);
|
||||
if (!load_code) {
|
||||
BNX2X_ERR("MCP response failure, aborting\n");
|
||||
rc = -EBUSY;
|
||||
|
@ -2159,6 +2159,14 @@ struct shmem2_region {
|
||||
#define SHMEM_EEE_TIME_OUTPUT_BIT 0x80000000
|
||||
|
||||
u32 sizeof_port_stats;
|
||||
|
||||
/* Link Flap Avoidance */
|
||||
u32 lfa_host_addr[PORT_MAX];
|
||||
u32 reserved1;
|
||||
|
||||
u32 reserved2; /* Offset 0x148 */
|
||||
u32 reserved3; /* Offset 0x14C */
|
||||
u32 reserved4; /* Offset 0x150 */
|
||||
};
|
||||
|
||||
|
||||
|
@ -6267,6 +6267,10 @@ void bnx2x_pf_disable(struct bnx2x *bp)
|
||||
static void bnx2x__common_init_phy(struct bnx2x *bp)
|
||||
{
|
||||
u32 shmem_base[2], shmem2_base[2];
|
||||
/* Avoid common init in case MFW supports LFA */
|
||||
if (SHMEM2_RD(bp, size) >
|
||||
(u32)offsetof(struct shmem2_region, lfa_host_addr[BP_PORT(bp)]))
|
||||
return;
|
||||
shmem_base[0] = bp->common.shmem_base;
|
||||
shmem2_base[0] = bp->common.shmem2_base;
|
||||
if (!CHIP_IS_E1x(bp)) {
|
||||
@ -9862,6 +9866,14 @@ static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp)
|
||||
|
||||
bp->link_params.shmem_base = bp->common.shmem_base;
|
||||
bp->link_params.shmem2_base = bp->common.shmem2_base;
|
||||
if (SHMEM2_RD(bp, size) >
|
||||
(u32)offsetof(struct shmem2_region, lfa_host_addr[BP_PORT(bp)]))
|
||||
bp->link_params.lfa_base =
|
||||
REG_RD(bp, bp->common.shmem2_base +
|
||||
(u32)offsetof(struct shmem2_region,
|
||||
lfa_host_addr[BP_PORT(bp)]));
|
||||
else
|
||||
bp->link_params.lfa_base = 0;
|
||||
BNX2X_DEV_INFO("shmem offset 0x%x shmem2 offset 0x%x\n",
|
||||
bp->common.shmem_base, bp->common.shmem2_base);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user