diff options
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 92 |
1 files changed, 2 insertions, 90 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index d17fa5ab15a..00706c4b090 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -27,7 +27,6 @@ #include "bnx2x_cmn.h" #include "bnx2x_init.h" #include "bnx2x_sp.h" -#include "bnx2x_sriov.h" /** * bnx2x_move_fp - move content of the fastpath structure. @@ -109,7 +108,7 @@ void bnx2x_fill_fw_str(struct bnx2x *bp, char *buf, size_t buf_len) (bp->common.bc_ver & 0xff), ((phy_fw_ver[0] != '\0') ? " phy " : ""), phy_fw_ver); } else { - strlcpy(buf, bp->acquire_resp.pfdev_info.fw_ver, buf_len); + bnx2x_vf_fill_fw_str(bp, buf, buf_len); } } @@ -2048,7 +2047,7 @@ static int bnx2x_alloc_fw_stats_mem(struct bnx2x *bp) * request struct */ if (IS_SRIOV(bp)) - vf_headroom = bp->vfdb->sriov.nr_virtfn * BNX2X_CLIENTS_PER_VF; + vf_headroom = bnx2x_vf_headroom(bp); /* Request is built from stats_query_header and an array of * stats_query_cmd_group each of which contains @@ -3793,93 +3792,6 @@ int bnx2x_setup_tc(struct net_device *dev, u8 num_tc) return 0; } -/* New mac for VF. Consider these cases: - * 1. VF hasn't been acquired yet - save the mac in local bulletin board and - * supply at acquire. - * 2. VF has already been acquired but has not yet initialized - store in local - * bulletin board. mac will be posted on VF bulletin board after VF init. VF - * will configure this mac when it is ready. - * 3. VF has already initialized but has not yet setup a queue - post the new - * mac on VF's bulletin board right now. VF will configure this mac when it - * is ready. - * 4. VF has already set a queue - delete any macs already configured for this - * queue and manually config the new mac. - * In any event, once this function has been called refuse any attempts by the - * VF to configure any mac for itself except for this mac. In case of a race - * where the VF fails to see the new post on its bulletin board before sending a - * mac configuration request, the PF will simply fail the request and VF can try - * again after consulting its bulletin board - */ -int bnx2x_set_vf_mac(struct net_device *dev, int queue, u8 *mac) -{ - struct bnx2x *bp = netdev_priv(dev); - int rc, q_logical_state, vfidx = queue; - struct bnx2x_virtf *vf = BP_VF(bp, vfidx); - struct pf_vf_bulletin_content *bulletin = BP_VF_BULLETIN(bp, vfidx); - - /* if SRIOV is disabled there is nothing to do (and somewhere, someone - * has erred). - */ - if (!IS_SRIOV(bp)) { - BNX2X_ERR("bnx2x_set_vf_mac called though sriov is disabled\n"); - return -EINVAL; - } - - if (!is_valid_ether_addr(mac)) { - BNX2X_ERR("mac address invalid\n"); - return -EINVAL; - } - - /* update PF's copy of the VF's bulletin. will no longer accept mac - * configuration requests from vf unless match this mac - */ - bulletin->valid_bitmap |= 1 << MAC_ADDR_VALID; - memcpy(bulletin->mac, mac, ETH_ALEN); - - /* Post update on VF's bulletin board */ - rc = bnx2x_post_vf_bulletin(bp, vfidx); - if (rc) { - BNX2X_ERR("failed to update VF[%d] bulletin\n", vfidx); - return rc; - } - - /* is vf initialized and queue set up? */ - q_logical_state = - bnx2x_get_q_logical_state(bp, &bnx2x_vfq(vf, 0, sp_obj)); - if (vf->state == VF_ENABLED && - q_logical_state == BNX2X_Q_LOGICAL_STATE_ACTIVE) { - /* configure the mac in device on this vf's queue */ - unsigned long flags = 0; - struct bnx2x_vlan_mac_obj *mac_obj = &bnx2x_vfq(vf, 0, mac_obj); - - /* must lock vfpf channel to protect against vf flows */ - bnx2x_lock_vf_pf_channel(bp, vf, CHANNEL_TLV_PF_SET_MAC); - - /* remove existing eth macs */ - rc = bnx2x_del_all_macs(bp, mac_obj, BNX2X_ETH_MAC, true); - if (rc) { - BNX2X_ERR("failed to delete eth macs\n"); - return -EINVAL; - } - - /* remove existing uc list macs */ - rc = bnx2x_del_all_macs(bp, mac_obj, BNX2X_UC_LIST_MAC, true); - if (rc) { - BNX2X_ERR("failed to delete uc_list macs\n"); - return -EINVAL; - } - - /* configure the new mac to device */ - __set_bit(RAMROD_COMP_WAIT, &flags); - bnx2x_set_mac_one(bp, (u8 *)&bulletin->mac, mac_obj, true, - BNX2X_ETH_MAC, &flags); - - bnx2x_unlock_vf_pf_channel(bp, vf, CHANNEL_TLV_PF_SET_MAC); - } - - return rc; -} - /* called with rtnl_lock */ int bnx2x_change_mac_addr(struct net_device *dev, void *p) { |