mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 14:04:27 -04:00
igc: expose RSS key via ethtool get_rxfh
Implement igc_ethtool_get_rxfh_key_size() and extend igc_ethtool_get_rxfh() to return the RSS key to userspace. This can be tested using `ethtool -x <dev>`. Signed-off-by: Kohei Enju <kohei@enjuk.jp> Tested-by: Avigail Dahan <avigailx.dahan@intel.com> Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
@@ -1502,6 +1502,11 @@ void igc_write_rss_indir_tbl(struct igc_adapter *adapter)
|
||||
}
|
||||
}
|
||||
|
||||
static u32 igc_ethtool_get_rxfh_key_size(struct net_device *netdev)
|
||||
{
|
||||
return IGC_RSS_KEY_SIZE;
|
||||
}
|
||||
|
||||
static u32 igc_ethtool_get_rxfh_indir_size(struct net_device *netdev)
|
||||
{
|
||||
return IGC_RETA_SIZE;
|
||||
@@ -1514,10 +1519,13 @@ static int igc_ethtool_get_rxfh(struct net_device *netdev,
|
||||
int i;
|
||||
|
||||
rxfh->hfunc = ETH_RSS_HASH_TOP;
|
||||
if (!rxfh->indir)
|
||||
return 0;
|
||||
for (i = 0; i < IGC_RETA_SIZE; i++)
|
||||
rxfh->indir[i] = adapter->rss_indir_tbl[i];
|
||||
|
||||
if (rxfh->indir)
|
||||
for (i = 0; i < IGC_RETA_SIZE; i++)
|
||||
rxfh->indir[i] = adapter->rss_indir_tbl[i];
|
||||
|
||||
if (rxfh->key)
|
||||
memcpy(rxfh->key, adapter->rss_key, sizeof(adapter->rss_key));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2195,6 +2203,7 @@ static const struct ethtool_ops igc_ethtool_ops = {
|
||||
.get_rxnfc = igc_ethtool_get_rxnfc,
|
||||
.set_rxnfc = igc_ethtool_set_rxnfc,
|
||||
.get_rx_ring_count = igc_ethtool_get_rx_ring_count,
|
||||
.get_rxfh_key_size = igc_ethtool_get_rxfh_key_size,
|
||||
.get_rxfh_indir_size = igc_ethtool_get_rxfh_indir_size,
|
||||
.get_rxfh = igc_ethtool_get_rxfh,
|
||||
.set_rxfh = igc_ethtool_set_rxfh,
|
||||
|
||||
Reference in New Issue
Block a user