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