Re: sis190

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Message du 17/06/05 20:23
> De : "Francois Romieu" <[email protected]>
[...]
> It should be fixed now. Please try the patch of the day:
> http://www.fr.zoreil.com/people/francois/misc/20050617-2.6.12-rc-sis190-test.patch
> 
[...]
Nice, it works :)
It is now usable, but it can freeze the box in some cases (see below).

First try : network (dhcp) initialized correctly, but the box froze
immediatly as i tried to transfer a 35MB file via scp 
(not really frozen, as the transfer achieved correctly).
I  had to switch power button...

i raised NUM_RX_DESC from 16 to 256 : i could achieve 2 transfers 
before i lost keyboard; as i was on the console, i could see that
 sis190 printks were still printed (very slowly), but nothing else
was working.

[...many tries...]

I disabled PREEMPT in the kernel : the driver worked correctly.

# modinfo sis190
[...]
alias:          pci:v00001039d00000190sv*sd*bc*sc*i*
depends:
vermagic:       2.6.12-rc6 gcc-3.4

# cat /var/log/messages
[...]
Jun 18 11:04:41 local kernel: eth0: Rx status = 76040040
Jun 18 11:04:41 local kernel: eth0: Rx PSize = 01010046
Jun 18 11:04:41 local kernel: sk_buff[0]->tail = ffff81000cc78810
Jun 18 11:04:41 local kernel: eth0: Rx status = c0000000
Jun 18 11:04:41 local kernel: eth0: status = 20000004
Jun 18 11:04:41 local kernel: eth0: status = 00000040
Jun 18 11:04:41 local kernel: eth0: dirty_rx=143 cur_rx=143
Jun 18 11:04:41 local kernel:    PSize    status   addr     size     PSize    status   addr     size
Jun 18 11:04:41 local kernel: 00:00000000 c0000000 1018c010 00000600 00000000 c0000000 040a6010 00000600
Jun 18 11:04:41 local kernel: 01:00000000 c0000000 03d64010 00000600 00000000 c0000000 1ce5a010 00000600
Jun 18 11:04:41 local kernel: 02:00000000 c0000000 1ce5a810 00000600 00000000 c0000000 1179e010 00000600
Jun 18 11:04:41 local kernel: 03:00000000 c0000000 1c28f810 00000600 00000000 c0000000 1c283010 00000600
Jun 18 11:04:41 local kernel: 04:00000000 c0000000 0c863010 00000600 00000000 c0000000 0eba9010 00000600
Jun 18 11:04:41 local kernel: 05:00000000 c0000000 0eba9810 00000600 00000000 c0000000 0a24a010 00000600
Jun 18 11:04:41 local kernel: 06:00000000 c0000000 03d62010 00000600 00000000 c0000000 0cc78010 00000600
Jun 18 11:04:41 local kernel: 07:00000000 c0000000 0cc78810 00000600 01010046 76040040 040a6810 80000600
Jun 18 11:04:41 local kernel: eth0: dirty_tx=174 cur_tx=174
[...]

I also tried :
1) to comment out sis190_make_unusable_by_asic() in sis190_rx_interrupt() :
			if (sis190_try_rx_copy(&skb, pkt_size, desc,
					       tp->rx_buf_sz)) {
				pci_action = pci_unmap_single;
				tp->Rx_skbuff[entry] = NULL;
				/* sis190_make_unusable_by_asic(desc); */
			}

No difference (it worked the same way).

2) to comment out the test "if (pkt_size < rx_copybreak)" in sis190_try_rx_copy() :
It worked with kernel PREEMPT.
The transfer speed was the same.
I imagine that rx_copybreak is better for large packets, but i still do not
understand why it is better :( (less upload ?)

> > I also tried to force 10H, 10F, 100H, 100F autoneg off on the other card.
[...] 
> Did the sis190 driver report a link change event ?
> 
> --
> Ueimor
> 
I made new tests with 2 differents boards on the remote (modes + transfer speed) : 
worked good in some cases, bad in another.
In one case (10 full with r8169) , it froze the box (see below).

I used your patch without modifications (I only remove printks to have real perfs).
NUM_TX_DESC     64
NUM_RX_DESC     256
Kernel was compiled without PREEMPT.

I transferred (twice for each test) a 35MB file in both directions.


1) local = sis190 remote = r8169
--------------------------------

remote # uname -a
Linux remote 2.6.11.11 #3 SMP Sat Jun 18 16:23:51 CEST 2005 i686 i686 i386 GNU/Linux
remote # ethtool -i eth2
driver: r8169
version: 2.2LK

remote # ethtool -s eth2 autoneg on
local  # dmesg
[...]
[ 2954.467733] sis190 Gigabit Ethernet driver 1.2 loaded
[ 2954.467958] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
[ 2954.467961] ACPI: PCI Interrupt 0000:00:04.0[A] -> Link [LNKD] -> GSI 11 (level, low) -> IRQ 11
[ 2954.467970] PCI: Setting latency timer of device 0000:00:04.0 to 64
[ 2954.475927] 0000:00:04.0: sis190 at ffffc20000004c00 (IRQ: 11), 00:11:2f:e9:42:70
[ 2954.475932] eth0: Enabling Auto-negotiation.
[ 2954.510049] eth0: link change
[ 2954.512912] eth0: mii 0x1f = 0000.
[ 2954.514038] eth0: mii lpa = 0000.
[ 2954.514041] eth0: Link on unknown mode.
[ 2960.061387] eth0: PHY reset until link up
[ 2960.097462] eth0: no IPv6 routers present
[ 2965.614860] eth0: PHY reset until link up
           [ i plug the wire ]
[ 2971.168332] eth0: PHY reset until link up
[ 2972.171635] eth0: link change
[ 2972.174572] eth0: mii 0x1f = 0000.
[ 2972.175683] eth0: mii lpa = c1e1.
[ 2972.175685] eth0: Link on 100 Mbps Full Duplex mode.
[...]

-> 35MB  11.6MB/s   00:03
<- 35MB  11.6MB/s   00:03

remote # ethtool -s eth2 speed 10 duplex half autoneg off
local  # dmesg
[...]
[ 3169.769898] eth0: link change
[ 3169.773250] eth0: mii 0x1f = 0000.
[ 3169.774364] eth0: mii lpa = 4021.
[ 3169.774366] eth0: Link on 10 Mbps Half Duplex mode.
       [ could not ping remote]

I had to reload sis190 (network restart was not sufficient).

->        35MB 334.2KB/s   01:47
<-   8% 2976KB  40.2KB/s   13:35 ETA

remote # ethtool -s eth2 speed 10 duplex full autoneg off
local  # dmesg
[...]
[ 3467.070750] eth0: pad error. status = 01000042
[ 3467.208669] eth0: pad error. status = 01000048
[ 3467.329894] eth0: pad error. status = 01000043
[ 3469.350736] eth0: pad error. status = 01000044
[ 3469.351500] eth0: pad error. status = 0100005a
[ 3487.685124] eth0: link change
[ 3487.687358] eth0: PHY reset until link up
[ 3488.846780] eth0: link change
[ 3488.850113] eth0: mii 0x1f = 0000.
[ 3488.851224] eth0: mii lpa = 4061.
[ 3488.851226] eth0: Link on 10 Mbps Full Duplex mode.

No need to restart network...

the transfer from local to remote froze immediatly the box.

It's always reproductible : box freshly started,
network restarted, sis190 reloaded...

-> do not try it!
<- 35MB   1.1MB/s   00:31

In the other direction (remote -> local), i could transfer
the file as many times as i wanted.


remote # ethtool -s eth2 speed 100 duplex half autoneg off
local  # dmesg
[...]
[  638.939950] eth0: link change
[  638.943171] eth0: mii 0x1f = 0000.
[  638.944282] eth0: mii lpa = 4081.
[  638.944284] eth0: Link on 100 Mbps Half Duplex mode.

No need to restart network...

-> 35MB   1.0MB/s   00:35
<- 35MB   2.9MB/s   00:12

remote # ethtool -s eth2 speed 100 duplex full autoneg off
local  # dmesg
[...]
[  281.822151] eth0: link change
[  281.825442] eth0: mii 0x1f = 0000.
[  281.826553] eth0: mii lpa = 4181.
[  281.826555] eth0: Link on 100 Mbps Full Duplex mode.

No need to restart network...

-> 35MB  11.6MB/s   00:03
<- 35MB  11.6MB/s   00:03



2) local = sis190 remote = 8139too
----------------------------------

remote # ethtool -i eth2
driver: 8139too
version: 0.9.27

remote # ethtool -s eth2 autoneg on
local  # dmesg
[...]
[ 1122.883216] eth0: link change
[ 1122.886164] eth0: mii 0x1f = 0000.
[ 1122.887275] eth0: mii lpa = 45e1.
[ 1122.887278] eth0: Link on 100 Mbps Full Duplex mode.

No need to restart network...

-> 35MB  11.6MB/s   00:03
<- 35MB  11.6MB/s   00:03

remote # ethtool -s eth2 speed 10 duplex half autoneg off
local  # dmesg
[...]
[ 1297.412384] eth0: link change
[ 1297.415299] eth0: mii 0x1f = 0000.
[ 1297.416410] eth0: mii lpa = 0021.
[ 1297.416412] eth0: Link on 10 Mbps Half Duplex mode.

No need to restart network...

->  3% 1296KB  61.8KB/s   09:17 ETA
<- 43%   15MB 336.1KB/s   00:59 ETA

remote # ethtool -s eth2 speed 10 duplex full autoneg off
local  # dmesg
[...]
[ 1396.959707] eth0: pad error. status = 01000048
[ 1396.961143] eth0: pad error. status = 0100004a
[ 1396.962580] eth0: pad error. status = 0100004a
[ 1396.964014] eth0: pad error. status = 01000042
[ 1396.965448] eth0: pad error. status = 01000042
[ 1396.966886] eth0: pad error. status = 0100004c
         [ i did not find mode report ]

No need to restart network...

-> 35MB 337.3KB/s   01:46
<- 35MB   1.1MB/s   00:31

I restarted network, but nothing worked anymore; so i
also reloaded sis190.

local  # dmesg
[...]
[ 1741.049314] eth0: Enabling Auto-negotiation.
[ 1746.626290] eth0: mii 0x1f = 0000.
[ 1746.627399] eth0: mii lpa = 0021.
[ 1746.627401] eth0: Link on 10 Mbps Half Duplex mode.
                    [false detection ^^^^]

-> 13% 4816KB 357.6KB/s   01:26 ETA
<-       35MB   1.1MB/s   00:32

remote # ethtool -s eth2 speed 100 duplex half autoneg off
local  # dmesg
[...]
[ 1990.441900] eth0: link change
[ 1990.445110] eth0: mii 0x1f = 0000.
[ 1990.446222] eth0: mii lpa = 0081.
[ 1990.446224] eth0: Link on 100 Mbps Half Duplex mode.

No need to restart network...

-> 35MB   1.1MB/s   00:33
<- 35MB   2.2MB/s   00:16

remote # ethtool -s eth2 speed 100 duplex full autoneg off
local  # dmesg
[...]
[ 2075.194365] eth0: pad error. statad error. status = 01000232
[...]
[ 2125.300416] eth0: pad error. status = 01000040
[ 2129.465137] eth0: pad error. status = 01000046
[ 2129.804272] eth0: pad error. status = 01000040
[ 2130.498300] eth0: pad error. status = 01000044
         [ i did not find mode report ]

-> 35MB   1.2MB/s   00:30
<- 35MB  11.6MB/s   00:03

I restarted network, it worked, but still pad errors.
So i reloaded sis190.

local  # dmesg
[...]
[ 2346.490911] eth0: Enabling Auto-negotiation.
[ 2352.068364] eth0: mii 0x1f = 0000.
[ 2352.069478] eth0: mii lpa = 0081.
[ 2352.069482] eth0: Link on 100 Mbps Half Duplex mode.
                     [false detection ^^^^]

-> 35MB   1.1MB/s   00:32
<- 35MB  11.6MB/s   00:03


As you can see, it always works fine with autoneg on, and
only 100 full with r8169 is OK with autoneg off.



Regards
Pascal


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux