mirror of https://gitee.com/openkylin/linux.git
qed: Pass MAC hints to VFs
Some hypervisors can support MAC hints to their VFs. Even though we don't have such a hypervisor API in linux, we add sufficient logic for the VF to be able to receive such hints and set the mac accordingly - as long as the VF has not been set with a MAC already. Signed-off-by: Yuval Mintz <Yuval.Mintz@caviumnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d0b3fbb230
commit
c3aaa40384
|
@ -1230,8 +1230,8 @@ static void qed_handle_bulletin_change(struct qed_hwfn *hwfn)
|
|||
|
||||
is_mac_exist = qed_vf_bulletin_get_forced_mac(hwfn, mac,
|
||||
&is_mac_forced);
|
||||
if (is_mac_exist && is_mac_forced && cookie)
|
||||
ops->force_mac(cookie, mac);
|
||||
if (is_mac_exist && cookie)
|
||||
ops->force_mac(cookie, mac, !!is_mac_forced);
|
||||
|
||||
/* Always update link configuration according to bulletin */
|
||||
qed_link_update(hwfn);
|
||||
|
|
|
@ -171,10 +171,14 @@ static struct pci_driver qede_pci_driver = {
|
|||
#endif
|
||||
};
|
||||
|
||||
static void qede_force_mac(void *dev, u8 *mac)
|
||||
static void qede_force_mac(void *dev, u8 *mac, bool forced)
|
||||
{
|
||||
struct qede_dev *edev = dev;
|
||||
|
||||
/* MAC hints take effect only if we haven't set one already */
|
||||
if (is_valid_ether_addr(edev->ndev->dev_addr) && !forced)
|
||||
return;
|
||||
|
||||
ether_addr_copy(edev->ndev->dev_addr, mac);
|
||||
ether_addr_copy(edev->primary_mac, mac);
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@ struct qed_tunn_params {
|
|||
|
||||
struct qed_eth_cb_ops {
|
||||
struct qed_common_cb_ops common;
|
||||
void (*force_mac) (void *dev, u8 *mac);
|
||||
void (*force_mac) (void *dev, u8 *mac, bool forced);
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DCB
|
||||
|
|
Loading…
Reference in New Issue