--- a/net/wireless/wext-core.c +++ b/net/wireless/wext-core.c @@ -367,6 +367,7 @@ subsys_initcall(wireless_nlevent_init); /* Process events generated by the wireless layer or the driver. */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) static void wireless_nlevent_process(struct work_struct *work) { struct sk_buff *skb; @@ -382,6 +383,20 @@ rtnl_unlock(); } +#else +static void wireless_nlevent_process(struct work_struct *work) +{ + struct sk_buff *skb; + struct net *net; + + rtnl_lock(); + + while ((skb = skb_dequeue(&net->wext_nlevents))) + rtnl_notify(skb, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC); + + rtnl_unlock(); +} +#endif static DECLARE_WORK(wireless_nlevent_work, wireless_nlevent_process);