Skip to content

Commit

Permalink
sfc: don't report RX hash keys to ethtool when RSS wasn't enabled
Browse files Browse the repository at this point in the history
If we failed to set up RSS on EF10 (e.g. because firmware declared
 RX_RSS_LIMITED), ethtool --show-nfc $dev rx-flow-hash ... should report
 no fields, rather than confusingly reporting what fields we _would_ be
 hashing on if RSS was working.

Fixes: dcb4123 ("sfc: disable RSS when unsupported")
Signed-off-by: Edward Cree <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
ecree-solarflare authored and davem330 committed Jan 4, 2017
1 parent aa9773b commit 4fdda95
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/net/ethernet/sfc/ef10.c
Original file line number Diff line number Diff line change
Expand Up @@ -1323,7 +1323,8 @@ static int efx_ef10_init_nic(struct efx_nic *efx)
}

/* don't fail init if RSS setup doesn't work */
efx->type->rx_push_rss_config(efx, false, efx->rx_indir_table);
rc = efx->type->rx_push_rss_config(efx, false, efx->rx_indir_table);
efx->rss_active = (rc == 0);

return 0;
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/sfc/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -975,6 +975,8 @@ efx_ethtool_get_rxnfc(struct net_device *net_dev,

case ETHTOOL_GRXFH: {
info->data = 0;
if (!efx->rss_active) /* No RSS */
return 0;
switch (info->flow_type) {
case UDP_V4_FLOW:
if (efx->rx_hash_udp_4tuple)
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/sfc/net_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,7 @@ struct vfdi_status;
* @rx_hash_key: Toeplitz hash key for RSS
* @rx_indir_table: Indirection table for RSS
* @rx_scatter: Scatter mode enabled for receives
* @rss_active: RSS enabled on hardware
* @rx_hash_udp_4tuple: UDP 4-tuple hashing enabled
* @int_error_count: Number of internal errors seen recently
* @int_error_expire: Time at which error count will be expired
Expand Down Expand Up @@ -998,6 +999,7 @@ struct efx_nic {
u8 rx_hash_key[40];
u32 rx_indir_table[128];
bool rx_scatter;
bool rss_active;
bool rx_hash_udp_4tuple;

unsigned int_error_count;
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/sfc/siena.c
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,7 @@ static int siena_init_nic(struct efx_nic *efx)
efx_writeo(efx, &temp, FR_AZ_RX_CFG);

siena_rx_push_rss_config(efx, false, efx->rx_indir_table);
efx->rss_active = true;

/* Enable event logging */
rc = efx_mcdi_log_ctrl(efx, true, false, 0);
Expand Down

0 comments on commit 4fdda95

Please sign in to comment.