diff options
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h | 8 | ||||
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 12 |
3 files changed, 22 insertions, 1 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index 54d522da1aa7..2d30979e8dad 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | |||
@@ -2248,7 +2248,8 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
2248 | DRV_PULSE_SEQ_MASK); | 2248 | DRV_PULSE_SEQ_MASK); |
2249 | BNX2X_DEV_INFO("drv_pulse 0x%x\n", bp->fw_drv_pulse_wr_seq); | 2249 | BNX2X_DEV_INFO("drv_pulse 0x%x\n", bp->fw_drv_pulse_wr_seq); |
2250 | 2250 | ||
2251 | load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ, 0); | 2251 | load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ, |
2252 | DRV_MSG_CODE_LOAD_REQ_WITH_LFA); | ||
2252 | if (!load_code) { | 2253 | if (!load_code) { |
2253 | BNX2X_ERR("MCP response failure, aborting\n"); | 2254 | BNX2X_ERR("MCP response failure, aborting\n"); |
2254 | rc = -EBUSY; | 2255 | rc = -EBUSY; |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h index 7eaa74b78a5b..f478bedf9e9e 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h | |||
@@ -2159,6 +2159,14 @@ struct shmem2_region { | |||
2159 | #define SHMEM_EEE_TIME_OUTPUT_BIT 0x80000000 | 2159 | #define SHMEM_EEE_TIME_OUTPUT_BIT 0x80000000 |
2160 | 2160 | ||
2161 | u32 sizeof_port_stats; | 2161 | u32 sizeof_port_stats; |
2162 | |||
2163 | /* Link Flap Avoidance */ | ||
2164 | u32 lfa_host_addr[PORT_MAX]; | ||
2165 | u32 reserved1; | ||
2166 | |||
2167 | u32 reserved2; /* Offset 0x148 */ | ||
2168 | u32 reserved3; /* Offset 0x14C */ | ||
2169 | u32 reserved4; /* Offset 0x150 */ | ||
2162 | }; | 2170 | }; |
2163 | 2171 | ||
2164 | 2172 | ||
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 54b8c1f19d39..4f33170a18d2 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | |||
@@ -6267,6 +6267,10 @@ void bnx2x_pf_disable(struct bnx2x *bp) | |||
6267 | static void bnx2x__common_init_phy(struct bnx2x *bp) | 6267 | static void bnx2x__common_init_phy(struct bnx2x *bp) |
6268 | { | 6268 | { |
6269 | u32 shmem_base[2], shmem2_base[2]; | 6269 | u32 shmem_base[2], shmem2_base[2]; |
6270 | /* Avoid common init in case MFW supports LFA */ | ||
6271 | if (SHMEM2_RD(bp, size) > | ||
6272 | (u32)offsetof(struct shmem2_region, lfa_host_addr[BP_PORT(bp)])) | ||
6273 | return; | ||
6270 | shmem_base[0] = bp->common.shmem_base; | 6274 | shmem_base[0] = bp->common.shmem_base; |
6271 | shmem2_base[0] = bp->common.shmem2_base; | 6275 | shmem2_base[0] = bp->common.shmem2_base; |
6272 | if (!CHIP_IS_E1x(bp)) { | 6276 | if (!CHIP_IS_E1x(bp)) { |
@@ -9862,6 +9866,14 @@ static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp) | |||
9862 | 9866 | ||
9863 | bp->link_params.shmem_base = bp->common.shmem_base; | 9867 | bp->link_params.shmem_base = bp->common.shmem_base; |
9864 | bp->link_params.shmem2_base = bp->common.shmem2_base; | 9868 | bp->link_params.shmem2_base = bp->common.shmem2_base; |
9869 | if (SHMEM2_RD(bp, size) > | ||
9870 | (u32)offsetof(struct shmem2_region, lfa_host_addr[BP_PORT(bp)])) | ||
9871 | bp->link_params.lfa_base = | ||
9872 | REG_RD(bp, bp->common.shmem2_base + | ||
9873 | (u32)offsetof(struct shmem2_region, | ||
9874 | lfa_host_addr[BP_PORT(bp)])); | ||
9875 | else | ||
9876 | bp->link_params.lfa_base = 0; | ||
9865 | BNX2X_DEV_INFO("shmem offset 0x%x shmem2 offset 0x%x\n", | 9877 | BNX2X_DEV_INFO("shmem offset 0x%x shmem2 offset 0x%x\n", |
9866 | bp->common.shmem_base, bp->common.shmem2_base); | 9878 | bp->common.shmem_base, bp->common.shmem2_base); |
9867 | 9879 | ||