]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
r8169: corrupted IP fragments fix for large mtu.
authorfrançois romieu <romieu@fr.zoreil.com>
Fri, 2 Mar 2012 04:43:14 +0000 (04:43 +0000)
committerJoe Jin <joe.jin@oracle.com>
Fri, 18 May 2012 03:39:49 +0000 (11:39 +0800)
Noticed with the 8168d (-vb-gr, aka RTL_GIGA_MAC_VER_26).

ConfigX registers should only be written while the Config9346 lock
is held.

(cherry picked from commit 9c5028e9da1255dd2b99762d8627b88b29f68cce)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Reported-by: Nick Bowler <nbowler@elliptictech.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/r8169.c

index e58f42b51fc1d219427026e7f15f971c5215af9e..e50e02e5e213dcc7ddce37b721af6aeab3c36614 100644 (file)
@@ -3831,12 +3831,20 @@ static void rtl8169_init_ring_indexes(struct rtl8169_private *tp)
 
 static void rtl_hw_jumbo_enable(struct rtl8169_private *tp)
 {
+       void __iomem *ioaddr = tp->mmio_addr;
+
+       RTL_W8(Cfg9346, Cfg9346_Unlock);
        rtl_generic_op(tp, tp->jumbo_ops.enable);
+       RTL_W8(Cfg9346, Cfg9346_Lock);
 }
 
 static void rtl_hw_jumbo_disable(struct rtl8169_private *tp)
 {
+       void __iomem *ioaddr = tp->mmio_addr;
+
+       RTL_W8(Cfg9346, Cfg9346_Unlock);
        rtl_generic_op(tp, tp->jumbo_ops.disable);
+       RTL_W8(Cfg9346, Cfg9346_Lock);
 }
 
 static void r8168c_hw_jumbo_enable(struct rtl8169_private *tp)