netdev
[Top] [All Lists]

[PATCH 1/2] r8169: Jumbo Frames mini-increase

To: Francois Romieu <romieu@xxxxxxxxxxxxx>
Subject: [PATCH 1/2] r8169: Jumbo Frames mini-increase
From: Jon Mason <jdmason@xxxxxxxxxx>
Date: Mon, 28 Feb 2005 11:27:53 -0600
Cc: netdev@xxxxxxxxxxx
In-reply-to: <20050227235210.GA27271@electric-eye.fr.zoreil.com>
References: <4220ADA6.2040506@phekda.gotadsl.co.uk> <20050226203518.GA14688@electric-eye.fr.zoreil.com> <42224CF5.5090601@phekda.gotadsl.co.uk> <20050227235210.GA27271@electric-eye.fr.zoreil.com>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6i
This patch increases the maximum MTU from ~7k to 8169 (the maximum MTU
that will fit into a single descriptor).  

Applies cleanly to linux-2.6.11-rc4-mm1 and tested on amd64

Signed-off-by: Jon Mason <jdmason@xxxxxxxxxx>

--- drivers/net/r8169.c.orig    2005-02-26 12:38:54.000000000 -0600
+++ drivers/net/r8169.c 2005-02-27 11:10:19.000000000 -0600
@@ -117,8 +117,9 @@ static int multicast_filter_limit = 32;
 #define RX_DMA_BURST   6       /* Maximum PCI burst, '6' is 1024 */
 #define TX_DMA_BURST   6       /* Maximum PCI burst, '6' is 1024 */
 #define EarlyTxThld    0x3F    /* 0x3F means NO early transmit */
+#define LargeSendETT   0x35
 #define RxPacketMaxSize        0x3FE8  /* 16K - 1 - ETH_HLEN - VLAN - CRC... */
-#define SafeMtu                0x1c20  /* ... actually life sucks beyond ~7k */
+#define SafeMtu                0x1FE9  /* Largest MTU that can fit in a single 
desc */
 #define InterFrameGap  0x03    /* 3 means InterFrameGap = the shortest one */
 
 #define R8169_REGS_SIZE                256
@@ -1576,8 +1577,12 @@ rtl8169_hw_start(struct net_device *dev)
 
        RTL_W8(Cfg9346, Cfg9346_Unlock);
        RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
-       RTL_W8(EarlyTxThres, EarlyTxThld);
 
+       if (dev->mtu < 7400)
+               RTL_W8(EarlyTxThres, EarlyTxThld);
+       else
+               RTL_W8(EarlyTxThres, LargeSendETT);
+                       
        /* For gigabit rtl8169, MTU + header + CRC + VLAN */
        RTL_W16(RxMaxSize, tp->rx_buf_sz);
 

<Prev in Thread] Current Thread [Next in Thread>