ethtool: Replace ethtool_ops::{get,set}_rxfh_indir() with {get,set}_rxfh()
ETHTOOL_{G,S}RXFHINDIR and ETHTOOL_{G,S}RSSH should work for drivers regardless of whether they expose the hash key, unless you try to set a hash key for a driver that doesn't expose it. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
@ -626,13 +626,14 @@ static u32 i40evf_get_rxfh_indir_size(struct net_device *netdev)
|
||||
}
|
||||
|
||||
/**
|
||||
* i40evf_get_rxfh_indir - get the rx flow hash indirection table
|
||||
* i40evf_get_rxfh - get the rx flow hash indirection table
|
||||
* @netdev: network interface device structure
|
||||
* @indir: indirection table
|
||||
* @key: hash key (will be %NULL until get_rxfh_key_size is implemented)
|
||||
*
|
||||
* Reads the indirection table directly from the hardware. Always returns 0.
|
||||
**/
|
||||
static int i40evf_get_rxfh_indir(struct net_device *netdev, u32 *indir)
|
||||
static int i40evf_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key)
|
||||
{
|
||||
struct i40evf_adapter *adapter = netdev_priv(netdev);
|
||||
struct i40e_hw *hw = &adapter->hw;
|
||||
@ -650,14 +651,16 @@ static int i40evf_get_rxfh_indir(struct net_device *netdev, u32 *indir)
|
||||
}
|
||||
|
||||
/**
|
||||
* i40evf_set_rxfh_indir - set the rx flow hash indirection table
|
||||
* i40evf_set_rxfh - set the rx flow hash indirection table
|
||||
* @netdev: network interface device structure
|
||||
* @indir: indirection table
|
||||
* @key: hash key (will be %NULL until get_rxfh_key_size is implemented)
|
||||
*
|
||||
* Returns -EINVAL if the table specifies an inavlid queue id, otherwise
|
||||
* returns 0 after programming the table.
|
||||
**/
|
||||
static int i40evf_set_rxfh_indir(struct net_device *netdev, const u32 *indir)
|
||||
static int i40evf_set_rxfh(struct net_device *netdev, const u32 *indir,
|
||||
const u8 *key)
|
||||
{
|
||||
struct i40evf_adapter *adapter = netdev_priv(netdev);
|
||||
struct i40e_hw *hw = &adapter->hw;
|
||||
@ -691,8 +694,8 @@ static struct ethtool_ops i40evf_ethtool_ops = {
|
||||
.get_rxnfc = i40evf_get_rxnfc,
|
||||
.set_rxnfc = i40evf_set_rxnfc,
|
||||
.get_rxfh_indir_size = i40evf_get_rxfh_indir_size,
|
||||
.get_rxfh_indir = i40evf_get_rxfh_indir,
|
||||
.set_rxfh_indir = i40evf_set_rxfh_indir,
|
||||
.get_rxfh = i40evf_get_rxfh,
|
||||
.set_rxfh = i40evf_set_rxfh,
|
||||
.get_channels = i40evf_get_channels,
|
||||
};
|
||||
|
||||
|
@ -2830,7 +2830,7 @@ static u32 igb_get_rxfh_indir_size(struct net_device *netdev)
|
||||
return IGB_RETA_SIZE;
|
||||
}
|
||||
|
||||
static int igb_get_rxfh_indir(struct net_device *netdev, u32 *indir)
|
||||
static int igb_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key)
|
||||
{
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
int i;
|
||||
@ -2876,7 +2876,8 @@ void igb_write_rss_indir_tbl(struct igb_adapter *adapter)
|
||||
}
|
||||
}
|
||||
|
||||
static int igb_set_rxfh_indir(struct net_device *netdev, const u32 *indir)
|
||||
static int igb_set_rxfh(struct net_device *netdev, const u32 *indir,
|
||||
const u8 *key)
|
||||
{
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
@ -3025,8 +3026,8 @@ static const struct ethtool_ops igb_ethtool_ops = {
|
||||
.get_module_info = igb_get_module_info,
|
||||
.get_module_eeprom = igb_get_module_eeprom,
|
||||
.get_rxfh_indir_size = igb_get_rxfh_indir_size,
|
||||
.get_rxfh_indir = igb_get_rxfh_indir,
|
||||
.set_rxfh_indir = igb_set_rxfh_indir,
|
||||
.get_rxfh = igb_get_rxfh,
|
||||
.set_rxfh = igb_set_rxfh,
|
||||
.get_channels = igb_get_channels,
|
||||
.set_channels = igb_set_channels,
|
||||
.begin = igb_ethtool_begin,
|
||||
|
Reference in New Issue
Block a user