Re: sis190

Francois Romieu
2005-06-14T20:06:52Z

Pascal CHAPPERON <pascal.chapperon@wanadoo.fr> :
[20050613-2.6.12-rc-sis190-test.patch]
> I tried it :
> - false mode detection
> - as you expected, ping -s 157 was OK, ping -s 158 failed.
>
> Nice, it begins to work!

Yes.

Notice how the supposedly Rx DMA address ends in your log:
sk_buff[0]->tail = ffff810006a3e012
^
I have tweaked the rx copybreak path to perform a shift from two bytes
before this address and surprisingly enough we get exactly the two
missing bytes. The normal path has not been modified and it is taken
as soon as there is at least 200 bytes of data, i.e. your 186 icmp
payload: it fails as it misses two bytes. Two possible explanations:
1 - I can not find where the two bytes are lost and it is actually a bug
in the driver. So far, you have been quite good at detecting my mistakes.
You know what you have to do :o)
2 - the asic can only DMA to a 4 bytes aligned address.

(actually the asic could also always DMA 2 bytes before the expected address,
whatever the adress, but I'd be happily surprized).

If 2) applies, the driver will need an extra copy to align the IP headers
(or someone will find some secret documentation which explains how to
remove two bytes and fix the issue).

The patch of the day uses a 4 bytes aligned Rx buffer address (at least for
the usual MTU) and copies the Rx data. Can you reproduce the usual testing
and tell if it makes a difference ?

Patch available at:
http://www.fr.zoreil.com/people/francois/misc/20050614-2.6.12-rc-sis190-test.patch

--
Ueimor