diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2010-06-01 11:32:43 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-03 03:27:56 -0700 |
commit | d42a8f464ba14467e5d45dc0eb8f789c82bd0679 (patch) | |
tree | 5c5b597786a8fa05f38cccb856171f0f8abee031 /drivers/net/sfc/siena.c | |
parent | fbc2e7d9cf49e0bf89b9e91fd60a06851a855c5d (diff) | |
download | op-kernel-dev-d42a8f464ba14467e5d45dc0eb8f789c82bd0679.zip op-kernel-dev-d42a8f464ba14467e5d45dc0eb8f789c82bd0679.tar.gz |
sfc: Get port number from CS_PORT_NUM, not PCI function number
A single shared memory region used to communicate with firmware is
mapped into both PCI PFs of the SFC9020 and SFL9021. Drivers must be
able to identify which port they are addressing in order to use the
correct sub-region. Currently we use the PCI function number, but the
PCI address may be virtualised. Use the CS_PORT_NUM register field
defined for just this purpose.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/siena.c')
-rw-r--r-- | drivers/net/sfc/siena.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/sfc/siena.c b/drivers/net/sfc/siena.c index 727b422..7ecd255 100644 --- a/drivers/net/sfc/siena.c +++ b/drivers/net/sfc/siena.c @@ -206,6 +206,7 @@ static int siena_probe_nic(struct efx_nic *efx) { struct siena_nic_data *nic_data; bool already_attached = 0; + efx_oword_t reg; int rc; /* Allocate storage for hardware specific data */ @@ -220,6 +221,9 @@ static int siena_probe_nic(struct efx_nic *efx) goto fail1; } + efx_reado(efx, ®, FR_AZ_CS_DEBUG); + efx->port_num = EFX_OWORD_FIELD(reg, FRF_CZ_CS_PORT_NUM) - 1; + efx_mcdi_init(efx); /* Recover from a failed assertion before probing */ |