ibss.c (82d048186e403f36e083b37ad42aa90abb7dcaac) | ibss.c (5bb644a0fd25a5e083ecbfaa92a211db99aa6ef7) |
---|---|
1/* 2 * IBSS mode implementation 3 * Copyright 2003-2008, Jouni Malinen <j@w1.fi> 4 * Copyright 2004, Instant802 Networks, Inc. 5 * Copyright 2005, Devicescape Software, Inc. 6 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 8 * Copyright 2009, Johannes Berg <johannes@sipsolutions.net> --- 723 unchanged lines hidden (view full) --- 732static void ieee80211_ibss_work(struct work_struct *work) 733{ 734 struct ieee80211_sub_if_data *sdata = 735 container_of(work, struct ieee80211_sub_if_data, u.ibss.work); 736 struct ieee80211_local *local = sdata->local; 737 struct ieee80211_if_ibss *ifibss; 738 struct sk_buff *skb; 739 | 1/* 2 * IBSS mode implementation 3 * Copyright 2003-2008, Jouni Malinen <j@w1.fi> 4 * Copyright 2004, Instant802 Networks, Inc. 5 * Copyright 2005, Devicescape Software, Inc. 6 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 8 * Copyright 2009, Johannes Berg <johannes@sipsolutions.net> --- 723 unchanged lines hidden (view full) --- 732static void ieee80211_ibss_work(struct work_struct *work) 733{ 734 struct ieee80211_sub_if_data *sdata = 735 container_of(work, struct ieee80211_sub_if_data, u.ibss.work); 736 struct ieee80211_local *local = sdata->local; 737 struct ieee80211_if_ibss *ifibss; 738 struct sk_buff *skb; 739 |
740 if (WARN_ON(local->suspended)) 741 return; 742 |
|
740 if (!netif_running(sdata->dev)) 741 return; 742 743 if (local->sw_scanning || local->hw_scanning) 744 return; 745 746 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_ADHOC)) 747 return; --- 20 unchanged lines hidden (view full) --- 768 769static void ieee80211_ibss_timer(unsigned long data) 770{ 771 struct ieee80211_sub_if_data *sdata = 772 (struct ieee80211_sub_if_data *) data; 773 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 774 struct ieee80211_local *local = sdata->local; 775 | 743 if (!netif_running(sdata->dev)) 744 return; 745 746 if (local->sw_scanning || local->hw_scanning) 747 return; 748 749 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_ADHOC)) 750 return; --- 20 unchanged lines hidden (view full) --- 771 772static void ieee80211_ibss_timer(unsigned long data) 773{ 774 struct ieee80211_sub_if_data *sdata = 775 (struct ieee80211_sub_if_data *) data; 776 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 777 struct ieee80211_local *local = sdata->local; 778 |
779 if (local->quiescing) { 780 ifibss->timer_running = true; 781 return; 782 } 783 |
|
776 set_bit(IEEE80211_IBSS_REQ_RUN, &ifibss->request); 777 queue_work(local->hw.workqueue, &ifibss->work); 778} 779 | 784 set_bit(IEEE80211_IBSS_REQ_RUN, &ifibss->request); 785 queue_work(local->hw.workqueue, &ifibss->work); 786} 787 |
788#ifdef CONFIG_PM 789void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata) 790{ 791 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 792 793 cancel_work_sync(&ifibss->work); 794 if (del_timer_sync(&ifibss->timer)) 795 ifibss->timer_running = true; 796} 797 798void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata) 799{ 800 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 801 802 if (ifibss->timer_running) { 803 add_timer(&ifibss->timer); 804 ifibss->timer_running = false; 805 } 806} 807#endif 808 |
|
780void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata) 781{ 782 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 783 784 INIT_WORK(&ifibss->work, ieee80211_ibss_work); 785 setup_timer(&ifibss->timer, ieee80211_ibss_timer, 786 (unsigned long) sdata); 787 skb_queue_head_init(&ifibss->skb_queue); --- 131 unchanged lines hidden --- | 809void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata) 810{ 811 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 812 813 INIT_WORK(&ifibss->work, ieee80211_ibss_work); 814 setup_timer(&ifibss->timer, ieee80211_ibss_timer, 815 (unsigned long) sdata); 816 skb_queue_head_init(&ifibss->skb_queue); --- 131 unchanged lines hidden --- |