Merge branch 'ethtool-copybreak'
Guangbin Huang says: ==================== ethtool: add support to set/get tx copybreak buf size and rx buf len This series add support to set/get tx copybreak buf size and rx buf len via ethtool and hns3 driver implements them. Tx copybreak buf size is used for tx copybreak feature which for small size packet or frag. Use ethtool --get-tunable command to get it, and ethtool --set-tunable command to set it, examples are as follow: 1. set tx spare buf size to 102400: $ ethtool --set-tunable eth1 tx-buf-size 102400 2. get tx spare buf size: $ ethtool --get-tunable eth1 tx-buf-size tx-buf-size: 102400 Rx buf len is buffer length of each rx BD. Use ethtool -g command to get it, and ethtool -G command to set it, examples are as follow: 1. set rx buf len to 4096 $ ethtool -G eth1 rx-buf-len 4096 2. get rx buf len $ ethtool -g eth1 ... RX Buf Len: 4096 Change log: V5 -> V6 1.Fix compile error for divers/s390. V4 -> V5 1.Change struct ethtool_ringparam_ext to kernel_ethtool_ringparam. 2.change "__u32 rx_buf_len" to "u32 rx_buf_len". V3 -> V4 1.Fix a few allmodconfig compile warning. 2.Add more '=' synbol to ethtool-netlink.rst to refine format. 3.Move definement of struct ethtool_ringparam_ext to include/linux/ethtool.h. 4.Move related modify of rings_fill_reply() from patch 4/6 to patch 3/6. V2 -> V3 1.Remove documentation for tx copybreak buf size, there is description for it in userspace ethtool. 2.Move extending parameters for get/set_ringparam function from patch3/6 to patch 4/6. V1 -> V2 1.Add documentation for rx buf len and tx copybreak buf size. 2.Extend structure ringparam_ext for extenal ring params. 3.Change type of ETHTOOL_A_RINGS_RX_BUF_LEN from NLA_U32 to NLA_POLICY_MIN(NLA_U32, 1). 4.Add supported_ring_params in ethtool_ops to indicate if support external params. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
8e2a2f9051
|
@ -849,7 +849,7 @@ Request contents:
|
|||
|
||||
Kernel response contents:
|
||||
|
||||
==================================== ====== ==========================
|
||||
==================================== ====== ===========================
|
||||
``ETHTOOL_A_RINGS_HEADER`` nested reply header
|
||||
``ETHTOOL_A_RINGS_RX_MAX`` u32 max size of RX ring
|
||||
``ETHTOOL_A_RINGS_RX_MINI_MAX`` u32 max size of RX mini ring
|
||||
|
@ -859,7 +859,8 @@ Kernel response contents:
|
|||
``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring
|
||||
``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring
|
||||
``ETHTOOL_A_RINGS_TX`` u32 size of TX ring
|
||||
==================================== ====== ==========================
|
||||
``ETHTOOL_A_RINGS_RX_BUF_LEN`` u32 size of buffers on the ring
|
||||
==================================== ====== ===========================
|
||||
|
||||
|
||||
RINGS_SET
|
||||
|
@ -869,13 +870,14 @@ Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request.
|
|||
|
||||
Request contents:
|
||||
|
||||
==================================== ====== ==========================
|
||||
==================================== ====== ===========================
|
||||
``ETHTOOL_A_RINGS_HEADER`` nested reply header
|
||||
``ETHTOOL_A_RINGS_RX`` u32 size of RX ring
|
||||
``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring
|
||||
``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring
|
||||
``ETHTOOL_A_RINGS_TX`` u32 size of TX ring
|
||||
==================================== ====== ==========================
|
||||
``ETHTOOL_A_RINGS_RX_BUF_LEN`` u32 size of buffers on the ring
|
||||
==================================== ====== ===========================
|
||||
|
||||
Kernel checks that requested ring sizes do not exceed limits reported by
|
||||
driver. Driver may impose additional constraints and may not suspport all
|
||||
|
|
|
@ -1441,7 +1441,9 @@ flash_fail:
|
|||
}
|
||||
|
||||
static void vector_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct vector_private *vp = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -20,7 +20,9 @@ static void c_can_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void c_can_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct c_can_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -1138,7 +1138,9 @@ typhoon_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|||
}
|
||||
|
||||
static void
|
||||
typhoon_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ering)
|
||||
typhoon_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
ering->rx_max_pending = RXENT_ENTRIES;
|
||||
ering->tx_max_pending = TXLO_ENTRIES - 1;
|
||||
|
|
|
@ -465,7 +465,9 @@ static void ena_get_drvinfo(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void ena_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ena_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -476,7 +478,9 @@ static void ena_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ena_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ena_adapter *adapter = netdev_priv(netdev);
|
||||
u32 new_tx_size, new_rx_size;
|
||||
|
|
|
@ -860,7 +860,9 @@ static int pcnet32_nway_reset(struct net_device *dev)
|
|||
}
|
||||
|
||||
static void pcnet32_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct pcnet32_private *lp = netdev_priv(dev);
|
||||
|
||||
|
@ -871,7 +873,9 @@ static void pcnet32_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int pcnet32_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct pcnet32_private *lp = netdev_priv(dev);
|
||||
unsigned long flags;
|
||||
|
|
|
@ -619,8 +619,11 @@ static int xgbe_get_module_eeprom(struct net_device *netdev,
|
|||
return pdata->phy_if.module_eeprom(pdata, eeprom, data);
|
||||
}
|
||||
|
||||
static void xgbe_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ringparam)
|
||||
static void
|
||||
xgbe_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ringparam,
|
||||
struct kernel_ethtool_ringparam *kernel_ringparam,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xgbe_prv_data *pdata = netdev_priv(netdev);
|
||||
|
||||
|
@ -631,7 +634,9 @@ static void xgbe_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int xgbe_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ringparam)
|
||||
struct ethtool_ringparam *ringparam,
|
||||
struct kernel_ethtool_ringparam *kernel_ringparam,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xgbe_prv_data *pdata = netdev_priv(netdev);
|
||||
unsigned int rx, tx;
|
||||
|
|
|
@ -812,7 +812,9 @@ static int aq_ethtool_set_pauseparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static void aq_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = netdev_priv(ndev);
|
||||
struct aq_nic_cfg_s *cfg;
|
||||
|
@ -827,7 +829,9 @@ static void aq_get_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int aq_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = netdev_priv(ndev);
|
||||
const struct aq_hw_caps_s *hw_caps;
|
||||
|
|
|
@ -3438,7 +3438,9 @@ static void atl1_get_regs(struct net_device *netdev, struct ethtool_regs *regs,
|
|||
}
|
||||
|
||||
static void atl1_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct atl1_adapter *adapter = netdev_priv(netdev);
|
||||
struct atl1_tpd_ring *txdr = &adapter->tpd_ring;
|
||||
|
@ -3451,7 +3453,9 @@ static void atl1_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int atl1_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct atl1_adapter *adapter = netdev_priv(netdev);
|
||||
struct atl1_tpd_ring *tpdr = &adapter->tpd_ring;
|
||||
|
|
|
@ -1961,7 +1961,9 @@ static int b44_set_link_ksettings(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void b44_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct b44 *bp = netdev_priv(dev);
|
||||
|
||||
|
@ -1972,7 +1974,9 @@ static void b44_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int b44_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct b44 *bp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -1497,8 +1497,11 @@ static int bcm_enet_set_link_ksettings(struct net_device *dev,
|
|||
}
|
||||
}
|
||||
|
||||
static void bcm_enet_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
bcm_enet_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
|
||||
|
@ -1512,7 +1515,9 @@ static void bcm_enet_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bcm_enet_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
int was_running;
|
||||
|
@ -2579,8 +2584,11 @@ static void bcm_enetsw_get_ethtool_stats(struct net_device *netdev,
|
|||
}
|
||||
}
|
||||
|
||||
static void bcm_enetsw_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
bcm_enetsw_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
|
||||
|
@ -2595,8 +2603,11 @@ static void bcm_enetsw_get_ringparam(struct net_device *dev,
|
|||
ering->tx_pending = priv->tx_ring_size;
|
||||
}
|
||||
|
||||
static int bcm_enetsw_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static int
|
||||
bcm_enetsw_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
int was_running;
|
||||
|
|
|
@ -7318,7 +7318,9 @@ static int bnx2_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void
|
||||
bnx2_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ering)
|
||||
bnx2_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2 *bp = netdev_priv(dev);
|
||||
|
||||
|
@ -7389,7 +7391,9 @@ bnx2_change_ring_size(struct bnx2 *bp, u32 rx, u32 tx, bool reset_irq)
|
|||
}
|
||||
|
||||
static int
|
||||
bnx2_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ering)
|
||||
bnx2_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2 *bp = netdev_priv(dev);
|
||||
int rc;
|
||||
|
|
|
@ -1914,7 +1914,9 @@ static int bnx2x_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void bnx2x_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2x *bp = netdev_priv(dev);
|
||||
|
||||
|
@ -1938,7 +1940,9 @@ static void bnx2x_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bnx2x_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnx2x *bp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -775,7 +775,9 @@ skip_tpa_stats:
|
|||
}
|
||||
|
||||
static void bnxt_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
|
||||
|
@ -794,7 +796,9 @@ static void bnxt_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int bnxt_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -12390,7 +12390,10 @@ static int tg3_nway_reset(struct net_device *dev)
|
|||
return r;
|
||||
}
|
||||
|
||||
static void tg3_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ering)
|
||||
static void tg3_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct tg3 *tp = netdev_priv(dev);
|
||||
|
||||
|
@ -12411,7 +12414,10 @@ static void tg3_get_ringparam(struct net_device *dev, struct ethtool_ringparam *
|
|||
ering->tx_pending = tp->napi[0].tx_pending;
|
||||
}
|
||||
|
||||
static int tg3_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ering)
|
||||
static int tg3_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct tg3 *tp = netdev_priv(dev);
|
||||
int i, irq_sync = 0, err = 0;
|
||||
|
|
|
@ -405,7 +405,9 @@ static int bnad_set_coalesce(struct net_device *netdev,
|
|||
|
||||
static void
|
||||
bnad_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ringparam)
|
||||
struct ethtool_ringparam *ringparam,
|
||||
struct kernel_ethtool_ringparam *kernel_ringparam,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnad *bnad = netdev_priv(netdev);
|
||||
|
||||
|
@ -418,7 +420,9 @@ bnad_get_ringparam(struct net_device *netdev,
|
|||
|
||||
static int
|
||||
bnad_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ringparam)
|
||||
struct ethtool_ringparam *ringparam,
|
||||
struct kernel_ethtool_ringparam *kernel_ringparam,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
int i, current_err, err = 0;
|
||||
struct bnad *bnad = netdev_priv(netdev);
|
||||
|
|
|
@ -3135,7 +3135,9 @@ static int macb_set_link_ksettings(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void macb_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct macb *bp = netdev_priv(netdev);
|
||||
|
||||
|
@ -3147,7 +3149,9 @@ static void macb_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int macb_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct macb *bp = netdev_priv(netdev);
|
||||
u32 new_rx_size, new_tx_size;
|
||||
|
|
|
@ -947,7 +947,9 @@ static int lio_set_phys_id(struct net_device *netdev,
|
|||
|
||||
static void
|
||||
lio_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct lio *lio = GET_LIO(netdev);
|
||||
struct octeon_device *oct = lio->oct_dev;
|
||||
|
@ -1252,8 +1254,11 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int lio_ethtool_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static int
|
||||
lio_ethtool_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
u32 rx_count, tx_count, rx_count_old, tx_count_old;
|
||||
struct lio *lio = GET_LIO(netdev);
|
||||
|
|
|
@ -467,7 +467,9 @@ static int nicvf_get_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void nicvf_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nicvf *nic = netdev_priv(netdev);
|
||||
struct queue_set *qs = nic->qs;
|
||||
|
@ -479,7 +481,9 @@ static void nicvf_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int nicvf_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nicvf *nic = netdev_priv(netdev);
|
||||
struct queue_set *qs = nic->qs;
|
||||
|
|
|
@ -710,7 +710,9 @@ static int set_pauseparam(struct net_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
||||
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e,
|
||||
struct kernel_ethtool_ringparam *kernel_e,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0;
|
||||
|
@ -724,7 +726,9 @@ static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|||
e->tx_pending = adapter->params.sge.cmdQ_size[0];
|
||||
}
|
||||
|
||||
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
||||
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e,
|
||||
struct kernel_ethtool_ringparam *kernel_e,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0;
|
||||
|
|
|
@ -1948,7 +1948,9 @@ static int set_pauseparam(struct net_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
||||
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e,
|
||||
struct kernel_ethtool_ringparam *kernel_e,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct port_info *pi = netdev_priv(dev);
|
||||
struct adapter *adapter = pi->adapter;
|
||||
|
@ -1964,7 +1966,9 @@ static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|||
e->tx_pending = q->txq_size[0];
|
||||
}
|
||||
|
||||
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
||||
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e,
|
||||
struct kernel_ethtool_ringparam *kernel_e,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct port_info *pi = netdev_priv(dev);
|
||||
struct adapter *adapter = pi->adapter;
|
||||
|
|
|
@ -890,7 +890,9 @@ static int set_pauseparam(struct net_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
||||
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e,
|
||||
struct kernel_ethtool_ringparam *kernel_e,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
const struct sge *s = &pi->adapter->sge;
|
||||
|
@ -906,7 +908,9 @@ static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|||
e->tx_pending = s->ethtxq[pi->first_qset].q.size;
|
||||
}
|
||||
|
||||
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
||||
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e,
|
||||
struct kernel_ethtool_ringparam *kernel_e,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
int i;
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
|
|
|
@ -1591,7 +1591,9 @@ static void cxgb4vf_set_msglevel(struct net_device *dev, u32 msglevel)
|
|||
* first Queue Set.
|
||||
*/
|
||||
static void cxgb4vf_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *rp)
|
||||
struct ethtool_ringparam *rp,
|
||||
struct kernel_ethtool_ringparam *kernel_rp,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
const struct sge *s = &pi->adapter->sge;
|
||||
|
@ -1614,7 +1616,9 @@ static void cxgb4vf_get_ringparam(struct net_device *dev,
|
|||
* device -- after vetting them of course!
|
||||
*/
|
||||
static int cxgb4vf_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *rp)
|
||||
struct ethtool_ringparam *rp,
|
||||
struct kernel_ethtool_ringparam *kernel_rp,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct port_info *pi = netdev_priv(dev);
|
||||
struct adapter *adapter = pi->adapter;
|
||||
|
|
|
@ -177,7 +177,9 @@ static void enic_get_strings(struct net_device *netdev, u32 stringset,
|
|||
}
|
||||
|
||||
static void enic_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enic *enic = netdev_priv(netdev);
|
||||
struct vnic_enet_config *c = &enic->config;
|
||||
|
@ -189,7 +191,9 @@ static void enic_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int enic_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enic *enic = netdev_priv(netdev);
|
||||
struct vnic_enet_config *c = &enic->config;
|
||||
|
|
|
@ -2105,7 +2105,9 @@ static void gmac_get_pauseparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void gmac_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *rp)
|
||||
struct ethtool_ringparam *rp,
|
||||
struct kernel_ethtool_ringparam *kernel_rp,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gemini_ethernet_port *port = netdev_priv(netdev);
|
||||
|
||||
|
@ -2123,7 +2125,9 @@ static void gmac_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int gmac_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *rp)
|
||||
struct ethtool_ringparam *rp,
|
||||
struct kernel_ethtool_ringparam *kernel_rp,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gemini_ethernet_port *port = netdev_priv(netdev);
|
||||
int err = 0;
|
||||
|
|
|
@ -683,7 +683,9 @@ static int be_get_link_ksettings(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void be_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct be_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -945,7 +945,9 @@ static void ethoc_get_regs(struct net_device *dev, struct ethtool_regs *regs,
|
|||
}
|
||||
|
||||
static void ethoc_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ethoc *priv = netdev_priv(dev);
|
||||
|
||||
|
@ -961,7 +963,9 @@ static void ethoc_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int ethoc_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ethoc *priv = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -1178,8 +1178,11 @@ static void ftgmac100_get_drvinfo(struct net_device *netdev,
|
|||
strlcpy(info->bus_info, dev_name(&netdev->dev), sizeof(info->bus_info));
|
||||
}
|
||||
|
||||
static void ftgmac100_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
ftgmac100_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ftgmac100 *priv = netdev_priv(netdev);
|
||||
|
||||
|
@ -1190,8 +1193,11 @@ static void ftgmac100_get_ringparam(struct net_device *netdev,
|
|||
ering->tx_pending = priv->tx_q_entries;
|
||||
}
|
||||
|
||||
static int ftgmac100_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static int
|
||||
ftgmac100_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ftgmac100 *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -562,7 +562,9 @@ static int enetc_set_rxfh(struct net_device *ndev, const u32 *indir,
|
|||
}
|
||||
|
||||
static void enetc_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct enetc_ndev_priv *priv = netdev_priv(ndev);
|
||||
|
||||
|
|
|
@ -372,7 +372,9 @@ static int gfar_scoalesce(struct net_device *dev,
|
|||
* rx, rx_mini, and rx_jumbo rings are the same size, as mini and
|
||||
* jumbo are ignored by the driver */
|
||||
static void gfar_gringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *rvals)
|
||||
struct ethtool_ringparam *rvals,
|
||||
struct kernel_ethtool_ringparam *kernel_rvals,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gfar_private *priv = netdev_priv(dev);
|
||||
struct gfar_priv_tx_q *tx_queue = NULL;
|
||||
|
@ -399,7 +401,9 @@ static void gfar_gringparam(struct net_device *dev,
|
|||
* necessary so that we don't mess things up while we're in motion.
|
||||
*/
|
||||
static int gfar_sringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *rvals)
|
||||
struct ethtool_ringparam *rvals,
|
||||
struct kernel_ethtool_ringparam *kernel_rvals,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gfar_private *priv = netdev_priv(dev);
|
||||
int err = 0, i;
|
||||
|
|
|
@ -207,7 +207,9 @@ uec_get_regs(struct net_device *netdev,
|
|||
|
||||
static void
|
||||
uec_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ucc_geth_private *ugeth = netdev_priv(netdev);
|
||||
struct ucc_geth_info *ug_info = ugeth->ug_info;
|
||||
|
@ -226,7 +228,9 @@ uec_get_ringparam(struct net_device *netdev,
|
|||
|
||||
static int
|
||||
uec_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ucc_geth_private *ugeth = netdev_priv(netdev);
|
||||
struct ucc_geth_info *ug_info = ugeth->ug_info;
|
||||
|
|
|
@ -419,7 +419,9 @@ static int gve_set_channels(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void gve_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *cmd)
|
||||
struct ethtool_ringparam *cmd,
|
||||
struct kernel_ethtool_ringparam *kernel_cmd,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct gve_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -663,9 +663,13 @@ static void hns_nic_get_drvinfo(struct net_device *net_dev,
|
|||
* hns_get_ringparam - get ring parameter
|
||||
* @net_dev: net device
|
||||
* @param: ethtool parameter
|
||||
* @kernel_param: ethtool external parameter
|
||||
* @extack: netlink extended ACK report struct
|
||||
*/
|
||||
static void hns_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hns_nic_priv *priv = netdev_priv(net_dev);
|
||||
struct hnae_ae_ops *ops;
|
||||
|
|
|
@ -54,10 +54,6 @@ static int debug = -1;
|
|||
module_param(debug, int, 0);
|
||||
MODULE_PARM_DESC(debug, " Network interface message level setting");
|
||||
|
||||
static unsigned int tx_spare_buf_size;
|
||||
module_param(tx_spare_buf_size, uint, 0400);
|
||||
MODULE_PARM_DESC(tx_spare_buf_size, "Size used to allocate tx spare buffer");
|
||||
|
||||
static unsigned int tx_sgl = 1;
|
||||
module_param(tx_sgl, uint, 0600);
|
||||
MODULE_PARM_DESC(tx_sgl, "Minimum number of frags when using dma_map_sg() to optimize the IOMMU mapping");
|
||||
|
@ -1042,8 +1038,7 @@ static void hns3_init_tx_spare_buffer(struct hns3_enet_ring *ring)
|
|||
dma_addr_t dma;
|
||||
int order;
|
||||
|
||||
alloc_size = tx_spare_buf_size ? tx_spare_buf_size :
|
||||
ring->tqp->handle->kinfo.tx_spare_buf_size;
|
||||
alloc_size = ring->tqp->handle->kinfo.tx_spare_buf_size;
|
||||
if (!alloc_size)
|
||||
return;
|
||||
|
||||
|
@ -5532,8 +5527,8 @@ static int hns3_reset_notify_uninit_enet(struct hnae3_handle *handle)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int hns3_reset_notify(struct hnae3_handle *handle,
|
||||
enum hnae3_reset_notify_type type)
|
||||
int hns3_reset_notify(struct hnae3_handle *handle,
|
||||
enum hnae3_reset_notify_type type)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
|
|
|
@ -705,6 +705,8 @@ void hns3_set_vector_coalesce_tx_ql(struct hns3_enet_tqp_vector *tqp_vector,
|
|||
u32 ql_value);
|
||||
|
||||
void hns3_request_update_promisc_mode(struct hnae3_handle *handle);
|
||||
int hns3_reset_notify(struct hnae3_handle *handle,
|
||||
enum hnae3_reset_notify_type type);
|
||||
|
||||
#ifdef CONFIG_HNS3_DCB
|
||||
void hns3_dcbnl_setup(struct hnae3_handle *handle);
|
||||
|
|
|
@ -643,11 +643,13 @@ static u32 hns3_get_link(struct net_device *netdev)
|
|||
}
|
||||
|
||||
static void hns3_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
int queue_num = h->kinfo.num_tqps;
|
||||
int rx_queue_index = h->kinfo.num_tqps;
|
||||
|
||||
if (hns3_nic_resetting(netdev)) {
|
||||
netdev_err(netdev, "dev resetting!");
|
||||
|
@ -658,7 +660,8 @@ static void hns3_get_ringparam(struct net_device *netdev,
|
|||
param->rx_max_pending = HNS3_RING_MAX_PENDING;
|
||||
|
||||
param->tx_pending = priv->ring[0].desc_num;
|
||||
param->rx_pending = priv->ring[queue_num].desc_num;
|
||||
param->rx_pending = priv->ring[rx_queue_index].desc_num;
|
||||
kernel_param->rx_buf_len = priv->ring[rx_queue_index].buf_size;
|
||||
}
|
||||
|
||||
static void hns3_get_pauseparam(struct net_device *netdev,
|
||||
|
@ -1060,14 +1063,23 @@ static struct hns3_enet_ring *hns3_backup_ringparam(struct hns3_nic_priv *priv)
|
|||
}
|
||||
|
||||
static int hns3_check_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param)
|
||||
{
|
||||
#define RX_BUF_LEN_2K 2048
|
||||
#define RX_BUF_LEN_4K 4096
|
||||
if (hns3_nic_resetting(ndev))
|
||||
return -EBUSY;
|
||||
|
||||
if (param->rx_mini_pending || param->rx_jumbo_pending)
|
||||
return -EINVAL;
|
||||
|
||||
if (kernel_param->rx_buf_len != RX_BUF_LEN_2K &&
|
||||
kernel_param->rx_buf_len != RX_BUF_LEN_4K) {
|
||||
netdev_err(ndev, "Rx buf len only support 2048 and 4096\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (param->tx_pending > HNS3_RING_MAX_PENDING ||
|
||||
param->tx_pending < HNS3_RING_MIN_PENDING ||
|
||||
param->rx_pending > HNS3_RING_MAX_PENDING ||
|
||||
|
@ -1080,8 +1092,26 @@ static int hns3_check_ringparam(struct net_device *ndev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int hns3_change_rx_buf_len(struct net_device *ndev, u32 rx_buf_len)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(ndev);
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
int i;
|
||||
|
||||
h->kinfo.rx_buf_len = rx_buf_len;
|
||||
|
||||
for (i = 0; i < h->kinfo.num_tqps; i++) {
|
||||
h->kinfo.tqp[i]->buf_size = rx_buf_len;
|
||||
priv->ring[i + h->kinfo.num_tqps].buf_size = rx_buf_len;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int hns3_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(ndev);
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
|
@ -1090,9 +1120,10 @@ static int hns3_set_ringparam(struct net_device *ndev,
|
|||
u32 old_tx_desc_num, new_tx_desc_num;
|
||||
u32 old_rx_desc_num, new_rx_desc_num;
|
||||
u16 queue_num = h->kinfo.num_tqps;
|
||||
u32 old_rx_buf_len;
|
||||
int ret, i;
|
||||
|
||||
ret = hns3_check_ringparam(ndev, param);
|
||||
ret = hns3_check_ringparam(ndev, param, kernel_param);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -1101,8 +1132,10 @@ static int hns3_set_ringparam(struct net_device *ndev,
|
|||
new_rx_desc_num = ALIGN(param->rx_pending, HNS3_RING_BD_MULTIPLE);
|
||||
old_tx_desc_num = priv->ring[0].desc_num;
|
||||
old_rx_desc_num = priv->ring[queue_num].desc_num;
|
||||
old_rx_buf_len = priv->ring[queue_num].buf_size;
|
||||
if (old_tx_desc_num == new_tx_desc_num &&
|
||||
old_rx_desc_num == new_rx_desc_num)
|
||||
old_rx_desc_num == new_rx_desc_num &&
|
||||
kernel_param->rx_buf_len == old_rx_buf_len)
|
||||
return 0;
|
||||
|
||||
tmp_rings = hns3_backup_ringparam(priv);
|
||||
|
@ -1113,19 +1146,22 @@ static int hns3_set_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
netdev_info(ndev,
|
||||
"Changing Tx/Rx ring depth from %u/%u to %u/%u\n",
|
||||
"Changing Tx/Rx ring depth from %u/%u to %u/%u, Changing rx buffer len from %d to %d\n",
|
||||
old_tx_desc_num, old_rx_desc_num,
|
||||
new_tx_desc_num, new_rx_desc_num);
|
||||
new_tx_desc_num, new_rx_desc_num,
|
||||
old_rx_buf_len, kernel_param->rx_buf_len);
|
||||
|
||||
if (if_running)
|
||||
ndev->netdev_ops->ndo_stop(ndev);
|
||||
|
||||
hns3_change_all_ring_bd_num(priv, new_tx_desc_num, new_rx_desc_num);
|
||||
hns3_change_rx_buf_len(ndev, kernel_param->rx_buf_len);
|
||||
ret = hns3_init_all_ring(priv);
|
||||
if (ret) {
|
||||
netdev_err(ndev, "Change bd num fail, revert to old value(%d)\n",
|
||||
netdev_err(ndev, "set ringparam fail, revert to old value(%d)\n",
|
||||
ret);
|
||||
|
||||
hns3_change_rx_buf_len(ndev, old_rx_buf_len);
|
||||
hns3_change_all_ring_bd_num(priv, old_tx_desc_num,
|
||||
old_rx_desc_num);
|
||||
for (i = 0; i < h->kinfo.num_tqps * 2; i++)
|
||||
|
@ -1695,6 +1731,7 @@ static int hns3_get_tunable(struct net_device *netdev,
|
|||
void *data)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
int ret = 0;
|
||||
|
||||
switch (tuna->id) {
|
||||
|
@ -1705,6 +1742,9 @@ static int hns3_get_tunable(struct net_device *netdev,
|
|||
case ETHTOOL_RX_COPYBREAK:
|
||||
*(u32 *)data = priv->rx_copybreak;
|
||||
break;
|
||||
case ETHTOOL_TX_COPYBREAK_BUF_SIZE:
|
||||
*(u32 *)data = h->kinfo.tx_spare_buf_size;
|
||||
break;
|
||||
default:
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
|
@ -1713,11 +1753,43 @@ static int hns3_get_tunable(struct net_device *netdev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int hns3_set_tx_spare_buf_size(struct net_device *netdev,
|
||||
u32 data)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
int ret;
|
||||
|
||||
if (hns3_nic_resetting(netdev))
|
||||
return -EBUSY;
|
||||
|
||||
h->kinfo.tx_spare_buf_size = data;
|
||||
|
||||
ret = hns3_reset_notify(h, HNAE3_DOWN_CLIENT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hns3_reset_notify(h, HNAE3_UNINIT_CLIENT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hns3_reset_notify(h, HNAE3_INIT_CLIENT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hns3_reset_notify(h, HNAE3_UP_CLIENT);
|
||||
if (ret)
|
||||
hns3_reset_notify(h, HNAE3_UNINIT_CLIENT);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int hns3_set_tunable(struct net_device *netdev,
|
||||
const struct ethtool_tunable *tuna,
|
||||
const void *data)
|
||||
{
|
||||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
u32 old_tx_spare_buf_size, new_tx_spare_buf_size;
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
int i, ret = 0;
|
||||
|
||||
|
@ -1735,6 +1807,26 @@ static int hns3_set_tunable(struct net_device *netdev,
|
|||
for (i = h->kinfo.num_tqps; i < h->kinfo.num_tqps * 2; i++)
|
||||
priv->ring[i].rx_copybreak = priv->rx_copybreak;
|
||||
|
||||
break;
|
||||
case ETHTOOL_TX_COPYBREAK_BUF_SIZE:
|
||||
old_tx_spare_buf_size = h->kinfo.tx_spare_buf_size;
|
||||
new_tx_spare_buf_size = *(u32 *)data;
|
||||
ret = hns3_set_tx_spare_buf_size(netdev, new_tx_spare_buf_size);
|
||||
if (ret) {
|
||||
int ret1;
|
||||
|
||||
netdev_warn(netdev,
|
||||
"change tx spare buf size fail, revert to old value\n");
|
||||
ret1 = hns3_set_tx_spare_buf_size(netdev,
|
||||
old_tx_spare_buf_size);
|
||||
if (ret1) {
|
||||
netdev_err(netdev,
|
||||
"revert to old tx spare buf size fail\n");
|
||||
return ret1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ret = -EOPNOTSUPP;
|
||||
|
@ -1751,6 +1843,8 @@ static int hns3_set_tunable(struct net_device *netdev,
|
|||
ETHTOOL_COALESCE_MAX_FRAMES | \
|
||||
ETHTOOL_COALESCE_USE_CQE)
|
||||
|
||||
#define HNS3_ETHTOOL_RING ETHTOOL_RING_USE_RX_BUF_LEN
|
||||
|
||||
static int hns3_get_ts_info(struct net_device *netdev,
|
||||
struct ethtool_ts_info *info)
|
||||
{
|
||||
|
@ -1829,6 +1923,7 @@ static int hns3_get_link_ext_state(struct net_device *netdev,
|
|||
|
||||
static const struct ethtool_ops hns3vf_ethtool_ops = {
|
||||
.supported_coalesce_params = HNS3_ETHTOOL_COALESCE,
|
||||
.supported_ring_params = HNS3_ETHTOOL_RING,
|
||||
.get_drvinfo = hns3_get_drvinfo,
|
||||
.get_ringparam = hns3_get_ringparam,
|
||||
.set_ringparam = hns3_set_ringparam,
|
||||
|
@ -1860,6 +1955,7 @@ static const struct ethtool_ops hns3vf_ethtool_ops = {
|
|||
|
||||
static const struct ethtool_ops hns3_ethtool_ops = {
|
||||
.supported_coalesce_params = HNS3_ETHTOOL_COALESCE,
|
||||
.supported_ring_params = HNS3_ETHTOOL_RING,
|
||||
.self_test = hns3_self_test,
|
||||
.get_drvinfo = hns3_get_drvinfo,
|
||||
.get_link = hns3_get_link,
|
||||
|
|
|
@ -547,7 +547,9 @@ static void hinic_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void hinic_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hinic_dev *nic_dev = netdev_priv(netdev);
|
||||
|
||||
|
@ -580,7 +582,9 @@ static int check_ringparam_valid(struct hinic_dev *nic_dev,
|
|||
}
|
||||
|
||||
static int hinic_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct hinic_dev *nic_dev = netdev_priv(netdev);
|
||||
u16 new_sq_depth, new_rq_depth;
|
||||
|
|
|
@ -2137,8 +2137,11 @@ emac_ethtool_set_link_ksettings(struct net_device *ndev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void emac_ethtool_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *rp)
|
||||
static void
|
||||
emac_ethtool_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *rp,
|
||||
struct kernel_ethtool_ringparam *kernel_rp,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
rp->rx_max_pending = rp->rx_pending = NUM_RX_BUFF;
|
||||
rp->tx_max_pending = rp->tx_pending = NUM_TX_BUFF;
|
||||
|
|
|
@ -3088,7 +3088,9 @@ static u32 ibmvnic_get_link(struct net_device *netdev)
|
|||
}
|
||||
|
||||
static void ibmvnic_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ibmvnic_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -3108,7 +3110,9 @@ static void ibmvnic_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ibmvnic_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ibmvnic_adapter *adapter = netdev_priv(netdev);
|
||||
int ret;
|
||||
|
|
|
@ -2557,7 +2557,9 @@ static int e100_set_eeprom(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void e100_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nic *nic = netdev_priv(netdev);
|
||||
struct param_range *rfds = &nic->params.rfds;
|
||||
|
@ -2570,7 +2572,9 @@ static void e100_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e100_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nic *nic = netdev_priv(netdev);
|
||||
struct param_range *rfds = &nic->params.rfds;
|
||||
|
|
|
@ -539,7 +539,9 @@ static void e1000_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void e1000_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
|
@ -556,7 +558,9 @@ static void e1000_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e1000_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
|
|
|
@ -655,7 +655,9 @@ static void e1000_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void e1000_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -666,7 +668,9 @@ static void e1000_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int e1000_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_ring *temp_tx = NULL, *temp_rx = NULL;
|
||||
|
|
|
@ -502,7 +502,9 @@ static void fm10k_set_msglevel(struct net_device *netdev, u32 data)
|
|||
}
|
||||
|
||||
static void fm10k_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fm10k_intfc *interface = netdev_priv(netdev);
|
||||
|
||||
|
@ -517,7 +519,9 @@ static void fm10k_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int fm10k_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fm10k_intfc *interface = netdev_priv(netdev);
|
||||
struct fm10k_ring *temp_ring;
|
||||
|
|
|
@ -1916,7 +1916,9 @@ static void i40e_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void i40e_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
struct i40e_pf *pf = np->vsi->back;
|
||||
|
@ -1944,7 +1946,9 @@ static bool i40e_active_tx_ring_index(struct i40e_vsi *vsi, u16 index)
|
|||
}
|
||||
|
||||
static int i40e_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct i40e_ring *tx_rings = NULL, *rx_rings = NULL;
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
|
|
|
@ -580,12 +580,16 @@ static void iavf_get_drvinfo(struct net_device *netdev,
|
|||
* iavf_get_ringparam - Get ring parameters
|
||||
* @netdev: network interface device structure
|
||||
* @ring: ethtool ringparam structure
|
||||
* @kernel_ring: ethtool extenal ringparam structure
|
||||
* @extack: netlink extended ACK report struct
|
||||
*
|
||||
* Returns current ring parameters. TX and RX rings are reported separately,
|
||||
* but the number of rings is not reported.
|
||||
**/
|
||||
static void iavf_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct iavf_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -599,12 +603,16 @@ static void iavf_get_ringparam(struct net_device *netdev,
|
|||
* iavf_set_ringparam - Set ring parameters
|
||||
* @netdev: network interface device structure
|
||||
* @ring: ethtool ringparam structure
|
||||
* @kernel_ring: ethtool external ringparam structure
|
||||
* @extack: netlink extended ACK report struct
|
||||
*
|
||||
* Sets ring parameters. TX and RX rings are controlled separately, but the
|
||||
* number of rings is not specified, so all rings get the same settings.
|
||||
**/
|
||||
static int iavf_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct iavf_adapter *adapter = netdev_priv(netdev);
|
||||
u32 new_rx_count, new_tx_count;
|
||||
|
|
|
@ -2686,7 +2686,9 @@ ice_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd,
|
|||
}
|
||||
|
||||
static void
|
||||
ice_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
|
||||
ice_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ice_netdev_priv *np = netdev_priv(netdev);
|
||||
struct ice_vsi *vsi = np->vsi;
|
||||
|
@ -2704,7 +2706,9 @@ ice_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
|
|||
}
|
||||
|
||||
static int
|
||||
ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
|
||||
ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ice_netdev_priv *np = netdev_priv(netdev);
|
||||
struct ice_tx_ring *xdp_rings = NULL;
|
||||
|
|
|
@ -864,7 +864,9 @@ static void igb_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void igb_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -875,7 +877,9 @@ static void igb_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igb_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
struct igb_ring *temp_ring;
|
||||
|
|
|
@ -175,7 +175,9 @@ static void igbvf_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void igbvf_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igbvf_adapter *adapter = netdev_priv(netdev);
|
||||
struct igbvf_ring *tx_ring = adapter->tx_ring;
|
||||
|
@ -188,7 +190,9 @@ static void igbvf_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int igbvf_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igbvf_adapter *adapter = netdev_priv(netdev);
|
||||
struct igbvf_ring *temp_ring;
|
||||
|
|
|
@ -567,8 +567,11 @@ static int igc_ethtool_set_eeprom(struct net_device *netdev,
|
|||
return ret_val;
|
||||
}
|
||||
|
||||
static void igc_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static void
|
||||
igc_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igc_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -578,8 +581,11 @@ static void igc_ethtool_get_ringparam(struct net_device *netdev,
|
|||
ring->tx_pending = adapter->tx_ring_count;
|
||||
}
|
||||
|
||||
static int igc_ethtool_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static int
|
||||
igc_ethtool_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct igc_adapter *adapter = netdev_priv(netdev);
|
||||
struct igc_ring *temp_ring;
|
||||
|
|
|
@ -464,7 +464,9 @@ ixgb_get_drvinfo(struct net_device *netdev,
|
|||
|
||||
static void
|
||||
ixgb_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgb_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgb_desc_ring *txdr = &adapter->tx_ring;
|
||||
|
@ -478,7 +480,9 @@ ixgb_get_ringparam(struct net_device *netdev,
|
|||
|
||||
static int
|
||||
ixgb_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgb_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgb_desc_ring *txdr = &adapter->tx_ring;
|
||||
|
|
|
@ -1118,7 +1118,9 @@ static void ixgbe_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbe_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_ring *tx_ring = adapter->tx_ring[0];
|
||||
|
@ -1131,7 +1133,9 @@ static void ixgbe_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_ring *temp_ring;
|
||||
|
|
|
@ -225,7 +225,9 @@ static void ixgbevf_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbevf_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbevf_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -236,7 +238,9 @@ static void ixgbevf_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbevf_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ixgbevf_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbevf_ring *tx_ring = NULL, *rx_ring = NULL;
|
||||
|
|
|
@ -1638,7 +1638,9 @@ static int mv643xx_eth_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void
|
||||
mv643xx_eth_get_ringparam(struct net_device *dev, struct ethtool_ringparam *er)
|
||||
mv643xx_eth_get_ringparam(struct net_device *dev, struct ethtool_ringparam *er,
|
||||
struct kernel_ethtool_ringparam *kernel_er,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mv643xx_eth_private *mp = netdev_priv(dev);
|
||||
|
||||
|
@ -1650,7 +1652,9 @@ mv643xx_eth_get_ringparam(struct net_device *dev, struct ethtool_ringparam *er)
|
|||
}
|
||||
|
||||
static int
|
||||
mv643xx_eth_set_ringparam(struct net_device *dev, struct ethtool_ringparam *er)
|
||||
mv643xx_eth_set_ringparam(struct net_device *dev, struct ethtool_ringparam *er,
|
||||
struct kernel_ethtool_ringparam *kernel_er,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mv643xx_eth_private *mp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -4510,8 +4510,11 @@ static void mvneta_ethtool_get_drvinfo(struct net_device *dev,
|
|||
}
|
||||
|
||||
|
||||
static void mvneta_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static void
|
||||
mvneta_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(netdev);
|
||||
|
||||
|
@ -4521,8 +4524,11 @@ static void mvneta_ethtool_get_ringparam(struct net_device *netdev,
|
|||
ring->tx_pending = pp->tx_ring_size;
|
||||
}
|
||||
|
||||
static int mvneta_ethtool_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static int
|
||||
mvneta_ethtool_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -5431,8 +5431,11 @@ static void mvpp2_ethtool_get_drvinfo(struct net_device *dev,
|
|||
sizeof(drvinfo->bus_info));
|
||||
}
|
||||
|
||||
static void mvpp2_ethtool_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static void
|
||||
mvpp2_ethtool_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvpp2_port *port = netdev_priv(dev);
|
||||
|
||||
|
@ -5442,8 +5445,11 @@ static void mvpp2_ethtool_get_ringparam(struct net_device *dev,
|
|||
ring->tx_pending = port->tx_ring_size;
|
||||
}
|
||||
|
||||
static int mvpp2_ethtool_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static int
|
||||
mvpp2_ethtool_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mvpp2_port *port = netdev_priv(dev);
|
||||
u16 prev_rx_ring_size = port->rx_ring_size;
|
||||
|
|
|
@ -360,7 +360,9 @@ static int otx2_set_pauseparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void otx2_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
struct otx2_qset *qs = &pfvf->qset;
|
||||
|
@ -372,7 +374,9 @@ static void otx2_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int otx2_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
bool if_up = netif_running(netdev);
|
||||
|
|
|
@ -492,7 +492,9 @@ static void skge_get_strings(struct net_device *dev, u32 stringset, u8 *data)
|
|||
}
|
||||
|
||||
static void skge_get_ring_param(struct net_device *dev,
|
||||
struct ethtool_ringparam *p)
|
||||
struct ethtool_ringparam *p,
|
||||
struct kernel_ethtool_ringparam *kernel_p,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct skge_port *skge = netdev_priv(dev);
|
||||
|
||||
|
@ -504,7 +506,9 @@ static void skge_get_ring_param(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int skge_set_ring_param(struct net_device *dev,
|
||||
struct ethtool_ringparam *p)
|
||||
struct ethtool_ringparam *p,
|
||||
struct kernel_ethtool_ringparam *kernel_p,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct skge_port *skge = netdev_priv(dev);
|
||||
int err = 0;
|
||||
|
|
|
@ -4149,7 +4149,9 @@ static unsigned long roundup_ring_size(unsigned long pending)
|
|||
}
|
||||
|
||||
static void sky2_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sky2_port *sky2 = netdev_priv(dev);
|
||||
|
||||
|
@ -4161,7 +4163,9 @@ static void sky2_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int sky2_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sky2_port *sky2 = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -1141,7 +1141,9 @@ static void mlx4_en_get_pauseparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int mlx4_en_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||
struct mlx4_en_dev *mdev = priv->mdev;
|
||||
|
@ -1208,7 +1210,9 @@ out:
|
|||
}
|
||||
|
||||
static void mlx4_en_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -314,7 +314,9 @@ void mlx5e_ethtool_get_ringparam(struct mlx5e_priv *priv,
|
|||
}
|
||||
|
||||
static void mlx5e_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
@ -380,7 +382,9 @@ unlock:
|
|||
}
|
||||
|
||||
static int mlx5e_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -219,16 +219,22 @@ static int mlx5e_rep_get_sset_count(struct net_device *dev, int sset)
|
|||
}
|
||||
}
|
||||
|
||||
static void mlx5e_rep_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
static void
|
||||
mlx5e_rep_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
mlx5e_ethtool_get_ringparam(priv, param);
|
||||
}
|
||||
|
||||
static int mlx5e_rep_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
static int
|
||||
mlx5e_rep_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -67,7 +67,9 @@ static void mlx5i_get_ethtool_stats(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int mlx5i_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = mlx5i_epriv(dev);
|
||||
|
||||
|
@ -75,7 +77,9 @@ static int mlx5i_set_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void mlx5i_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlx5e_priv *priv = mlx5i_epriv(dev);
|
||||
|
||||
|
|
|
@ -33,8 +33,11 @@ static void mlxbf_gige_get_regs(struct net_device *netdev,
|
|||
memcpy_fromio(p, priv->base, MLXBF_GIGE_MMIO_REG_SZ);
|
||||
}
|
||||
|
||||
static void mlxbf_gige_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
mlxbf_gige_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlxbf_gige *priv = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -6317,11 +6317,15 @@ static int netdev_set_pauseparam(struct net_device *dev,
|
|||
* netdev_get_ringparam - get tx/rx ring parameters
|
||||
* @dev: Network device.
|
||||
* @ring: Ethtool RING settings data structure.
|
||||
* @kernel_ring: Ethtool external RING settings data structure.
|
||||
* @extack: Netlink handle.
|
||||
*
|
||||
* This procedure returns the TX/RX ring settings.
|
||||
*/
|
||||
static void netdev_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct dev_priv *priv = netdev_priv(dev);
|
||||
struct dev_info *hw_priv = priv->adapter;
|
||||
|
|
|
@ -1704,7 +1704,9 @@ myri10ge_set_pauseparam(struct net_device *netdev,
|
|||
|
||||
static void
|
||||
myri10ge_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct myri10ge_priv *mgp = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -5461,8 +5461,11 @@ static int s2io_ethtool_set_led(struct net_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void s2io_ethtool_gringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
s2io_ethtool_gringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct s2io_nic *sp = netdev_priv(dev);
|
||||
int i, tx_desc_count = 0, rx_desc_count = 0;
|
||||
|
|
|
@ -381,7 +381,9 @@ err_bad_set:
|
|||
}
|
||||
|
||||
static void nfp_net_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nfp_net *nn = netdev_priv(netdev);
|
||||
|
||||
|
@ -406,7 +408,9 @@ static int nfp_net_set_ring_size(struct nfp_net *nn, u32 rxd_cnt, u32 txd_cnt)
|
|||
}
|
||||
|
||||
static int nfp_net_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nfp_net *nn = netdev_priv(netdev);
|
||||
u32 rxd_cnt, txd_cnt;
|
||||
|
|
|
@ -4651,7 +4651,10 @@ static int nv_nway_reset(struct net_device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void nv_get_ringparam(struct net_device *dev, struct ethtool_ringparam* ring)
|
||||
static void nv_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fe_priv *np = netdev_priv(dev);
|
||||
|
||||
|
@ -4662,7 +4665,10 @@ static void nv_get_ringparam(struct net_device *dev, struct ethtool_ringparam* r
|
|||
ring->tx_pending = np->tx_ring_size;
|
||||
}
|
||||
|
||||
static int nv_set_ringparam(struct net_device *dev, struct ethtool_ringparam* ring)
|
||||
static int nv_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct fe_priv *np = netdev_priv(dev);
|
||||
u8 __iomem *base = get_hwbase(dev);
|
||||
|
|
|
@ -270,9 +270,13 @@ static int pch_gbe_nway_reset(struct net_device *netdev)
|
|||
* pch_gbe_get_ringparam - Report ring sizes
|
||||
* @netdev: Network interface device structure
|
||||
* @ring: Ring param structure
|
||||
* @kernel_ring: Ring external param structure
|
||||
* @extack: netlink handle
|
||||
*/
|
||||
static void pch_gbe_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct pch_gbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct pch_gbe_tx_ring *txdr = adapter->tx_ring;
|
||||
|
@ -288,12 +292,16 @@ static void pch_gbe_get_ringparam(struct net_device *netdev,
|
|||
* pch_gbe_set_ringparam - Set ring sizes
|
||||
* @netdev: Network interface device structure
|
||||
* @ring: Ring param structure
|
||||
* @kernel_ring: Ring external param structure
|
||||
* @extack: netlink handle
|
||||
* Returns
|
||||
* 0: Successful.
|
||||
* Negative value: Failed.
|
||||
*/
|
||||
static int pch_gbe_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct pch_gbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct pch_gbe_tx_ring *txdr, *tx_old;
|
||||
|
|
|
@ -69,7 +69,9 @@ pasemi_mac_ethtool_set_msglevel(struct net_device *netdev,
|
|||
|
||||
static void
|
||||
pasemi_mac_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct pasemi_mac *mac = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -512,7 +512,9 @@ static int ionic_set_coalesce(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ionic_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ionic_lif *lif = netdev_priv(netdev);
|
||||
|
||||
|
@ -523,7 +525,9 @@ static void ionic_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ionic_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ionic_lif *lif = netdev_priv(netdev);
|
||||
struct ionic_queue_params qparam;
|
||||
|
|
|
@ -392,7 +392,9 @@ netxen_nic_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
|
|||
|
||||
static void
|
||||
netxen_nic_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netxen_adapter *adapter = netdev_priv(dev);
|
||||
|
||||
|
@ -430,7 +432,9 @@ netxen_validate_ringparam(u32 val, u32 min, u32 max, char *r_name)
|
|||
|
||||
static int
|
||||
netxen_nic_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netxen_adapter *adapter = netdev_priv(dev);
|
||||
u16 max_rcv_desc = MAX_RCV_DESCRIPTORS_10G;
|
||||
|
|
|
@ -888,7 +888,9 @@ int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal,
|
|||
}
|
||||
|
||||
static void qede_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qede_dev *edev = netdev_priv(dev);
|
||||
|
||||
|
@ -899,7 +901,9 @@ static void qede_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int qede_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qede_dev *edev = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -632,7 +632,9 @@ qlcnic_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
|
|||
|
||||
static void
|
||||
qlcnic_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qlcnic_adapter *adapter = netdev_priv(dev);
|
||||
|
||||
|
@ -663,7 +665,9 @@ qlcnic_validate_ringparam(u32 val, u32 min, u32 max, char *r_name)
|
|||
|
||||
static int
|
||||
qlcnic_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qlcnic_adapter *adapter = netdev_priv(dev);
|
||||
u16 num_rxd, num_jumbo_rxd, num_txd;
|
||||
|
|
|
@ -133,7 +133,9 @@ static int emac_nway_reset(struct net_device *netdev)
|
|||
}
|
||||
|
||||
static void emac_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct emac_adapter *adpt = netdev_priv(netdev);
|
||||
|
||||
|
@ -144,7 +146,9 @@ static void emac_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int emac_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct emac_adapter *adpt = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -246,7 +246,9 @@ qcaspi_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p)
|
|||
}
|
||||
|
||||
static void
|
||||
qcaspi_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
|
||||
qcaspi_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qcaspi *qca = netdev_priv(dev);
|
||||
|
||||
|
@ -257,7 +259,9 @@ qcaspi_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
|
|||
}
|
||||
|
||||
static int
|
||||
qcaspi_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
|
||||
qcaspi_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct net_device_ops *ops = dev->netdev_ops;
|
||||
struct qcaspi *qca = netdev_priv(dev);
|
||||
|
|
|
@ -1388,7 +1388,9 @@ static void cp_get_drvinfo (struct net_device *dev, struct ethtool_drvinfo *info
|
|||
}
|
||||
|
||||
static void cp_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
ring->rx_max_pending = CP_RX_RING_SIZE;
|
||||
ring->tx_max_pending = CP_TX_RING_SIZE;
|
||||
|
|
|
@ -1873,7 +1873,9 @@ static int rtl8169_set_eee(struct net_device *dev, struct ethtool_eee *data)
|
|||
}
|
||||
|
||||
static void rtl8169_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *data)
|
||||
struct ethtool_ringparam *data,
|
||||
struct kernel_ethtool_ringparam *kernel_data,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
data->rx_max_pending = NUM_RX_DESC;
|
||||
data->rx_pending = NUM_RX_DESC;
|
||||
|
|
|
@ -1604,7 +1604,9 @@ static void ravb_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
|
|||
}
|
||||
|
||||
static void ravb_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ravb_private *priv = netdev_priv(ndev);
|
||||
|
||||
|
@ -1615,7 +1617,9 @@ static void ravb_get_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int ravb_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ravb_private *priv = netdev_priv(ndev);
|
||||
const struct ravb_hw_info *info = priv->info;
|
||||
|
|
|
@ -2296,7 +2296,9 @@ static void sh_eth_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
|
|||
}
|
||||
|
||||
static void sh_eth_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sh_eth_private *mdp = netdev_priv(ndev);
|
||||
|
||||
|
@ -2307,7 +2309,9 @@ static void sh_eth_get_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int sh_eth_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct sh_eth_private *mdp = netdev_priv(ndev);
|
||||
int ret;
|
||||
|
|
|
@ -20,8 +20,11 @@
|
|||
/* This is the maximum number of descriptor rings supported by the QDMA */
|
||||
#define EFX_EF100_MAX_DMAQ_SIZE 16384UL
|
||||
|
||||
static void ef100_ethtool_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static void
|
||||
ef100_ethtool_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
|
||||
|
|
|
@ -157,8 +157,11 @@ static int efx_ethtool_set_coalesce(struct net_device *net_dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void efx_ethtool_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static void
|
||||
efx_ethtool_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
|
||||
|
@ -168,8 +171,11 @@ static void efx_ethtool_get_ringparam(struct net_device *net_dev,
|
|||
ring->tx_pending = efx->txq_entries;
|
||||
}
|
||||
|
||||
static int efx_ethtool_set_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static int
|
||||
efx_ethtool_set_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
u32 txq_entries;
|
||||
|
|
|
@ -637,8 +637,11 @@ static int ef4_ethtool_set_coalesce(struct net_device *net_dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void ef4_ethtool_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static void
|
||||
ef4_ethtool_get_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ef4_nic *efx = netdev_priv(net_dev);
|
||||
|
||||
|
@ -648,8 +651,11 @@ static void ef4_ethtool_get_ringparam(struct net_device *net_dev,
|
|||
ring->tx_pending = efx->txq_entries;
|
||||
}
|
||||
|
||||
static int ef4_ethtool_set_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
static int
|
||||
ef4_ethtool_set_ringparam(struct net_device *net_dev,
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ef4_nic *efx = netdev_priv(net_dev);
|
||||
u32 txq_entries;
|
||||
|
|
|
@ -463,7 +463,9 @@ static int stmmac_nway_reset(struct net_device *dev)
|
|||
}
|
||||
|
||||
static void stmmac_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
@ -474,7 +476,9 @@ static void stmmac_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int stmmac_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
if (ring->rx_mini_pending || ring->rx_jumbo_pending ||
|
||||
ring->rx_pending < DMA_MIN_RX_SIZE ||
|
||||
|
|
|
@ -2245,9 +2245,13 @@ static inline int bdx_tx_fifo_size_to_packets(int tx_size)
|
|||
* bdx_get_ringparam - report ring sizes
|
||||
* @netdev
|
||||
* @ring
|
||||
* @kernel_ring
|
||||
* @extack
|
||||
*/
|
||||
static void
|
||||
bdx_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
|
||||
bdx_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bdx_priv *priv = netdev_priv(netdev);
|
||||
|
||||
|
@ -2262,9 +2266,13 @@ bdx_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
|
|||
* bdx_set_ringparam - set ring sizes
|
||||
* @netdev
|
||||
* @ring
|
||||
* @kernel_ring
|
||||
* @extack
|
||||
*/
|
||||
static int
|
||||
bdx_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
|
||||
bdx_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bdx_priv *priv = netdev_priv(netdev);
|
||||
int rx_size = 0;
|
||||
|
|
|
@ -453,8 +453,11 @@ static int am65_cpsw_set_channels(struct net_device *ndev,
|
|||
return am65_cpsw_nuss_update_tx_chns(common, chs->tx_count);
|
||||
}
|
||||
|
||||
static void am65_cpsw_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
am65_cpsw_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct am65_cpsw_common *common = am65_ndev_to_common(ndev);
|
||||
|
||||
|
|
|
@ -817,7 +817,9 @@ static void cpmac_tx_timeout(struct net_device *dev, unsigned int txqueue)
|
|||
}
|
||||
|
||||
static void cpmac_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct cpmac_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
@ -833,7 +835,9 @@ static void cpmac_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int cpmac_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct cpmac_priv *priv = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -658,7 +658,9 @@ err:
|
|||
}
|
||||
|
||||
void cpsw_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct cpsw_priv *priv = netdev_priv(ndev);
|
||||
struct cpsw_common *cpsw = priv->cpsw;
|
||||
|
@ -671,7 +673,9 @@ void cpsw_get_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
int cpsw_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct cpsw_common *cpsw = ndev_to_cpsw(ndev);
|
||||
int descs_num, ret;
|
||||
|
|
|
@ -491,9 +491,13 @@ int cpsw_get_eee(struct net_device *ndev, struct ethtool_eee *edata);
|
|||
int cpsw_set_eee(struct net_device *ndev, struct ethtool_eee *edata);
|
||||
int cpsw_nway_reset(struct net_device *ndev);
|
||||
void cpsw_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering);
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack);
|
||||
int cpsw_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering);
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack);
|
||||
int cpsw_set_channels_common(struct net_device *ndev,
|
||||
struct ethtool_channels *chs,
|
||||
cpdma_handler_fn rx_handler);
|
||||
|
|
|
@ -110,7 +110,9 @@ spider_net_ethtool_nway_reset(struct net_device *netdev)
|
|||
|
||||
static void
|
||||
spider_net_ethtool_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ering)
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct spider_net_card *card = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -1276,8 +1276,11 @@ static const struct attribute_group temac_attr_group = {
|
|||
* ethtool support
|
||||
*/
|
||||
|
||||
static void ll_temac_ethtools_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
ll_temac_ethtools_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct temac_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
@ -1291,8 +1294,11 @@ static void ll_temac_ethtools_get_ringparam(struct net_device *ndev,
|
|||
ering->tx_pending = lp->tx_bd_num;
|
||||
}
|
||||
|
||||
static int ll_temac_ethtools_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static int
|
||||
ll_temac_ethtools_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct temac_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
|
|
@ -1323,8 +1323,11 @@ static void axienet_ethtools_get_regs(struct net_device *ndev,
|
|||
data[39] = axienet_dma_in32(lp, XAXIDMA_RX_TDESC_OFFSET);
|
||||
}
|
||||
|
||||
static void axienet_ethtools_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static void
|
||||
axienet_ethtools_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct axienet_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
@ -1338,8 +1341,11 @@ static void axienet_ethtools_get_ringparam(struct net_device *ndev,
|
|||
ering->tx_pending = lp->tx_bd_num;
|
||||
}
|
||||
|
||||
static int axienet_ethtools_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering)
|
||||
static int
|
||||
axienet_ethtools_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ering,
|
||||
struct kernel_ethtool_ringparam *kernel_ering,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct axienet_local *lp = netdev_priv(ndev);
|
||||
|
||||
|
|
|
@ -1858,7 +1858,9 @@ static void __netvsc_get_ringparam(struct netvsc_device *nvdev,
|
|||
}
|
||||
|
||||
static void netvsc_get_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct net_device_context *ndevctx = netdev_priv(ndev);
|
||||
struct netvsc_device *nvdev = rtnl_dereference(ndevctx->nvdev);
|
||||
|
@ -1870,7 +1872,9 @@ static void netvsc_get_ringparam(struct net_device *ndev,
|
|||
}
|
||||
|
||||
static int netvsc_set_ringparam(struct net_device *ndev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct net_device_context *ndevctx = netdev_priv(ndev);
|
||||
struct netvsc_device *nvdev = rtnl_dereference(ndevctx->nvdev);
|
||||
|
|
|
@ -65,7 +65,9 @@ static int nsim_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void nsim_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netdevsim *ns = netdev_priv(dev);
|
||||
|
||||
|
@ -73,7 +75,9 @@ static void nsim_get_ringparam(struct net_device *dev,
|
|||
}
|
||||
|
||||
static int nsim_set_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct netdevsim *ns = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -8983,7 +8983,9 @@ static int rtl8152_set_tunable(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void rtl8152_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct r8152 *tp = netdev_priv(netdev);
|
||||
|
||||
|
@ -8992,7 +8994,9 @@ static void rtl8152_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int rtl8152_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct r8152 *tp = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -2174,7 +2174,9 @@ static void virtnet_cpu_notif_remove(struct virtnet_info *vi)
|
|||
}
|
||||
|
||||
static void virtnet_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring,
|
||||
struct kernel_ethtool_ringparam *kernel_ring,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct virtnet_info *vi = netdev_priv(dev);
|
||||
|
||||
|
|
|
@ -575,10 +575,11 @@ vmxnet3_get_link_ksettings(struct net_device *netdev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
vmxnet3_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct vmxnet3_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -595,10 +596,11 @@ vmxnet3_get_ringparam(struct net_device *netdev,
|
|||
param->rx_jumbo_pending = adapter->rx_ring2_size;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
vmxnet3_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct vmxnet3_adapter *adapter = netdev_priv(netdev);
|
||||
u32 new_tx_ring_size, new_rx_ring_size, new_rx_ring2_size;
|
||||
|
|
|
@ -144,7 +144,9 @@ static int qeth_set_coalesce(struct net_device *dev,
|
|||
}
|
||||
|
||||
static void qeth_get_ringparam(struct net_device *dev,
|
||||
struct ethtool_ringparam *param)
|
||||
struct ethtool_ringparam *param,
|
||||
struct kernel_ethtool_ringparam *kernel_param,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct qeth_card *card = dev->ml_priv;
|
||||
|
||||
|
|
|
@ -67,6 +67,22 @@ enum {
|
|||
ETH_RSS_HASH_FUNCS_COUNT
|
||||
};
|
||||
|
||||
/**
|
||||
* struct kernel_ethtool_ringparam - RX/TX ring configuration
|
||||
* @rx_buf_len: Current length of buffers on the rx ring.
|
||||
*/
|
||||
struct kernel_ethtool_ringparam {
|
||||
u32 rx_buf_len;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_supported_ring_param - indicator caps for setting ring params
|
||||
* @ETHTOOL_RING_USE_RX_BUF_LEN: capture for setting rx_buf_len
|
||||
*/
|
||||
enum ethtool_supported_ring_param {
|
||||
ETHTOOL_RING_USE_RX_BUF_LEN = BIT(0),
|
||||
};
|
||||
|
||||
#define __ETH_RSS_HASH_BIT(bit) ((u32)1 << (bit))
|
||||
#define __ETH_RSS_HASH(name) __ETH_RSS_HASH_BIT(ETH_RSS_HASH_##name##_BIT)
|
||||
|
||||
|
@ -432,6 +448,7 @@ struct ethtool_module_power_mode_params {
|
|||
* @cap_link_lanes_supported: indicates if the driver supports lanes
|
||||
* parameter.
|
||||
* @supported_coalesce_params: supported types of interrupt coalescing.
|
||||
* @supported_ring_params: supported ring params.
|
||||
* @get_drvinfo: Report driver/device information. Should only set the
|
||||
* @driver, @version, @fw_version and @bus_info fields. If not
|
||||
* implemented, the @driver and @bus_info fields will be filled in
|
||||
|
@ -613,6 +630,7 @@ struct ethtool_module_power_mode_params {
|
|||
struct ethtool_ops {
|
||||
u32 cap_link_lanes_supported:1;
|
||||
u32 supported_coalesce_params;
|
||||
u32 supported_ring_params;
|
||||
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
|
||||
int (*get_regs_len)(struct net_device *);
|
||||
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
|
||||
|
@ -638,9 +656,13 @@ struct ethtool_ops {
|
|||
struct kernel_ethtool_coalesce *,
|
||||
struct netlink_ext_ack *);
|
||||
void (*get_ringparam)(struct net_device *,
|
||||
struct ethtool_ringparam *);
|
||||
struct ethtool_ringparam *,
|
||||
struct kernel_ethtool_ringparam *,
|
||||
struct netlink_ext_ack *);
|
||||
int (*set_ringparam)(struct net_device *,
|
||||
struct ethtool_ringparam *);
|
||||
struct ethtool_ringparam *,
|
||||
struct kernel_ethtool_ringparam *,
|
||||
struct netlink_ext_ack *);
|
||||
void (*get_pause_stats)(struct net_device *dev,
|
||||
struct ethtool_pause_stats *pause_stats);
|
||||
void (*get_pauseparam)(struct net_device *,
|
||||
|
|
|
@ -231,6 +231,7 @@ enum tunable_id {
|
|||
ETHTOOL_RX_COPYBREAK,
|
||||
ETHTOOL_TX_COPYBREAK,
|
||||
ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
|
||||
ETHTOOL_TX_COPYBREAK_BUF_SIZE,
|
||||
/*
|
||||
* Add your fresh new tunable attribute above and remember to update
|
||||
* tunable_strings[] in net/ethtool/common.c
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue