Lines Matching defs:wvif

24 static int update_probe_tmpl(struct wfx_vif *wvif, struct cfg80211_scan_request *req)
26 struct ieee80211_vif *vif = wvif_to_vif(wvif);
29 skb = ieee80211_probereq_get(wvif->wdev->hw, vif->addr, NULL, 0,
35 wfx_hif_set_template_frame(wvif, skb, HIF_TMPLT_PRBREQ, 0);
40 static int send_scan_req(struct wfx_vif *wvif, struct cfg80211_scan_request *req, int start_idx)
42 struct ieee80211_vif *vif = wvif_to_vif(wvif);
55 wfx_tx_lock_flush(wvif->wdev);
56 wvif->scan_abort = false;
57 reinit_completion(&wvif->scan_complete);
58 ret = wfx_hif_scan(wvif, req, start_idx, i - start_idx);
60 wfx_tx_unlock(wvif->wdev);
63 ret = wait_for_completion_timeout(&wvif->scan_complete, 1 * HZ);
65 wfx_hif_stop_scan(wvif);
66 ret = wait_for_completion_timeout(&wvif->scan_complete, 1 * HZ);
67 dev_dbg(wvif->wdev->dev, "scan timeout (%d channels done)\n",
68 wvif->scan_nb_chan_done);
71 dev_err(wvif->wdev->dev, "scan didn't stop\n");
73 } else if (wvif->scan_abort) {
74 dev_notice(wvif->wdev->dev, "scan abort\n");
76 } else if (wvif->scan_nb_chan_done > i - start_idx) {
79 ret = wvif->scan_nb_chan_done;
82 wfx_hif_set_output_power(wvif, vif->bss_conf.txpower);
83 wfx_tx_unlock(wvif->wdev);
93 struct wfx_vif *wvif = container_of(work, struct wfx_vif, scan_work);
94 struct ieee80211_scan_request *hw_req = wvif->scan_req;
97 mutex_lock(&wvif->wdev->conf_mutex);
98 mutex_lock(&wvif->wdev->scan_lock);
99 if (wvif->join_in_progress) {
100 dev_info(wvif->wdev->dev, "abort in-progress REQ_JOIN");
101 wfx_reset(wvif);
103 update_probe_tmpl(wvif, &hw_req->req);
107 ret = send_scan_req(wvif, &hw_req->req, chan_cur);
115 dev_err(wvif->wdev->dev, "scan has not been able to start\n");
119 mutex_unlock(&wvif->wdev->scan_lock);
120 mutex_unlock(&wvif->wdev->conf_mutex);
121 wfx_ieee80211_scan_completed_compat(wvif->wdev->hw, ret < 0);
127 struct wfx_vif *wvif = (struct wfx_vif *)vif->drv_priv;
130 wvif->scan_req = hw_req;
131 schedule_work(&wvif->scan_work);
137 struct wfx_vif *wvif = (struct wfx_vif *)vif->drv_priv;
139 wvif->scan_abort = true;
140 wfx_hif_stop_scan(wvif);
143 void wfx_scan_complete(struct wfx_vif *wvif, int nb_chan_done)
145 wvif->scan_nb_chan_done = nb_chan_done;
146 complete(&wvif->scan_complete);
151 struct wfx_vif *wvif = container_of(work, struct wfx_vif, remain_on_channel_work);
152 struct ieee80211_channel *chan = wvif->remain_on_channel_chan;
153 int duration = wvif->remain_on_channel_duration;
157 mutex_lock(&wvif->wdev->conf_mutex);
158 mutex_lock(&wvif->wdev->scan_lock);
159 if (wvif->join_in_progress) {
160 dev_info(wvif->wdev->dev, "abort in-progress REQ_JOIN");
161 wfx_reset(wvif);
163 wfx_tx_flush(wvif->wdev);
165 reinit_completion(&wvif->scan_complete);
166 ret = wfx_hif_scan_uniq(wvif, chan, duration);
169 ieee80211_ready_on_channel(wvif->wdev->hw);
170 ret = wait_for_completion_timeout(&wvif->scan_complete,
173 wfx_hif_stop_scan(wvif);
174 ret = wait_for_completion_timeout(&wvif->scan_complete, 1 * HZ);
175 dev_dbg(wvif->wdev->dev, "roc timeout\n");
178 dev_err(wvif->wdev->dev, "roc didn't stop\n");
179 ieee80211_remain_on_channel_expired(wvif->wdev->hw);
181 mutex_unlock(&wvif->wdev->scan_lock);
182 mutex_unlock(&wvif->wdev->conf_mutex);
183 wfx_bh_request_tx(wvif->wdev);
191 struct wfx_vif *wvif = (struct wfx_vif *)vif->drv_priv;
196 wvif->remain_on_channel_duration = duration;
197 wvif->remain_on_channel_chan = chan;
198 schedule_work(&wvif->remain_on_channel_work);
204 struct wfx_vif *wvif = (struct wfx_vif *)vif->drv_priv;
206 wfx_hif_stop_scan(wvif);
207 flush_work(&wvif->remain_on_channel_work);