Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3aaa403 authored by Yuval Mintz's avatar Yuval Mintz Committed by David S. Miller
Browse files

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: default avatarYuval Mintz <Yuval.Mintz@caviumnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d0b3fbb2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+5 −1
Original line number Diff line number Diff line
@@ -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);
}
+1 −1
Original line number Diff line number Diff line
@@ -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