forked from Minki/linux
sfc: Make efx_mcdi_init() call efx_mcdi_handle_assertion()
This should probably be done during MCDI initialisation for any NIC. Change efx_mcdi_init() to return an error code. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
This commit is contained in:
parent
43f775b2fa
commit
f073dde03b
@ -50,13 +50,10 @@ static inline struct efx_mcdi_iface *efx_mcdi(struct efx_nic *efx)
|
||||
return &nic_data->mcdi;
|
||||
}
|
||||
|
||||
void efx_mcdi_init(struct efx_nic *efx)
|
||||
int efx_mcdi_init(struct efx_nic *efx)
|
||||
{
|
||||
struct efx_mcdi_iface *mcdi;
|
||||
|
||||
if (efx_nic_rev(efx) < EFX_REV_SIENA_A0)
|
||||
return;
|
||||
|
||||
mcdi = efx_mcdi(efx);
|
||||
init_waitqueue_head(&mcdi->wq);
|
||||
spin_lock_init(&mcdi->iface_lock);
|
||||
@ -64,6 +61,9 @@ void efx_mcdi_init(struct efx_nic *efx)
|
||||
mcdi->mode = MCDI_MODE_POLL;
|
||||
|
||||
(void) efx_mcdi_poll_reboot(efx);
|
||||
|
||||
/* Recover from a failed assertion before probing */
|
||||
return efx_mcdi_handle_assertion(efx);
|
||||
}
|
||||
|
||||
static void efx_mcdi_copyin(struct efx_nic *efx, unsigned cmd,
|
||||
|
@ -65,7 +65,7 @@ struct efx_mcdi_mon {
|
||||
unsigned int n_attrs;
|
||||
};
|
||||
|
||||
extern void efx_mcdi_init(struct efx_nic *efx);
|
||||
extern int efx_mcdi_init(struct efx_nic *efx);
|
||||
|
||||
extern int efx_mcdi_rpc(struct efx_nic *efx, unsigned cmd,
|
||||
const efx_dword_t *inbuf, size_t inlen,
|
||||
|
@ -210,10 +210,7 @@ static int siena_probe_nic(struct efx_nic *efx)
|
||||
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 */
|
||||
rc = efx_mcdi_handle_assertion(efx);
|
||||
rc = efx_mcdi_init(efx);
|
||||
if (rc)
|
||||
goto fail1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user