From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Stephen Hemminger <shemminger@osdl.org>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>
Subject: Re: sky2: hw checksum failures
Date: Tue, 05 Sep 2006 14:45:47 +1000 [thread overview]
Message-ID: <1157431548.22705.78.camel@localhost.localdomain> (raw)
In-Reply-To: <20060904205645.6c80f30c@localhost.localdomain>
On Mon, 2006-09-04 at 20:56 -0700, Stephen Hemminger wrote:
> On Tue, 05 Sep 2006 13:42:38 +1000
> Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
>
> > On Mon, 2006-09-04 at 20:34 -0700, Stephen Hemminger wrote:
> > > Unneeded byte swap was occurring.
> > >
> > > --- linux-2.6.orig/drivers/net/sky2.c
> > > +++ linux-2.6/drivers/net/sky2.c
> > > @@ -2001,7 +2001,7 @@ static int sky2_status_intr(struct sky2_
> > > case OP_RXCHKS:
> > > skb = sky2->rx_ring[sky2->rx_next].skb;
> > > skb->ip_summed = CHECKSUM_HW;
> > > - skb->csum = le16_to_cpu(status);
> > > + skb->csum = status;
> > > break;
> > >
> > > case OP_TXINDEXLE:
> >
> > I've removed it in my paches (have you seen the other patches I sent for
> > this driver ?), though I'm pre-swapping status and lenght now before the
> > switch/case so there might still be an issue there. I'll have a look.
>
> The other tack would be to leave the "reverse in hw" flag on and take out all the existing
> swap calls but then you have to add an ifdef to re-order all the structures for tx_le, rx_le, status_le.
> That is what the vendor (GPL) version of sk98lin does.
I prefer keeping the HW swap out of the way for now... that way, I know
the card will react exactly like in an x86, and I avoid those ugly
ifdef's. At least on powerpc, there is no cost in doing swap in software
(well, pretty much no cost).
Which means that if it worked on x86 with le16_to_cpu, it should work on
powerpc... The main difference here however is that you called
le16_to_cpu (which is basically a nop) on a 32 bits field, while I
called le32_to_cpu() on it. But both should lead to the same ... (x86
will do a swapped 16 bits load of the 2 first bytes, while ppc will do a
load of 4 bytes and swap that, thus ending up with the first 2 bytes
swapped in the low order of the result). I'll dump the values and have a
look to be sure. Another possibility would be a problem with the bits
telling the chip where to calculate the checksum.
Ben.
next prev parent reply other threads:[~2006-09-05 4:46 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-05 0:36 sky2: hw checksum failures Benjamin Herrenschmidt
2006-09-05 3:34 ` Stephen Hemminger
2006-09-05 3:42 ` Benjamin Herrenschmidt
2006-09-05 3:56 ` Stephen Hemminger
2006-09-05 4:45 ` Benjamin Herrenschmidt [this message]
2006-09-05 15:00 ` Stephen Hemminger
2006-09-05 21:12 ` Benjamin Herrenschmidt
2006-09-05 21:31 ` Stephen Hemminger
2006-09-05 21:56 ` Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1157431548.22705.78.camel@localhost.localdomain \
--to=benh@kernel.crashing.org \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=shemminger@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).