Commit 7185bb33 authored by Dmitry Kravkov's avatar Dmitry Kravkov Committed by David S. Miller

bnx2x: properly initialize L5 features

The code is missing initialization of NO_FCOE_FLAG and NO_ISCSI*FLAGS
when CONFIG_CNIC is not selected.
This causes panic during driver load since commit
1d187b34 where NO_FCOE tested
unconditionally (outside #ifdef BCM_CNIC  structure) and
accessed fp[FCOE_IDX] which is not allocated.
Reported-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6d4cdf47
...@@ -1491,7 +1491,6 @@ static inline u16 bnx2x_extract_max_cfg(struct bnx2x *bp, u32 mf_cfg) ...@@ -1491,7 +1491,6 @@ static inline u16 bnx2x_extract_max_cfg(struct bnx2x *bp, u32 mf_cfg)
return max_cfg; return max_cfg;
} }
#ifdef BCM_CNIC
/** /**
* bnx2x_get_iscsi_info - update iSCSI params according to licensing info. * bnx2x_get_iscsi_info - update iSCSI params according to licensing info.
* *
...@@ -1499,7 +1498,6 @@ static inline u16 bnx2x_extract_max_cfg(struct bnx2x *bp, u32 mf_cfg) ...@@ -1499,7 +1498,6 @@ static inline u16 bnx2x_extract_max_cfg(struct bnx2x *bp, u32 mf_cfg)
* *
*/ */
void bnx2x_get_iscsi_info(struct bnx2x *bp); void bnx2x_get_iscsi_info(struct bnx2x *bp);
#endif
/* returns func by VN for current port */ /* returns func by VN for current port */
static inline int func_by_vn(struct bnx2x *bp, int vn) static inline int func_by_vn(struct bnx2x *bp, int vn)
......
...@@ -9478,9 +9478,9 @@ static void __devinit bnx2x_get_port_hwinfo(struct bnx2x *bp) ...@@ -9478,9 +9478,9 @@ static void __devinit bnx2x_get_port_hwinfo(struct bnx2x *bp)
bp->common.shmem2_base); bp->common.shmem2_base);
} }
#ifdef BCM_CNIC
void bnx2x_get_iscsi_info(struct bnx2x *bp) void bnx2x_get_iscsi_info(struct bnx2x *bp)
{ {
#ifdef BCM_CNIC
int port = BP_PORT(bp); int port = BP_PORT(bp);
u32 max_iscsi_conn = FW_ENCODE_32BIT_PATTERN ^ SHMEM_RD(bp, u32 max_iscsi_conn = FW_ENCODE_32BIT_PATTERN ^ SHMEM_RD(bp,
...@@ -9500,10 +9500,14 @@ void bnx2x_get_iscsi_info(struct bnx2x *bp) ...@@ -9500,10 +9500,14 @@ void bnx2x_get_iscsi_info(struct bnx2x *bp)
*/ */
if (!bp->cnic_eth_dev.max_iscsi_conn) if (!bp->cnic_eth_dev.max_iscsi_conn)
bp->flags |= NO_ISCSI_FLAG; bp->flags |= NO_ISCSI_FLAG;
#else
bp->flags |= NO_ISCSI_FLAG;
#endif
} }
static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp) static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp)
{ {
#ifdef BCM_CNIC
int port = BP_PORT(bp); int port = BP_PORT(bp);
int func = BP_ABS_FUNC(bp); int func = BP_ABS_FUNC(bp);
...@@ -9570,6 +9574,9 @@ static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp) ...@@ -9570,6 +9574,9 @@ static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp)
*/ */
if (!bp->cnic_eth_dev.max_fcoe_conn) if (!bp->cnic_eth_dev.max_fcoe_conn)
bp->flags |= NO_FCOE_FLAG; bp->flags |= NO_FCOE_FLAG;
#else
bp->flags |= NO_FCOE_FLAG;
#endif
} }
static void __devinit bnx2x_get_cnic_info(struct bnx2x *bp) static void __devinit bnx2x_get_cnic_info(struct bnx2x *bp)
...@@ -9582,7 +9589,6 @@ static void __devinit bnx2x_get_cnic_info(struct bnx2x *bp) ...@@ -9582,7 +9589,6 @@ static void __devinit bnx2x_get_cnic_info(struct bnx2x *bp)
bnx2x_get_iscsi_info(bp); bnx2x_get_iscsi_info(bp);
bnx2x_get_fcoe_info(bp); bnx2x_get_fcoe_info(bp);
} }
#endif
static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp) static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp)
{ {
...@@ -9907,9 +9913,7 @@ static int __devinit bnx2x_get_hwinfo(struct bnx2x *bp) ...@@ -9907,9 +9913,7 @@ static int __devinit bnx2x_get_hwinfo(struct bnx2x *bp)
/* Get MAC addresses */ /* Get MAC addresses */
bnx2x_get_mac_hwinfo(bp); bnx2x_get_mac_hwinfo(bp);
#ifdef BCM_CNIC
bnx2x_get_cnic_info(bp); bnx2x_get_cnic_info(bp);
#endif
/* Get current FW pulse sequence */ /* Get current FW pulse sequence */
if (!BP_NOMCP(bp)) { if (!BP_NOMCP(bp)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment