diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/ethtool-util.c | 32 | ||||
-rw-r--r-- | src/shared/ethtool-util.h | 4 |
2 files changed, 26 insertions, 10 deletions
diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c index fe29af24d0..0cde87f5ac 100644 --- a/src/shared/ethtool-util.c +++ b/src/shared/ethtool-util.c @@ -431,18 +431,24 @@ int ethtool_set_nic_buffer_size(int *ethtool_fd, const char *ifname, netdev_ring if (r < 0) return -errno; - if (ring->rx_pending_set) { - if (ecmd.rx_pending != ring->rx_pending) { - ecmd.rx_pending = ring->rx_pending; - need_update = true; - } + if (ring->rx_pending_set && ecmd.rx_pending != ring->rx_pending) { + ecmd.rx_pending = ring->rx_pending; + need_update = true; } - if (ring->tx_pending_set) { - if (ecmd.tx_pending != ring->tx_pending) { - ecmd.tx_pending = ring->tx_pending; - 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; } if (need_update) { @@ -1036,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; diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h index 55c41f5bc7..4730241708 100644 --- a/src/shared/ethtool-util.h +++ b/src/shared/ethtool-util.h @@ -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; |