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;
|
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
|
/* We currently assume we have control of the external link
|
||||||
* and are completely trusted by firmware. Abort probing
|
* and are completely trusted by firmware. Abort probing
|
||||||
* if that's not true for this function.
|
* if that's not true for this function.
|
||||||
*/
|
*/
|
||||||
if (driver_operating &&
|
if (driver_operating &&
|
||||||
outlen >= MC_CMD_DRV_ATTACH_EXT_OUT_LEN &&
|
(efx->mcdi->fn_flags &
|
||||||
(MCDI_DWORD(outbuf, DRV_ATTACH_EXT_OUT_FUNC_FLAGS) &
|
|
||||||
(1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL |
|
(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_TRUSTED)) !=
|
||||||
(1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL |
|
(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
|
* struct efx_mcdi_data - extra state for NICs that implement MCDI
|
||||||
* @iface: Interface/protocol state
|
* @iface: Interface/protocol state
|
||||||
* @hwmon: Hardware monitor 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_data {
|
||||||
struct efx_mcdi_iface iface;
|
struct efx_mcdi_iface iface;
|
||||||
#ifdef CONFIG_SFC_MCDI_MON
|
#ifdef CONFIG_SFC_MCDI_MON
|
||||||
struct efx_mcdi_mon hwmon;
|
struct efx_mcdi_mon hwmon;
|
||||||
#endif
|
#endif
|
||||||
|
u32 fn_flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_SFC_MCDI_MON
|
#ifdef CONFIG_SFC_MCDI_MON
|
||||||
|
|
Loading…
Reference in New Issue