link: Allow configuring RX mini and jumbo ring sizes, too

This now covers all ethtool_ringparam configurables (as of v5.6;
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/ethtool.h?h=v5.6#n488)
This commit is contained in:
nabijaczleweli
2020-04-29 18:57:13 +02:00
parent 80af9bdabe
commit e81f5fc4e8
6 changed files with 39 additions and 1 deletions
+16
View File
@@ -436,6 +436,16 @@ int ethtool_set_nic_buffer_size(int *ethtool_fd, const char *ifname, netdev_ring
need_update = true;
}
if (ring->rx_mini_pending_set && ecmd.rx_mini_pending != ring->rx_mini_pending) {
ecmd.rx_mini_pending = ring->rx_mini_pending;
need_update = true;
}
if (ring->rx_jumbo_pending_set && ecmd.rx_jumbo_pending != ring->rx_jumbo_pending) {
ecmd.rx_jumbo_pending = ring->rx_jumbo_pending;
need_update = true;
}
if (ring->tx_pending_set && ecmd.tx_pending != ring->tx_pending) {
ecmd.tx_pending = ring->tx_pending;
need_update = true;
@@ -1032,6 +1042,12 @@ int config_parse_nic_buffer_size(const char *unit,
if (streq(lvalue, "RxBufferSize")) {
ring->rx_pending = k;
ring->rx_pending_set = true;
} else if (streq(lvalue, "RxMiniBufferSize")) {
ring->rx_mini_pending = k;
ring->rx_mini_pending_set = true;
} else if (streq(lvalue, "RxJumboBufferSize")) {
ring->rx_jumbo_pending = k;
ring->rx_jumbo_pending_set = true;
} else if (streq(lvalue, "TxBufferSize")) {
ring->tx_pending = k;
ring->tx_pending_set = true;
+4
View File
@@ -84,9 +84,13 @@ typedef struct netdev_channels {
typedef struct netdev_ring_param {
uint32_t rx_pending;
uint32_t rx_mini_pending;
uint32_t rx_jumbo_pending;
uint32_t tx_pending;
bool rx_pending_set;
bool rx_mini_pending_set;
bool rx_jumbo_pending_set;
bool tx_pending_set;
} netdev_ring_param;