forked from Minki/linux
qtnfmac: implement dump_station support for STA mode
Current implementation of dump_station cfg80211 callback supports AP mode only. Add support for STA mode as well: by default in STA mode this callback is supposed to return AP on managed interface. Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
8804ea9e15
commit
e1c02eb16a
@ -480,19 +480,31 @@ qtnf_dump_station(struct wiphy *wiphy, struct net_device *dev,
|
||||
const struct qtnf_sta_node *sta_node;
|
||||
int ret;
|
||||
|
||||
sta_node = qtnf_sta_list_lookup_index(&vif->sta_list, idx);
|
||||
switch (vif->wdev.iftype) {
|
||||
case NL80211_IFTYPE_STATION:
|
||||
if (idx != 0 || !vif->wdev.current_bss)
|
||||
return -ENOENT;
|
||||
|
||||
if (unlikely(!sta_node))
|
||||
return -ENOENT;
|
||||
ether_addr_copy(mac, vif->bssid);
|
||||
break;
|
||||
case NL80211_IFTYPE_AP:
|
||||
sta_node = qtnf_sta_list_lookup_index(&vif->sta_list, idx);
|
||||
if (unlikely(!sta_node))
|
||||
return -ENOENT;
|
||||
|
||||
ether_addr_copy(mac, sta_node->mac_addr);
|
||||
ether_addr_copy(mac, sta_node->mac_addr);
|
||||
break;
|
||||
default:
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
ret = qtnf_cmd_get_sta_info(vif, sta_node->mac_addr, sinfo);
|
||||
ret = qtnf_cmd_get_sta_info(vif, mac, sinfo);
|
||||
|
||||
if (unlikely(ret == -ENOENT)) {
|
||||
qtnf_sta_list_del(vif, mac);
|
||||
cfg80211_del_sta(vif->netdev, mac, GFP_KERNEL);
|
||||
sinfo->filled = 0;
|
||||
if (vif->wdev.iftype == NL80211_IFTYPE_AP) {
|
||||
if (ret == -ENOENT) {
|
||||
cfg80211_del_sta(vif->netdev, mac, GFP_KERNEL);
|
||||
sinfo->filled = 0;
|
||||
}
|
||||
}
|
||||
|
||||
sinfo->generation = vif->generation;
|
||||
|
Loading…
Reference in New Issue
Block a user