* [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02
@ 2014-10-02 10:16 Jeff Kirsher
2014-10-02 10:16 ` [net-next 1/9] fm10k: Reduce buffer size when pages are larger than 4K Jeff Kirsher
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, nhorman, sassmann, jogreene
This series contains updates to fm10k, igb, ixgbe and i40e.
Alex provides two updates to the fm10k driver. First reduces the buffer
size to 2k for all page sizes, since most frames only have a 1500 MTU
so supporting a buffer size larger than this is somewhat wasteful.
Second fixes an issue where the number of transmit queues was not being
updated, so added the lines necessary to update the number of transmit
queues.
Rick Jones provides two patches to convert ixgbe, igb and i40e to use
dev_consume_skb_any().
Emil provides two patches for ixgbe, first cleans up a couple of wait
loops on auto-negotiation that were not needed. Second fixes an issue
reported by Fujitsu/Red Hat, which consolidates the logic behind the
dynamically setting of TXDCTL.WTHRESH depending on interrupt throttle
rate (ITR) setting regardless of BQL.
Ethan Zhao provides a cleanup patch for ixgbe where he noticed a
duplicate define.
Bernhard Kaindl provides a patch for igb to remove a source of latency
spikes by not calling code that uses mdelay() for feeding a PHY stat
while being called with a spinlock held.
Todd bumps the igb version based on the recent changes.
The following are changes since commit d068b02cfdfc27f5962ec82ec5568b706f599edc:
net: phy: add BCM7425 and BCM7429 PHYs
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Alexander Duyck (2):
fm10k: Reduce buffer size when pages are larger than 4K
fm10k: Correctly set the number of Tx queues
Bernhard Kaindl (1):
igb: remove blocking phy read from inside spinlock
Emil Tantilov (2):
ixgbe: remove wait loop on autoneg for copper devices
ixgbe: fix setting of TXDCTL.WTRHESH when ITR is set to 0 and no BQL
Ethan Zhao (1):
ixgbe: delete one duplicate marcro definition of IXGBE_MAX_L2A_QUEUES
Rick Jones (2):
ixgbe: Convert the normal transmit complete path to
dev_consume_skb_any()
i40e/igb: Convert to dev_consume_skb_any()
Todd Fujinaka (1):
igb: bump version to 5.2.15
drivers/net/ethernet/intel/fm10k/fm10k.h | 8 ++---
drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 6 +++-
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 +-
drivers/net/ethernet/intel/igb/e1000_hw.h | 5 ---
drivers/net/ethernet/intel/igb/igb.h | 1 -
drivers/net/ethernet/intel/igb/igb_main.c | 16 ++-------
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 -
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 6 +---
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 41 ------------------------
10 files changed, 12 insertions(+), 77 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 11+ messages in thread
* [net-next 1/9] fm10k: Reduce buffer size when pages are larger than 4K
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 2/9] fm10k: Correctly set the number of Tx queues Jeff Kirsher
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Alexander Duyck, netdev, nhorman, sassmann, jogreene,
Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
This change reduces the buffer size to 2K for all page sizes. The basic
idea is that since most frames only have a 1500 MTU supporting a buffer
size larger than this is somewhat wasteful. As such I have reduced the
size to 2K for all page sizes which will allow for more uses per page.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/fm10k/fm10k.h | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k.h b/drivers/net/ethernet/intel/fm10k/fm10k.h
index 0565827..42eb434 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k.h
+++ b/drivers/net/ethernet/intel/fm10k/fm10k.h
@@ -47,13 +47,9 @@
#define FM10K_DEFAULT_TX_WORK 256
#define FM10K_RXBUFFER_256 256
-#define FM10K_RXBUFFER_16384 16384
#define FM10K_RX_HDR_LEN FM10K_RXBUFFER_256
-#if PAGE_SIZE <= FM10K_RXBUFFER_16384
-#define FM10K_RX_BUFSZ (PAGE_SIZE / 2)
-#else
-#define FM10K_RX_BUFSZ FM10K_RXBUFFER_16384
-#endif
+#define FM10K_RXBUFFER_2048 2048
+#define FM10K_RX_BUFSZ FM10K_RXBUFFER_2048
/* How many Rx Buffers do we bundle into one write to the hardware ? */
#define FM10K_RX_BUFFER_WRITE 16 /* Must be power of 2 */
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 2/9] fm10k: Correctly set the number of Tx queues
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
2014-10-02 10:16 ` [net-next 1/9] fm10k: Reduce buffer size when pages are larger than 4K Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 3/9] ixgbe: Convert the normal transmit complete path to dev_consume_skb_any() Jeff Kirsher
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Alexander Duyck, netdev, nhorman, sassmann, jogreene,
Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
The number of Tx queues was not being updated due to some issues when
generating the patches. This change makes sure to add the lines necessary
to update the number of Tx queues correctly.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
index dcec000..bf44a8f 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
@@ -546,6 +546,10 @@ int fm10k_open(struct net_device *netdev)
fm10k_request_glort_range(interface);
/* Notify the stack of the actual queue counts */
+ err = netif_set_real_num_tx_queues(netdev,
+ interface->num_tx_queues);
+ if (err)
+ goto err_set_queues;
err = netif_set_real_num_rx_queues(netdev,
interface->num_rx_queues);
@@ -601,7 +605,7 @@ int fm10k_close(struct net_device *netdev)
static netdev_tx_t fm10k_xmit_frame(struct sk_buff *skb, struct net_device *dev)
{
struct fm10k_intfc *interface = netdev_priv(dev);
- unsigned int r_idx = 0;
+ unsigned int r_idx = skb->queue_mapping;
int err;
if ((skb->protocol == htons(ETH_P_8021Q)) &&
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 3/9] ixgbe: Convert the normal transmit complete path to dev_consume_skb_any()
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
2014-10-02 10:16 ` [net-next 1/9] fm10k: Reduce buffer size when pages are larger than 4K Jeff Kirsher
2014-10-02 10:16 ` [net-next 2/9] fm10k: Correctly set the number of Tx queues Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 4/9] ixgbe: remove wait loop on autoneg for copper devices Jeff Kirsher
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Rick Jones, netdev, nhorman, sassmann, jogreene, Jeff Kirsher
From: Rick Jones <rick.jones2@hp.com>
Convert the normal packet completion path to dev_consume_skb_any() so
packet drop profiling via dropwatch or perf top -G -e skb_kfree_skb
is not cluttered with false hits.
Compile tested only. There is a dev_kfree_skb_any() in the routine
ixgbe_ptp_tx_hwtstamp() in ixgbe_ptp.c that looks like a conversion
candidate but I wasn't familiar enough with the code to pull the
trigger.
Signed-off-by: Rick Jones <rick.jones2@hp.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 06ef5a3..2daf257 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1094,7 +1094,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
total_packets += tx_buffer->gso_segs;
/* free the skb */
- dev_kfree_skb_any(tx_buffer->skb);
+ dev_consume_skb_any(tx_buffer->skb);
/* unmap skb header data */
dma_unmap_single(tx_ring->dev,
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 4/9] ixgbe: remove wait loop on autoneg for copper devices
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (2 preceding siblings ...)
2014-10-02 10:16 ` [net-next 3/9] ixgbe: Convert the normal transmit complete path to dev_consume_skb_any() Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 5/9] ixgbe: fix setting of TXDCTL.WTRHESH when ITR is set to 0 and no BQL Jeff Kirsher
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Emil Tantilov, netdev, nhorman, sassmann, jogreene, Jeff Kirsher
From: Emil Tantilov <emil.s.tantilov@intel.com>
This patch removes couple of wait loops on autoneg that are not needed.
During validation we noticed that the loops always time out, so there
should be no user impact.
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 41 ----------------------------
1 file changed, 41 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
index 11f02ea..d47b19f 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
@@ -445,8 +445,6 @@ s32 ixgbe_write_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr,
s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
{
s32 status = 0;
- u32 time_out;
- u32 max_time_out = 10;
u16 autoneg_reg = IXGBE_MII_AUTONEG_REG;
bool autoneg = false;
ixgbe_link_speed speed;
@@ -514,25 +512,6 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
hw->phy.ops.write_reg(hw, MDIO_CTRL1,
MDIO_MMD_AN, autoneg_reg);
- /* Wait for autonegotiation to finish */
- for (time_out = 0; time_out < max_time_out; time_out++) {
- udelay(10);
- /* Restart PHY autonegotiation and wait for completion */
- status = hw->phy.ops.read_reg(hw, MDIO_STAT1,
- MDIO_MMD_AN,
- &autoneg_reg);
-
- autoneg_reg &= MDIO_AN_STAT1_COMPLETE;
- if (autoneg_reg == MDIO_AN_STAT1_COMPLETE) {
- break;
- }
- }
-
- if (time_out == max_time_out) {
- hw_dbg(hw, "ixgbe_setup_phy_link_generic: time out\n");
- return IXGBE_ERR_LINK_SETUP;
- }
-
return status;
}
@@ -657,8 +636,6 @@ s32 ixgbe_check_phy_link_tnx(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
{
s32 status;
- u32 time_out;
- u32 max_time_out = 10;
u16 autoneg_reg = IXGBE_MII_AUTONEG_REG;
bool autoneg = false;
ixgbe_link_speed speed;
@@ -724,24 +701,6 @@ s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
hw->phy.ops.write_reg(hw, MDIO_CTRL1,
MDIO_MMD_AN, autoneg_reg);
- /* Wait for autonegotiation to finish */
- for (time_out = 0; time_out < max_time_out; time_out++) {
- udelay(10);
- /* Restart PHY autonegotiation and wait for completion */
- status = hw->phy.ops.read_reg(hw, MDIO_STAT1,
- MDIO_MMD_AN,
- &autoneg_reg);
-
- autoneg_reg &= MDIO_AN_STAT1_COMPLETE;
- if (autoneg_reg == MDIO_AN_STAT1_COMPLETE)
- break;
- }
-
- if (time_out == max_time_out) {
- hw_dbg(hw, "ixgbe_setup_phy_link_tnx: time out\n");
- return IXGBE_ERR_LINK_SETUP;
- }
-
return status;
}
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 5/9] ixgbe: fix setting of TXDCTL.WTRHESH when ITR is set to 0 and no BQL
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (3 preceding siblings ...)
2014-10-02 10:16 ` [net-next 4/9] ixgbe: remove wait loop on autoneg for copper devices Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 6/9] ixgbe: delete one duplicate marcro definition of IXGBE_MAX_L2A_QUEUES Jeff Kirsher
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Emil Tantilov, netdev, nhorman, sassmann, jogreene, Jeff Kirsher
From: Emil Tantilov <emil.s.tantilov@intel.com>
This patch consolidates the logic behind dynamically setting TXDCTL.WTHRESH
depending on interrupt throttle rate (ITR) setting regardless of BQL.
Previously TXDCTL.WTHRESH was dynamically being set only with BQL being
enabled, but we have to set it regardless of BQL when ITR is low to avoid
Tx stalls/hangs.
CC: John Greene <jogreene@redhat.com>
Reported by: Masayuki Gouji <gouji.masayuki@jp.fujitsu.com>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 3 +--
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 4 ----
2 files changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index cff383b..3ce4a25 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -2267,7 +2267,6 @@ static int ixgbe_set_coalesce(struct net_device *netdev,
if (adapter->q_vector[0]->tx.count && adapter->q_vector[0]->rx.count)
adapter->tx_itr_setting = adapter->rx_itr_setting;
-#if IS_ENABLED(CONFIG_BQL)
/* detect ITR changes that require update of TXDCTL.WTHRESH */
if ((adapter->tx_itr_setting != 1) &&
(adapter->tx_itr_setting < IXGBE_100K_ITR)) {
@@ -2279,7 +2278,7 @@ static int ixgbe_set_coalesce(struct net_device *netdev,
(tx_itr_prev < IXGBE_100K_ITR))
need_reset = true;
}
-#endif
+
/* check the old value and enable RSC if necessary */
need_reset |= ixgbe_update_rsc(adapter);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 2daf257..d677b5a 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -2982,11 +2982,7 @@ void ixgbe_configure_tx_ring(struct ixgbe_adapter *adapter,
* to or less than the number of on chip descriptors, which is
* currently 40.
*/
-#if IS_ENABLED(CONFIG_BQL)
if (!ring->q_vector || (ring->q_vector->itr < IXGBE_100K_ITR))
-#else
- if (!ring->q_vector || (ring->q_vector->itr < 8))
-#endif
txdctl |= (1 << 16); /* WTHRESH = 1 */
else
txdctl |= (8 << 16); /* WTHRESH = 8 */
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 6/9] ixgbe: delete one duplicate marcro definition of IXGBE_MAX_L2A_QUEUES
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (4 preceding siblings ...)
2014-10-02 10:16 ` [net-next 5/9] ixgbe: fix setting of TXDCTL.WTRHESH when ITR is set to 0 and no BQL Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 7/9] igb: remove blocking phy read from inside spinlock Jeff Kirsher
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Ethan Zhao, netdev, nhorman, sassmann, jogreene, Jeff Kirsher
From: Ethan Zhao <ethan.zhao@oracle.com>
There is typo in ixgbe.h, two marcro definition of IXGBE_MAX_L2A_QUEUES to 4,
delete one, clear the compiler warning.
Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
index 673d820..5032a60 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
@@ -307,7 +307,6 @@ enum ixgbe_ring_f_enum {
#define MAX_RX_QUEUES (IXGBE_MAX_FDIR_INDICES + 1)
#define MAX_TX_QUEUES (IXGBE_MAX_FDIR_INDICES + 1)
#define IXGBE_MAX_L2A_QUEUES 4
-#define IXGBE_MAX_L2A_QUEUES 4
#define IXGBE_BAD_L2A_QUEUE 3
#define IXGBE_MAX_MACVLANS 31
#define IXGBE_MAX_DCBMACVLANS 8
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 7/9] igb: remove blocking phy read from inside spinlock
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (5 preceding siblings ...)
2014-10-02 10:16 ` [net-next 6/9] ixgbe: delete one duplicate marcro definition of IXGBE_MAX_L2A_QUEUES Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 8/9] i40e/igb: Convert to dev_consume_skb_any() Jeff Kirsher
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem
Cc: Bernhard Kaindl, netdev, nhorman, sassmann, jogreene,
Carolyn Wyborny, Todd Fujinaka, Jeff Kirsher
From: Bernhard Kaindl <bk-linux@use.startmail.com>
Remove a source of latency spikes (in my case up to 10ms) by not calling
code that uses mdelay() for feeding a phy statistic (rx errors for idle
symbols - not data -> idle_errors) while being called with a spinlock held.
As idle_errors isn't read, this patch only removes unused code and data.
Later, more complicated changes may be applied to address the spinlock and
allow for some PHY diagnostics by harvesting this PHY stats register fully.
This patch is designed to fix the issue and be safe for longterm/stable.
For the Intel e1000e driver, the same change was applied in 2008 with
commit 23033fad5be0 ("e1000e: remove phy read from inside spinlock").
The mdelay is triggered by HW/SW semaphores, thus it depends on the HW.
I've HW that triggers it even when idle. Others may trigger it only e.g.
when Ethernet ports aquire or loose the link or on ifconfig up / down.
We've noticed this first from delays in frame rx/tx due to the mdelay().
Example command for checking if the issue is triggered: cyclictest -Smp1
(Look for occasional "Max:" values > 4000 or use -b 4000 to stop if greater)
It was observed with I350 ports connected to other I350 ports, but not
if driver and EEPROM was modified to run the I350 in EEPROM-less mode.
phy_stats.idle_errors and .receive_errors (isn't touched) occupy 64 not
used bits in the adapter struct: Their allocation may be removed as well.
Cc: Carolyn Wyborny <carolyn.wyborny@intel.com>
Cc: Todd Fujinaka <todd.fujinaka@intel.com>
Fixes: 12dcd86b75d5 ("igb: fix stats handling") (this added the spin_lock)
Signed-off-by: Bernhard Kaindl <bk-linux@use.startmail.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/e1000_hw.h | 5 -----
drivers/net/ethernet/intel/igb/igb.h | 1 -
drivers/net/ethernet/intel/igb/igb_main.c | 12 ------------
3 files changed, 18 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/e1000_hw.h b/drivers/net/ethernet/intel/igb/e1000_hw.h
index ce55ea5..2003b37 100644
--- a/drivers/net/ethernet/intel/igb/e1000_hw.h
+++ b/drivers/net/ethernet/intel/igb/e1000_hw.h
@@ -265,11 +265,6 @@ struct e1000_hw_stats {
u64 b2ogprc;
};
-struct e1000_phy_stats {
- u32 idle_errors;
- u32 receive_errors;
-};
-
struct e1000_host_mng_dhcp_cookie {
u32 signature;
u8 status;
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index 06102d1..82d891e 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -403,7 +403,6 @@ struct igb_adapter {
struct e1000_hw hw;
struct e1000_hw_stats stats;
struct e1000_phy_info phy_info;
- struct e1000_phy_stats phy_stats;
u32 test_icr;
struct igb_ring test_tx_ring;
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 6cf0c17..2a4e6f1 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -5206,14 +5206,11 @@ void igb_update_stats(struct igb_adapter *adapter,
struct e1000_hw *hw = &adapter->hw;
struct pci_dev *pdev = adapter->pdev;
u32 reg, mpc;
- u16 phy_tmp;
int i;
u64 bytes, packets;
unsigned int start;
u64 _bytes, _packets;
-#define PHY_IDLE_ERROR_COUNT_MASK 0x00FF
-
/* Prevent stats update while adapter is being reset, or if the pci
* connection is down.
*/
@@ -5374,15 +5371,6 @@ void igb_update_stats(struct igb_adapter *adapter,
/* Tx Dropped needs to be maintained elsewhere */
- /* Phy Stats */
- if (hw->phy.media_type == e1000_media_type_copper) {
- if ((adapter->link_speed == SPEED_1000) &&
- (!igb_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
- phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
- adapter->phy_stats.idle_errors += phy_tmp;
- }
- }
-
/* Management Stats */
adapter->stats.mgptc += rd32(E1000_MGTPTC);
adapter->stats.mgprc += rd32(E1000_MGTPRC);
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 8/9] i40e/igb: Convert to dev_consume_skb_any()
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (6 preceding siblings ...)
2014-10-02 10:16 ` [net-next 7/9] igb: remove blocking phy read from inside spinlock Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-02 10:16 ` [net-next 9/9] igb: bump version to 5.2.15 Jeff Kirsher
2014-10-03 22:45 ` [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 David Miller
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Rick Jones, netdev, nhorman, sassmann, jogreene, Jeff Kirsher
From: Rick Jones <rick.jones2@hp.com>
Convert two more Intel NIC drivers to dev_consume_skb_any() to help
make dropped packet profiling sane.
Signed-off-by: Rick Jones <rick.jones2@hp.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Tested-by: Jim Young <jamesx.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 +-
drivers/net/ethernet/intel/igb/igb_main.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index be039dd..267992b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -702,7 +702,7 @@ static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget)
total_packets += tx_buf->gso_segs;
/* free the skb */
- dev_kfree_skb_any(tx_buf->skb);
+ dev_consume_skb_any(tx_buf->skb);
/* unmap skb header data */
dma_unmap_single(tx_ring->dev,
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 2a4e6f1..3566fea 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -6374,7 +6374,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector)
total_packets += tx_buffer->gso_segs;
/* free the skb */
- dev_kfree_skb_any(tx_buffer->skb);
+ dev_consume_skb_any(tx_buffer->skb);
/* unmap skb header data */
dma_unmap_single(tx_ring->dev,
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [net-next 9/9] igb: bump version to 5.2.15
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (7 preceding siblings ...)
2014-10-02 10:16 ` [net-next 8/9] i40e/igb: Convert to dev_consume_skb_any() Jeff Kirsher
@ 2014-10-02 10:16 ` Jeff Kirsher
2014-10-03 22:45 ` [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 David Miller
9 siblings, 0 replies; 11+ messages in thread
From: Jeff Kirsher @ 2014-10-02 10:16 UTC (permalink / raw)
To: davem; +Cc: Todd Fujinaka, netdev, nhorman, sassmann, jogreene, Jeff Kirsher
From: Todd Fujinaka <todd.fujinaka@intel.com>
Bump version
Signed-off-by: Todd Fujinaka <todd.fujinaka@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 3566fea..ae59c0b 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -58,7 +58,7 @@
#define MAJ 5
#define MIN 2
-#define BUILD 13
+#define BUILD 15
#define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \
__stringify(BUILD) "-k"
char igb_driver_name[] = "igb";
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
` (8 preceding siblings ...)
2014-10-02 10:16 ` [net-next 9/9] igb: bump version to 5.2.15 Jeff Kirsher
@ 2014-10-03 22:45 ` David Miller
9 siblings, 0 replies; 11+ messages in thread
From: David Miller @ 2014-10-03 22:45 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, nhorman, sassmann, jogreene
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 2 Oct 2014 03:16:25 -0700
> This series contains updates to fm10k, igb, ixgbe and i40e.
Pulled, thanks a lot Jeff!
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-10-03 22:42 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-02 10:16 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 Jeff Kirsher
2014-10-02 10:16 ` [net-next 1/9] fm10k: Reduce buffer size when pages are larger than 4K Jeff Kirsher
2014-10-02 10:16 ` [net-next 2/9] fm10k: Correctly set the number of Tx queues Jeff Kirsher
2014-10-02 10:16 ` [net-next 3/9] ixgbe: Convert the normal transmit complete path to dev_consume_skb_any() Jeff Kirsher
2014-10-02 10:16 ` [net-next 4/9] ixgbe: remove wait loop on autoneg for copper devices Jeff Kirsher
2014-10-02 10:16 ` [net-next 5/9] ixgbe: fix setting of TXDCTL.WTRHESH when ITR is set to 0 and no BQL Jeff Kirsher
2014-10-02 10:16 ` [net-next 6/9] ixgbe: delete one duplicate marcro definition of IXGBE_MAX_L2A_QUEUES Jeff Kirsher
2014-10-02 10:16 ` [net-next 7/9] igb: remove blocking phy read from inside spinlock Jeff Kirsher
2014-10-02 10:16 ` [net-next 8/9] i40e/igb: Convert to dev_consume_skb_any() Jeff Kirsher
2014-10-02 10:16 ` [net-next 9/9] igb: bump version to 5.2.15 Jeff Kirsher
2014-10-03 22:45 ` [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-10-02 David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).