diff options
author | Jakub Kicinski | 2016-11-03 18:11:58 +0100 |
---|---|---|
committer | David S. Miller | 2016-11-04 19:56:14 +0100 |
commit | 68453c7a8973399441080bcb20512d38033e64f7 (patch) | |
tree | 74886da3342e51b0faf199a7c7905763aef381d2 /drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | |
parent | nfp: add support for ethtool .get_channels (diff) | |
download | kernel-qcow2-linux-68453c7a8973399441080bcb20512d38033e64f7.tar.gz kernel-qcow2-linux-68453c7a8973399441080bcb20512d38033e64f7.tar.xz kernel-qcow2-linux-68453c7a8973399441080bcb20512d38033e64f7.zip |
nfp: centralize runtime reconfiguration logic
All functions which need to reallocate ring resources at runtime
look very similar. Centralize that logic into a separate function.
Encapsulate configuration parameters in a structure.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c index a7386d1b2883..3f48256dc03c 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c @@ -158,6 +158,25 @@ static void nfp_net_get_ringparam(struct net_device *netdev, ring->tx_pending = nn->txd_cnt; } +static int nfp_net_set_ring_size(struct nfp_net *nn, u32 rxd_cnt, u32 txd_cnt) +{ + struct nfp_net_ring_set *reconfig_rx = NULL, *reconfig_tx = NULL; + struct nfp_net_ring_set rx = { + .mtu = nn->netdev->mtu, + .dcnt = rxd_cnt, + }; + struct nfp_net_ring_set tx = { + .dcnt = txd_cnt, + }; + + if (nn->rxd_cnt != rxd_cnt) + reconfig_rx = ℞ + if (nn->txd_cnt != txd_cnt) + reconfig_tx = &tx; + + return nfp_net_ring_reconfig(nn, reconfig_rx, reconfig_tx); +} + static int nfp_net_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring) { |