Loading net/core/wireless.c +23 −1 Original line number Original line Diff line number Diff line Loading @@ -82,6 +82,7 @@ #include <linux/init.h> /* for __init */ #include <linux/init.h> /* for __init */ #include <linux/if_arp.h> /* ARPHRD_ETHER */ #include <linux/if_arp.h> /* ARPHRD_ETHER */ #include <linux/etherdevice.h> /* compare_ether_addr */ #include <linux/etherdevice.h> /* compare_ether_addr */ #include <linux/interrupt.h> #include <linux/wireless.h> /* Pretty obvious */ #include <linux/wireless.h> /* Pretty obvious */ #include <net/iw_handler.h> /* New driver API */ #include <net/iw_handler.h> /* New driver API */ Loading Loading @@ -1842,6 +1843,18 @@ int wireless_rtnetlink_set(struct net_device * dev, */ */ #ifdef WE_EVENT_RTNETLINK #ifdef WE_EVENT_RTNETLINK static struct sk_buff_head wireless_nlevent_queue; static void wireless_nlevent_process(unsigned long data) { struct sk_buff *skb; while ((skb = skb_dequeue(&wireless_nlevent_queue))) netlink_broadcast(rtnl, skb, 0, RTNLGRP_LINK, GFP_ATOMIC); } static DECLARE_TASKLET(wireless_nlevent_tasklet, wireless_nlevent_process, 0); /* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */ /* /* * Fill a rtnetlink message with our event data. * Fill a rtnetlink message with our event data. Loading Loading @@ -1904,8 +1917,17 @@ static inline void rtmsg_iwinfo(struct net_device * dev, return; return; } } NETLINK_CB(skb).dst_group = RTNLGRP_LINK; NETLINK_CB(skb).dst_group = RTNLGRP_LINK; netlink_broadcast(rtnl, skb, 0, RTNLGRP_LINK, GFP_ATOMIC); skb_queue_tail(&wireless_nlevent_queue, skb); tasklet_schedule(&wireless_nlevent_tasklet); } } static int __init wireless_nlevent_init(void) { skb_queue_head_init(&wireless_nlevent_queue); return 0; } subsys_initcall(wireless_nlevent_init); #endif /* WE_EVENT_RTNETLINK */ #endif /* WE_EVENT_RTNETLINK */ /* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */ Loading Loading
net/core/wireless.c +23 −1 Original line number Original line Diff line number Diff line Loading @@ -82,6 +82,7 @@ #include <linux/init.h> /* for __init */ #include <linux/init.h> /* for __init */ #include <linux/if_arp.h> /* ARPHRD_ETHER */ #include <linux/if_arp.h> /* ARPHRD_ETHER */ #include <linux/etherdevice.h> /* compare_ether_addr */ #include <linux/etherdevice.h> /* compare_ether_addr */ #include <linux/interrupt.h> #include <linux/wireless.h> /* Pretty obvious */ #include <linux/wireless.h> /* Pretty obvious */ #include <net/iw_handler.h> /* New driver API */ #include <net/iw_handler.h> /* New driver API */ Loading Loading @@ -1842,6 +1843,18 @@ int wireless_rtnetlink_set(struct net_device * dev, */ */ #ifdef WE_EVENT_RTNETLINK #ifdef WE_EVENT_RTNETLINK static struct sk_buff_head wireless_nlevent_queue; static void wireless_nlevent_process(unsigned long data) { struct sk_buff *skb; while ((skb = skb_dequeue(&wireless_nlevent_queue))) netlink_broadcast(rtnl, skb, 0, RTNLGRP_LINK, GFP_ATOMIC); } static DECLARE_TASKLET(wireless_nlevent_tasklet, wireless_nlevent_process, 0); /* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */ /* /* * Fill a rtnetlink message with our event data. * Fill a rtnetlink message with our event data. Loading Loading @@ -1904,8 +1917,17 @@ static inline void rtmsg_iwinfo(struct net_device * dev, return; return; } } NETLINK_CB(skb).dst_group = RTNLGRP_LINK; NETLINK_CB(skb).dst_group = RTNLGRP_LINK; netlink_broadcast(rtnl, skb, 0, RTNLGRP_LINK, GFP_ATOMIC); skb_queue_tail(&wireless_nlevent_queue, skb); tasklet_schedule(&wireless_nlevent_tasklet); } } static int __init wireless_nlevent_init(void) { skb_queue_head_init(&wireless_nlevent_queue); return 0; } subsys_initcall(wireless_nlevent_init); #endif /* WE_EVENT_RTNETLINK */ #endif /* WE_EVENT_RTNETLINK */ /* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */ Loading