aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c3
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h8
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c12
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)
6267static void bnx2x__common_init_phy(struct bnx2x *bp) 6267static 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