⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1014.rtl8139.patch

📁 sm86xx内核源包括补丁( GPL )的
💻 PATCH
📖 第 1 页 / 共 2 页
字号:
diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/drivers/net/8139too.c linuxmips-2.4.30/drivers/net/8139too.c--- linuxmips-2.4.30.ref/drivers/net/8139too.c	2004-11-18 16:28:39.000000000 -0800+++ linuxmips-2.4.30/drivers/net/8139too.c	2005-03-25 20:08:41.000000000 -0800@@ -92,7 +92,8 @@ */  #define DRV_NAME	"8139too"-#define DRV_VERSION	"0.9.26"+#define DRV_VERSION	"0.9.27"+   #include <linux/config.h>@@ -113,14 +114,19 @@ #include <asm/io.h> #include <asm/uaccess.h> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)+/* For 2.6.x compatibility */+typedef void irqreturn_t;+#define IRQ_NONE+#define IRQ_HANDLED+#endif+++ #define RTL8139_DRIVER_NAME   DRV_NAME " Fast Ethernet driver " DRV_VERSION #define PFX DRV_NAME ": " -/* Default Message level */-#define RTL8139_DEF_MSG_ENABLE   (NETIF_MSG_DRV   | \-                                 NETIF_MSG_PROBE  | \-                                 NETIF_MSG_LINK)-  /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */ #ifdef CONFIG_8139TOO_PIO@@ -163,9 +169,6 @@ static int media[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; -/* Maximum events (Rx packets, etc.) to handle at each interrupt. */-static int max_interrupt_work = 20;- /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).    The RTL chips use a 64 element hash table based on the Ethernet CRC.  */ static int multicast_filter_limit = 32;@@ -568,7 +571,6 @@ 	int drv_flags; 	struct pci_dev *pci_dev; 	u32 pci_state[16];-	u32 msg_enable; 	struct net_device_stats stats; 	unsigned char *rx_ring; 	unsigned int cur_rx;	/* Index into the Rx buffer of next Rx pkt. */@@ -599,13 +601,11 @@ MODULE_LICENSE("GPL");  MODULE_PARM (multicast_filter_limit, "i");-MODULE_PARM (max_interrupt_work, "i"); MODULE_PARM (media, "1-" __MODULE_STRING(MAX_UNITS) "i"); MODULE_PARM (full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i"); MODULE_PARM (debug, "i"); MODULE_PARM_DESC (debug, "8139too bitmapped message enable number"); MODULE_PARM_DESC (multicast_filter_limit, "8139too maximum number of filtered multicast addresses");-MODULE_PARM_DESC (max_interrupt_work, "8139too maximum events handled per interrupt"); MODULE_PARM_DESC (media, "8139too: Bits 4+9: force full duplex, bit 5: 100Mbps"); MODULE_PARM_DESC (full_duplex, "8139too: Force full duplex for board(s) (1)"); @@ -627,7 +627,10 @@ static void rtl8139_set_rx_mode (struct net_device *dev); static void __set_rx_mode (struct net_device *dev); static void rtl8139_hw_start (struct net_device *dev);+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,23) static struct ethtool_ops rtl8139_ethtool_ops;+#endif+static int rtl8139_poll(struct net_device *dev, int *budget);  #ifdef USE_IO_OPS @@ -971,11 +974,15 @@ 	/* The Rtl8139-specific entries in the device structure. */ 	dev->open = rtl8139_open; 	dev->hard_start_xmit = rtl8139_start_xmit;+	dev->poll = rtl8139_poll;+	dev->weight = 16; 	dev->stop = rtl8139_close; 	dev->get_stats = rtl8139_get_stats; 	dev->set_multicast_list = rtl8139_set_rx_mode; 	dev->do_ioctl = netdev_ioctl;+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,23) 	dev->ethtool_ops = &rtl8139_ethtool_ops;+#endif 	dev->tx_timeout = rtl8139_tx_timeout; 	dev->watchdog_timeo = TX_TIMEOUT; @@ -993,8 +1000,6 @@ 	/* note: tp->chipset set in rtl8139_init_board */ 	tp->drv_flags = board_info[ent->driver_data].hw_flags; 	tp->mmio_addr = ioaddr;-	tp->msg_enable =-		(debug < 0 ? RTL8139_DEF_MSG_ENABLE : ((1 << debug) - 1)); 	spin_lock_init (&tp->lock); 	init_waitqueue_head (&tp->thr_wait); 	init_completion (&tp->thr_exited);@@ -1297,7 +1302,9 @@ { 	struct rtl8139_private *tp = dev->priv; 	int retval;+#ifdef RTL8139_DEBUG 	void *ioaddr = tp->mmio_addr;+#endif  	retval = request_irq (dev->irq, rtl8139_interrupt, SA_SHIRQ, dev->name, dev); 	if (retval)@@ -1327,8 +1334,7 @@ 	rtl8139_init_ring (dev); 	rtl8139_hw_start (dev); -	if (netif_msg_ifup(tp))-		printk(KERN_DEBUG "%s: rtl8139_open() ioaddr %#lx IRQ %d"+	DPRINTK ("%s: rtl8139_open() ioaddr %#lx IRQ %d" 			" GP Pins %2.2x %s-duplex.\n", 			dev->name, pci_resource_start (tp->pci_dev, 1), 			dev->irq, RTL_R8 (MediaStatus),@@ -1345,7 +1351,7 @@ 	struct rtl8139_private *tp = dev->priv;  	if (tp->phys[0] >= 0) {-		mii_check_media(&tp->mii, netif_msg_link(tp), init_media);+		mii_check_media(&tp->mii, 1, init_media); 	} } @@ -1734,9 +1740,8 @@ 		netif_stop_queue (dev); 	spin_unlock_irq(&tp->lock); -	if (netif_msg_tx_queued(tp))-		printk (KERN_DEBUG "%s: Queued Tx packet size %u to slot %d.\n",-			dev->name, len, entry);+	DPRINTK ("%s: Queued Tx packet size %u to slot %d.\n",+		 dev->name, len, entry);  	return 0; }@@ -1766,9 +1771,8 @@ 		/* Note: TxCarrierLost is always asserted at 100mbps. */ 		if (txstatus & (TxOutOfWindow | TxAborted)) { 			/* There was an major error, log it. */-			if (netif_msg_tx_err(tp))-				printk(KERN_DEBUG "%s: Transmit error, Tx status %8.8x.\n",-					dev->name, txstatus);+			DPRINTK ("%s: Transmit error, Tx status %8.8x.\n",+				 dev->name, txstatus); 			tp->stats.tx_errors++; 			if (txstatus & TxAborted) { 				tp->stats.tx_aborted_errors++;@@ -1823,9 +1827,8 @@ 	int tmp_work; #endif -	if (netif_msg_rx_err (tp)) -		printk(KERN_DEBUG "%s: Ethernet frame had errors, status %8.8x.\n",-			dev->name, rx_status);+	DPRINTK ("%s: Ethernet frame had errors, status %8.8x.\n",+	         dev->name, rx_status); 	tp->stats.rx_errors++; 	if (!(rx_status & RxStatusOK)) { 		if (rx_status & RxTooLong) {@@ -1897,24 +1900,28 @@ #endif } -static void rtl8139_rx_interrupt (struct net_device *dev,-				  struct rtl8139_private *tp, void *ioaddr)+/*+ * NAPI poll routine.+ */+static int rtl8139_poll(struct net_device *dev, int *budget) {+	struct rtl8139_private *tp = dev->priv;+	void *ioaddr = tp->mmio_addr; 	unsigned char *rx_ring; 	u16 cur_rx;+	int rx, status;+	unsigned long flags; -	assert (dev != NULL);-	assert (tp != NULL);-	assert (ioaddr != NULL);-+	spin_lock_irqsave(&tp->lock, flags);+ rescan: 	rx_ring = tp->rx_ring; 	cur_rx = tp->cur_rx;--	DPRINTK ("%s: In rtl8139_rx(), current %4.4x BufAddr %4.4x,"+	rx = 0;+	DPRINTK ("%s: In rtl8139_rx_poll(), current %4.4x BufAddr %4.4x," 		 " free to %4.4x, Cmd %2.2x.\n", dev->name, cur_rx, 		 RTL_R16 (RxBufAddr), 		 RTL_R16 (RxBufPtr), RTL_R8 (ChipCmd));-+	 	while ((RTL_R8 (ChipCmd) & RxBufEmpty) == 0) { 		int ring_offset = cur_rx % RX_BUF_LEN; 		u32 rx_status;@@ -1929,9 +1936,8 @@ 		rx_size = rx_status >> 16; 		pkt_size = rx_size - 4; -		if (netif_msg_rx_status(tp))-			printk(KERN_DEBUG "%s:  rtl8139_rx() status %4.4x, size %4.4x,"-				" cur %4.4x.\n", dev->name, rx_status,+		DPRINTK ("%s:  rtl8139_rx() status %4.4x, size %4.4x,"+			 " cur %4.4x.\n", dev->name, rx_status, 			 rx_size, cur_rx); #if RTL8139_DEBUG > 2 		{@@ -1962,18 +1968,13 @@ 		    (rx_size < 8) || 		    (!(rx_status & RxStatusOK))) { 			rtl8139_rx_err (rx_status, dev, tp, ioaddr);-			return;+			goto err; 		} -		/* Malloc up new buffer, compatible with net-2e. */-		/* Omit the four octet CRC from the length. */--		/* TODO: consider allocating skb's outside of-		 * interrupt context, both to speed interrupt processing,-		 * and also to reduce the chances of having to-		 * drop packets here under memory pressure.-		 */+		/* Drop lock so we can copy data with interrupts enabled. */+		spin_unlock_irqrestore(&tp->lock, flags); +		/* Omit the four octet CRC from the length. */ 		skb = dev_alloc_skb (pkt_size + 2); 		if (skb) { 			skb->dev = dev;@@ -1983,22 +1984,35 @@ 			skb_put (skb, pkt_size);  			skb->protocol = eth_type_trans (skb, dev);-			netif_rx (skb);+			netif_receive_skb(skb); 			dev->last_rx = jiffies; 			tp->stats.rx_bytes += pkt_size; 			tp->stats.rx_packets++; 		} else {-			printk (KERN_WARNING-				"%s: Memory squeeze, dropping packet.\n",-				dev->name);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -