diff -Naur 2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/rt_linux.c 2009_1106_RT3070_Linux_STA_V2.1.1.0-patched/os/linux/rt_linux.c --- 2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/rt_linux.c 2009-05-21 05:33:56.000000000 +0200 +++ 2009_1106_RT3070_Linux_STA_V2.1.1.0-patched/os/linux/rt_linux.c 2009-11-15 14:24:56.000000000 +0100 @@ -1494,6 +1494,17 @@ unregister_netdev(pNetDev); } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) +static struct net_device_ops rtNetAdpNetDevOps = +{ + .ndo_open = NULL, + .ndo_stop = NULL, + .ndo_start_xmit = NULL, + .ndo_get_stats = NULL, + .ndo_do_ioctl = NULL, + //.validate_addr = NULL, +}; +#endif int RtmpOSNetDevAttach( IN PNET_DEV pNetDev, @@ -1507,6 +1518,14 @@ { PRTMP_ADAPTER pAd = RTMP_OS_NETDEV_GET_PRIV(pNetDev); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) + rtNetAdpNetDevOps.ndo_open = pDevOpHook->open; + rtNetAdpNetDevOps.ndo_stop = pDevOpHook->stop; + rtNetAdpNetDevOps.ndo_start_xmit = (HARD_START_XMIT_FUNC)(pDevOpHook->xmit); + rtNetAdpNetDevOps.ndo_get_stats = pDevOpHook->get_stats; + rtNetAdpNetDevOps.ndo_do_ioctl = pDevOpHook->ioctl; + pNetDev->netdev_ops = &rtNetAdpNetDevOps; +#else pNetDev->open = pDevOpHook->open; pNetDev->stop = pDevOpHook->stop; pNetDev->hard_start_xmit = (HARD_START_XMIT_FUNC)(pDevOpHook->xmit); @@ -1517,7 +1536,7 @@ */ if (pDevOpHook->get_stats) pNetDev->get_stats = pDevOpHook->get_stats; - +#endif /* OS specific flags, here we used to indicate if we are virtual interface */ pNetDev->priv_flags = pDevOpHook->priv_flags; @@ -1549,7 +1568,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