sfc: Store flags from MC_CMD_DRV_ATTACH for later use
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
This commit is contained in:
parent
ac36baf817
commit
8349f7f610
|
@ -1132,13 +1132,27 @@ static int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
if (driver_operating) {
|
||||
if (outlen >= MC_CMD_DRV_ATTACH_EXT_OUT_LEN) {
|
||||
efx->mcdi->fn_flags =
|
||||
MCDI_DWORD(outbuf,
|
||||
DRV_ATTACH_EXT_OUT_FUNC_FLAGS);
|
||||
} else {
|
||||
/* Synthesise flags for Siena */
|
||||
efx->mcdi->fn_flags =
|
||||
1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL |
|
||||
1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TRUSTED |
|
||||
(efx_port_num(efx) == 0) <<
|
||||
MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_PRIMARY;
|
||||
}
|
||||
}
|
||||
|
||||
/* We currently assume we have control of the external link
|
||||
* and are completely trusted by firmware. Abort probing
|
||||
* if that's not true for this function.
|
||||
*/
|
||||
if (driver_operating &&
|
||||
outlen >= MC_CMD_DRV_ATTACH_EXT_OUT_LEN &&
|
||||
(MCDI_DWORD(outbuf, DRV_ATTACH_EXT_OUT_FUNC_FLAGS) &
|
||||
(efx->mcdi->fn_flags &
|
||||
(1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL |
|
||||
1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TRUSTED)) !=
|
||||
(1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL |
|
||||
|
|
|
@ -94,12 +94,14 @@ struct efx_mcdi_mtd_partition {
|
|||
* struct efx_mcdi_data - extra state for NICs that implement MCDI
|
||||
* @iface: Interface/protocol state
|
||||
* @hwmon: Hardware monitor state
|
||||
* @fn_flags: Flags for this function, as returned by %MC_CMD_DRV_ATTACH.
|
||||
*/
|
||||
struct efx_mcdi_data {
|
||||
struct efx_mcdi_iface iface;
|
||||
#ifdef CONFIG_SFC_MCDI_MON
|
||||
struct efx_mcdi_mon hwmon;
|
||||
#endif
|
||||
u32 fn_flags;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SFC_MCDI_MON
|
||||
|
|
Loading…
Reference in New Issue