Lines Matching refs:sdata
41 void ieee80211_ocb_rx_no_sta(struct ieee80211_sub_if_data *sdata, in ieee80211_ocb_rx_no_sta() argument
45 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_rx_no_sta()
46 struct ieee80211_local *local = sdata->local; in ieee80211_ocb_rx_no_sta()
58 sdata->name, addr); in ieee80211_ocb_rx_no_sta()
62 ocb_dbg(sdata, "Adding new OCB station %pM\n", addr); in ieee80211_ocb_rx_no_sta()
65 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_ocb_rx_no_sta()
74 sta = sta_info_alloc(sdata, addr, GFP_ATOMIC); in ieee80211_ocb_rx_no_sta()
86 ieee80211_queue_work(&local->hw, &sdata->work); in ieee80211_ocb_rx_no_sta()
92 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_ocb_finish_sta() local
97 ocb_dbg(sdata, "Adding new IBSS station %pM (dev=%s)\n", in ieee80211_ocb_finish_sta()
98 addr, sdata->name); in ieee80211_ocb_finish_sta()
108 return sta_info_get(sdata, addr); in ieee80211_ocb_finish_sta()
112 static void ieee80211_ocb_housekeeping(struct ieee80211_sub_if_data *sdata) in ieee80211_ocb_housekeeping() argument
114 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_housekeeping()
116 ocb_dbg(sdata, "Running ocb housekeeping\n"); in ieee80211_ocb_housekeeping()
118 ieee80211_sta_expire(sdata, IEEE80211_OCB_PEER_INACTIVITY_LIMIT); in ieee80211_ocb_housekeeping()
124 void ieee80211_ocb_work(struct ieee80211_sub_if_data *sdata) in ieee80211_ocb_work() argument
126 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_work()
132 sdata_lock(sdata); in ieee80211_ocb_work()
148 ieee80211_ocb_housekeeping(sdata); in ieee80211_ocb_work()
150 sdata_unlock(sdata); in ieee80211_ocb_work()
155 struct ieee80211_sub_if_data *sdata = in ieee80211_ocb_housekeeping_timer() local
156 from_timer(sdata, t, u.ocb.housekeeping_timer); in ieee80211_ocb_housekeeping_timer()
157 struct ieee80211_local *local = sdata->local; in ieee80211_ocb_housekeeping_timer()
158 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_housekeeping_timer()
162 ieee80211_queue_work(&local->hw, &sdata->work); in ieee80211_ocb_housekeeping_timer()
165 void ieee80211_ocb_setup_sdata(struct ieee80211_sub_if_data *sdata) in ieee80211_ocb_setup_sdata() argument
167 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_setup_sdata()
175 int ieee80211_ocb_join(struct ieee80211_sub_if_data *sdata, in ieee80211_ocb_join() argument
178 struct ieee80211_local *local = sdata->local; in ieee80211_ocb_join()
179 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_join()
186 sdata->flags |= IEEE80211_SDATA_OPERATING_GMODE; in ieee80211_ocb_join()
187 sdata->smps_mode = IEEE80211_SMPS_OFF; in ieee80211_ocb_join()
188 sdata->needed_rx_chains = sdata->local->rx_chains; in ieee80211_ocb_join()
190 mutex_lock(&sdata->local->mtx); in ieee80211_ocb_join()
191 err = ieee80211_vif_use_channel(sdata, &setup->chandef, in ieee80211_ocb_join()
193 mutex_unlock(&sdata->local->mtx); in ieee80211_ocb_join()
197 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_ocb_join()
202 ieee80211_queue_work(&local->hw, &sdata->work); in ieee80211_ocb_join()
204 netif_carrier_on(sdata->dev); in ieee80211_ocb_join()
208 int ieee80211_ocb_leave(struct ieee80211_sub_if_data *sdata) in ieee80211_ocb_leave() argument
210 struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; in ieee80211_ocb_leave()
211 struct ieee80211_local *local = sdata->local; in ieee80211_ocb_leave()
215 sta_info_flush(sdata); in ieee80211_ocb_leave()
229 netif_carrier_off(sdata->dev); in ieee80211_ocb_leave()
230 clear_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_ocb_leave()
231 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_OCB); in ieee80211_ocb_leave()
233 mutex_lock(&sdata->local->mtx); in ieee80211_ocb_leave()
234 ieee80211_vif_release_channel(sdata); in ieee80211_ocb_leave()
235 mutex_unlock(&sdata->local->mtx); in ieee80211_ocb_leave()
237 skb_queue_purge(&sdata->skb_queue); in ieee80211_ocb_leave()
239 del_timer_sync(&sdata->u.ocb.housekeeping_timer); in ieee80211_ocb_leave()