netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ixgbe: Correctly obtain protocol information on transmit
@ 2008-02-12 23:20 Auke Kok
  2008-02-13 16:13 ` Andy Gospodarek
  2008-02-15 15:53 ` Jeff Garzik
  0 siblings, 2 replies; 3+ messages in thread
From: Auke Kok @ 2008-02-12 23:20 UTC (permalink / raw)
  To: jeff; +Cc: netdev, andy, e1000-devel

In reply to "RE: [Fwd: [PATCH 2.6.25] ixgbe/igb: correctly obtain protocol
information on transmit]" from Andy Gospodarek:

The driver was incorrectly looking at socket headers for
protocol information, needed for checksumming offload. Fix
this by not looking at the socket but frame headers instead.

This disregards extension headers but it's unclear that linux
generates those anyway.

Tested by Andy Gospodarek.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---

 drivers/net/ixgbe/ixgbe_main.c |   24 +++++++++++++++++++++---
 1 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 540b647..23d0a4a 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -2277,11 +2277,29 @@ static bool ixgbe_tx_csum(struct ixgbe_adapter *adapter,
 				    IXGBE_ADVTXD_DTYP_CTXT);
 
 		if (skb->ip_summed == CHECKSUM_PARTIAL) {
-			if (skb->protocol == htons(ETH_P_IP))
+			switch (skb->protocol) {
+			case __constant_htons(ETH_P_IP):
 				type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV4;
+				if (ip_hdr(skb)->protocol == IPPROTO_TCP)
+					type_tucmd_mlhl |=
+						IXGBE_ADVTXD_TUCMD_L4T_TCP;
+				break;
+
+			case __constant_htons(ETH_P_IPV6):
+				/* XXX what about other V6 headers?? */
+				if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
+					type_tucmd_mlhl |=
+						IXGBE_ADVTXD_TUCMD_L4T_TCP;
+				break;
 
-			if (skb->sk->sk_protocol == IPPROTO_TCP)
-				type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_TCP;
+			default:
+				if (unlikely(net_ratelimit())) {
+					DPRINTK(PROBE, WARNING,
+					 "partial checksum but proto=%x!\n",
+					 skb->protocol);
+				}
+				break;
+			}
 		}
 
 		context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd_mlhl);


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] ixgbe: Correctly obtain protocol information on transmit
  2008-02-12 23:20 [PATCH] ixgbe: Correctly obtain protocol information on transmit Auke Kok
@ 2008-02-13 16:13 ` Andy Gospodarek
  2008-02-15 15:53 ` Jeff Garzik
  1 sibling, 0 replies; 3+ messages in thread
From: Andy Gospodarek @ 2008-02-13 16:13 UTC (permalink / raw)
  To: Auke Kok; +Cc: e1000-devel, netdev, andy, jeff

On Tue, Feb 12, 2008 at 03:20:33PM -0800, Auke Kok wrote:
> In reply to "RE: [Fwd: [PATCH 2.6.25] ixgbe/igb: correctly obtain protocol
> information on transmit]" from Andy Gospodarek:
> 
> The driver was incorrectly looking at socket headers for
> protocol information, needed for checksumming offload. Fix
> this by not looking at the socket but frame headers instead.
> 
> This disregards extension headers but it's unclear that linux
> generates those anyway.
> 
> Tested by Andy Gospodarek.
> 
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>

This works well for me too.

Signed-off-by: Andy Gospodarek <andy@greyhouse.net>


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ixgbe: Correctly obtain protocol information on transmit
  2008-02-12 23:20 [PATCH] ixgbe: Correctly obtain protocol information on transmit Auke Kok
  2008-02-13 16:13 ` Andy Gospodarek
@ 2008-02-15 15:53 ` Jeff Garzik
  1 sibling, 0 replies; 3+ messages in thread
From: Jeff Garzik @ 2008-02-15 15:53 UTC (permalink / raw)
  To: Auke Kok; +Cc: e1000-devel, netdev, andy

Auke Kok wrote:
> In reply to "RE: [Fwd: [PATCH 2.6.25] ixgbe/igb: correctly obtain protocol
> information on transmit]" from Andy Gospodarek:
> 
> The driver was incorrectly looking at socket headers for
> protocol information, needed for checksumming offload. Fix
> this by not looking at the socket but frame headers instead.
> 
> This disregards extension headers but it's unclear that linux
> generates those anyway.
> 
> Tested by Andy Gospodarek.
> 
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>

applied



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-02-15 15:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-12 23:20 [PATCH] ixgbe: Correctly obtain protocol information on transmit Auke Kok
2008-02-13 16:13 ` Andy Gospodarek
2008-02-15 15:53 ` Jeff Garzik

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).