mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
cfg80211: remove WDS code
Remove all the code that was there to configure WDS interfaces, now that there's no way to reach it anymore. Link: https://lore.kernel.org/r/20201109105103.8f5b98e4068d.I5f5129041649ef2862b69683574bb3344743727b@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
70d9c59909
commit
e7e0517c10
@ -3745,8 +3745,6 @@ struct mgmt_frame_regs {
|
||||
* @get_tx_power: store the current TX power into the dbm variable;
|
||||
* return 0 if successful
|
||||
*
|
||||
* @set_wds_peer: set the WDS peer for a WDS interface
|
||||
*
|
||||
* @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
|
||||
* functions to adjust rfkill hw state
|
||||
*
|
||||
@ -4067,9 +4065,6 @@ struct cfg80211_ops {
|
||||
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int *dbm);
|
||||
|
||||
int (*set_wds_peer)(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *addr);
|
||||
|
||||
void (*rfkill_poll)(struct wiphy *wiphy);
|
||||
|
||||
#ifdef CONFIG_NL80211_TESTMODE
|
||||
|
@ -757,7 +757,8 @@
|
||||
* of any other interfaces, and other interfaces will again take
|
||||
* precedence when they are used.
|
||||
*
|
||||
* @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface.
|
||||
* @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface
|
||||
* (no longer supported).
|
||||
*
|
||||
* @NL80211_CMD_SET_MULTICAST_TO_UNICAST: Configure if this AP should perform
|
||||
* multicast to unicast conversion. When enabled, all multicast packets
|
||||
|
@ -530,10 +530,10 @@ int cfg80211_chandef_dfs_required(struct wiphy *wiphy,
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
case NL80211_IFTYPE_MONITOR:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_P2P_DEVICE:
|
||||
case NL80211_IFTYPE_NAN:
|
||||
break;
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
case NUM_NL80211_IFTYPES:
|
||||
WARN_ON(1);
|
||||
@ -677,12 +677,12 @@ bool cfg80211_beaconing_iface_active(struct wireless_dev *wdev)
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
case NL80211_IFTYPE_MONITOR:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_P2P_DEVICE:
|
||||
/* Can NAN type be considered as beaconing interface? */
|
||||
case NL80211_IFTYPE_NAN:
|
||||
break;
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NUM_NL80211_IFTYPES:
|
||||
WARN_ON(1);
|
||||
}
|
||||
@ -1324,12 +1324,12 @@ cfg80211_get_chan_state(struct wireless_dev *wdev,
|
||||
break;
|
||||
case NL80211_IFTYPE_MONITOR:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_P2P_DEVICE:
|
||||
case NL80211_IFTYPE_NAN:
|
||||
/* these interface types don't really have a channel */
|
||||
return;
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NUM_NL80211_IFTYPES:
|
||||
WARN_ON(1);
|
||||
}
|
||||
|
@ -631,10 +631,8 @@ static int wiphy_verify_combinations(struct wiphy *wiphy)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_WIRELESS_WDS
|
||||
if (WARN_ON(all_iftypes & BIT(NL80211_IFTYPE_WDS)))
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
/* You can't even choose that many! */
|
||||
if (WARN_ON(cnt < c->max_interfaces))
|
||||
@ -675,10 +673,8 @@ int wiphy_register(struct wiphy *wiphy)
|
||||
!(wiphy->nan_supported_bands & BIT(NL80211_BAND_2GHZ)))))
|
||||
return -EINVAL;
|
||||
|
||||
#ifndef CONFIG_WIRELESS_WDS
|
||||
if (WARN_ON(wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)))
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
if (WARN_ON(wiphy->pmsr_capa && !wiphy->pmsr_capa->ftm.supported))
|
||||
return -EINVAL;
|
||||
@ -1202,9 +1198,6 @@ void __cfg80211_leave(struct cfg80211_registered_device *rdev,
|
||||
case NL80211_IFTYPE_OCB:
|
||||
__cfg80211_leave_ocb(rdev, dev);
|
||||
break;
|
||||
case NL80211_IFTYPE_WDS:
|
||||
/* must be handled by mac80211/driver, has no APIs */
|
||||
break;
|
||||
case NL80211_IFTYPE_P2P_DEVICE:
|
||||
case NL80211_IFTYPE_NAN:
|
||||
/* cannot happen, has no netdev */
|
||||
@ -1214,6 +1207,7 @@ void __cfg80211_leave(struct cfg80211_registered_device *rdev,
|
||||
/* nothing to do */
|
||||
break;
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NUM_NL80211_IFTYPES:
|
||||
/* invalid */
|
||||
break;
|
||||
|
@ -1885,7 +1885,6 @@ static int nl80211_add_commands_unsplit(struct cfg80211_registered_device *rdev,
|
||||
if (nla_put_u32(msg, i, NL80211_CMD_SET_CHANNEL))
|
||||
goto nla_put_failure;
|
||||
}
|
||||
CMD(set_wds_peer, SET_WDS_PEER);
|
||||
if (rdev->wiphy.flags & WIPHY_FLAG_SUPPORTS_TDLS) {
|
||||
CMD(tdls_mgmt, TDLS_MGMT);
|
||||
CMD(tdls_oper, TDLS_OPER);
|
||||
@ -2863,8 +2862,8 @@ static int parse_txq_params(struct nlattr *tb[],
|
||||
static bool nl80211_can_set_dev_channel(struct wireless_dev *wdev)
|
||||
{
|
||||
/*
|
||||
* You can only set the channel explicitly for WDS interfaces,
|
||||
* all others have their channel managed via their respective
|
||||
* You can only set the channel explicitly for some interfaces,
|
||||
* most have their channel managed via their respective
|
||||
* "establish a connection" command (connect, join, ...)
|
||||
*
|
||||
* For AP/GO and mesh mode, the channel can be set with the
|
||||
@ -3069,29 +3068,6 @@ static int nl80211_set_channel(struct sk_buff *skb, struct genl_info *info)
|
||||
return __nl80211_set_channel(rdev, netdev, info);
|
||||
}
|
||||
|
||||
static int nl80211_set_wds_peer(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
struct net_device *dev = info->user_ptr[1];
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
const u8 *bssid;
|
||||
|
||||
if (!info->attrs[NL80211_ATTR_MAC])
|
||||
return -EINVAL;
|
||||
|
||||
if (netif_running(dev))
|
||||
return -EBUSY;
|
||||
|
||||
if (!rdev->ops->set_wds_peer)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (wdev->iftype != NL80211_IFTYPE_WDS)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
||||
return rdev_set_wds_peer(rdev, dev, bssid);
|
||||
}
|
||||
|
||||
static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev;
|
||||
@ -15173,14 +15149,6 @@ static const struct genl_small_ops nl80211_small_ops[] = {
|
||||
.internal_flags = NL80211_FLAG_NEED_NETDEV |
|
||||
NL80211_FLAG_NEED_RTNL,
|
||||
},
|
||||
{
|
||||
.cmd = NL80211_CMD_SET_WDS_PEER,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = nl80211_set_wds_peer,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
.internal_flags = NL80211_FLAG_NEED_NETDEV |
|
||||
NL80211_FLAG_NEED_RTNL,
|
||||
},
|
||||
{
|
||||
.cmd = NL80211_CMD_JOIN_MESH,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
|
@ -582,16 +582,6 @@ static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *dev, const u8 *addr)
|
||||
{
|
||||
int ret;
|
||||
trace_rdev_set_wds_peer(&rdev->wiphy, dev, addr);
|
||||
ret = rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr);
|
||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int
|
||||
rdev_set_multicast_to_unicast(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *dev,
|
||||
|
@ -838,11 +838,6 @@ DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_del_mpath,
|
||||
TP_ARGS(wiphy, netdev, mac)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_set_wds_peer,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *mac),
|
||||
TP_ARGS(wiphy, netdev, mac)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rdev_dump_station,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int _idx,
|
||||
u8 *mac),
|
||||
|
@ -550,8 +550,7 @@ int ieee80211_data_to_8023_exthdr(struct sk_buff *skb, struct ethhdr *ehdr,
|
||||
return -1;
|
||||
break;
|
||||
case cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS):
|
||||
if (unlikely(iftype != NL80211_IFTYPE_WDS &&
|
||||
iftype != NL80211_IFTYPE_MESH_POINT &&
|
||||
if (unlikely(iftype != NL80211_IFTYPE_MESH_POINT &&
|
||||
iftype != NL80211_IFTYPE_AP_VLAN &&
|
||||
iftype != NL80211_IFTYPE_STATION))
|
||||
return -1;
|
||||
@ -1051,7 +1050,6 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
|
||||
case NL80211_IFTYPE_P2P_GO:
|
||||
case NL80211_IFTYPE_AP:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
/* bridging OK */
|
||||
break;
|
||||
@ -1063,6 +1061,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
|
||||
/* not happening */
|
||||
break;
|
||||
case NL80211_IFTYPE_P2P_DEVICE:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_NAN:
|
||||
WARN_ON(1);
|
||||
break;
|
||||
|
@ -49,9 +49,6 @@ int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info,
|
||||
case IW_MODE_ADHOC:
|
||||
type = NL80211_IFTYPE_ADHOC;
|
||||
break;
|
||||
case IW_MODE_REPEAT:
|
||||
type = NL80211_IFTYPE_WDS;
|
||||
break;
|
||||
case IW_MODE_MONITOR:
|
||||
type = NL80211_IFTYPE_MONITOR;
|
||||
break;
|
||||
@ -1150,50 +1147,6 @@ static int cfg80211_wext_giwpower(struct net_device *dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cfg80211_wds_wext_siwap(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
struct sockaddr *addr, char *extra)
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
|
||||
int err;
|
||||
|
||||
if (WARN_ON(wdev->iftype != NL80211_IFTYPE_WDS))
|
||||
return -EINVAL;
|
||||
|
||||
if (addr->sa_family != ARPHRD_ETHER)
|
||||
return -EINVAL;
|
||||
|
||||
if (netif_running(dev))
|
||||
return -EBUSY;
|
||||
|
||||
if (!rdev->ops->set_wds_peer)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
err = rdev_set_wds_peer(rdev, dev, (u8 *)&addr->sa_data);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
memcpy(&wdev->wext.bssid, (u8 *) &addr->sa_data, ETH_ALEN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cfg80211_wds_wext_giwap(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
struct sockaddr *addr, char *extra)
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
|
||||
if (WARN_ON(wdev->iftype != NL80211_IFTYPE_WDS))
|
||||
return -EINVAL;
|
||||
|
||||
addr->sa_family = ARPHRD_ETHER;
|
||||
memcpy(&addr->sa_data, wdev->wext.bssid, ETH_ALEN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cfg80211_wext_siwrate(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
struct iw_param *rate, char *extra)
|
||||
@ -1371,8 +1324,6 @@ static int cfg80211_wext_siwap(struct net_device *dev,
|
||||
return cfg80211_ibss_wext_siwap(dev, info, ap_addr, extra);
|
||||
case NL80211_IFTYPE_STATION:
|
||||
return cfg80211_mgd_wext_siwap(dev, info, ap_addr, extra);
|
||||
case NL80211_IFTYPE_WDS:
|
||||
return cfg80211_wds_wext_siwap(dev, info, ap_addr, extra);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@ -1389,8 +1340,6 @@ static int cfg80211_wext_giwap(struct net_device *dev,
|
||||
return cfg80211_ibss_wext_giwap(dev, info, ap_addr, extra);
|
||||
case NL80211_IFTYPE_STATION:
|
||||
return cfg80211_mgd_wext_giwap(dev, info, ap_addr, extra);
|
||||
case NL80211_IFTYPE_WDS:
|
||||
return cfg80211_wds_wext_giwap(dev, info, ap_addr, extra);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user