Merge branch 'ethtool-consolidate-irq-coalescing-part-3'
Jakub Kicinski says: ==================== ethtool: consolidate irq coalescing - part 3 Convert more drivers following the groundwork laid in a recent patch set [1] and continued in [2]. The aim of the effort is to consolidate irq coalescing parameter validation in the core. This set converts 15 drivers in drivers/net/ethernet. 3 more conversion sets to come. None of the drivers here checked all unsupported parameters. [1] https://lore.kernel.org/netdev/20200305051542.991898-1-kuba@kernel.org/ [2] https://lore.kernel.org/netdev/20200306010602.1620354-1-kuba@kernel.org/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
96ee187bad
@ -826,6 +826,8 @@ static int ena_set_tunable(struct net_device *netdev,
|
||||
}
|
||||
|
||||
static const struct ethtool_ops ena_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE_RX,
|
||||
.get_link_ksettings = ena_get_link_ksettings,
|
||||
.get_drvinfo = ena_get_drvinfo,
|
||||
.get_msglevel = ena_get_msglevel,
|
||||
|
@ -386,21 +386,10 @@ static int aq_ethtool_set_coalesce(struct net_device *ndev,
|
||||
|
||||
cfg = aq_nic_get_cfg(aq_nic);
|
||||
|
||||
/* This is not yet supported
|
||||
*/
|
||||
if (coal->use_adaptive_rx_coalesce || coal->use_adaptive_tx_coalesce)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* Atlantic only supports timing based coalescing
|
||||
*/
|
||||
if (coal->rx_max_coalesced_frames > 1 ||
|
||||
coal->rx_coalesce_usecs_irq ||
|
||||
coal->rx_max_coalesced_frames_irq)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (coal->tx_max_coalesced_frames > 1 ||
|
||||
coal->tx_coalesce_usecs_irq ||
|
||||
coal->tx_max_coalesced_frames_irq)
|
||||
coal->tx_max_coalesced_frames > 1)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* We do not support frame counting. Check this
|
||||
@ -742,6 +731,8 @@ static int aq_ethtool_set_priv_flags(struct net_device *ndev, u32 flags)
|
||||
}
|
||||
|
||||
const struct ethtool_ops aq_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES,
|
||||
.get_link = aq_ethtool_get_link,
|
||||
.get_regs_len = aq_ethtool_get_regs_len,
|
||||
.get_regs = aq_ethtool_get_regs,
|
||||
|
@ -623,8 +623,7 @@ static int bcm_sysport_set_coalesce(struct net_device *dev,
|
||||
return -EINVAL;
|
||||
|
||||
if ((ec->tx_coalesce_usecs == 0 && ec->tx_max_coalesced_frames == 0) ||
|
||||
(ec->rx_coalesce_usecs == 0 && ec->rx_max_coalesced_frames == 0) ||
|
||||
ec->use_adaptive_tx_coalesce)
|
||||
(ec->rx_coalesce_usecs == 0 && ec->rx_max_coalesced_frames == 0))
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < dev->num_tx_queues; i++)
|
||||
@ -2209,6 +2208,9 @@ static int bcm_sysport_set_rxnfc(struct net_device *dev,
|
||||
}
|
||||
|
||||
static const struct ethtool_ops bcm_sysport_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE_RX,
|
||||
.get_drvinfo = bcm_sysport_get_drvinfo,
|
||||
.get_msglevel = bcm_sysport_get_msglvl,
|
||||
.set_msglevel = bcm_sysport_set_msglvl,
|
||||
|
@ -7812,6 +7812,11 @@ static int bnx2_set_channels(struct net_device *dev,
|
||||
}
|
||||
|
||||
static const struct ethtool_ops bnx2_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_USECS_IRQ |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES_IRQ |
|
||||
ETHTOOL_COALESCE_STATS_BLOCK_USECS,
|
||||
.get_drvinfo = bnx2_get_drvinfo,
|
||||
.get_regs_len = bnx2_get_regs_len,
|
||||
.get_regs = bnx2_get_regs,
|
||||
|
@ -3656,6 +3656,7 @@ static int bnx2x_get_ts_info(struct net_device *dev,
|
||||
}
|
||||
|
||||
static const struct ethtool_ops bnx2x_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS,
|
||||
.get_drvinfo = bnx2x_get_drvinfo,
|
||||
.get_regs_len = bnx2x_get_regs_len,
|
||||
.get_regs = bnx2x_get_regs,
|
||||
|
@ -686,10 +686,6 @@ static int bcmgenet_set_coalesce(struct net_device *dev,
|
||||
* always generate an interrupt either after MBDONE packets have been
|
||||
* transmitted, or when the ring is empty.
|
||||
*/
|
||||
if (ec->tx_coalesce_usecs || ec->tx_coalesce_usecs_high ||
|
||||
ec->tx_coalesce_usecs_irq || ec->tx_coalesce_usecs_low ||
|
||||
ec->use_adaptive_tx_coalesce)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* Program all TX queues with the same values, as there is no
|
||||
* ethtool knob to do coalescing on a per-queue basis
|
||||
@ -1113,6 +1109,9 @@ static int bcmgenet_set_eee(struct net_device *dev, struct ethtool_eee *e)
|
||||
|
||||
/* standard ethtool support functions. */
|
||||
static const struct ethtool_ops bcmgenet_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE_RX,
|
||||
.begin = bcmgenet_begin,
|
||||
.complete = bcmgenet_complete,
|
||||
.get_strings = bcmgenet_get_strings,
|
||||
|
@ -14153,6 +14153,11 @@ static int tg3_get_eee(struct net_device *dev, struct ethtool_eee *edata)
|
||||
}
|
||||
|
||||
static const struct ethtool_ops tg3_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_USECS_IRQ |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES_IRQ |
|
||||
ETHTOOL_COALESCE_STATS_BLOCK_USECS,
|
||||
.get_drvinfo = tg3_get_drvinfo,
|
||||
.get_regs_len = tg3_get_regs_len,
|
||||
.get_regs = tg3_get_regs,
|
||||
|
@ -1115,6 +1115,9 @@ out:
|
||||
}
|
||||
|
||||
static const struct ethtool_ops bnad_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_TX_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE_RX,
|
||||
.get_drvinfo = bnad_get_drvinfo,
|
||||
.get_wol = bnad_get_wol,
|
||||
.get_link = ethtool_op_get_link,
|
||||
|
@ -3097,7 +3097,17 @@ static int lio_set_fecparam(struct net_device *netdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define LIO_ETHTOOL_COALESCE (ETHTOOL_COALESCE_RX_USECS | \
|
||||
ETHTOOL_COALESCE_MAX_FRAMES | \
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE | \
|
||||
ETHTOOL_COALESCE_RX_MAX_FRAMES_LOW | \
|
||||
ETHTOOL_COALESCE_TX_MAX_FRAMES_LOW | \
|
||||
ETHTOOL_COALESCE_RX_MAX_FRAMES_HIGH | \
|
||||
ETHTOOL_COALESCE_TX_MAX_FRAMES_HIGH | \
|
||||
ETHTOOL_COALESCE_PKT_RATE_RX_USECS)
|
||||
|
||||
static const struct ethtool_ops lio_ethtool_ops = {
|
||||
.supported_coalesce_params = LIO_ETHTOOL_COALESCE,
|
||||
.get_link_ksettings = lio_get_link_ksettings,
|
||||
.set_link_ksettings = lio_set_link_ksettings,
|
||||
.get_fecparam = lio_get_fecparam,
|
||||
@ -3128,6 +3138,7 @@ static const struct ethtool_ops lio_ethtool_ops = {
|
||||
};
|
||||
|
||||
static const struct ethtool_ops lio_vf_ethtool_ops = {
|
||||
.supported_coalesce_params = LIO_ETHTOOL_COALESCE,
|
||||
.get_link_ksettings = lio_get_link_ksettings,
|
||||
.get_link = ethtool_op_get_link,
|
||||
.get_drvinfo = lio_get_vf_drvinfo,
|
||||
|
@ -793,6 +793,9 @@ static int get_eeprom(struct net_device *dev, struct ethtool_eeprom *e,
|
||||
}
|
||||
|
||||
static const struct ethtool_ops t1_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE_RX |
|
||||
ETHTOOL_COALESCE_RATE_SAMPLE_INTERVAL,
|
||||
.get_drvinfo = get_drvinfo,
|
||||
.get_msglevel = get_msglevel,
|
||||
.set_msglevel = set_msglevel,
|
||||
|
@ -2104,6 +2104,7 @@ static void get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
||||
}
|
||||
|
||||
static const struct ethtool_ops cxgb_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS,
|
||||
.get_drvinfo = get_drvinfo,
|
||||
.get_msglevel = get_msglevel,
|
||||
.set_msglevel = set_msglevel,
|
||||
|
@ -1576,6 +1576,10 @@ static int cxgb4_set_priv_flags(struct net_device *netdev, u32 flags)
|
||||
}
|
||||
|
||||
static const struct ethtool_ops cxgb_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_RX_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_TX_USECS_IRQ |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE_RX,
|
||||
.get_link_ksettings = get_link_ksettings,
|
||||
.set_link_ksettings = set_link_ksettings,
|
||||
.get_fecparam = get_fecparam,
|
||||
|
@ -1919,6 +1919,8 @@ static void cxgb4vf_get_wol(struct net_device *dev,
|
||||
NETIF_F_GRO | NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA)
|
||||
|
||||
static const struct ethtool_ops cxgb4vf_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
|
||||
ETHTOOL_COALESCE_RX_MAX_FRAMES,
|
||||
.get_link_ksettings = cxgb4vf_get_link_ksettings,
|
||||
.get_fecparam = cxgb4vf_get_fecparam,
|
||||
.get_drvinfo = cxgb4vf_get_drvinfo,
|
||||
|
@ -2222,6 +2222,8 @@ static const struct net_device_ops gmac_351x_ops = {
|
||||
};
|
||||
|
||||
static const struct ethtool_ops gmac_351x_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES,
|
||||
.get_sset_count = gmac_get_sset_count,
|
||||
.get_strings = gmac_get_strings,
|
||||
.get_ethtool_stats = gmac_get_ethtool_stats,
|
||||
|
@ -2121,6 +2121,10 @@ static int mlx4_en_set_phys_id(struct net_device *dev,
|
||||
}
|
||||
|
||||
const struct ethtool_ops mlx4_en_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_TX_MAX_FRAMES_IRQ |
|
||||
ETHTOOL_COALESCE_PKT_RATE_RX_USECS,
|
||||
.get_drvinfo = mlx4_en_get_drvinfo,
|
||||
.get_link_ksettings = mlx4_en_get_link_ksettings,
|
||||
.set_link_ksettings = mlx4_en_set_link_ksettings,
|
||||
|
@ -211,6 +211,11 @@ bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
|
||||
ETHTOOL_COALESCE_TX_MAX_FRAMES_IRQ)
|
||||
#define ETHTOOL_COALESCE_USE_ADAPTIVE \
|
||||
(ETHTOOL_COALESCE_USE_ADAPTIVE_RX | ETHTOOL_COALESCE_USE_ADAPTIVE_TX)
|
||||
#define ETHTOOL_COALESCE_PKT_RATE_RX_USECS \
|
||||
(ETHTOOL_COALESCE_USE_ADAPTIVE_RX | \
|
||||
ETHTOOL_COALESCE_RX_USECS_LOW | ETHTOOL_COALESCE_RX_USECS_HIGH | \
|
||||
ETHTOOL_COALESCE_PKT_RATE_LOW | ETHTOOL_COALESCE_PKT_RATE_HIGH | \
|
||||
ETHTOOL_COALESCE_RATE_SAMPLE_INTERVAL)
|
||||
|
||||
/**
|
||||
* struct ethtool_ops - optional netdev operations
|
||||
|
Loading…
Reference in New Issue
Block a user