diff -urN prism54-cvs-latest/ksrc/Makefile.k24 prism54-cvs-latest_new/ksrc/Makefile.k24
--- prism54-cvs-latest/ksrc/Makefile.k24	Fri Nov  5 09:47:56 2004
+++ prism54-cvs-latest_new/ksrc/Makefile.k24	Mon Nov 15 20:59:14 2004
@@ -1,7 +1,7 @@
 
 O_TARGET := prism54.o
 
-EXTRA_CFLAGS += -DPRISM54_COMPAT24 # -DCONFIG_PRISM54_WDS -DCONFIG_PRISM54_HOSTAPD
+EXTRA_CFLAGS += -DPRISM54_COMPAT24 -DCONFIG_PRISM54_WDS #-DCONFIG_PRISM54_HOSTAPD
 
 obj-y		:= isl_38xx.o islpci_dev.o islpci_eth.o \
 		   islpci_mgt.o islpci_hotplug.o isl_ioctl.o \
diff -urN prism54-cvs-latest/ksrc/islpci_dev.c prism54-cvs-latest_new/ksrc/islpci_dev.c
--- prism54-cvs-latest/ksrc/islpci_dev.c	Fri Nov  5 09:47:57 2004
+++ prism54-cvs-latest_new/ksrc/islpci_dev.c	Mon Nov 15 21:33:31 2004
@@ -797,6 +797,7 @@
 struct net_device *
 islpci_setup(struct pci_dev *pdev)
 {
+	u_int8_t csz;
 	islpci_private *priv;
 #ifdef CONFIG_PRISM54_HOSTAPD
 	char apname[IFNAMSIZ];
@@ -812,6 +813,12 @@
 #if defined(SET_NETDEV_DEV)
 	SET_NETDEV_DEV(ndev, &pdev->dev);
 #endif
+
+       pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &csz);
+        if (csz == 0) {
+               csz = L1_CACHE_BYTES / sizeof(u_int32_t);
+               pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, csz);
+       }
 
 	/* setup the structure members */
 	ndev->base_addr = pci_resource_start(pdev, 0);
diff -urN prism54-cvs-latest/ksrc/islpci_eth.c prism54-cvs-latest_new/ksrc/islpci_eth.c
--- prism54-cvs-latest/ksrc/islpci_eth.c	Mon Nov  8 11:08:27 2004
+++ prism54-cvs-latest_new/ksrc/islpci_eth.c	Mon Nov 15 21:12:10 2004
@@ -131,11 +131,12 @@
 	/* Check alignment and WDS frame formatting. The start of the packet should
 	 * be aligned on a 4-byte boundary. If WDS is enabled add another 6 bytes
 	 * and add WDS address information */
-	if (likely(((long) skb->data & 0x03)
 #ifdef CONFIG_PRISM54_WDS
-			| priv->wds
+	if (likely(((long) skb->data & 0x03) | priv->wds ))
+#else
+	if (likely(((long) skb->data & 0x03)))
 #endif
-		)){
+		{
 
 		/* get the number of bytes to add and re-allign */
 		offset = (4 - (long) skb->data) & 0x03;
diff -urN prism54-cvs-latest/ksrc/islpci_mgt.c prism54-cvs-latest_new/ksrc/islpci_mgt.c
--- prism54-cvs-latest/ksrc/islpci_mgt.c	Mon Nov  8 11:08:27 2004
+++ prism54-cvs-latest_new/ksrc/islpci_mgt.c	Mon Nov 15 20:42:08 2004
@@ -137,7 +137,7 @@
 			buf->size = MGMT_FRAME_SIZE;
 		}
 		if (buf->pci_addr == 0) {
-			buf->pci_addr = pci_map_single(priv->pdev, buf->mem,
+			buf->pci_addr = pci_map_single(priv->pdev, buf->skb,
 						       MGMT_FRAME_SIZE,
 						       PCI_DMA_FROMDEVICE);
 			if (!buf->pci_addr) {
@@ -348,7 +348,7 @@
 				buf->skb->len, PCI_DMA_FROMDEVICE);
 
 		/* Perform endianess conversion for PIMFOR header in-place. */
-		header = pimfor_decode_header(buf->mem, frag_len);
+		header = pimfor_decode_header(buf->skb, frag_len);
 		if (!header) {
 			printk(KERN_WARNING "%s: no PIMFOR header found\n",
 			       ndev->name);
