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

Bug#452069: nfs-kernel-server: broken NFS server on Thecus N2100



* dann frazier <dannf@debian.org> [2007-11-22 10:10]:
> > dannf, could you please take a look at #452069 and let me know if this
> > bug is worth addressing in a stable update.
> Yes, this certainly qualifies - I've updated the usertags to reflect
> that. Thanks for tracking this one down.

I prepared the patch below which works for me and which according to
upstream shouldn't break anything.  On the one hand, he agreed it
shouldn't impact performance, but on the other hand he mentioned:

| If the driver does not feel as fast as expected, try
| e9f63f30863fd778a5329e93c7e2208b9bcb5b79 first. No known downside so
| far.

| If the speed goes brutally down with nfs/smb, give a try to
| d78ae2dcc2acebb9a1048278f47f762c069db75c

So I'm not quite sure whether to apply the patch or whether we need
verification that it won't slow down things.

I also asked what other patches would be of interest to backport and
got:

| Let aside the "align" fixes, the short list below contains some candidates
| in reverse order:

| 315917d23fdd20a0f4ff99b9228de5840d9d276c
| 9cb427b6ff0b3e235c518acf5c1fcbbfc95f0ae2
| d03902b8864d7814c938f67befade5a3bba68708 | you should already have those
| a27993f3d9daca0dffa26577a83822db99c952e2 |
| eb2a021c4710b98081daa797d5a729ac23c240cd
| 2efa53f373ed811d4860904f5205b8a3b376e253
| 99f252b097a3bd6280047ba2175b605671da4a23
| 1371fa6db0bbb8e23f988a641f5ae7361bc629dd

| It's gross though: there are 99 changes from v2.6.18.8 to current master
| for the r8169 driver and some registers init changes may have been partially
| reverted later.

I don't have the time or experience to look into these, so again, I'm
not quite sure how to proceed.  I guess it also depends how close the
etch 1+1/2 update is.

Dan, any thoughts?


My proposed patch:

--- a/drivers/net/r8169.c	2007-11-22 12:20:51.000000000 +0000
+++ b/drivers/net/r8169.c	2007-11-22 12:20:51.000000000 +0000
@@ -202,7 +202,7 @@
 	unsigned int region;
 	unsigned int align;
 } rtl_cfg_info[] = {
-	[RTL_CFG_0] = { 1, NET_IP_ALIGN },
+	[RTL_CFG_0] = { 1, 2 },
 	[RTL_CFG_1] = { 2, NET_IP_ALIGN },
 	[RTL_CFG_2] = { 2, 8 }
 };
@@ -2487,9 +2487,9 @@
 	if (pkt_size < rx_copybreak) {
 		struct sk_buff *skb;
 
-		skb = dev_alloc_skb(pkt_size + align);
+		skb = dev_alloc_skb(pkt_size + NET_IP_ALIGN);
 		if (skb) {
-			skb_reserve(skb, (align - 1) & (u32)skb->data);
+			skb_reserve(skb, NET_IP_ALIGN);
 			eth_copy_and_sum(skb, sk_buff[0]->data, pkt_size, 0);
 			*sk_buff = skb;
 			rtl8169_mark_to_asic(desc, rx_buf_sz);

-- 
Martin Michlmayr
http://www.cyrius.com/




Reply to: