diff -uNr linux-wlan-ng-0.2.8/CHANGES linux-wlan-ng-svn-1832/CHANGES
--- linux-wlan-ng-0.2.8/CHANGES	2007-05-04 13:29:27.000000000 +0100
+++ linux-wlan-ng-svn-1832/CHANGES	2007-06-27 11:28:14.000000000 +0100
@@ -41,6 +41,8 @@
 * Intersil Corporation as part of PRISM(R) chipset product development.
 *
 * --------------------------------------------------------------------
+ - Tweaks to support Fedora 7 (Dan Williams)
+ - Support 2.6.22 kernels
 0.2.8
  - Fix up a pile of sparse warnings (Pavel Roskin)
  - Support 2.6.20 kernels (Pavel Roskin)
diff -uNr linux-wlan-ng-0.2.8/Configure linux-wlan-ng-svn-1832/Configure
--- linux-wlan-ng-0.2.8/Configure	2007-05-07 23:00:22.000000000 +0100
+++ linux-wlan-ng-svn-1832/Configure	2007-06-27 11:28:14.000000000 +0100
@@ -277,9 +277,9 @@
 fi
 write_bool KERN_2_6_17
 
-if [ $VERSION_CODE -gt `version 2 6 21` ] ; then
+if [ $VERSION_CODE -gt `version 2 6 22` ] ; then
     $ECHO "******* WARNING WARNING WARNING *******"
-    $ECHO "Kernels newer than 2.6.21.x are not supported."
+    $ECHO "Kernels newer than 2.6.22.x are not supported."
     $ECHO "******* WARNING WARNING WARNING *******"
 fi
 
diff -uNr linux-wlan-ng-0.2.8/config.in linux-wlan-ng-svn-1832/config.in
--- linux-wlan-ng-0.2.8/config.in	2007-02-09 21:51:58.000000000 +0000
+++ linux-wlan-ng-svn-1832/config.in	2007-06-27 11:28:14.000000000 +0100
@@ -1,6 +1,6 @@
 WLAN_VERSION=0
 WLAN_PATCHLEVEL=2
-WLAN_SUBLEVEL=8
+WLAN_SUBLEVEL=9
 WLAN_EXTRAVERSION=
 #LINUX_SRC=/usr/src/linux
 PCMCIA_SRC=
diff -uNr linux-wlan-ng-0.2.8/etc/udev/rules.d/40-prism2.rules linux-wlan-ng-svn-1832/etc/udev/rules.d/40-prism2.rules
--- linux-wlan-ng-0.2.8/etc/udev/rules.d/40-prism2.rules	2006-06-26 16:03:27.000000000 +0100
+++ linux-wlan-ng-svn-1832/etc/udev/rules.d/40-prism2.rules	2007-06-27 11:28:14.000000000 +0100
@@ -1 +1,2 @@
-ACTION=="add",BUS=="usb",DRIVER=="prism2_usb" ,RUN+="/etc/wlan/wlan-udev.sh %k"
+#ACTION=="add",BUS=="usb",DRIVER=="prism2_usb" ,RUN+="/etc/wlan/wlan-udev.sh %k"
+KERNEL="wlan*",ACTION=="add",DRIVERS=="prism2_usb" ,RUN+="/etc/wlan/wlan-udev.sh %k"
diff -uNr linux-wlan-ng-0.2.8/src/include/wlan/wlan_compat.h linux-wlan-ng-svn-1832/src/include/wlan/wlan_compat.h
--- linux-wlan-ng-0.2.8/src/include/wlan/wlan_compat.h	2007-02-28 15:44:02.000000000 +0000
+++ linux-wlan-ng-svn-1832/src/include/wlan/wlan_compat.h	2007-06-27 11:28:14.000000000 +0100
@@ -479,6 +479,13 @@
 #endif
 #endif /* _LINUX_PROC_FS_H */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
+#define skb_reset_mac_header(__a)  (__a)->mac.raw = (__a)->data
+#define SKB_MAC_HEADER(__a) (__a)->mac.raw
+#else
+#define SKB_MAC_HEADER(__a) (__a)->mac_header
+#endif
+
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
 #ifndef INIT_TQUEUE
 #define PREPARE_TQUEUE(_tq, _routine, _data)                    \
diff -uNr linux-wlan-ng-0.2.8/src/p80211/p80211conv.c linux-wlan-ng-svn-1832/src/p80211/p80211conv.c
--- linux-wlan-ng-0.2.8/src/p80211/p80211conv.c	2007-03-19 15:37:00.000000000 +0000
+++ linux-wlan-ng-svn-1832/src/p80211/p80211conv.c	2007-06-27 11:28:14.000000000 +0100
@@ -498,7 +498,7 @@
 	}
 
 	skb->protocol = eth_type_trans(skb, netdev);
-	skb->mac.raw = (unsigned char *) e_hdr; /* new MAC header */
+	SKB_MAC_HEADER(skb) = (unsigned char *) e_hdr; /* new MAC header */
 
         /* jkriegl: process signal and noise as set in hfa384x_int_rx() */
 	/* jkriegl: only process signal/noise if requested by iwspy */
diff -uNr linux-wlan-ng-0.2.8/src/p80211/p80211netdev.c linux-wlan-ng-svn-1832/src/p80211/p80211netdev.c
--- linux-wlan-ng-0.2.8/src/p80211/p80211netdev.c	2007-03-19 15:37:00.000000000 +0000
+++ linux-wlan-ng-svn-1832/src/p80211/p80211netdev.c	2007-06-27 11:28:14.000000000 +0100
@@ -389,7 +389,8 @@
 
 				/* set up various data fields */
 				skb->dev = dev;
-				skb->mac.raw = skb->data ;
+				skb_reset_mac_header(skb);
+
 				skb->ip_summed = CHECKSUM_NONE;
 				skb->pkt_type = PACKET_OTHERHOST;
 				skb->protocol = htons(ETH_P_80211_RAW); 
@@ -929,7 +930,7 @@
 		dev->open =		p80211knetdev_open;
 		dev->stop =		p80211knetdev_stop;
 
-#ifdef CONFIG_NET_WIRELESS
+#if defined(CONFIG_NET_WIRELESS) || defined(WIRELESS_EXT)
 #if ((WIRELESS_EXT < 17) && (WIRELESS_EXT < 21))
 		dev->get_wireless_stats = p80211wext_get_wireless_stats;
 #endif
diff -uNr linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x.c linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x.c
--- linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x.c	2007-03-19 15:37:00.000000000 +0000
+++ linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x.c	2007-06-27 11:28:14.000000000 +0100
@@ -3645,7 +3645,7 @@
 		/* the prism2 cards don't return the FCS */
 		datap = skb_put(skb, WLAN_CRC_LEN);
 		memset (datap, 0xff, WLAN_CRC_LEN);
-		skb->mac.raw = skb->data;
+		skb_reset_mac_header(skb);
 
 		/* Attach the rxmeta, set some stuff */
 		p80211skb_rxmeta_attach(wlandev, skb);
diff -uNr linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x_usb.c linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x_usb.c
--- linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x_usb.c	2007-03-19 15:37:00.000000000 +0000
+++ linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x_usb.c	2007-06-27 11:28:14.000000000 +0100
@@ -4255,7 +4255,7 @@
 		/* The prism2 series does not return the CRC */
 		memset(skb_put(skb, WLAN_CRC_LEN), 0xff, WLAN_CRC_LEN);
 
-		skb->mac.raw = skb->data;
+		skb_reset_mac_header(skb);
 
 		/* Attach the rxmeta, set some stuff */
 		p80211skb_rxmeta_attach(wlandev, skb);