ixgbe: fix issues setting rx-usecs with legacy interrupts
Subsystems (2)
PATCH 1/1 ixgbe: fix issues setting rx-usecs with legacy interrupts
From: Don Skidmore <[email protected]>
Currently setting rx-usecs when the interface is in legacy interrupt mode it is not immediate. We were only setting EITR for each MSIx vector and since this count would be zero for legacy mode it wasn't set until after a reset. This patch corrects that by checking what mode we are in and then setting EITR accordingly.
---
drivers/net/ixgbe/ixgbe_ethtool.c | 27 +++++++++++++++++++-------- 1 files changed, 19 insertions(+), 8 deletions(-)
drivers/net/ixgbe/ixgbe_ethtool.c +19 -8
@@ -1948,6 +1948,7 @@ static int ixgbe_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec) {struct ixgbe_adapter *adapter =netdev_priv (netdev); +struct ixgbe_q_vector *q_vector;int i;if (ec->tx_max_coalesced_frames_irq)
@@ -1982,14 +1983,24 @@ static int ixgbe_set_coalesce(struct net_device *netdev, adapter->itr_setting =0 ; } -for (i =0 ; i < adapter->num_msix_vectors -NON_Q_VECTORS ; i++) { -struct ixgbe_q_vector *q_vector = adapter->q_vector[i]; -if (q_vector->txr_count && !q_vector->rxr_count) -/* tx vector gets half the rate */ - q_vector->eitr = (adapter->eitr_param >>1 ); -else -/* rx only or mixed */ - q_vector->eitr = adapter->eitr_param; +/* MSI/MSIx Interrupt Mode */ +if (adapter->flags & + (IXGBE_FLAG_MSIX_ENABLED |IXGBE_FLAG_MSI_ENABLED )) { +int num_vectors = adapter->num_msix_vectors -NON_Q_VECTORS ; +for (i =0 ; i < num_vectors; i++) { + q_vector = adapter->q_vector[i]; +if (q_vector->txr_count && !q_vector->rxr_count) +/* tx vector gets half the rate */ + q_vector->eitr = (adapter->eitr_param >>1 ); +else +/* rx only or mixed */ + q_vector->eitr = adapter->eitr_param; +ixgbe_write_eitr (q_vector); + } +/* Legacy Interrupt Mode */ + }else { + q_vector = adapter->q_vector[0 ]; + q_vector->eitr = adapter->eitr_param;ixgbe_write_eitr (q_vector); }
From: Jeff Kirsher <[email protected]>
Date: Tue, 11 Aug 2009 16:18:14 -0700
Quoted 10 lines
From: Don Skidmore <[email protected]>
Currently setting rx-usecs when the interface is in legacy interrupt mode it is not immediate. We were only setting EITR for each MSIx vector and since this count would be zero for legacy mode it wasn't set until after a reset. This patch corrects that by checking what mode we are in and then setting EITR accordingly.
Signed-off-by Don Skidmore <[email protected]>Signed-off-by Jeff Kirsher <[email protected]>
Applied to net-2.6