lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 9 Sep 2007 17:33:12 +0200 From: Francois Romieu <romieu@...zoreil.com> To: David Madsen <david.madsen@...il.com> Cc: netdev@...r.kernel.org Subject: Re: r8169: slow samba performance David Madsen <david.madsen@...il.com> : > >Does "acceptable" mean that there is a noticeable difference when compared > >to the patch based on a busy-waiting loop ? > > I noticed a somewhat significant difference between patch #0002 and a > busy wait loop with ndelay(10). Write performance was equivalent in > both cases as should be the case. Read perfomance for me maxed out Do you have some (gross) figure for the write performance ? > around 150ish megabit whereas switching to the ndelay(10) loop brought > up average performance around 350ish megabit while reading the same > files over samba. Hardly extatic. :o/ Do you see a difference in the system load too, say a few lines of 'vmstat 1' ? Can you add the patch below on top of #0002 and see if there is some benefit from it ? diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index b85ab4a..8d8fff3 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -2457,6 +2457,7 @@ static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev) smp_wmb(); RTL_W8(TxPoll, NPQ); /* set polling bit */ + RTL_R8(TxPoll); if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) { netif_stop_queue(dev); I'd welcome if you could try the patch below on top of #0002 too: diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index b85ab4a..840df3b 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -2457,6 +2457,17 @@ static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev) smp_wmb(); RTL_W8(TxPoll, NPQ); /* set polling bit */ +{ + static unsigned int wait_max = 0; + unsigned i; + + for (i = 0; (RTL_R8(TxPoll) & NPQ) && (i < 1000); i++) + ndelay(10); + if (i > wait_max) { + wait_max = i; + printk(KERN_INFO "%s: wait_max = %d\n", dev->name, wait_max); + } +} if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) { netif_stop_queue(dev); -- Ueimor - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists