Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 291591
b: refs/heads/master
c: 9e62e91
h: refs/heads/master
i:
  291589: 2fad851
  291587: 87d1c16
  291583: 9390fb3
v: v3
  • Loading branch information
Dmitry Kravkov authored and David S. Miller committed Mar 19, 2012
1 parent 09280a8 commit da7098b
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 45 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 910b220290a4568ebf7ecc368bd3d1d8236d2335
refs/heads/master: 9e62e912e56742af7eb7e0eeba3c7af4bb2f8537
16 changes: 12 additions & 4 deletions trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
Original file line number Diff line number Diff line change
Expand Up @@ -2117,14 +2117,22 @@ void bnx2x_set_ethtool_ops(struct net_device *netdev);
void bnx2x_notify_link_changed(struct bnx2x *bp);


#define BNX2X_MF_PROTOCOL(bp) \
#define BNX2X_MF_SD_PROTOCOL(bp) \
((bp)->mf_config[BP_VN(bp)] & FUNC_MF_CFG_PROTOCOL_MASK)

#ifdef BCM_CNIC
#define BNX2X_IS_MF_PROTOCOL_ISCSI(bp) \
(BNX2X_MF_PROTOCOL(bp) == FUNC_MF_CFG_PROTOCOL_ISCSI)
#define BNX2X_IS_MF_SD_PROTOCOL_ISCSI(bp) \
(BNX2X_MF_SD_PROTOCOL(bp) == FUNC_MF_CFG_PROTOCOL_ISCSI)

#define IS_MF_ISCSI_SD(bp) (IS_MF_SD(bp) && BNX2X_IS_MF_PROTOCOL_ISCSI(bp))
#define BNX2X_IS_MF_SD_PROTOCOL_FCOE(bp) \
(BNX2X_MF_SD_PROTOCOL(bp) == FUNC_MF_CFG_PROTOCOL_FCOE)

#define IS_MF_ISCSI_SD(bp) (IS_MF_SD(bp) && BNX2X_IS_MF_SD_PROTOCOL_ISCSI(bp))
#define IS_MF_FCOE_SD(bp) (IS_MF_SD(bp) && BNX2X_IS_MF_SD_PROTOCOL_FCOE(bp))

#define IS_MF_STORAGE_SD(bp) (IS_MF_SD(bp) && \
(BNX2X_IS_MF_SD_PROTOCOL_ISCSI(bp) || \
BNX2X_IS_MF_SD_PROTOCOL_FCOE(bp)))
#endif

#endif /* bnx2x.h */
8 changes: 4 additions & 4 deletions trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
Original file line number Diff line number Diff line change
Expand Up @@ -1453,8 +1453,8 @@ void bnx2x_set_num_queues(struct bnx2x *bp)
}

#ifdef BCM_CNIC
/* override in ISCSI SD mod */
if (IS_MF_ISCSI_SD(bp))
/* override in STORAGE SD mode */
if (IS_MF_STORAGE_SD(bp))
bp->num_queues = 1;
#endif
/* Add special queues */
Expand Down Expand Up @@ -3077,7 +3077,7 @@ int bnx2x_change_mac_addr(struct net_device *dev, void *p)
}

#ifdef BCM_CNIC
if (IS_MF_ISCSI_SD(bp) && !is_zero_ether_addr(addr->sa_data)) {
if (IS_MF_STORAGE_SD(bp) && !is_zero_ether_addr(addr->sa_data)) {
BNX2X_ERR("Can't configure non-zero address on iSCSI or FCoE functions in MF-SD mode\n");
return -EINVAL;
}
Expand Down Expand Up @@ -3199,7 +3199,7 @@ static int bnx2x_alloc_fp_mem_at(struct bnx2x *bp, int index)
int rx_ring_size = 0;

#ifdef BCM_CNIC
if (!bp->rx_ring_size && IS_MF_ISCSI_SD(bp)) {
if (!bp->rx_ring_size && IS_MF_STORAGE_SD(bp)) {
rx_ring_size = MIN_RX_SIZE_NONTPA;
bp->rx_ring_size = rx_ring_size;
} else
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
Original file line number Diff line number Diff line change
Expand Up @@ -1664,7 +1664,7 @@ static inline bool bnx2x_is_valid_ether_addr(struct bnx2x *bp, u8 *addr)
if (is_valid_ether_addr(addr))
return true;
#ifdef BCM_CNIC
if (is_zero_ether_addr(addr) && IS_MF_ISCSI_SD(bp))
if (is_zero_ether_addr(addr) && IS_MF_STORAGE_SD(bp))
return true;
#endif
return false;
Expand Down
82 changes: 47 additions & 35 deletions trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -7177,7 +7177,7 @@ int bnx2x_set_eth_mac(struct bnx2x *bp, bool set)
unsigned long ramrod_flags = 0;

#ifdef BCM_CNIC
if (is_zero_ether_addr(bp->dev->dev_addr) && IS_MF_ISCSI_SD(bp)) {
if (is_zero_ether_addr(bp->dev->dev_addr) && IS_MF_STORAGE_SD(bp)) {
DP(NETIF_MSG_IFUP | NETIF_MSG_IFDOWN,
"Ignoring Zero MAC for STORAGE SD mode\n");
return 0;
Expand Down Expand Up @@ -9479,6 +9479,7 @@ static void __devinit bnx2x_get_port_hwinfo(struct bnx2x *bp)

void bnx2x_get_iscsi_info(struct bnx2x *bp)
{
u32 no_flags = NO_ISCSI_FLAG;
#ifdef BCM_CNIC
int port = BP_PORT(bp);

Expand All @@ -9498,12 +9499,28 @@ void bnx2x_get_iscsi_info(struct bnx2x *bp)
* disable the feature.
*/
if (!bp->cnic_eth_dev.max_iscsi_conn)
bp->flags |= NO_ISCSI_FLAG;
bp->flags |= no_flags;
#else
bp->flags |= NO_ISCSI_FLAG;
bp->flags |= no_flags;
#endif
}

#ifdef BCM_CNIC
static void __devinit bnx2x_get_ext_wwn_info(struct bnx2x *bp, int func)
{
/* Port info */
bp->cnic_eth_dev.fcoe_wwn_port_name_hi =
MF_CFG_RD(bp, func_ext_config[func].fcoe_wwn_port_name_upper);
bp->cnic_eth_dev.fcoe_wwn_port_name_lo =
MF_CFG_RD(bp, func_ext_config[func].fcoe_wwn_port_name_lower);

/* Node info */
bp->cnic_eth_dev.fcoe_wwn_node_name_hi =
MF_CFG_RD(bp, func_ext_config[func].fcoe_wwn_node_name_upper);
bp->cnic_eth_dev.fcoe_wwn_node_name_lo =
MF_CFG_RD(bp, func_ext_config[func].fcoe_wwn_node_name_lower);
}
#endif
static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp)
{
#ifdef BCM_CNIC
Expand Down Expand Up @@ -9546,24 +9563,11 @@ static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp)
* Read the WWN info only if the FCoE feature is enabled for
* this function.
*/
if (cfg & MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD) {
/* Port info */
bp->cnic_eth_dev.fcoe_wwn_port_name_hi =
MF_CFG_RD(bp, func_ext_config[func].
fcoe_wwn_port_name_upper);
bp->cnic_eth_dev.fcoe_wwn_port_name_lo =
MF_CFG_RD(bp, func_ext_config[func].
fcoe_wwn_port_name_lower);

/* Node info */
bp->cnic_eth_dev.fcoe_wwn_node_name_hi =
MF_CFG_RD(bp, func_ext_config[func].
fcoe_wwn_node_name_upper);
bp->cnic_eth_dev.fcoe_wwn_node_name_lo =
MF_CFG_RD(bp, func_ext_config[func].
fcoe_wwn_node_name_lower);
}
}
if (cfg & MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD)
bnx2x_get_ext_wwn_info(bp, func);

} else if (IS_MF_FCOE_SD(bp))
bnx2x_get_ext_wwn_info(bp, func);

BNX2X_DEV_INFO("max_fcoe_conn 0x%x\n", bp->cnic_eth_dev.max_fcoe_conn);

Expand Down Expand Up @@ -9616,8 +9620,11 @@ static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp)
/*
* iSCSI and FCoE NPAR MACs: if there is no either iSCSI or
* FCoE MAC then the appropriate feature should be disabled.
*
* In non SD mode features configuration comes from
* struct func_ext_config.
*/
if (IS_MF_SI(bp)) {
if (!IS_MF_SD(bp)) {
u32 cfg = MF_CFG_RD(bp, func_ext_config[func].func_cfg);
if (cfg & MACP_FUNC_CFG_FLAGS_ISCSI_OFFLOAD) {
val2 = MF_CFG_RD(bp, func_ext_config[func].
Expand All @@ -9641,16 +9648,25 @@ static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp)

} else
bp->flags |= NO_FCOE_FLAG;
} else { /* SD mode */
if (BNX2X_IS_MF_PROTOCOL_ISCSI(bp)) {
/* use primary mac as iscsi mac */
memcpy(iscsi_mac, bp->dev->dev_addr, ETH_ALEN);
} else { /* SD MODE */
if (IS_MF_STORAGE_SD(bp)) {
if (BNX2X_IS_MF_SD_PROTOCOL_ISCSI(bp)) {
/* use primary mac as iscsi mac */
memcpy(iscsi_mac, bp->dev->dev_addr,
ETH_ALEN);

BNX2X_DEV_INFO("SD ISCSI MODE\n");
BNX2X_DEV_INFO("Read iSCSI MAC: %pM\n",
iscsi_mac);
} else { /* FCoE */
memcpy(fip_mac, bp->dev->dev_addr,
ETH_ALEN);
BNX2X_DEV_INFO("SD FCoE MODE\n");
BNX2X_DEV_INFO("Read FIP MAC: %pM\n",
fip_mac);
}
/* Zero primary MAC configuration */
memset(bp->dev->dev_addr, 0, ETH_ALEN);

BNX2X_DEV_INFO("SD ISCSI MODE\n");
BNX2X_DEV_INFO("Read iSCSI MAC: %pM\n",
iscsi_mac);
}
}
#endif
Expand Down Expand Up @@ -9679,10 +9695,6 @@ static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp)
memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ETH_ALEN);

#ifdef BCM_CNIC
/* Set the FCoE MAC in MF_SD mode */
if (!CHIP_IS_E1x(bp) && IS_MF_SD(bp))
memcpy(fip_mac, bp->dev->dev_addr, ETH_ALEN);

/* Disable iSCSI if MAC configuration is
* invalid.
*/
Expand Down Expand Up @@ -10092,7 +10104,7 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp)
bp->disable_tpa = disable_tpa;

#ifdef BCM_CNIC
bp->disable_tpa |= IS_MF_ISCSI_SD(bp);
bp->disable_tpa |= IS_MF_STORAGE_SD(bp);
#endif

/* Set TPA flags */
Expand Down

0 comments on commit da7098b

Please sign in to comment.