Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -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;
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -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)
+2 −0
Original line number Original line Diff line number Diff line
@@ -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 {
	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;
+1 −0
Original line number Original line Diff line number Diff line
@@ -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);