diff mbox

Fix e1000e with Intel 82572EI that has no hardware timestamp support

Message ID bbcbf584e3624059bf7a0d2186fec6b4@FE-MBX1012.de.bosch.com
State Awaiting Upstream, archived
Delegated to: David Miller
Headers show

Commit Message

Koehrer Mathias (ETAS/ESW5) Aug. 6, 2014, 2:32 p.m. UTC
With the Intel 82527EI (driver: e1000e) there is an issue when running 
the ptpd2 program, that leads to a kernel oops.
The reason is here that in e1000_xmit_frame() a work queue will be 
scheduled that has not been initialized in this case.
The work queue "tx_hwstamp_work" will only be initialized if 
adapter->flags & FLAG_HAS_HW_TIMESTAMP set.
This check is missing in e1000_xmit_frame().

The following patch adds the missing check.

Signed-off-by: Mathias Koehrer <mathias.koehrer@etas.com>
---
 drivers/net/ethernet/intel/e1000e/netdev.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Richard Cochran Aug. 6, 2014, 7:17 p.m. UTC | #1
On Wed, Aug 06, 2014 at 02:32:16PM +0000, Koehrer Mathias (ETAS/ESW5) wrote:
> With the Intel 82527EI (driver: e1000e) there is an issue when running 
> the ptpd2 program, that leads to a kernel oops.
> The reason is here that in e1000_xmit_frame() a work queue will be 
> scheduled that has not been initialized in this case.
> The work queue "tx_hwstamp_work" will only be initialized if 
> adapter->flags & FLAG_HAS_HW_TIMESTAMP set.
> This check is missing in e1000_xmit_frame().

Why all the ragged lines?  Better to use an editor that knows how to
justify a paragraph, more like this:

With the Intel 82527EI (driver: e1000e) there is an issue when running
the ptpd2 program, that leads to a kernel oops.  The reason is here
that in e1000_xmit_frame() a work queue will be scheduled that has not
been initialized in this case.  The work queue "tx_hwstamp_work" will
only be initialized if adapter->flags & FLAG_HAS_HW_TIMESTAMP set.
This check is missing in e1000_xmit_frame().

That not only looks nicer, but it is also more readable.

Thanks,
Richard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Cochran Aug. 6, 2014, 7:32 p.m. UTC | #2
On Wed, Aug 06, 2014 at 03:20:43PM -0400, Nick Krause wrote:
> My question was as follows after reading the thread here is this patch
> good or do I need to edit it
> some more based on the thread and only putting part of the if
> statement in an unlikely statement.

Huh? Are you Mathias Koehrer?

I was only complaining about the formatting of the change log 
comment. As far as the code goes, please see Alexander Duyck's
emails.

Thanks,
Richard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Cochran Aug. 6, 2014, 7:54 p.m. UTC | #3
On Wed, Aug 06, 2014 at 03:38:18PM -0400, Nick Krause wrote:
> I checked them and this patch seems fine to me.

No, it isn't fine. It ignores Alexander's comments.  Mathias, can you
please fix it?

Thanks,
Richard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: linux-3.12.26/drivers/net/ethernet/intel/e1000e/netdev.c
===================================================================
--- linux-3.12.26.orig/drivers/net/ethernet/intel/e1000e/netdev.c	2014-08-04 10:56:56.000000000 +0200
+++ linux-3.12.26/drivers/net/ethernet/intel/e1000e/netdev.c	2014-08-06 16:22:10.000000000 +0200
@@ -5549,8 +5549,9 @@ 
 	count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit,
 			     nr_frags);
 	if (count) {
-		if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
-			     !adapter->tx_hwtstamp_skb)) {
+		if ((adapter->flags & FLAG_HAS_HW_TIMESTAMP) && 
+		    unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
+		    !adapter->tx_hwtstamp_skb)) {
 			skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
 			tx_flags |= E1000_TX_FLAGS_HWTSTAMP;
 			adapter->tx_hwtstamp_skb = skb_get(skb);