aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/mcdi.c
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2013-08-20 15:35:50 -0400
committerBen Hutchings <bhutchings@solarflare.com>2013-08-21 15:20:37 -0400
commitf2b0befd1dd2f0b08feff8e66741d56b239af7b8 (patch)
tree2ae897bb9c543a5043d573d9f08820aa7b7cead1 /drivers/net/ethernet/sfc/mcdi.c
parent5bc283e51327e249459caab1aff505000ae2beeb (diff)
sfc: Update MCDI protocol definitions for EF10
EF10 controllers do not have shared memory for communication with the MC; instead it reads requests and writes responses in host memory, which allows for longer messages. It is also responsible for all datapath control operations and hardware resource allocation, which requires a large number of new commands and adds more possible error cases. MCDI v2 extends the message header to support this. Update the MCDI protocol definition header to include v2 lengths, errors and messages, and a few definitions specific to the SFC9100 family (codenames Farmingdale and Huntington) which is the first generation of EF10. Some messages have been extended, so adjust the code accordingly: - The request for MC_CMD_DRV_ATTACH now includes a datapath firmware ID. This is ignored by Siena but we should fill it in anyway, initially always specifying low-latency datapath. - The response for MC_CMD_GET_LOOPBACK_MODES now includes a 40G field. Accept shorter responses that don't include it. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc/mcdi.c')
-rw-r--r--drivers/net/ethernet/sfc/mcdi.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
index 4f3301d84f64..c6c5830996cf 100644
--- a/drivers/net/ethernet/sfc/mcdi.c
+++ b/drivers/net/ethernet/sfc/mcdi.c
@@ -593,6 +593,7 @@ int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
593 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_NEW_STATE, 593 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_NEW_STATE,
594 driver_operating ? 1 : 0); 594 driver_operating ? 1 : 0);
595 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_UPDATE, 1); 595 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_UPDATE, 1);
596 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_FIRMWARE_ID, MC_CMD_FW_LOW_LATENCY);
596 597
597 rc = efx_mcdi_rpc(efx, MC_CMD_DRV_ATTACH, inbuf, sizeof(inbuf), 598 rc = efx_mcdi_rpc(efx, MC_CMD_DRV_ATTACH, inbuf, sizeof(inbuf),
598 outbuf, sizeof(outbuf), &outlen); 599 outbuf, sizeof(outbuf), &outlen);