Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15543692 authored by David S. Miller's avatar David S. Miller
Browse files

Merge tag 'mac80211-for-davem-2016-08-30' of...

Merge tag 'mac80211-for-davem-2016-08-30' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211



Johannes Berg says:

====================
Three little fixes:
 * revert a recent wext patch, which Ben Hutchings noticed was
   wrong, and it turns out not to be necessary for any driver

 * fix an infinite loop that can occur under certain conditions
   in mac80211's TDLS code (depending on regulatory information)

 * add a cfg80211_get_station() static inline when cfg80211 isn't
   built, to allow other modules to not have to depend on it for it
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents e4e98c46 61aaa0e8
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1102,6 +1102,7 @@ struct station_info {
	struct cfg80211_tid_stats pertid[IEEE80211_NUM_TIDS + 1];
};

#if IS_ENABLED(CONFIG_CFG80211)
/**
 * cfg80211_get_station - retrieve information about a given station
 * @dev: the device where the station is supposed to be connected to
@@ -1114,6 +1115,14 @@ struct station_info {
 */
int cfg80211_get_station(struct net_device *dev, const u8 *mac_addr,
			 struct station_info *sinfo);
#else
static inline int cfg80211_get_station(struct net_device *dev,
				       const u8 *mac_addr,
				       struct station_info *sinfo)
{
	return -ENOENT;
}
#endif

/**
 * enum monitor_flags - monitor flags
+4 −3
Original line number Diff line number Diff line
@@ -333,10 +333,11 @@ ieee80211_tdls_chandef_vht_upgrade(struct ieee80211_sub_if_data *sdata,
	if (!uc.center_freq1)
		return;

	/* proceed to downgrade the chandef until usable or the same */
	/* proceed to downgrade the chandef until usable or the same as AP BW */
	while (uc.width > max_width ||
	       (uc.width > sta->tdls_chandef.width &&
		!cfg80211_reg_can_beacon_relax(sdata->local->hw.wiphy, &uc,
					      sdata->wdev.iftype))
					       sdata->wdev.iftype)))
		ieee80211_chandef_downgrade(&uc);

	if (!cfg80211_chandef_identical(&uc, &sta->tdls_chandef)) {
+2 −23
Original line number Diff line number Diff line
@@ -958,29 +958,8 @@ static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
			return private(dev, iwr, cmd, info, handler);
	}
	/* Old driver API : call driver ioctl handler */
	if (dev->netdev_ops->ndo_do_ioctl) {
#ifdef CONFIG_COMPAT
		if (info->flags & IW_REQUEST_FLAG_COMPAT) {
			int ret = 0;
			struct iwreq iwr_lcl;
			struct compat_iw_point *iwp_compat = (void *) &iwr->u.data;

			memcpy(&iwr_lcl, iwr, sizeof(struct iwreq));
			iwr_lcl.u.data.pointer = compat_ptr(iwp_compat->pointer);
			iwr_lcl.u.data.length = iwp_compat->length;
			iwr_lcl.u.data.flags = iwp_compat->flags;

			ret = dev->netdev_ops->ndo_do_ioctl(dev, (void *) &iwr_lcl, cmd);

			iwp_compat->pointer = ptr_to_compat(iwr_lcl.u.data.pointer);
			iwp_compat->length = iwr_lcl.u.data.length;
			iwp_compat->flags = iwr_lcl.u.data.flags;

			return ret;
		} else
#endif
	if (dev->netdev_ops->ndo_do_ioctl)
		return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd);
	}
	return -EOPNOTSUPP;
}