summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/ef10.c
diff options
context:
space:
mode:
authorDaniel Pieczko2015-05-06 01:57:53 +0200
committerDavid S. Miller2015-05-09 22:16:47 +0200
commit1cd9ecbbe6e9261578510962ad899415053acc1d (patch)
treefd4b67771b4b2e9129e2379e31c8d1327995cf1a /drivers/net/ethernet/sfc/ef10.c
parentsfc: create VEB vswitch and vport above default firmware setup (diff)
downloadkernel-qcow2-linux-1cd9ecbbe6e9261578510962ad899415053acc1d.tar.gz
kernel-qcow2-linux-1cd9ecbbe6e9261578510962ad899415053acc1d.tar.xz
kernel-qcow2-linux-1cd9ecbbe6e9261578510962ad899415053acc1d.zip
sfc: get the PF number and record in nic_data
Use MC_CMD_GET_FUNCTION_INFO to record the PF number in nic_data. This will be needed when assigned vports to 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.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
index 91a58962f188..4d6d194dbc4c 100644
--- a/drivers/net/ethernet/sfc/ef10.c
+++ b/drivers/net/ethernet/sfc/ef10.c
@@ -96,6 +96,24 @@ static unsigned int efx_ef10_mem_map_size(struct efx_nic *efx)
return resource_size(&efx->pci_dev->resource[EFX_MEM_BAR]);
}
+static int efx_ef10_get_pf_index(struct efx_nic *efx)
+{
+ MCDI_DECLARE_BUF(outbuf, MC_CMD_GET_FUNCTION_INFO_OUT_LEN);
+ struct efx_ef10_nic_data *nic_data = efx->nic_data;
+ size_t outlen;
+ int rc;
+
+ rc = efx_mcdi_rpc(efx, MC_CMD_GET_FUNCTION_INFO, NULL, 0, outbuf,
+ sizeof(outbuf), &outlen);
+ if (rc)
+ return rc;
+ if (outlen < sizeof(outbuf))
+ return -EIO;
+
+ nic_data->pf_index = MCDI_DWORD(outbuf, GET_FUNCTION_INFO_OUT_PF);
+ return 0;
+}
+
static int efx_ef10_init_datapath_caps(struct efx_nic *efx)
{
MCDI_DECLARE_BUF(outbuf, MC_CMD_GET_CAPABILITIES_OUT_LEN);
@@ -240,6 +258,10 @@ static int efx_ef10_probe(struct efx_nic *efx)
if (rc)
goto fail3;
+ rc = efx_ef10_get_pf_index(efx);
+ if (rc)
+ goto fail3;
+
rc = efx_ef10_init_datapath_caps(efx);
if (rc < 0)
goto fail3;