Skip to content

Commit

Permalink
sfc: Allow efx_nic_type::dimension_resources to fail
Browse files Browse the repository at this point in the history
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
  • Loading branch information
Ben Hutchings committed Aug 29, 2013
1 parent 261e4d9 commit c15eed2
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 6 deletions.
10 changes: 7 additions & 3 deletions drivers/net/ethernet/sfc/efx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1513,9 +1513,11 @@ static int efx_probe_nic(struct efx_nic *efx)
* in MSI-X interrupts. */
rc = efx_probe_interrupts(efx);
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)
get_random_bytes(&efx->rx_hash_key, sizeof(efx->rx_hash_key));
Expand All @@ -1533,7 +1535,9 @@ static int efx_probe_nic(struct efx_nic *efx)

return 0;

fail:
fail2:
efx_remove_interrupts(efx);
fail1:
efx->type->remove(efx);
return rc;
}
Expand Down
3 changes: 2 additions & 1 deletion drivers/net/ethernet/sfc/falcon.c
Original file line number Diff line number Diff line change
Expand Up @@ -2174,10 +2174,11 @@ static int falcon_probe_nvconfig(struct efx_nic *efx)
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->tx_dc_base = 0x26000;
return 0;
}

/* Probe all SPI devices on the NIC */
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/ethernet/sfc/net_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -1036,7 +1036,7 @@ struct efx_nic_type {
int (*probe)(struct efx_nic *efx);
void (*remove)(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 (*monitor)(struct efx_nic *efx);
enum reset_type (*map_reset_reason)(enum reset_type reason);
Expand Down
3 changes: 2 additions & 1 deletion drivers/net/ethernet/sfc/siena.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,13 +177,14 @@ static int siena_probe_nvconfig(struct efx_nic *efx)
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
* the buffer table and descriptor caches. In theory we can
* map both blocks to one port, but we don't.
*/
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)
Expand Down

0 comments on commit c15eed2

Please sign in to comment.