wil6210: multiple VIFs support for connections and data path
Track the connection status per-VIF. The data path code is also updated to support multiple VIFs. This includes RX and TX VRING management, NAPI poll loops, RX reordering and related code. Power management code used to check if the main interface is up or based on connection state of the main interface, adapt this code to take all VIFs into account. Signed-off-by: Lior David <liord@codeaurora.org> Signed-off-by: Maya Erez <merez@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:

zatwierdzone przez
Kalle Valo

rodzic
404bbb3cca
commit
5bd6098252
@@ -886,7 +886,7 @@ static void wmi_evt_connect(struct wil6210_vif *vif, int id, void *d, int len)
|
||||
|
||||
if ((wdev->iftype == NL80211_IFTYPE_STATION) ||
|
||||
(wdev->iftype == NL80211_IFTYPE_P2P_CLIENT)) {
|
||||
if (!test_bit(wil_status_fwconnecting, wil->status)) {
|
||||
if (!test_bit(wil_vif_fwconnecting, vif->status)) {
|
||||
wil_err(wil, "Not in connecting state\n");
|
||||
mutex_unlock(&wil->mutex);
|
||||
return;
|
||||
@@ -965,15 +965,16 @@ static void wmi_evt_connect(struct wil6210_vif *vif, int id, void *d, int len)
|
||||
|
||||
wil->sta[evt->cid].status = wil_sta_connected;
|
||||
wil->sta[evt->cid].aid = evt->aid;
|
||||
set_bit(wil_status_fwconnected, wil->status);
|
||||
wil_update_net_queues_bh(wil, NULL, false);
|
||||
if (!test_and_set_bit(wil_vif_fwconnected, vif->status))
|
||||
atomic_inc(&wil->connected_vifs);
|
||||
wil_update_net_queues_bh(wil, vif, NULL, false);
|
||||
|
||||
out:
|
||||
if (rc) {
|
||||
wil->sta[evt->cid].status = wil_sta_unused;
|
||||
wil->sta[evt->cid].mid = U8_MAX;
|
||||
}
|
||||
clear_bit(wil_status_fwconnecting, wil->status);
|
||||
clear_bit(wil_vif_fwconnecting, vif->status);
|
||||
mutex_unlock(&wil->mutex);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user