summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/ef10.c
diff options
context:
space:
mode:
authorShradha Shah <sshah@solarflare.com>2015-06-02 11:38:16 +0100
committerDavid S. Miller <davem@davemloft.net>2015-06-02 12:57:26 -0700
commit1d051e009851334899e2041c3d8dcde36e2db1c2 (patch)
treea90a782f3b1da0db83b4064208c9d60b0dd8b23c /drivers/net/ethernet/sfc/ef10.c
parent0f5c0845882745bc5fde9dbbf553926435efe887 (diff)
downloadlinux-1d051e009851334899e2041c3d8dcde36e2db1c2.tar.gz
linux-1d051e009851334899e2041c3d8dcde36e2db1c2.tar.xz
sfc: Implement ndo_gets_phys_port_id() for EF10 VFs
Signed-off-by: Shradha Shah <sshah@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/ef10.c')
-rw-r--r--drivers/net/ethernet/sfc/ef10.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
index e659da818c6c..22c5dc3ba43b 100644
--- a/drivers/net/ethernet/sfc/ef10.c
+++ b/drivers/net/ethernet/sfc/ef10.c
@@ -406,6 +406,16 @@ static int efx_ef10_probe(struct efx_nic *efx)
efx_ptp_probe(efx, NULL);
+#ifdef CONFIG_SFC_SRIOV
+ if ((efx->pci_dev->physfn) && (!efx->pci_dev->is_physfn)) {
+ struct pci_dev *pci_dev_pf = efx->pci_dev->physfn;
+ struct efx_nic *efx_pf = pci_get_drvdata(pci_dev_pf);
+
+ efx_pf->type->get_mac_address(efx_pf, nic_data->port_id);
+ } else
+#endif
+ ether_addr_copy(nic_data->port_id, efx->net_dev->perm_addr);
+
return 0;
fail5:
@@ -4140,6 +4150,7 @@ const struct efx_nic_type efx_hunt_a0_vf_nic_type = {
.vswitching_probe = efx_ef10_vswitching_probe_vf,
.vswitching_restore = efx_ef10_vswitching_restore_vf,
.vswitching_remove = efx_ef10_vswitching_remove_vf,
+ .sriov_get_phys_port_id = efx_ef10_sriov_get_phys_port_id,
#endif
.get_mac_address = efx_ef10_get_mac_address_vf,
.set_mac_address = efx_ef10_set_mac_address,