[PATCH] ixgbe: reduce PTP rx path overhead

Subsystems: intel ethernet drivers, networking drivers, the rest

STALE5106d

2 messages, 2 authors, 2012-10-25 · open the first message on its own page

[PATCH] ixgbe: reduce PTP rx path overhead

From: Jiri Benc <hidden>
Date: 2012-10-24 15:18:40

Hw timestamping code caused performance regression in ixgbe driver when the
timestamping is not enabled. The culprit is IXGBE_READ_REG call in the rx
path which is executed for every received skb. This call is not needed when
the timestamping is disabled or for non-ptp packets.

netperf results:

The ixge side of the connection was acting as a server, the netperf command
line on the other side was:
netperf -H 192.168.1.23 -T0,0 -t UDP_STREAM -l 20

The values below mean throughput as reported by netperf (local/remote), for
3 runs, with timestamping not enabled.

3.7.0-rc1+ with CONFIG_IXGBE_PTP off:
5373.83 / 3329.32
5721.88 / 3033.89
5653.42 / 3112.38

3.7.0-rc1+ with CONFIG_IXGBE_PTP on:
5233.64 / 1226.85
5448.67 / 1039.32
5421.36 / 1095.66

Patched 3.7.0-rc1+ with CONFIG_IXGBE_PTP on:
5594.72 / 2942.53
5428.95 / 3110.16
5343.56 / 3200.48

Reported-by: Jesper Brouer <redacted>
Signed-off-by: Jiri Benc <redacted>
Signed-off-by: Andy Gospodarek <redacted>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
index 5e71ddb..842ba15 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
@@ -554,12 +554,14 @@ void ixgbe_ptp_rx_hwtstamp(struct ixgbe_q_vector *q_vector,
 	adapter = q_vector->adapter;
 	hw = &adapter->hw;
 
+	if (likely(!ixgbe_ptp_match(skb, adapter->rx_hwtstamp_filter)))
+		return;
+
 	tsyncrxctl = IXGBE_READ_REG(hw, IXGBE_TSYNCRXCTL);
 
 	/* Check if we have a valid timestamp and make sure the skb should
 	 * have been timestamped */
-	if (likely(!(tsyncrxctl & IXGBE_TSYNCRXCTL_VALID) ||
-		   !ixgbe_ptp_match(skb, adapter->rx_hwtstamp_filter)))
+	if (!(tsyncrxctl & IXGBE_TSYNCRXCTL_VALID))
 		return;
 
 	/*
-- 
1.7.6.5

Re: [PATCH] ixgbe: reduce PTP rx path overhead

From: Jeff Kirsher <hidden>
Date: 2012-10-25 07:35:26

On Wed, 2012-10-24 at 17:17 +0200, Jiri Benc wrote:
Hw timestamping code caused performance regression in ixgbe driver
when the
timestamping is not enabled. The culprit is IXGBE_READ_REG call in the
rx
path which is executed for every received skb. This call is not needed
when
the timestamping is disabled or for non-ptp packets.

netperf results:

The ixge side of the connection was acting as a server, the netperf
command
line on the other side was:
netperf -H 192.168.1.23 -T0,0 -t UDP_STREAM -l 20

The values below mean throughput as reported by netperf
(local/remote), for
3 runs, with timestamping not enabled.

3.7.0-rc1+ with CONFIG_IXGBE_PTP off:
5373.83 / 3329.32
5721.88 / 3033.89
5653.42 / 3112.38

3.7.0-rc1+ with CONFIG_IXGBE_PTP on:
5233.64 / 1226.85
5448.67 / 1039.32
5421.36 / 1095.66

Patched 3.7.0-rc1+ with CONFIG_IXGBE_PTP on:
5594.72 / 2942.53
5428.95 / 3110.16
5343.56 / 3200.48

Reported-by: Jesper Brouer <redacted>
Signed-off-by: Jiri Benc <redacted>
Signed-off-by: Andy Gospodarek <redacted>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-) 
Thanks Jiri, I have added the patch to my queue.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help