netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: Linux 2.6.15-rc5: sk98lin broken
       [not found] <Pine.LNX.4.64.0512032155290.3099@g5.osdl.org>
@ 2005-12-04 23:43 ` Johannes Stezenbach
  2005-12-05 19:00   ` [PATCH linux-2.6.15-rc5] sk98lin: rx checksum offset not set Stephen Hemminger
  2005-12-05 19:13   ` Linux 2.6.15-rc5: sk98lin broken Bill Davidsen
  0 siblings, 2 replies; 4+ messages in thread
From: Johannes Stezenbach @ 2005-12-04 23:43 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Linux Kernel Mailing List, shemminger, netdev

On Sat, Dec 03, 2005, Linus Torvalds wrote:
> shemminger@osdl.org:
>       sk98lin: fix checksumming code
>       sk98lin: add permanent address support
>       sk98lin: avoid message confusion with skge

I have an Asus P4P800 "Deluxe" with 3c940 LOM.

If I ping the box I get the following:

Dec  4 22:57:02 abc kernel: [<c0103c00>] dump_stack+0x17/0x19
Dec  4 22:57:02 abc kernel: [<c03b99e9>] netdev_rx_csum_fault+0x27/0x2d
Dec  4 22:57:02 abc kernel: [<c03b75a9>] __skb_checksum_complete+0x5a/0x60
Dec  4 22:57:02 abc kernel: [<c0404c51>] icmp_error+0xbd/0x193
Dec  4 22:57:02 abc kernel: [<c0402291>] ip_conntrack_in+0x67/0x279
Dec  4 22:57:02 abc kernel: [<c03c8cbf>] nf_iterate+0x59/0x7d
Dec  4 22:57:02 abc kernel: [<c03c8d3a>] nf_hook_slow+0x57/0x106
Dec  4 22:57:02 abc kernel: [<c03d1074>] ip_rcv+0x1af/0x580
Dec  4 22:57:02 abc kernel: [<c03ba1ed>] netif_receive_skb+0x15a/0x1ef
Dec  4 22:57:02 abc kernel: [<c03ba301>] process_backlog+0x7f/0x10d
Dec  4 22:57:02 abc kernel: [<c03ba40c>] net_rx_action+0x7d/0x110
Dec  4 22:57:02 abc kernel: [<c01250a2>] __do_softirq+0x72/0xe1
Dec  4 22:57:02 abc kernel: [<c0104ed7>] do_softirq+0x5d/0x61
Dec  4 22:57:02 abc kernel: =======================
Dec  4 22:57:02 abc kernel: [<c01251fa>] irq_exit+0x48/0x4a
Dec  4 22:57:02 abc kernel: [<c0104d9d>] do_IRQ+0x5d/0x8f
Dec  4 22:57:02 abc kernel: [<c010372e>] common_interrupt+0x1a/0x20
Dec  4 22:57:02 abc kernel: [<c0100d51>] cpu_idle+0x49/0xa0
Dec  4 22:57:02 abc kernel: [<c01002d7>] rest_init+0x37/0x39
Dec  4 22:57:02 abc kernel: [<c057f8cf>] start_kernel+0x164/0x177
Dec  4 22:57:02 abc kernel: [<c0100210>] 0xc0100210

  (once for each ICMP packet)

2.6.15-rc2 works fine.


Johannes

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

* [PATCH linux-2.6.15-rc5] sk98lin: rx checksum offset not set
  2005-12-04 23:43 ` Linux 2.6.15-rc5: sk98lin broken Johannes Stezenbach
@ 2005-12-05 19:00   ` Stephen Hemminger
  2005-12-05 19:22     ` Johannes Stezenbach
  2005-12-05 19:13   ` Linux 2.6.15-rc5: sk98lin broken Bill Davidsen
  1 sibling, 1 reply; 4+ messages in thread
From: Stephen Hemminger @ 2005-12-05 19:00 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Johannes Stezenbach, Linux Kernel Mailing List, netdev

The checksum offsets for receive offload were not being set correctly.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>


Index: linux-2.6/drivers/net/sk98lin/skge.c
===================================================================
--- linux-2.6.orig/drivers/net/sk98lin/skge.c
+++ linux-2.6/drivers/net/sk98lin/skge.c
@@ -818,7 +818,7 @@ uintptr_t VNextDescr;	/* the virtual bus
 		/* set the pointers right */
 		pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
 		pDescr->pNextRxd = pNextDescr;
-		pDescr->TcpSumStarts = 0;
+		if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN;
 
 		/* advance one step */
 		pPrevDescr = pDescr;
@@ -2169,7 +2169,7 @@ rx_start:	
 		} /* frame > SK_COPY_TRESHOLD */
 
 #ifdef USE_SK_RX_CHECKSUM
-		pMsg->csum = pRxd->TcpSums;
+		pMsg->csum = pRxd->TcpSums & 0xffff;
 		pMsg->ip_summed = CHECKSUM_HW;
 #else
 		pMsg->ip_summed = CHECKSUM_NONE;

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

* Re: Linux 2.6.15-rc5: sk98lin broken
  2005-12-04 23:43 ` Linux 2.6.15-rc5: sk98lin broken Johannes Stezenbach
  2005-12-05 19:00   ` [PATCH linux-2.6.15-rc5] sk98lin: rx checksum offset not set Stephen Hemminger
@ 2005-12-05 19:13   ` Bill Davidsen
  1 sibling, 0 replies; 4+ messages in thread
From: Bill Davidsen @ 2005-12-05 19:13 UTC (permalink / raw)
  To: Johannes Stezenbach; +Cc: Linux Kernel Mailing List, shemminger, netdev

Johannes Stezenbach wrote:
> On Sat, Dec 03, 2005, Linus Torvalds wrote:
> 
>>shemminger@osdl.org:
>>      sk98lin: fix checksumming code
>>      sk98lin: add permanent address support
>>      sk98lin: avoid message confusion with skge
> 
> 
> I have an Asus P4P800 "Deluxe" with 3c940 LOM.
> 
> If I ping the box I get the following:
> 
> Dec  4 22:57:02 abc kernel: [<c0103c00>] dump_stack+0x17/0x19
> Dec  4 22:57:02 abc kernel: [<c03b99e9>] netdev_rx_csum_fault+0x27/0x2d
> Dec  4 22:57:02 abc kernel: [<c03b75a9>] __skb_checksum_complete+0x5a/0x60
> Dec  4 22:57:02 abc kernel: [<c0404c51>] icmp_error+0xbd/0x193
> Dec  4 22:57:02 abc kernel: [<c0402291>] ip_conntrack_in+0x67/0x279
> Dec  4 22:57:02 abc kernel: [<c03c8cbf>] nf_iterate+0x59/0x7d
> Dec  4 22:57:02 abc kernel: [<c03c8d3a>] nf_hook_slow+0x57/0x106
> Dec  4 22:57:02 abc kernel: [<c03d1074>] ip_rcv+0x1af/0x580
> Dec  4 22:57:02 abc kernel: [<c03ba1ed>] netif_receive_skb+0x15a/0x1ef
> Dec  4 22:57:02 abc kernel: [<c03ba301>] process_backlog+0x7f/0x10d
> Dec  4 22:57:02 abc kernel: [<c03ba40c>] net_rx_action+0x7d/0x110
> Dec  4 22:57:02 abc kernel: [<c01250a2>] __do_softirq+0x72/0xe1
> Dec  4 22:57:02 abc kernel: [<c0104ed7>] do_softirq+0x5d/0x61
> Dec  4 22:57:02 abc kernel: =======================
> Dec  4 22:57:02 abc kernel: [<c01251fa>] irq_exit+0x48/0x4a
> Dec  4 22:57:02 abc kernel: [<c0104d9d>] do_IRQ+0x5d/0x8f
> Dec  4 22:57:02 abc kernel: [<c010372e>] common_interrupt+0x1a/0x20
> Dec  4 22:57:02 abc kernel: [<c0100d51>] cpu_idle+0x49/0xa0
> Dec  4 22:57:02 abc kernel: [<c01002d7>] rest_init+0x37/0x39
> Dec  4 22:57:02 abc kernel: [<c057f8cf>] start_kernel+0x164/0x177
> Dec  4 22:57:02 abc kernel: [<c0100210>] 0xc0100210
> 
>   (once for each ICMP packet)
> 
> 2.6.15-rc2 works fine.

I can confirm that 2.6.15-rc3 works as well:
eth0: 3Com Gigabit LOM (3C940)
       PrefPort:A  RlmtMode:Check Link State
ip_tables: (C) 2000-2002 Netfilter core team
ip_tables: (C) 2000-2002 Netfilter core team
eth0: network connection up using port A
     speed:           100
     autonegotiation: yes
     duplex mode:     full
     flowctrl:        symmetric
     irq moderation:  disabled
     scatter-gather:  enabled

No messages from ping, although the pig is somewhat slower than I would 
expect, ~200us response time.

Looks like a regression, I can't try the latest kernel until Friday, 
it's 260 miles round trip to the machine if it doesn't boot cleanly.
> 
> 
> Johannes


-- 
    -bill davidsen (davidsen@tmr.com)
"The secret to procrastination is to put things off until the
  last possible moment - but no longer"  -me

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

* Re: [PATCH linux-2.6.15-rc5] sk98lin: rx checksum offset not set
  2005-12-05 19:00   ` [PATCH linux-2.6.15-rc5] sk98lin: rx checksum offset not set Stephen Hemminger
@ 2005-12-05 19:22     ` Johannes Stezenbach
  0 siblings, 0 replies; 4+ messages in thread
From: Johannes Stezenbach @ 2005-12-05 19:22 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Jeff Garzik, Linux Kernel Mailing List, netdev

On Mon, Dec 05, 2005, Stephen Hemminger wrote:
> The checksum offsets for receive offload were not being set correctly.
> 
> Signed-off-by: Stephen Hemminger <shemminger@osdl.org>

I can confirm that this patch fixes the problem for me.

Thanks,
Johannes

> Index: linux-2.6/drivers/net/sk98lin/skge.c
> ===================================================================
> --- linux-2.6.orig/drivers/net/sk98lin/skge.c
> +++ linux-2.6/drivers/net/sk98lin/skge.c
> @@ -818,7 +818,7 @@ uintptr_t VNextDescr;	/* the virtual bus
>  		/* set the pointers right */
>  		pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
>  		pDescr->pNextRxd = pNextDescr;
> -		pDescr->TcpSumStarts = 0;
> +		if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN;
>  
>  		/* advance one step */
>  		pPrevDescr = pDescr;
> @@ -2169,7 +2169,7 @@ rx_start:	
>  		} /* frame > SK_COPY_TRESHOLD */
>  
>  #ifdef USE_SK_RX_CHECKSUM
> -		pMsg->csum = pRxd->TcpSums;
> +		pMsg->csum = pRxd->TcpSums & 0xffff;
>  		pMsg->ip_summed = CHECKSUM_HW;
>  #else
>  		pMsg->ip_summed = CHECKSUM_NONE;
> 

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

end of thread, other threads:[~2005-12-05 19:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <Pine.LNX.4.64.0512032155290.3099@g5.osdl.org>
2005-12-04 23:43 ` Linux 2.6.15-rc5: sk98lin broken Johannes Stezenbach
2005-12-05 19:00   ` [PATCH linux-2.6.15-rc5] sk98lin: rx checksum offset not set Stephen Hemminger
2005-12-05 19:22     ` Johannes Stezenbach
2005-12-05 19:13   ` Linux 2.6.15-rc5: sk98lin broken Bill Davidsen

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