diff -Naur 2009_0521_RT2860_Linux_STA_V2.1.2.0/os/linux/config.mk 2009_0521_RT2860_Linux_STA_V2.1.2.0-patched-clean/os/linux/config.mk
--- 2009_0521_RT2860_Linux_STA_V2.1.2.0/os/linux/config.mk	2009-03-27 01:20:43.000000000 +0100
+++ 2009_0521_RT2860_Linux_STA_V2.1.2.0-patched-clean/os/linux/config.mk	2009-09-17 04:36:08.000000000 +0200
@@ -6,7 +6,7 @@
 
 #ifdef WPA_SUPPLICANT_SUPPORT
 # Support Wpa_Supplicant
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y
 #endif // WPA_SUPPLICANT_SUPPORT //
 
 #ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
diff -Naur 2009_0521_RT2860_Linux_STA_V2.1.2.0/os/linux/rt_linux.c 2009_0521_RT2860_Linux_STA_V2.1.2.0-patched-clean/os/linux/rt_linux.c
--- 2009_0521_RT2860_Linux_STA_V2.1.2.0/os/linux/rt_linux.c	2009-04-23 12:10:14.000000000 +0200
+++ 2009_0521_RT2860_Linux_STA_V2.1.2.0-patched-clean/os/linux/rt_linux.c	2009-09-17 04:46:45.000000000 +0200
@@ -1553,12 +1553,14 @@
 	unregister_netdev(pNetDev);
 }
 
+static struct net_device_ops RtmpNetAdpNetDevOps;
 
 int RtmpOSNetDevAttach(
 	IN PNET_DEV pNetDev, 
 	IN RTMP_OS_NETDEV_OP_HOOK *pDevOpHook)
 {	
 	int ret, rtnl_locked = FALSE;
+	memset(&RtmpNetAdpNetDevOps,0,sizeof(struct net_device_ops));
 
 	DBGPRINT(RT_DEBUG_TRACE, ("RtmpOSNetDevAttach()--->\n"));
 	// If we need hook some callback function to the net device structrue, now do it.
@@ -1567,16 +1569,26 @@
 		PRTMP_ADAPTER pAd = NULL;
 	
 		GET_PAD_FROM_NET_DEV(pAd, pNetDev);	
+#if 1
+		RtmpNetAdpNetDevOps.ndo_open       = pDevOpHook->open;
+		RtmpNetAdpNetDevOps.ndo_stop       = pDevOpHook->stop;
+		RtmpNetAdpNetDevOps.ndo_start_xmit = (HARD_START_XMIT_FUNC)(pDevOpHook->xmit);
+#else
 		pNetDev->open			= pDevOpHook->open;
 		pNetDev->stop			= pDevOpHook->stop;
 		pNetDev->hard_start_xmit	= (HARD_START_XMIT_FUNC)(pDevOpHook->xmit);
 		pNetDev->do_ioctl		= pDevOpHook->ioctl;
-		
+#endif		
 		/* if you don't implement get_stats, just leave the callback function as NULL, a dummy 
 		     function will make kernel panic.
 		*/
 		if (pDevOpHook->get_stats)
+#if 1
+			RtmpNetAdpNetDevOps.ndo_get_stats = pDevOpHook->get_stats; 
+#else
 			pNetDev->get_stats = pDevOpHook->get_stats;
+#endif		
+		pNetDev->netdev_ops = &RtmpNetAdpNetDevOps;
 
 		/* OS specific flags, here we used to indicate if we are virtual interface */
 		pNetDev->priv_flags = pDevOpHook->priv_flags; 
@@ -1609,7 +1621,7 @@
 		rtnl_locked = pDevOpHook->needProtcted;
 	}
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
 	pNetDev->validate_addr = NULL;
 #endif
 
