bnxt_en: Call firmware to approve the random VF MAC address.
After generating the random MAC address for VF, call the firmware to approve it. This step serves 2 purposes. Some hypervisor (e.g. ESX) wants to approve the MAC address. 2nd, the call will setup the proper forwarding database in the internal switch. We need to unlock the hwrm_cmd_lock mutex before calling bnxt_approve_mac(). We can do that because we are at the end of the function and all the previous firmware response data has been copied. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7cc5a20e38
commit
001154eb24
|
@ -4210,11 +4210,16 @@ int bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
|||
vf->max_stat_ctxs = le16_to_cpu(resp->max_stat_ctx);
|
||||
|
||||
memcpy(vf->mac_addr, resp->mac_address, ETH_ALEN);
|
||||
if (is_valid_ether_addr(vf->mac_addr))
|
||||
mutex_unlock(&bp->hwrm_cmd_lock);
|
||||
|
||||
if (is_valid_ether_addr(vf->mac_addr)) {
|
||||
/* overwrite netdev dev_adr with admin VF MAC */
|
||||
memcpy(bp->dev->dev_addr, vf->mac_addr, ETH_ALEN);
|
||||
else
|
||||
} else {
|
||||
random_ether_addr(bp->dev->dev_addr);
|
||||
rc = bnxt_approve_mac(bp, bp->dev->dev_addr);
|
||||
}
|
||||
return rc;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue