Commit 4fdda958 authored by Edward Cree's avatar Edward Cree Committed by David S. Miller

sfc: don't report RX hash keys to ethtool when RSS wasn't enabled

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: dcb4123c ("sfc: disable RSS when unsupported")
Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aa9773be
...@@ -1323,7 +1323,8 @@ static int efx_ef10_init_nic(struct efx_nic *efx) ...@@ -1323,7 +1323,8 @@ static int efx_ef10_init_nic(struct efx_nic *efx)
} }
/* don't fail init if RSS setup doesn't work */ /* 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; return 0;
} }
......
...@@ -975,6 +975,8 @@ efx_ethtool_get_rxnfc(struct net_device *net_dev, ...@@ -975,6 +975,8 @@ efx_ethtool_get_rxnfc(struct net_device *net_dev,
case ETHTOOL_GRXFH: { case ETHTOOL_GRXFH: {
info->data = 0; info->data = 0;
if (!efx->rss_active) /* No RSS */
return 0;
switch (info->flow_type) { switch (info->flow_type) {
case UDP_V4_FLOW: case UDP_V4_FLOW:
if (efx->rx_hash_udp_4tuple) if (efx->rx_hash_udp_4tuple)
......
...@@ -860,6 +860,7 @@ struct vfdi_status; ...@@ -860,6 +860,7 @@ struct vfdi_status;
* @rx_hash_key: Toeplitz hash key for RSS * @rx_hash_key: Toeplitz hash key for RSS
* @rx_indir_table: Indirection table for RSS * @rx_indir_table: Indirection table for RSS
* @rx_scatter: Scatter mode enabled for receives * @rx_scatter: Scatter mode enabled for receives
* @rss_active: RSS enabled on hardware
* @rx_hash_udp_4tuple: UDP 4-tuple hashing enabled * @rx_hash_udp_4tuple: UDP 4-tuple hashing enabled
* @int_error_count: Number of internal errors seen recently * @int_error_count: Number of internal errors seen recently
* @int_error_expire: Time at which error count will be expired * @int_error_expire: Time at which error count will be expired
...@@ -998,6 +999,7 @@ struct efx_nic { ...@@ -998,6 +999,7 @@ struct efx_nic {
u8 rx_hash_key[40]; u8 rx_hash_key[40];
u32 rx_indir_table[128]; u32 rx_indir_table[128];
bool rx_scatter; bool rx_scatter;
bool rss_active;
bool rx_hash_udp_4tuple; bool rx_hash_udp_4tuple;
unsigned int_error_count; unsigned int_error_count;
......
...@@ -403,6 +403,7 @@ static int siena_init_nic(struct efx_nic *efx) ...@@ -403,6 +403,7 @@ static int siena_init_nic(struct efx_nic *efx)
efx_writeo(efx, &temp, FR_AZ_RX_CFG); efx_writeo(efx, &temp, FR_AZ_RX_CFG);
siena_rx_push_rss_config(efx, false, efx->rx_indir_table); siena_rx_push_rss_config(efx, false, efx->rx_indir_table);
efx->rss_active = true;
/* Enable event logging */ /* Enable event logging */
rc = efx_mcdi_log_ctrl(efx, true, false, 0); rc = efx_mcdi_log_ctrl(efx, true, false, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment