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

From: Jon Mason <[email-masked]>
Date: Mon, 28 Feb 2005 11:27:53 -0600

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 <[email-masked]>

--- 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);