­In case anyone stumbles upon this thread looking for a solution,
there has been success here reverting a particular kernel patch
to sis900.c that occured between linux versions 3.11 and 3.12.

The machine tested has been a Gericom Webboy (laptop from
year ~2000), it was connected to a tplink router.

Systems with kernel versions 2.6.21.7, 2.6.27.27, 3.8.2 and 3.11
had acceptable network performance, while a regression was
observed after booting 4.4.0 vanilla.  With this version the net-
work adapter delivered a mere 100 kb/s, while in the megabyte
range with aforementioned versions.

Backtracking the issue down to kernel 3.12.6 reliably exhibited
the same degradation for each kernel tested - flooding dmesg
log with the log patterns described earlier in this bug thread.

Visiting the kernel changelogs between versions 3.11 and 3.12.6
the following candidate patch could be identified as a possible
cause:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/net/ethernet/sis/sis900.c?h=v3.12&id=78f1ccc4f82cd7bbb65b0e938ed0dfd81e902fe0

The patch title is
sis900: don't restart auto-negotiation each time after link resume.

.. applied to linux mainline on
2013-08-20

Once this patch is reverted and 3.12.6 kernel recompiled, the
sis900 network card's performance was restored.  This observation
has then been confirmed and reproduced by reverse applying the
patch to kernel 4.4.0.

This patch may or may not be the cause for other setups employing
sis900 as a network chip, but has been reproducibly identified as
cause for performance degradation for the issue above.


The mii-tool workaround described earlier has worked as well, i.e.
without patching the sis900.c driver, setting 10baseT-FD only for
auto-negotiation events.  (100baseTx-HD showed no improvement).
10baseT-FD limits the network card's speed to about one mbyte/s,
which is inferior to proper patching of sis900 kernel driver.


Regards,
Jim

Reply via email to