## Automatically generated incremental diff
## From:   linux-2.4.22-bk50
## To:     linux-2.4.22-bk51
## Robot:  $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $

diff -urN linux-2.4.22-bk50/Documentation/Configure.help linux-2.4.22-bk51/Documentation/Configure.help
--- linux-2.4.22-bk50/Documentation/Configure.help	2003-11-11 02:51:11.000000000 -0800
+++ linux-2.4.22-bk51/Documentation/Configure.help	2003-11-11 02:51:18.000000000 -0800
@@ -21391,10 +21391,10 @@
   DSP 16 card. Enter: 0 for Sony, 1 for Panasonic, 2 for IDE, 4 for no
   CD-ROM present.
 
-C-Media PCI (CMI8338/8378)
+C-Media PCI (CMI8338/8738)
 CONFIG_SOUND_CMPCI
   Say Y or M if you have a PCI sound card using the CMI8338
-  or the CMI8378 chipset.  Data on these chips are available at
+  or the CMI8738 chipset.  Data on these chips are available at
   <http://www.cmedia.com.tw/>.
 
   A userspace utility to control some internal registers of these
diff -urN linux-2.4.22-bk50/Makefile linux-2.4.22-bk51/Makefile
--- linux-2.4.22-bk50/Makefile	2003-11-11 02:51:11.000000000 -0800
+++ linux-2.4.22-bk51/Makefile	2003-11-11 02:51:18.000000000 -0800
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 22
-EXTRAVERSION = -bk50
+EXTRAVERSION = -bk51
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.22-bk50/arch/arm/kernel/isa.c linux-2.4.22-bk51/arch/arm/kernel/isa.c
--- linux-2.4.22-bk50/arch/arm/kernel/isa.c	2000-09-18 15:15:25.000000000 -0700
+++ linux-2.4.22-bk51/arch/arm/kernel/isa.c	2003-11-11 02:51:18.000000000 -0800
@@ -38,7 +38,7 @@
 
 static struct ctl_table_header *isa_sysctl_header;
 
-static ctl_table ctl_isa[2] = {{BUS_ISA, "isa", NULL, 0, 0555, ctl_isa_vars},
+static ctl_table ctl_isa[2] = {{CTL_BUS_ISA, "isa", NULL, 0, 0555, ctl_isa_vars},
 			       {0}};
 static ctl_table ctl_bus[2] = {{CTL_BUS, "bus", NULL, 0, 0555, ctl_isa},
 			       {0}};
diff -urN linux-2.4.22-bk50/drivers/net/b44.c linux-2.4.22-bk51/drivers/net/b44.c
--- linux-2.4.22-bk50/drivers/net/b44.c	2003-11-11 02:51:12.000000000 -0800
+++ linux-2.4.22-bk51/drivers/net/b44.c	2003-11-11 02:51:23.000000000 -0800
@@ -25,8 +25,8 @@
 
 #define DRV_MODULE_NAME		"b44"
 #define PFX DRV_MODULE_NAME	": "
-#define DRV_MODULE_VERSION	"0.91"
-#define DRV_MODULE_RELDATE	"Oct 3, 2003"
+#define DRV_MODULE_VERSION	"0.92"
+#define DRV_MODULE_RELDATE	"Nov 4, 2003"
 
 #define B44_DEF_MSG_ENABLE	  \
 	(NETIF_MSG_DRV		| \
@@ -942,6 +942,8 @@
 	b44_init_hw(bp);
 	spin_unlock_irq(&bp->lock);
 
+	b44_enable_ints(bp);
+	
 	return 0;
 }
 
@@ -1558,6 +1560,8 @@
 		netif_wake_queue(bp->dev);
 		spin_unlock_irq(&bp->lock);
 
+		b44_enable_ints(bp);
+		
 		return 0;
 	}
 	case ETHTOOL_GPAUSEPARAM: {
@@ -1601,6 +1605,8 @@
 		}
 		spin_unlock_irq(&bp->lock);
 
+		b44_enable_ints(bp);
+		
 		return 0;
 	}
 	};
@@ -1852,11 +1858,56 @@
 	}
 }
 
+static int b44_suspend(struct pci_dev *pdev, u32 state)
+{
+	struct net_device *dev = pci_get_drvdata(pdev);
+	struct b44 *bp = dev->priv;
+
+        if (!netif_running(dev))
+                 return 0;
+
+	del_timer_sync(&bp->timer);
+
+	spin_lock_irq(&bp->lock); 
+
+	b44_halt(bp);
+	netif_carrier_off(bp->dev); 
+	netif_device_detach(bp->dev);
+	b44_free_rings(bp);
+
+	spin_unlock_irq(&bp->lock);
+	return 0;
+}
+
+static int b44_resume(struct pci_dev *pdev)
+{
+	struct net_device *dev = pci_get_drvdata(pdev);
+	struct b44 *bp = dev->priv;
+
+	if (!netif_running(dev))
+		return 0;
+
+	spin_lock_irq(&bp->lock);
+
+	b44_init_rings(bp);
+	b44_init_hw(bp);
+	netif_device_attach(bp->dev);
+	spin_unlock_irq(&bp->lock);
+
+	bp->timer.expires = jiffies + HZ;
+	add_timer(&bp->timer);
+
+	b44_enable_ints(bp);
+	return 0;
+}
+
 static struct pci_driver b44_driver = {
 	.name		= DRV_MODULE_NAME,
 	.id_table	= b44_pci_tbl,
 	.probe		= b44_init_one,
 	.remove		= __devexit_p(b44_remove_one),
+        .suspend        = b44_suspend,
+        .resume         = b44_resume,
 };
 
 static int __init b44_init(void)
diff -urN linux-2.4.22-bk50/drivers/net/pcnet32.c linux-2.4.22-bk51/drivers/net/pcnet32.c
--- linux-2.4.22-bk50/drivers/net/pcnet32.c	2003-08-25 04:44:42.000000000 -0700
+++ linux-2.4.22-bk51/drivers/net/pcnet32.c	2003-11-11 02:51:24.000000000 -0800
@@ -1345,6 +1345,10 @@
 		if (!rx_in_place) {
 		    skb_reserve(skb,2); /* 16 byte align */
 		    skb_put(skb,pkt_len);	/* Make room */
+		    pci_dma_sync_single(lp->pci_dev,
+		                        lp->rx_dma_addr[entry],
+		                        PKT_BUF_SZ,
+		                        PCI_DMA_FROMDEVICE);
 		    eth_copy_and_sum(skb,
 				     (unsigned char *)(lp->rx_skbuff[entry]->tail),
 				     pkt_len,0);
diff -urN linux-2.4.22-bk50/drivers/scsi/sg.c linux-2.4.22-bk51/drivers/scsi/sg.c
--- linux-2.4.22-bk50/drivers/scsi/sg.c	2003-06-13 07:51:36.000000000 -0700
+++ linux-2.4.22-bk51/drivers/scsi/sg.c	2003-11-11 02:51:29.000000000 -0800
@@ -871,6 +871,8 @@
     case SG_SET_RESERVED_SIZE:
         result = get_user(val, (int *)arg);
         if (result) return result;
+        if (val < 0)
+            return -EINVAL;
         if (val != sfp->reserve.bufflen) {
             if (sg_res_in_use(sfp) || sfp->mmap_called)
                 return -EBUSY;
diff -urN linux-2.4.22-bk50/include/linux/sysctl.h linux-2.4.22-bk51/include/linux/sysctl.h
--- linux-2.4.22-bk50/include/linux/sysctl.h	2003-11-11 02:51:15.000000000 -0800
+++ linux-2.4.22-bk51/include/linux/sysctl.h	2003-11-11 02:51:32.000000000 -0800
@@ -69,7 +69,7 @@
 /* CTL_BUS names: */
 enum
 {
-	BUS_ISA=1		/* ISA */
+	CTL_BUS_ISA=1		/* ISA */
 };
 
 /* CTL_KERN names: */
diff -urN linux-2.4.22-bk50/kernel/ksyms.c linux-2.4.22-bk51/kernel/ksyms.c
--- linux-2.4.22-bk50/kernel/ksyms.c	2003-11-11 02:51:15.000000000 -0800
+++ linux-2.4.22-bk51/kernel/ksyms.c	2003-11-11 02:51:32.000000000 -0800
@@ -49,6 +49,7 @@
 #include <linux/seq_file.h>
 #include <linux/dnotify.h>
 #include <linux/crc32.h>
+#include <linux/firmware.h>
 #include <asm/checksum.h>
 
 #if defined(CONFIG_PROC_FS)
@@ -575,6 +576,13 @@
 EXPORT_SYMBOL(bitreverse);
 #endif
 
+#ifdef CONFIG_FW_LOADER
+EXPORT_SYMBOL(release_firmware);
+EXPORT_SYMBOL(request_firmware);
+EXPORT_SYMBOL(request_firmware_nowait);
+EXPORT_SYMBOL(register_firmware);
+#endif
+
 /* software interrupts */
 EXPORT_SYMBOL(tasklet_hi_vec);
 EXPORT_SYMBOL(tasklet_vec);
diff -urN linux-2.4.22-bk50/lib/firmware_class.c linux-2.4.22-bk51/lib/firmware_class.c
--- linux-2.4.22-bk50/lib/firmware_class.c	2003-11-11 02:51:15.000000000 -0800
+++ linux-2.4.22-bk51/lib/firmware_class.c	2003-11-11 02:51:32.000000000 -0800
@@ -565,7 +565,9 @@
 module_init(firmware_class_init);
 module_exit(firmware_class_exit);
 
+#ifndef CONFIG_FW_LOADER
 EXPORT_SYMBOL(release_firmware);
 EXPORT_SYMBOL(request_firmware);
 EXPORT_SYMBOL(request_firmware_nowait);
 EXPORT_SYMBOL(register_firmware);
+#endif
