diff -udpr rtl8187_linux_26.1010.0622.2006/beta-8187/r8187.h rtl8187_linux_26.1010.0622.2006_2.6.32/beta-8187/r8187.h
--- rtl8187_linux_26.1010.0622.2006/beta-8187/r8187.h	2010-01-31 11:32:06.000000000 -0500
+++ rtl8187_linux_26.1010.0622.2006_2.6.32/beta-8187/r8187.h	2010-01-31 09:28:57.000000000 -0500
@@ -43,12 +43,14 @@
 #include <linux/if_arp.h>
 #include <linux/random.h>
 #include <linux/version.h>
-#include <asm/io.h>
-#include <asm/semaphore.h>
 
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
+#include <asm/io.h>
+#include <asm/semaphore.h>
 #include <linux/config.h>
 #else
+#include <linux/io.h>
+#include <linux/semaphore.h>
 #include <linux/autoconf.h>
 #endif
 
diff -udpr rtl8187_linux_26.1010.0622.2006/beta-8187/r8187_core.c rtl8187_linux_26.1010.0622.2006_2.6.32/beta-8187/r8187_core.c
--- rtl8187_linux_26.1010.0622.2006/beta-8187/r8187_core.c	2010-01-31 11:32:05.000000000 -0500
+++ rtl8187_linux_26.1010.0622.2006_2.6.32/beta-8187/r8187_core.c	2010-01-31 11:15:27.000000000 -0500
@@ -1893,8 +1893,6 @@ short rtl8180_init(struct net_device *de
 		DMESG("Reported EEPROM chip is a 93c46 (1Kbit)");
 	}
 
-	dev->get_stats = rtl8180_stats;
-
 	dev->dev_addr[0]=eprom_read(dev,MAC_ADR) & 0xff;
 	dev->dev_addr[1]=(eprom_read(dev,MAC_ADR) & 0xff00)>>8;
 	dev->dev_addr[2]=eprom_read(dev,MAC_ADR+1) & 0xff;
@@ -2597,6 +2595,19 @@ void rtl8180_irq_rx_tasklet(struct r8180
      ---------------------------- USB_STUFF---------------------------
 *****************************************************************************/
 
+#ifdef HAVE_NET_DEVICE_OPS
+static const struct net_device_ops rtl8180_netdev_ops = {
+    .ndo_open = rtl8180_open,
+    .ndo_stop = rtl8180_close,
+    .ndo_get_stats = rtl8180_stats,
+    .ndo_tx_timeout = tx_timeout,
+    .ndo_do_ioctl = rtl8180_ioctl,
+    .ndo_set_multicast_list = r8180_set_multicast,
+    .ndo_set_mac_address = r8180_set_mac_adr,
+    .ndo_start_xmit = ieee80211_xmit_rtl7,
+//    .ndo_start_xmit = ieee80211_xmit,
+};
+#endif
 
 static int __devinit rtl8187_usb_probe(struct usb_interface *intf,
 			 const struct usb_device_id *id)
@@ -2622,14 +2633,20 @@ static int __devinit rtl8187_usb_probe(s
 
 	priv->udev=udev;
 
+#ifdef HAVE_NET_DEVICE_OPS
+	dev->netdev_ops = &rtl8180_netdev_ops;
+#else
 	dev->open = rtl8180_open;
 	dev->stop = rtl8180_close;
+	dev->get_stats = rtl8180_stats;
 	//dev->hard_start_xmit = rtl8180_8023_hard_start_xmit;
 	dev->tx_timeout = tx_timeout;
 	dev->wireless_handlers = &r8180_wx_handlers_def;
 	dev->do_ioctl = rtl8180_ioctl;
 	dev->set_multicast_list = r8180_set_multicast;
 	dev->set_mac_address = r8180_set_mac_adr;
+#endif
+
 #if WIRELESS_EXT >= 12
 #if WIRELESS_EXT < 17
 	dev->get_wireless_stats = r8180_get_wireless_stats;
diff -udpr rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_module.c rtl8187_linux_26.1010.0622.2006_2.6.32/ieee80211/ieee80211_module.c
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_module.c	2010-01-31 11:32:06.000000000 -0500
+++ rtl8187_linux_26.1010.0622.2006_2.6.32/ieee80211/ieee80211_module.c	2010-01-31 09:25:48.000000000 -0500
@@ -117,8 +117,12 @@ struct net_device *alloc_ieee80211_rtl7(
 		IEEE80211_ERROR("Unable to network device.\n");
 		goto failed;
 	}
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) 
 	ieee = netdev_priv(dev);
-	dev->hard_start_xmit = ieee80211_xmit_rtl7;
+#else
+	ieee = (struct ieee80211_device *)dev->priv;
+#endif
 
 	ieee->dev = dev;
 
diff -udpr rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_rx.c rtl8187_linux_26.1010.0622.2006_2.6.32/ieee80211/ieee80211_rx.c
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_rx.c	2010-01-31 11:28:19.000000000 -0500
+++ rtl8187_linux_26.1010.0622.2006_2.6.32/ieee80211/ieee80211_rx.c	2010-01-31 11:49:16.000000000 -0500
@@ -104,7 +104,12 @@ static inline void ieee80211_monitor_rx_
 hdr->f.did = LWNG_CAP_DID_BASE | (i << 12); \
 hdr->f.status = s; hdr->f.len = l; hdr->f.data = d
 		LWNG_SETVAL(hosttime, 1, 0, 4, jiffies);
-		LWNG_SETVAL(mactime, 2, 0, 4, ((u32)rx_stats->mac_time));
+
+		hdr->mactime.did = LWNG_CAP_DID_BASE | (2 << 12);
+		hdr->mactime.status = 0;
+		hdr->mactime.len = 4;
+		hdr->mactime.data = rx_stats->mac_time[0];
+
 		LWNG_SETVAL(channel, 3, 1 /* no value */, 4, 0);
 		LWNG_SETVAL(rssi, 4, 1 /* no value */, 4, 0);
 		LWNG_SETVAL(sq, 5, 1 /* no value */, 4, 0);
diff -udpr rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_tx.c rtl8187_linux_26.1010.0622.2006_2.6.32/ieee80211/ieee80211_tx.c
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_tx.c	2010-01-31 11:32:06.000000000 -0500
+++ rtl8187_linux_26.1010.0622.2006_2.6.32/ieee80211/ieee80211_tx.c	2010-01-31 11:17:55.000000000 -0500
@@ -511,3 +511,4 @@ int ieee80211_xmit_rtl7(struct sk_buff *
 }
 
 EXPORT_SYMBOL(ieee80211_txb_free_rtl7);
+EXPORT_SYMBOL(ieee80211_xmit_rtl7);
