ethtool: extend coalesce setting uAPI with CQE mode
In order to support more coalesce parameters through netlink, add two new parameter kernel_coal and extack for .set_coalesce and .get_coalesce, then some extra info can return to user with the netlink API. Signed-off-by: Yufeng Mo <moyufeng@huawei.com> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
029ee6b143
commit
f3ccfda193
|
@ -72,7 +72,9 @@ static void ipoib_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ipoib_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ipoib_dev_priv *priv = ipoib_priv(dev);
|
||||
|
||||
|
@ -83,7 +85,9 @@ static int ipoib_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int ipoib_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ipoib_dev_priv *priv = ipoib_priv(dev);
|
||||
int ret;
|
||||
|
|
|
@ -357,7 +357,9 @@ static int ena_get_link_ksettings(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ena_get_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ena_adapter *adapter = netdev_priv(net_dev);
|
||||
struct ena_com_dev *ena_dev = adapter->ena_dev;
|
||||
|
@ -402,7 +404,9 @@ static void ena_update_rx_rings_nonadaptive_intr_moderation(struct ena_adapter *
|
|||
}
|
||||
|
||||
static int ena_set_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ena_adapter *adapter = netdev_priv(net_dev);
|
||||
struct ena_com_dev *ena_dev = adapter->ena_dev;
|
||||
|
|
|
@ -428,7 +428,9 @@ static void xgbe_set_msglevel(struct net_device *netdev, u32 msglevel)
|
|||
}
|
||||
|
||||
static int xgbe_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xgbe_prv_data *pdata = netdev_priv(netdev);
|
||||
|
||||
|
@ -443,7 +445,9 @@ static int xgbe_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int xgbe_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xgbe_prv_data *pdata = netdev_priv(netdev);
|
||||
struct xgbe_hw_if *hw_if = &pdata->hw_if;
|
||||
|
|
|
@ -547,7 +547,9 @@ static int aq_ethtool_set_rxnfc(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int aq_ethtool_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = netdev_priv(ndev);
|
||||
struct aq_nic_cfg_s *cfg;
|
||||
|
@ -571,7 +573,9 @@ static int aq_ethtool_get_coalesce(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int aq_ethtool_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = netdev_priv(ndev);
|
||||
struct aq_nic_cfg_s *cfg;
|
||||
|
|
|
@ -607,7 +607,9 @@ static void bcm_sysport_set_tx_coalesce(struct bcm_sysport_tx_ring *ring,
|
|||
}
|
||||
|
||||
static int bcm_sysport_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcm_sysport_priv *priv = netdev_priv(dev);
|
||||
u32 reg;
|
||||
|
@ -627,7 +629,9 @@ static int bcm_sysport_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bcm_sysport_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcm_sysport_priv *priv = netdev_priv(dev);
|
||||
struct dim_cq_moder moder;
|
||||
|
|
|
@ -7242,8 +7242,10 @@ bnx2_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
bnx2_get_coalesce(struct net_device *dev, struct ethtool_coalesce *coal)
|
||||
static int bnx2_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2 *bp = netdev_priv(dev);
|
||||
|
||||
|
@ -7264,8 +7266,10 @@ bnx2_get_coalesce(struct net_device *dev, struct ethtool_coalesce *coal)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
bnx2_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal)
|
||||
static int bnx2_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2 *bp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -1878,7 +1878,9 @@ static int bnx2x_set_eeprom(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bnx2x_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2x *bp = netdev_priv(dev);
|
||||
|
||||
|
@ -1891,7 +1893,9 @@ static int bnx2x_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bnx2x_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2x *bp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -49,7 +49,9 @@ static void bnxt_set_msglevel(struct net_device *dev, u32 value)
|
|||
}
|
||||
|
||||
static int bnxt_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
struct bnxt_coal *hw_coal;
|
||||
|
@ -79,7 +81,9 @@ static int bnxt_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bnxt_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
bool update_stats = false;
|
||||
|
|
|
@ -828,7 +828,9 @@ static void bcmgenet_set_msglevel(struct net_device *dev, u32 level)
|
|||
}
|
||||
|
||||
static int bcmgenet_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcmgenet_priv *priv = netdev_priv(dev);
|
||||
struct bcmgenet_rx_ring *ring;
|
||||
|
@ -890,7 +892,9 @@ static void bcmgenet_set_ring_rx_coalesce(struct bcmgenet_rx_ring *ring,
|
|||
}
|
||||
|
||||
static int bcmgenet_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcmgenet_priv *priv = netdev_priv(dev);
|
||||
unsigned int i;
|
||||
|
|
|
@ -14037,7 +14037,10 @@ static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static int tg3_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
||||
static int tg3_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct tg3 *tp = netdev_priv(dev);
|
||||
|
||||
|
@ -14045,7 +14048,10 @@ static int tg3_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int tg3_set_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
||||
static int tg3_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct tg3 *tp = netdev_priv(dev);
|
||||
u32 max_rxcoal_tick_int = 0, max_txcoal_tick_int = 0;
|
||||
|
|
|
@ -307,8 +307,10 @@ bnad_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wolinfo)
|
|||
wolinfo->wolopts = 0;
|
||||
}
|
||||
|
||||
static int
|
||||
bnad_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
|
||||
static int bnad_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnad *bnad = netdev_priv(netdev);
|
||||
unsigned long flags;
|
||||
|
@ -328,8 +330,10 @@ bnad_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
bnad_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
|
||||
static int bnad_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnad *bnad = netdev_priv(netdev);
|
||||
unsigned long flags;
|
||||
|
|
|
@ -2108,7 +2108,9 @@ static int octnet_set_intrmod_cfg(struct lio *lio,
|
|||
}
|
||||
|
||||
static int lio_get_intr_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *intr_coal)
|
||||
struct ethtool_coalesce *intr_coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct lio *lio = GET_LIO(netdev);
|
||||
struct octeon_device *oct = lio->oct_dev;
|
||||
|
@ -2412,7 +2414,9 @@ oct_cfg_tx_intrcnt(struct lio *lio,
|
|||
}
|
||||
|
||||
static int lio_set_intr_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *intr_coal)
|
||||
struct ethtool_coalesce *intr_coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct lio *lio = GET_LIO(netdev);
|
||||
int ret;
|
||||
|
|
|
@ -456,7 +456,9 @@ static void nicvf_get_regs(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int nicvf_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *cmd)
|
||||
struct ethtool_coalesce *cmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nicvf *nic = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -748,7 +748,9 @@ static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
||||
static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
|
||||
|
@ -759,7 +761,9 @@ static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
||||
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
|
||||
|
|
|
@ -1996,7 +1996,9 @@ static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
||||
static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct port_info *pi = netdev_priv(dev);
|
||||
struct adapter *adapter = pi->adapter;
|
||||
|
@ -2017,7 +2019,9 @@ static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
||||
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct port_info *pi = netdev_priv(dev);
|
||||
struct adapter *adapter = pi->adapter;
|
||||
|
|
|
@ -1147,7 +1147,9 @@ static int set_dbqtimer_tickval(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -1163,7 +1165,9 @@ static int set_coalesce(struct net_device *dev,
|
|||
coalesce->tx_coalesce_usecs);
|
||||
}
|
||||
|
||||
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
||||
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
const struct adapter *adap = pi->adapter;
|
||||
|
|
|
@ -1647,7 +1647,9 @@ static int cxgb4vf_set_ringparam(struct net_device *dev,
|
|||
* interrupt holdoff timer to be read on all of the device's Queue Sets.
|
||||
*/
|
||||
static int cxgb4vf_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
const struct adapter *adapter = pi->adapter;
|
||||
|
@ -1667,7 +1669,9 @@ static int cxgb4vf_get_coalesce(struct net_device *dev,
|
|||
* the interrupt holdoff timer on any of the device's Queue Sets.
|
||||
*/
|
||||
static int cxgb4vf_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
struct adapter *adapter = pi->adapter;
|
||||
|
|
|
@ -298,7 +298,9 @@ static void enic_set_msglevel(struct net_device *netdev, u32 value)
|
|||
}
|
||||
|
||||
static int enic_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enic *enic = netdev_priv(netdev);
|
||||
struct enic_rx_coal *rxcoal = &enic->rx_coalesce_setting;
|
||||
|
@ -343,7 +345,9 @@ static int enic_coalesce_valid(struct enic *enic,
|
|||
}
|
||||
|
||||
static int enic_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enic *enic = netdev_priv(netdev);
|
||||
u32 tx_coalesce_usecs;
|
||||
|
|
|
@ -2144,7 +2144,9 @@ static int gmac_set_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int gmac_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gemini_ethernet_port *port = netdev_priv(netdev);
|
||||
|
||||
|
@ -2156,7 +2158,9 @@ static int gmac_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int gmac_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gemini_ethernet_port *port = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -315,7 +315,9 @@ static int be_read_dump_data(struct be_adapter *adapter, u32 dump_len,
|
|||
}
|
||||
|
||||
static int be_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *et)
|
||||
struct ethtool_coalesce *et,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct be_adapter *adapter = netdev_priv(netdev);
|
||||
struct be_aic_obj *aic = &adapter->aic_obj[0];
|
||||
|
@ -338,7 +340,9 @@ static int be_get_coalesce(struct net_device *netdev,
|
|||
* eqd cmd is issued in the worker thread.
|
||||
*/
|
||||
static int be_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *et)
|
||||
struct ethtool_coalesce *et,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct be_adapter *adapter = netdev_priv(netdev);
|
||||
struct be_aic_obj *aic = &adapter->aic_obj[0];
|
||||
|
|
|
@ -513,7 +513,9 @@ static int dpaa_get_ts_info(struct net_device *net_dev,
|
|||
}
|
||||
|
||||
static int dpaa_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qman_portal *portal;
|
||||
u32 period;
|
||||
|
@ -530,7 +532,9 @@ static int dpaa_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int dpaa_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const cpumask_t *cpus = qman_affine_cpus();
|
||||
bool needs_revert[NR_CPUS] = {false};
|
||||
|
|
|
@ -585,7 +585,9 @@ static void enetc_get_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int enetc_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ic)
|
||||
struct ethtool_coalesce *ic,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enetc_ndev_priv *priv = netdev_priv(ndev);
|
||||
struct enetc_int_vector *v = priv->int_vector[0];
|
||||
|
@ -602,7 +604,9 @@ static int enetc_get_coalesce(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int enetc_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ic)
|
||||
struct ethtool_coalesce *ic,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enetc_ndev_priv *priv = netdev_priv(ndev);
|
||||
u32 rx_ictt, tx_ictt;
|
||||
|
|
|
@ -2654,8 +2654,10 @@ static void fec_enet_itr_coal_set(struct net_device *ndev)
|
|||
}
|
||||
}
|
||||
|
||||
static int
|
||||
fec_enet_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *ec)
|
||||
static int fec_enet_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fec_enet_private *fep = netdev_priv(ndev);
|
||||
|
||||
|
@ -2671,8 +2673,10 @@ fec_enet_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *ec)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
fec_enet_set_coalesce(struct net_device *ndev, struct ethtool_coalesce *ec)
|
||||
static int fec_enet_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fec_enet_private *fep = netdev_priv(ndev);
|
||||
struct device *dev = &fep->pdev->dev;
|
||||
|
@ -2724,7 +2728,7 @@ static void fec_enet_itr_coal_init(struct net_device *ndev)
|
|||
ec.tx_coalesce_usecs = FEC_ITR_ICTT_DEFAULT;
|
||||
ec.tx_max_coalesced_frames = FEC_ITR_ICFT_DEFAULT;
|
||||
|
||||
fec_enet_set_coalesce(ndev, &ec);
|
||||
fec_enet_set_coalesce(ndev, &ec, NULL, NULL);
|
||||
}
|
||||
|
||||
static int fec_enet_get_tunable(struct net_device *netdev,
|
||||
|
|
|
@ -243,7 +243,9 @@ static unsigned int gfar_ticks2usecs(struct gfar_private *priv,
|
|||
/* Get the coalescing parameters, and put them in the cvals
|
||||
* structure. */
|
||||
static int gfar_gcoalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *cvals)
|
||||
struct ethtool_coalesce *cvals,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gfar_private *priv = netdev_priv(dev);
|
||||
struct gfar_priv_rx_q *rx_queue = NULL;
|
||||
|
@ -280,7 +282,9 @@ static int gfar_gcoalesce(struct net_device *dev,
|
|||
* in order for coalescing to be active
|
||||
*/
|
||||
static int gfar_scoalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *cvals)
|
||||
struct ethtool_coalesce *cvals,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gfar_private *priv = netdev_priv(dev);
|
||||
int i, err = 0;
|
||||
|
|
|
@ -796,7 +796,9 @@ static void hip04_tx_timeout_task(struct work_struct *work)
|
|||
}
|
||||
|
||||
static int hip04_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hip04_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
@ -807,7 +809,9 @@ static int hip04_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int hip04_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hip04_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -730,11 +730,15 @@ static int hns_set_pauseparam(struct net_device *net_dev,
|
|||
* hns_get_coalesce - get coalesce info.
|
||||
* @net_dev: net device
|
||||
* @ec: coalesce info.
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Return 0 on success, negative on failure.
|
||||
*/
|
||||
static int hns_get_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hns_nic_priv *priv = netdev_priv(net_dev);
|
||||
struct hnae_ae_ops *ops;
|
||||
|
@ -774,11 +778,15 @@ static int hns_get_coalesce(struct net_device *net_dev,
|
|||
* hns_set_coalesce - set coalesce info.
|
||||
* @net_dev: net device
|
||||
* @ec: coalesce info.
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Return 0 on success, negative on failure.
|
||||
*/
|
||||
static int hns_set_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hns_nic_priv *priv = netdev_priv(net_dev);
|
||||
struct hnae_ae_ops *ops;
|
||||
|
|
|
@ -1179,7 +1179,9 @@ static void hns3_get_channels(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int hns3_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *cmd)
|
||||
struct ethtool_coalesce *cmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
struct hns3_enet_coalesce *tx_coal = &priv->tx_coal;
|
||||
|
@ -1361,7 +1363,9 @@ static void hns3_set_coalesce_per_queue(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int hns3_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *cmd)
|
||||
struct ethtool_coalesce *cmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
|
|
|
@ -795,13 +795,17 @@ static int __hinic_set_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int hinic_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __hinic_get_coalesce(netdev, coal, COALESCE_ALL_QUEUE);
|
||||
}
|
||||
|
||||
static int hinic_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __hinic_set_coalesce(netdev, coal, COALESCE_ALL_QUEUE);
|
||||
}
|
||||
|
|
|
@ -1739,7 +1739,9 @@ static int e1000_set_phys_id(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e1000_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -1755,7 +1757,9 @@ static int e1000_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e1000_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
|
|
|
@ -1993,7 +1993,9 @@ static int e1000_set_phys_id(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e1000_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -2006,7 +2008,9 @@ static int e1000_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e1000_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -632,7 +632,9 @@ clear_reset:
|
|||
}
|
||||
|
||||
static int fm10k_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fm10k_intfc *interface = netdev_priv(dev);
|
||||
|
||||
|
@ -646,7 +648,9 @@ static int fm10k_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int fm10k_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fm10k_intfc *interface = netdev_priv(dev);
|
||||
u16 tx_itr, rx_itr;
|
||||
|
|
|
@ -2812,13 +2812,17 @@ static int __i40e_get_coalesce(struct net_device *netdev,
|
|||
* i40e_get_coalesce - get a netdev's coalesce settings
|
||||
* @netdev: the netdev to check
|
||||
* @ec: ethtool coalesce data structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Gets the coalesce settings for a particular netdev. Note that if user has
|
||||
* modified per-queue settings, this only guarantees to represent queue 0. See
|
||||
* __i40e_get_coalesce for more details.
|
||||
**/
|
||||
static int i40e_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __i40e_get_coalesce(netdev, ec, -1);
|
||||
}
|
||||
|
@ -2986,11 +2990,15 @@ static int __i40e_set_coalesce(struct net_device *netdev,
|
|||
* i40e_set_coalesce - set coalesce settings for every queue on the netdev
|
||||
* @netdev: the netdev to change
|
||||
* @ec: ethtool coalesce settings
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* This will set each queue to the same coalesce settings.
|
||||
**/
|
||||
static int i40e_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __i40e_set_coalesce(netdev, ec, -1);
|
||||
}
|
||||
|
|
|
@ -685,6 +685,8 @@ static int __iavf_get_coalesce(struct net_device *netdev,
|
|||
* iavf_get_coalesce - Get interrupt coalescing settings
|
||||
* @netdev: network interface device structure
|
||||
* @ec: ethtool coalesce structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Returns current coalescing settings. This is referred to elsewhere in the
|
||||
* driver as Interrupt Throttle Rate, as this is how the hardware describes
|
||||
|
@ -692,7 +694,9 @@ static int __iavf_get_coalesce(struct net_device *netdev,
|
|||
* only represents the settings of queue 0.
|
||||
**/
|
||||
static int iavf_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __iavf_get_coalesce(netdev, ec, -1);
|
||||
}
|
||||
|
@ -804,11 +808,15 @@ static int __iavf_set_coalesce(struct net_device *netdev,
|
|||
* iavf_set_coalesce - Set interrupt coalescing settings
|
||||
* @netdev: network interface device structure
|
||||
* @ec: ethtool coalesce structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Change current coalescing settings for every queue.
|
||||
**/
|
||||
static int iavf_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __iavf_set_coalesce(netdev, ec, -1);
|
||||
}
|
||||
|
|
|
@ -3568,8 +3568,10 @@ __ice_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ice_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec)
|
||||
static int ice_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __ice_get_coalesce(netdev, ec, -1);
|
||||
}
|
||||
|
@ -3787,8 +3789,10 @@ set_complete:
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ice_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec)
|
||||
static int ice_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __ice_set_coalesce(netdev, ec, -1);
|
||||
}
|
||||
|
|
|
@ -2182,7 +2182,9 @@ static int igb_set_phys_id(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igb_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
int i;
|
||||
|
@ -2238,7 +2240,9 @@ static int igb_set_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igb_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -314,7 +314,9 @@ static int igbvf_set_wol(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igbvf_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igbvf_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -327,7 +329,9 @@ static int igbvf_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igbvf_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igbvf_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
|
|
|
@ -862,7 +862,9 @@ static void igc_ethtool_get_stats(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igc_ethtool_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igc_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -882,7 +884,9 @@ static int igc_ethtool_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igc_ethtool_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igc_adapter *adapter = netdev_priv(netdev);
|
||||
int i;
|
||||
|
|
|
@ -2358,7 +2358,9 @@ static int ixgbe_set_phys_id(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -2412,7 +2414,9 @@ static bool ixgbe_update_rsc(struct ixgbe_adapter *adapter)
|
|||
}
|
||||
|
||||
static int ixgbe_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_q_vector *q_vector;
|
||||
|
|
|
@ -787,7 +787,9 @@ static int ixgbevf_nway_reset(struct net_device *netdev)
|
|||
}
|
||||
|
||||
static int ixgbevf_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbevf_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -811,7 +813,9 @@ static int ixgbevf_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbevf_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbevf_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbevf_q_vector *q_vector;
|
||||
|
|
|
@ -2385,8 +2385,10 @@ jme_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *p)
|
|||
mdio_memcpy(jme, p32, JME_PHY_REG_NR);
|
||||
}
|
||||
|
||||
static int
|
||||
jme_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecmd)
|
||||
static int jme_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct jme_adapter *jme = netdev_priv(netdev);
|
||||
|
||||
|
@ -2422,8 +2424,10 @@ jme_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecmd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
jme_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecmd)
|
||||
static int jme_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct jme_adapter *jme = netdev_priv(netdev);
|
||||
struct dynpcc_info *dpi = &(jme->dpi);
|
||||
|
|
|
@ -1611,8 +1611,10 @@ static void mv643xx_eth_get_drvinfo(struct net_device *dev,
|
|||
strlcpy(drvinfo->bus_info, "platform", sizeof(drvinfo->bus_info));
|
||||
}
|
||||
|
||||
static int
|
||||
mv643xx_eth_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
||||
static int mv643xx_eth_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mv643xx_eth_private *mp = netdev_priv(dev);
|
||||
|
||||
|
@ -1622,8 +1624,10 @@ mv643xx_eth_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mv643xx_eth_set_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
||||
static int mv643xx_eth_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mv643xx_eth_private *mp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -4500,8 +4500,11 @@ static int mvneta_ethtool_nway_reset(struct net_device *dev)
|
|||
}
|
||||
|
||||
/* Set interrupt coalescing for ethtools */
|
||||
static int mvneta_ethtool_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
static int
|
||||
mvneta_ethtool_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
int queue;
|
||||
|
@ -4524,8 +4527,11 @@ static int mvneta_ethtool_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
/* get coalescing for ethtools */
|
||||
static int mvneta_ethtool_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
static int
|
||||
mvneta_ethtool_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -5367,8 +5367,11 @@ static int mvpp2_ethtool_nway_reset(struct net_device *dev)
|
|||
}
|
||||
|
||||
/* Set interrupt coalescing for ethtools */
|
||||
static int mvpp2_ethtool_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
static int
|
||||
mvpp2_ethtool_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvpp2_port *port = netdev_priv(dev);
|
||||
int queue;
|
||||
|
@ -5400,8 +5403,11 @@ static int mvpp2_ethtool_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
/* get coalescing for ethtools */
|
||||
static int mvpp2_ethtool_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
static int
|
||||
mvpp2_ethtool_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvpp2_port *port = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -412,7 +412,9 @@ static int otx2_set_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int otx2_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *cmd)
|
||||
struct ethtool_coalesce *cmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
struct otx2_hw *hw = &pfvf->hw;
|
||||
|
@ -426,7 +428,9 @@ static int otx2_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int otx2_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
struct otx2_hw *hw = &pfvf->hw;
|
||||
|
|
|
@ -615,7 +615,9 @@ static inline u32 skge_usecs2clk(const struct skge_hw *hw, u32 usec)
|
|||
}
|
||||
|
||||
static int skge_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct skge_port *skge = netdev_priv(dev);
|
||||
struct skge_hw *hw = skge->hw;
|
||||
|
@ -639,7 +641,9 @@ static int skge_get_coalesce(struct net_device *dev,
|
|||
|
||||
/* Note: interrupt timer is per board, but can turn on/off per port */
|
||||
static int skge_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct skge_port *skge = netdev_priv(dev);
|
||||
struct skge_hw *hw = skge->hw;
|
||||
|
|
|
@ -4052,7 +4052,9 @@ static int sky2_set_pauseparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int sky2_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sky2_port *sky2 = netdev_priv(dev);
|
||||
struct sky2_hw *hw = sky2->hw;
|
||||
|
@ -4087,7 +4089,9 @@ static int sky2_get_coalesce(struct net_device *dev,
|
|||
|
||||
/* Note: this affect both ports */
|
||||
static int sky2_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sky2_port *sky2 = netdev_priv(dev);
|
||||
struct sky2_hw *hw = sky2->hw;
|
||||
|
|
|
@ -998,7 +998,9 @@ mlx4_en_set_link_ksettings(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int mlx4_en_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
@ -1020,7 +1022,9 @@ static int mlx4_en_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int mlx4_en_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -534,7 +534,9 @@ int mlx5e_ethtool_get_coalesce(struct mlx5e_priv *priv,
|
|||
}
|
||||
|
||||
static int mlx5e_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
@ -652,7 +654,9 @@ int mlx5e_ethtool_set_coalesce(struct mlx5e_priv *priv,
|
|||
}
|
||||
|
||||
static int mlx5e_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -251,7 +251,9 @@ static int mlx5e_rep_set_channels(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int mlx5e_rep_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
@ -259,7 +261,9 @@ static int mlx5e_rep_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int mlx5e_rep_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -99,7 +99,9 @@ static void mlx5i_get_channels(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int mlx5i_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
|
||||
|
||||
|
@ -107,7 +109,9 @@ static int mlx5i_set_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int mlx5i_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
|
||||
|
||||
|
|
|
@ -1652,8 +1652,10 @@ myri10ge_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info)
|
|||
strlcpy(info->bus_info, pci_name(mgp->pdev), sizeof(info->bus_info));
|
||||
}
|
||||
|
||||
static int
|
||||
myri10ge_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coal)
|
||||
static int myri10ge_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct myri10ge_priv *mgp = netdev_priv(netdev);
|
||||
|
||||
|
@ -1661,8 +1663,10 @@ myri10ge_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coal)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
myri10ge_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *coal)
|
||||
static int myri10ge_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct myri10ge_priv *mgp = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -1078,7 +1078,9 @@ static void nfp_net_get_regs(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int nfp_net_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nfp_net *nn = netdev_priv(netdev);
|
||||
|
||||
|
@ -1330,7 +1332,9 @@ exit_close_nsp:
|
|||
}
|
||||
|
||||
static int nfp_net_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nfp_net *nn = netdev_priv(netdev);
|
||||
unsigned int factor;
|
||||
|
|
|
@ -993,8 +993,11 @@ static void nixge_ethtools_get_drvinfo(struct net_device *ndev,
|
|||
strlcpy(ed->bus_info, "platform", sizeof(ed->bus_info));
|
||||
}
|
||||
|
||||
static int nixge_ethtools_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce)
|
||||
static int
|
||||
nixge_ethtools_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nixge_priv *priv = netdev_priv(ndev);
|
||||
u32 regval = 0;
|
||||
|
@ -1008,8 +1011,11 @@ static int nixge_ethtools_get_coalesce(struct net_device *ndev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int nixge_ethtools_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce)
|
||||
static int
|
||||
nixge_ethtools_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nixge_priv *priv = netdev_priv(ndev);
|
||||
|
||||
|
|
|
@ -420,7 +420,9 @@ static int ionic_set_fecparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ionic_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ionic_lif *lif = netdev_priv(netdev);
|
||||
|
||||
|
@ -438,7 +440,9 @@ static int ionic_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ionic_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ionic_lif *lif = netdev_priv(netdev);
|
||||
struct ionic_identity *ident;
|
||||
|
|
|
@ -731,7 +731,9 @@ netxen_nic_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|||
* firmware coalescing to default.
|
||||
*/
|
||||
static int netxen_set_intr_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ethcoal)
|
||||
struct ethtool_coalesce *ethcoal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netxen_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -775,7 +777,9 @@ static int netxen_set_intr_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int netxen_get_intr_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ethcoal)
|
||||
struct ethtool_coalesce *ethcoal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netxen_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -580,7 +580,9 @@ int qede_add_tc_flower_fltr(struct qede_dev *edev, __be16 proto,
|
|||
struct flow_cls_offload *f);
|
||||
|
||||
void qede_forced_speed_maps_init(void);
|
||||
int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal);
|
||||
int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack);
|
||||
int qede_set_per_coalesce(struct net_device *dev, u32 queue,
|
||||
struct ethtool_coalesce *coal);
|
||||
|
||||
|
|
|
@ -760,7 +760,9 @@ static int qede_flash_device(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int qede_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
void *rx_handle = NULL, *tx_handle = NULL;
|
||||
struct qede_dev *edev = netdev_priv(dev);
|
||||
|
@ -819,7 +821,9 @@ out:
|
|||
return rc;
|
||||
}
|
||||
|
||||
int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal)
|
||||
int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qede_dev *edev = netdev_priv(dev);
|
||||
struct qede_fastpath *fp;
|
||||
|
|
|
@ -1527,7 +1527,9 @@ qlcnic_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|||
* firmware coalescing to default.
|
||||
*/
|
||||
static int qlcnic_set_intr_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ethcoal)
|
||||
struct ethtool_coalesce *ethcoal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qlcnic_adapter *adapter = netdev_priv(netdev);
|
||||
int err;
|
||||
|
@ -1551,7 +1553,9 @@ static int qlcnic_set_intr_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int qlcnic_get_intr_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ethcoal)
|
||||
struct ethtool_coalesce *ethcoal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qlcnic_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -1749,7 +1749,10 @@ rtl_coalesce_info(struct rtl8169_private *tp)
|
|||
return ERR_PTR(-ELNRNG);
|
||||
}
|
||||
|
||||
static int rtl_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
||||
static int rtl_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct rtl8169_private *tp = netdev_priv(dev);
|
||||
const struct rtl_coalesce_info *ci;
|
||||
|
@ -1807,7 +1810,10 @@ static int rtl_coalesce_choose_scale(struct rtl8169_private *tp, u32 usec,
|
|||
return -ERANGE;
|
||||
}
|
||||
|
||||
static int rtl_set_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
|
||||
static int rtl_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct rtl8169_private *tp = netdev_priv(dev);
|
||||
u32 tx_fr = ec->tx_max_coalesced_frames;
|
||||
|
|
|
@ -274,7 +274,9 @@ static u32 sxgbe_usec2riwt(u32 usec, struct sxgbe_priv_data *priv)
|
|||
}
|
||||
|
||||
static int sxgbe_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sxgbe_priv_data *priv = netdev_priv(dev);
|
||||
|
||||
|
@ -285,7 +287,9 @@ static int sxgbe_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int sxgbe_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sxgbe_priv_data *priv = netdev_priv(dev);
|
||||
unsigned int rx_riwt;
|
||||
|
|
|
@ -97,7 +97,9 @@ static void efx_ethtool_get_regs(struct net_device *net_dev,
|
|||
*/
|
||||
|
||||
static int efx_ethtool_get_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
unsigned int tx_usecs, rx_usecs;
|
||||
|
@ -115,7 +117,9 @@ static int efx_ethtool_get_coalesce(struct net_device *net_dev,
|
|||
}
|
||||
|
||||
static int efx_ethtool_set_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
struct efx_channel *channel;
|
||||
|
|
|
@ -577,7 +577,9 @@ static int ef4_ethtool_nway_reset(struct net_device *net_dev)
|
|||
*/
|
||||
|
||||
static int ef4_ethtool_get_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ef4_nic *efx = netdev_priv(net_dev);
|
||||
unsigned int tx_usecs, rx_usecs;
|
||||
|
@ -595,7 +597,9 @@ static int ef4_ethtool_get_coalesce(struct net_device *net_dev,
|
|||
}
|
||||
|
||||
static int ef4_ethtool_set_coalesce(struct net_device *net_dev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ef4_nic *efx = netdev_priv(net_dev);
|
||||
struct ef4_channel *channel;
|
||||
|
|
|
@ -532,7 +532,9 @@ static void netsec_et_get_drvinfo(struct net_device *net_device,
|
|||
}
|
||||
|
||||
static int netsec_et_get_coalesce(struct net_device *net_device,
|
||||
struct ethtool_coalesce *et_coalesce)
|
||||
struct ethtool_coalesce *et_coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netsec_priv *priv = netdev_priv(net_device);
|
||||
|
||||
|
@ -542,7 +544,9 @@ static int netsec_et_get_coalesce(struct net_device *net_device,
|
|||
}
|
||||
|
||||
static int netsec_et_set_coalesce(struct net_device *net_device,
|
||||
struct ethtool_coalesce *et_coalesce)
|
||||
struct ethtool_coalesce *et_coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netsec_priv *priv = netdev_priv(net_device);
|
||||
|
||||
|
@ -1544,7 +1548,7 @@ static int netsec_start_gmac(struct netsec_priv *priv)
|
|||
netsec_write(priv, NETSEC_REG_NRM_RX_INTEN_CLR, ~0);
|
||||
netsec_write(priv, NETSEC_REG_NRM_TX_INTEN_CLR, ~0);
|
||||
|
||||
netsec_et_set_coalesce(priv->ndev, &priv->et_coalesce);
|
||||
netsec_et_set_coalesce(priv->ndev, &priv->et_coalesce, NULL, NULL);
|
||||
|
||||
if (netsec_mac_write(priv, GMAC_REG_OMR, value))
|
||||
return -ETIMEDOUT;
|
||||
|
|
|
@ -874,7 +874,9 @@ static int __stmmac_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int stmmac_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __stmmac_get_coalesce(dev, ec, -1);
|
||||
}
|
||||
|
@ -958,7 +960,9 @@ static int __stmmac_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int stmmac_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return __stmmac_set_coalesce(dev, ec, -1);
|
||||
}
|
||||
|
|
|
@ -146,8 +146,11 @@ static void xlgmac_ethtool_get_channels(struct net_device *netdev,
|
|||
channel->tx_count = pdata->tx_q_count;
|
||||
}
|
||||
|
||||
static int xlgmac_ethtool_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
static int
|
||||
xlgmac_ethtool_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xlgmac_pdata *pdata = netdev_priv(netdev);
|
||||
|
||||
|
@ -158,8 +161,11 @@ static int xlgmac_ethtool_get_coalesce(struct net_device *netdev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int xlgmac_ethtool_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
static int
|
||||
xlgmac_ethtool_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xlgmac_pdata *pdata = netdev_priv(netdev);
|
||||
struct xlgmac_hw_ops *hw_ops = &pdata->hw_ops;
|
||||
|
|
|
@ -2151,8 +2151,10 @@ bdx_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
|
|||
* @netdev
|
||||
* @ecoal
|
||||
*/
|
||||
static int
|
||||
bdx_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecoal)
|
||||
static int bdx_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecoal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
u32 rdintcm;
|
||||
u32 tdintcm;
|
||||
|
@ -2180,8 +2182,10 @@ bdx_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecoal)
|
|||
* @netdev
|
||||
* @ecoal
|
||||
*/
|
||||
static int
|
||||
bdx_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecoal)
|
||||
static int bdx_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ecoal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
u32 rdintcm;
|
||||
u32 tdintcm;
|
||||
|
|
|
@ -845,7 +845,7 @@ static int cpsw_ndo_open(struct net_device *ndev)
|
|||
struct ethtool_coalesce coal;
|
||||
|
||||
coal.rx_coalesce_usecs = cpsw->coal_intvl;
|
||||
cpsw_set_coalesce(ndev, &coal);
|
||||
cpsw_set_coalesce(ndev, &coal, NULL, NULL);
|
||||
}
|
||||
|
||||
cpdma_ctlr_start(cpsw->dma);
|
||||
|
|
|
@ -152,7 +152,9 @@ void cpsw_set_msglevel(struct net_device *ndev, u32 value)
|
|||
priv->msg_enable = value;
|
||||
}
|
||||
|
||||
int cpsw_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal)
|
||||
int cpsw_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct cpsw_common *cpsw = ndev_to_cpsw(ndev);
|
||||
|
||||
|
@ -160,7 +162,9 @@ int cpsw_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int cpsw_set_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal)
|
||||
int cpsw_set_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct cpsw_priv *priv = netdev_priv(ndev);
|
||||
u32 int_ctrl;
|
||||
|
|
|
@ -894,7 +894,7 @@ static int cpsw_ndo_open(struct net_device *ndev)
|
|||
struct ethtool_coalesce coal;
|
||||
|
||||
coal.rx_coalesce_usecs = cpsw->coal_intvl;
|
||||
cpsw_set_coalesce(ndev, &coal);
|
||||
cpsw_set_coalesce(ndev, &coal, NULL, NULL);
|
||||
}
|
||||
|
||||
cpdma_ctlr_start(cpsw->dma);
|
||||
|
|
|
@ -464,8 +464,12 @@ void cpsw_mqprio_resume(struct cpsw_slave *slave, struct cpsw_priv *priv);
|
|||
/* ethtool */
|
||||
u32 cpsw_get_msglevel(struct net_device *ndev);
|
||||
void cpsw_set_msglevel(struct net_device *ndev, u32 value);
|
||||
int cpsw_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal);
|
||||
int cpsw_set_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal);
|
||||
int cpsw_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack);
|
||||
int cpsw_set_coalesce(struct net_device *ndev, struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack);
|
||||
int cpsw_get_sset_count(struct net_device *ndev, int sset);
|
||||
void cpsw_get_strings(struct net_device *ndev, u32 stringset, u8 *data);
|
||||
void cpsw_get_ethtool_stats(struct net_device *ndev,
|
||||
|
|
|
@ -383,12 +383,16 @@ static void emac_get_drvinfo(struct net_device *ndev,
|
|||
* emac_get_coalesce - Get interrupt coalesce settings for this device
|
||||
* @ndev : The DaVinci EMAC network adapter
|
||||
* @coal : ethtool coalesce settings structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Fetch the current interrupt coalesce settings
|
||||
*
|
||||
*/
|
||||
static int emac_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct emac_priv *priv = netdev_priv(ndev);
|
||||
|
||||
|
@ -401,12 +405,16 @@ static int emac_get_coalesce(struct net_device *ndev,
|
|||
* emac_set_coalesce - Set interrupt coalesce settings for this device
|
||||
* @ndev : The DaVinci EMAC network adapter
|
||||
* @coal : ethtool coalesce settings structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* Set interrupt coalesce parameters
|
||||
*
|
||||
*/
|
||||
static int emac_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct emac_priv *priv = netdev_priv(ndev);
|
||||
u32 int_ctrl, num_interrupts = 0;
|
||||
|
@ -1462,7 +1470,7 @@ static int emac_dev_open(struct net_device *ndev)
|
|||
struct ethtool_coalesce coal;
|
||||
|
||||
coal.rx_coalesce_usecs = (priv->coal_intvl << 4);
|
||||
emac_set_coalesce(ndev, &coal);
|
||||
emac_set_coalesce(ndev, &coal, NULL, NULL);
|
||||
}
|
||||
|
||||
cpdma_ctlr_start(priv->dma);
|
||||
|
|
|
@ -3518,7 +3518,9 @@ static void set_pending_timer_val(int *val, u32 us)
|
|||
|
||||
|
||||
static int velocity_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct velocity_info *vptr = netdev_priv(dev);
|
||||
|
||||
|
@ -3532,7 +3534,9 @@ static int velocity_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int velocity_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ecmd)
|
||||
struct ethtool_coalesce *ecmd,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct velocity_info *vptr = netdev_priv(dev);
|
||||
int max_us = 0x3f * 64;
|
||||
|
|
|
@ -1310,8 +1310,11 @@ static int ll_temac_ethtools_set_ringparam(struct net_device *ndev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ll_temac_ethtools_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ec)
|
||||
static int
|
||||
ll_temac_ethtools_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct temac_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
@ -1322,8 +1325,11 @@ static int ll_temac_ethtools_get_coalesce(struct net_device *ndev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ll_temac_ethtools_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ec)
|
||||
static int
|
||||
ll_temac_ethtools_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct temac_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
|
|
@ -1400,6 +1400,8 @@ axienet_ethtools_set_pauseparam(struct net_device *ndev,
|
|||
* axienet_ethtools_get_coalesce - Get DMA interrupt coalescing count.
|
||||
* @ndev: Pointer to net_device structure
|
||||
* @ecoalesce: Pointer to ethtool_coalesce structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* This implements ethtool command for getting the DMA interrupt coalescing
|
||||
* count on Tx and Rx paths. Issue "ethtool -c ethX" under linux prompt to
|
||||
|
@ -1407,8 +1409,11 @@ axienet_ethtools_set_pauseparam(struct net_device *ndev,
|
|||
*
|
||||
* Return: 0 always
|
||||
*/
|
||||
static int axienet_ethtools_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce)
|
||||
static int
|
||||
axienet_ethtools_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
u32 regval = 0;
|
||||
struct axienet_local *lp = netdev_priv(ndev);
|
||||
|
@ -1425,6 +1430,8 @@ static int axienet_ethtools_get_coalesce(struct net_device *ndev,
|
|||
* axienet_ethtools_set_coalesce - Set DMA interrupt coalescing count.
|
||||
* @ndev: Pointer to net_device structure
|
||||
* @ecoalesce: Pointer to ethtool_coalesce structure
|
||||
* @kernel_coal: ethtool CQE mode setting structure
|
||||
* @extack: extack for reporting error messages
|
||||
*
|
||||
* This implements ethtool command for setting the DMA interrupt coalescing
|
||||
* count on Tx and Rx paths. Issue "ethtool -C ethX rx-frames 5" under linux
|
||||
|
@ -1432,8 +1439,11 @@ static int axienet_ethtools_get_coalesce(struct net_device *ndev,
|
|||
*
|
||||
* Return: 0, on success, Non-zero error value on failure.
|
||||
*/
|
||||
static int axienet_ethtools_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce)
|
||||
static int
|
||||
axienet_ethtools_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *ecoalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct axienet_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
|
|
@ -43,7 +43,9 @@ nsim_set_pauseparam(struct net_device *dev, struct ethtool_pauseparam *pause)
|
|||
}
|
||||
|
||||
static int nsim_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netdevsim *ns = netdev_priv(dev);
|
||||
|
||||
|
@ -52,7 +54,9 @@ static int nsim_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int nsim_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netdevsim *ns = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -3510,7 +3510,9 @@ static void tun_set_msglevel(struct net_device *dev, u32 value)
|
|||
}
|
||||
|
||||
static int tun_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct tun_struct *tun = netdev_priv(dev);
|
||||
|
||||
|
@ -3520,7 +3522,9 @@ static int tun_get_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int tun_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct tun_struct *tun = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -8848,7 +8848,9 @@ out:
|
|||
}
|
||||
|
||||
static int rtl8152_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct r8152 *tp = netdev_priv(netdev);
|
||||
|
||||
|
@ -8867,7 +8869,9 @@ static int rtl8152_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int rtl8152_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
struct ethtool_coalesce *coalesce,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct r8152 *tp = netdev_priv(netdev);
|
||||
int ret;
|
||||
|
|
|
@ -2320,7 +2320,9 @@ static int virtnet_get_link_ksettings(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int virtnet_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct virtnet_info *vi = netdev_priv(dev);
|
||||
int i, napi_weight;
|
||||
|
@ -2341,7 +2343,9 @@ static int virtnet_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int virtnet_get_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ethtool_coalesce ec_default = {
|
||||
.cmd = ETHTOOL_GCOALESCE,
|
||||
|
|
|
@ -1053,8 +1053,10 @@ vmxnet3_set_rss(struct net_device *netdev, const u32 *p, const u8 *key,
|
|||
}
|
||||
#endif
|
||||
|
||||
static int
|
||||
vmxnet3_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec)
|
||||
static int vmxnet3_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct vmxnet3_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -1088,8 +1090,10 @@ vmxnet3_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
vmxnet3_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec)
|
||||
static int vmxnet3_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct vmxnet3_adapter *adapter = netdev_priv(netdev);
|
||||
struct Vmxnet3_DriverShared *shared = adapter->shared;
|
||||
|
|
|
@ -11,8 +11,11 @@
|
|||
|
||||
#include "wil6210.h"
|
||||
|
||||
static int wil_ethtoolops_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *cp)
|
||||
static int
|
||||
wil_ethtoolops_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *cp,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct wil6210_priv *wil = ndev_to_wil(ndev);
|
||||
u32 tx_itr_en, tx_itr_val = 0;
|
||||
|
@ -45,8 +48,11 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int wil_ethtoolops_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *cp)
|
||||
static int
|
||||
wil_ethtoolops_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *cp,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct wil6210_priv *wil = ndev_to_wil(ndev);
|
||||
struct wireless_dev *wdev = ndev->ieee80211_ptr;
|
||||
|
|
|
@ -123,7 +123,9 @@ static void __qeth_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int qeth_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *coal)
|
||||
struct ethtool_coalesce *coal,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qeth_card *card = dev->ml_priv;
|
||||
struct qeth_qdio_out_q *queue;
|
||||
|
|
|
@ -621,7 +621,10 @@ static void qlge_get_regs(struct net_device *ndev,
|
|||
regs->len = sizeof(struct qlge_reg_dump);
|
||||
}
|
||||
|
||||
static int qlge_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *c)
|
||||
static int qlge_get_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qlge_adapter *qdev = netdev_to_qdev(ndev);
|
||||
|
||||
|
@ -644,7 +647,10 @@ static int qlge_get_coalesce(struct net_device *ndev, struct ethtool_coalesce *c
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int qlge_set_coalesce(struct net_device *ndev, struct ethtool_coalesce *c)
|
||||
static int qlge_set_coalesce(struct net_device *ndev,
|
||||
struct ethtool_coalesce *c,
|
||||
struct kernel_ethtool_coalesce *kernel_coal,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qlge_adapter *qdev = netdev_to_qdev(ndev);
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <uapi/linux/ethtool.h>
|
||||
|
||||
struct compat_ethtool_rx_flow_spec {
|
||||
|
@ -611,8 +612,14 @@ struct ethtool_ops {
|
|||
struct ethtool_eeprom *, u8 *);
|
||||
int (*set_eeprom)(struct net_device *,
|
||||
struct ethtool_eeprom *, u8 *);
|
||||
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
|
||||
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
|
||||
int (*get_coalesce)(struct net_device *,
|
||||
struct ethtool_coalesce *,
|
||||
struct kernel_ethtool_coalesce *,
|
||||
struct netlink_ext_ack *);
|
||||
int (*set_coalesce)(struct net_device *,
|
||||
struct ethtool_coalesce *,
|
||||
struct kernel_ethtool_coalesce *,
|
||||
struct netlink_ext_ack *);
|
||||
void (*get_ringparam)(struct net_device *,
|
||||
struct ethtool_ringparam *);
|
||||
int (*set_ringparam)(struct net_device *,
|
||||
|
|
|
@ -62,6 +62,7 @@ static int coalesce_prepare_data(const struct ethnl_req_info *req_base,
|
|||
struct genl_info *info)
|
||||
{
|
||||
struct coalesce_reply_data *data = COALESCE_REPDATA(reply_base);
|
||||
struct netlink_ext_ack *extack = info ? info->extack : NULL;
|
||||
struct net_device *dev = reply_base->dev;
|
||||
int ret;
|
||||
|
||||
|
@ -71,7 +72,8 @@ static int coalesce_prepare_data(const struct ethnl_req_info *req_base,
|
|||
ret = ethnl_ops_begin(dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = dev->ethtool_ops->get_coalesce(dev, &data->coalesce);
|
||||
ret = dev->ethtool_ops->get_coalesce(dev, &data->coalesce,
|
||||
&data->kernel_coalesce, extack);
|
||||
ethnl_ops_complete(dev);
|
||||
|
||||
return ret;
|
||||
|
@ -266,7 +268,8 @@ int ethnl_set_coalesce(struct sk_buff *skb, struct genl_info *info)
|
|||
ret = ethnl_ops_begin(dev);
|
||||
if (ret < 0)
|
||||
goto out_rtnl;
|
||||
ret = ops->get_coalesce(dev, &coalesce);
|
||||
ret = ops->get_coalesce(dev, &coalesce, &kernel_coalesce,
|
||||
info->extack);
|
||||
if (ret < 0)
|
||||
goto out_ops;
|
||||
|
||||
|
@ -322,7 +325,8 @@ int ethnl_set_coalesce(struct sk_buff *skb, struct genl_info *info)
|
|||
if (!mod)
|
||||
goto out_ops;
|
||||
|
||||
ret = dev->ethtool_ops->set_coalesce(dev, &coalesce);
|
||||
ret = dev->ethtool_ops->set_coalesce(dev, &coalesce, &kernel_coalesce,
|
||||
info->extack);
|
||||
if (ret < 0)
|
||||
goto out_ops;
|
||||
ethtool_notify(dev, ETHTOOL_MSG_COALESCE_NTF, NULL);
|
||||
|
|
|
@ -1619,12 +1619,14 @@ static noinline_for_stack int ethtool_get_coalesce(struct net_device *dev,
|
|||
void __user *useraddr)
|
||||
{
|
||||
struct ethtool_coalesce coalesce = { .cmd = ETHTOOL_GCOALESCE };
|
||||
struct kernel_ethtool_coalesce kernel_coalesce = {};
|
||||
int ret;
|
||||
|
||||
if (!dev->ethtool_ops->get_coalesce)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
ret = dev->ethtool_ops->get_coalesce(dev, &coalesce);
|
||||
ret = dev->ethtool_ops->get_coalesce(dev, &coalesce, &kernel_coalesce,
|
||||
NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -1691,19 +1693,26 @@ ethtool_set_coalesce_supported(struct net_device *dev,
|
|||
static noinline_for_stack int ethtool_set_coalesce(struct net_device *dev,
|
||||
void __user *useraddr)
|
||||
{
|
||||
struct kernel_ethtool_coalesce kernel_coalesce = {};
|
||||
struct ethtool_coalesce coalesce;
|
||||
int ret;
|
||||
|
||||
if (!dev->ethtool_ops->set_coalesce)
|
||||
if (!dev->ethtool_ops->set_coalesce && !dev->ethtool_ops->get_coalesce)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
ret = dev->ethtool_ops->get_coalesce(dev, &coalesce, &kernel_coalesce,
|
||||
NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (copy_from_user(&coalesce, useraddr, sizeof(coalesce)))
|
||||
return -EFAULT;
|
||||
|
||||
if (!ethtool_set_coalesce_supported(dev, &coalesce))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
ret = dev->ethtool_ops->set_coalesce(dev, &coalesce);
|
||||
ret = dev->ethtool_ops->set_coalesce(dev, &coalesce, &kernel_coalesce,
|
||||
NULL);
|
||||
if (!ret)
|
||||
ethtool_notify(dev, ETHTOOL_MSG_COALESCE_NTF, NULL);
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue