sfc: Allow efx_nic_type::dimension_resources to fail
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
This commit is contained in:
parent
261e4d96b4
commit
c15eed220f
@ -1513,9 +1513,11 @@ static int efx_probe_nic(struct efx_nic *efx)
|
|||||||
* in MSI-X interrupts. */
|
* in MSI-X interrupts. */
|
||||||
rc = efx_probe_interrupts(efx);
|
rc = efx_probe_interrupts(efx);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto fail;
|
goto fail1;
|
||||||
|
|
||||||
efx->type->dimension_resources(efx);
|
rc = efx->type->dimension_resources(efx);
|
||||||
|
if (rc)
|
||||||
|
goto fail2;
|
||||||
|
|
||||||
if (efx->n_channels > 1)
|
if (efx->n_channels > 1)
|
||||||
get_random_bytes(&efx->rx_hash_key, sizeof(efx->rx_hash_key));
|
get_random_bytes(&efx->rx_hash_key, sizeof(efx->rx_hash_key));
|
||||||
@ -1533,7 +1535,9 @@ static int efx_probe_nic(struct efx_nic *efx)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail2:
|
||||||
|
efx_remove_interrupts(efx);
|
||||||
|
fail1:
|
||||||
efx->type->remove(efx);
|
efx->type->remove(efx);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -2174,10 +2174,11 @@ out:
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void falcon_dimension_resources(struct efx_nic *efx)
|
static int falcon_dimension_resources(struct efx_nic *efx)
|
||||||
{
|
{
|
||||||
efx->rx_dc_base = 0x20000;
|
efx->rx_dc_base = 0x20000;
|
||||||
efx->tx_dc_base = 0x26000;
|
efx->tx_dc_base = 0x26000;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Probe all SPI devices on the NIC */
|
/* Probe all SPI devices on the NIC */
|
||||||
|
@ -1036,7 +1036,7 @@ struct efx_nic_type {
|
|||||||
int (*probe)(struct efx_nic *efx);
|
int (*probe)(struct efx_nic *efx);
|
||||||
void (*remove)(struct efx_nic *efx);
|
void (*remove)(struct efx_nic *efx);
|
||||||
int (*init)(struct efx_nic *efx);
|
int (*init)(struct efx_nic *efx);
|
||||||
void (*dimension_resources)(struct efx_nic *efx);
|
int (*dimension_resources)(struct efx_nic *efx);
|
||||||
void (*fini)(struct efx_nic *efx);
|
void (*fini)(struct efx_nic *efx);
|
||||||
void (*monitor)(struct efx_nic *efx);
|
void (*monitor)(struct efx_nic *efx);
|
||||||
enum reset_type (*map_reset_reason)(enum reset_type reason);
|
enum reset_type (*map_reset_reason)(enum reset_type reason);
|
||||||
|
@ -177,13 +177,14 @@ static int siena_probe_nvconfig(struct efx_nic *efx)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void siena_dimension_resources(struct efx_nic *efx)
|
static int siena_dimension_resources(struct efx_nic *efx)
|
||||||
{
|
{
|
||||||
/* Each port has a small block of internal SRAM dedicated to
|
/* Each port has a small block of internal SRAM dedicated to
|
||||||
* the buffer table and descriptor caches. In theory we can
|
* the buffer table and descriptor caches. In theory we can
|
||||||
* map both blocks to one port, but we don't.
|
* map both blocks to one port, but we don't.
|
||||||
*/
|
*/
|
||||||
efx_farch_dimension_resources(efx, FR_CZ_BUF_FULL_TBL_ROWS / 2);
|
efx_farch_dimension_resources(efx, FR_CZ_BUF_FULL_TBL_ROWS / 2);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int siena_mem_map_size(struct efx_nic *efx)
|
static unsigned int siena_mem_map_size(struct efx_nic *efx)
|
||||||
|
Loading…
Reference in New Issue
Block a user