mac80211: add p2p device type support
When a driver advertises p2p device support, mac80211 will handle it, but internally it will rewrite the interface type to STA/AP rather than P2P-STA/GO since otherwise a lot of paths need to be touched that are otherwise identical. A p2p boolean tells drivers whether or not a given interface will be used for p2p or not. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
074ac8df9f
commit
2ca27bcff7
@@ -1151,15 +1151,26 @@ static int ieee80211_scan(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct cfg80211_scan_request *req)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
|
||||
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
|
||||
if (sdata->vif.type != NL80211_IFTYPE_STATION &&
|
||||
sdata->vif.type != NL80211_IFTYPE_ADHOC &&
|
||||
sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
|
||||
(sdata->vif.type != NL80211_IFTYPE_AP || sdata->u.ap.beacon))
|
||||
switch (ieee80211_vif_type_p2p(&sdata->vif)) {
|
||||
case NL80211_IFTYPE_STATION:
|
||||
case NL80211_IFTYPE_ADHOC:
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
break;
|
||||
case NL80211_IFTYPE_P2P_GO:
|
||||
if (sdata->local->ops->hw_scan)
|
||||
break;
|
||||
/* FIXME: implement NoA while scanning in software */
|
||||
return -EOPNOTSUPP;
|
||||
case NL80211_IFTYPE_AP:
|
||||
if (sdata->u.ap.beacon)
|
||||
return -EOPNOTSUPP;
|
||||
break;
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
return ieee80211_request_scan(sdata, req);
|
||||
}
|
||||
|
Reference in New Issue
Block a user