summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c92
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 d17fa5a..00706c4 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)
{