mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Not that much content this time. Some RCU cleanups, crypto
performance improvements, and various patches all over, rather than listing them one might as well look into the git log instead. -----BEGIN PGP SIGNATURE----- iQIcBAABCAAGBQJUAIx4AAoJEDBSmw7B7bqrUYcP/3t4qdFxm0bd4j2AEkl3mPwB Qu7obTicOTfBRoJNEgS+8AU2u3PfztU6+ErZs4ETLUuqaZwXisqmwBiMo86+Wtdf gx9KonwEW051g7YmB0+6EMwuy04MGzTEk8VavQwqM4g9LIPJ4Buo/kj7MNJ51m11 XyRmJqZJnKKeiiQ4eC0gPf8e44qiQqaDuYZ0r1UDnNRg2KrbAHlGTBKYI3VRl2u4 xRpPGVnHwT0qkWb1Zw9fk0VfPr9m1ETthzcZvnhk6uMnJ28D+1B1FjZR1GJU6BW7 Zx2FbevbZTjDoNT1GQpLGMXBuW0lsZFetXVFiJCr/StaPBtHmtdu28fuNVm8yJYz euDlEgrE8F4npdec2F5R2zh7Ue2U7eMEL2uxxjciNSJOipHgx5EXH12Y/5QtrChy 4OHPbNHgpmqFB7TmkvHDgP/0A7XdyqKVc+NtIV+eECIwE4tHcJ6A+bQ+ZCoRV2Vw zmsNuNeNeDW7NEAw9veRXissLZMy/EjUnsOrnW29BpO/yG+2YjqpyQ6JQpcXeCPD WQgl2FHpk6ap3jpVjxminxw2HkDnQ0oTKusGLcezalhUlWMo7VYNN59aLzcphxX5 Fotp/8v1sbDTF46uc/QJ38N5TqflwWeFpxvGkdNGuAT4llP03NaXV0ORBecFmMW2 esb+PLwlByCDeVFu53q+ =Qth6 -----END PGP SIGNATURE----- Merge tag 'mac80211-next-for-john-2014-08-29' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next Johannes Berg <[email protected]> says: "Not that much content this time. Some RCU cleanups, crypto performance improvements, and various patches all over, rather than listing them one might as well look into the git log instead." Signed-off-by: John W. Linville <[email protected]> Conflicts: drivers/net/wireless/ath/wil6210/wmi.c
This commit is contained in:
commit
ef4ead3f29
39 changed files with 344 additions and 246 deletions
|
|
@ -492,12 +492,6 @@ int wiphy_register(struct wiphy *wiphy)
|
|||
int i;
|
||||
u16 ifmodes = wiphy->interface_modes;
|
||||
|
||||
/*
|
||||
* There are major locking problems in nl80211/mac80211 for CSA,
|
||||
* disable for all drivers until this has been reworked.
|
||||
*/
|
||||
wiphy->flags &= ~WIPHY_FLAG_HAS_CHANNEL_SWITCH;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (WARN_ON(wiphy->wowlan &&
|
||||
(wiphy->wowlan->flags & WIPHY_WOWLAN_GTK_REKEY_FAILURE) &&
|
||||
|
|
|
|||
|
|
@ -605,7 +605,7 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
|
|||
}
|
||||
|
||||
bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_mbm,
|
||||
const u8 *buf, size_t len, u32 flags, gfp_t gfp)
|
||||
const u8 *buf, size_t len, u32 flags)
|
||||
{
|
||||
struct wiphy *wiphy = wdev->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
|
||||
|
|
@ -648,7 +648,7 @@ bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_mbm,
|
|||
/* Indicate the received Action frame to user space */
|
||||
if (nl80211_send_mgmt(rdev, wdev, reg->nlportid,
|
||||
freq, sig_mbm,
|
||||
buf, len, flags, gfp))
|
||||
buf, len, flags, GFP_ATOMIC))
|
||||
continue;
|
||||
|
||||
result = true;
|
||||
|
|
|
|||
|
|
@ -6033,7 +6033,6 @@ static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb,
|
|||
const struct cfg80211_bss_ies *ies;
|
||||
void *hdr;
|
||||
struct nlattr *bss;
|
||||
bool tsf = false;
|
||||
|
||||
ASSERT_WDEV_LOCK(wdev);
|
||||
|
||||
|
|
@ -6060,18 +6059,27 @@ static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb,
|
|||
goto nla_put_failure;
|
||||
|
||||
rcu_read_lock();
|
||||
/* indicate whether we have probe response data or not */
|
||||
if (rcu_access_pointer(res->proberesp_ies) &&
|
||||
nla_put_flag(msg, NL80211_BSS_PRESP_DATA))
|
||||
goto fail_unlock_rcu;
|
||||
|
||||
/* this pointer prefers to be pointed to probe response data
|
||||
* but is always valid
|
||||
*/
|
||||
ies = rcu_dereference(res->ies);
|
||||
if (ies) {
|
||||
if (nla_put_u64(msg, NL80211_BSS_TSF, ies->tsf))
|
||||
goto fail_unlock_rcu;
|
||||
tsf = true;
|
||||
if (ies->len && nla_put(msg, NL80211_BSS_INFORMATION_ELEMENTS,
|
||||
ies->len, ies->data))
|
||||
goto fail_unlock_rcu;
|
||||
}
|
||||
|
||||
/* and this pointer is always (unless driver didn't know) beacon data */
|
||||
ies = rcu_dereference(res->beacon_ies);
|
||||
if (ies) {
|
||||
if (!tsf && nla_put_u64(msg, NL80211_BSS_TSF, ies->tsf))
|
||||
if (ies && ies->from_beacon) {
|
||||
if (nla_put_u64(msg, NL80211_BSS_BEACON_TSF, ies->tsf))
|
||||
goto fail_unlock_rcu;
|
||||
if (ies->len && nla_put(msg, NL80211_BSS_BEACON_IES,
|
||||
ies->len, ies->data))
|
||||
|
|
|
|||
|
|
@ -884,6 +884,7 @@ struct cfg80211_bss*
|
|||
cfg80211_inform_bss_width(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *rx_channel,
|
||||
enum nl80211_bss_scan_width scan_width,
|
||||
enum cfg80211_bss_frame_type ftype,
|
||||
const u8 *bssid, u64 tsf, u16 capability,
|
||||
u16 beacon_interval, const u8 *ie, size_t ielen,
|
||||
s32 signal, gfp_t gfp)
|
||||
|
|
@ -911,21 +912,32 @@ cfg80211_inform_bss_width(struct wiphy *wiphy,
|
|||
tmp.pub.beacon_interval = beacon_interval;
|
||||
tmp.pub.capability = capability;
|
||||
/*
|
||||
* Since we do not know here whether the IEs are from a Beacon or Probe
|
||||
* If we do not know here whether the IEs are from a Beacon or Probe
|
||||
* Response frame, we need to pick one of the options and only use it
|
||||
* with the driver that does not provide the full Beacon/Probe Response
|
||||
* frame. Use Beacon frame pointer to avoid indicating that this should
|
||||
* override the IEs pointer should we have received an earlier
|
||||
* indication of Probe Response data.
|
||||
*/
|
||||
ies = kmalloc(sizeof(*ies) + ielen, gfp);
|
||||
ies = kzalloc(sizeof(*ies) + ielen, gfp);
|
||||
if (!ies)
|
||||
return NULL;
|
||||
ies->len = ielen;
|
||||
ies->tsf = tsf;
|
||||
ies->from_beacon = false;
|
||||
memcpy(ies->data, ie, ielen);
|
||||
|
||||
rcu_assign_pointer(tmp.pub.beacon_ies, ies);
|
||||
switch (ftype) {
|
||||
case CFG80211_BSS_FTYPE_BEACON:
|
||||
ies->from_beacon = true;
|
||||
/* fall through to assign */
|
||||
case CFG80211_BSS_FTYPE_UNKNOWN:
|
||||
rcu_assign_pointer(tmp.pub.beacon_ies, ies);
|
||||
break;
|
||||
case CFG80211_BSS_FTYPE_PRESP:
|
||||
rcu_assign_pointer(tmp.pub.proberesp_ies, ies);
|
||||
break;
|
||||
}
|
||||
rcu_assign_pointer(tmp.pub.ies, ies);
|
||||
|
||||
signal_valid = abs(rx_channel->center_freq - channel->center_freq) <=
|
||||
|
|
@ -982,11 +994,12 @@ cfg80211_inform_bss_width_frame(struct wiphy *wiphy,
|
|||
if (!channel)
|
||||
return NULL;
|
||||
|
||||
ies = kmalloc(sizeof(*ies) + ielen, gfp);
|
||||
ies = kzalloc(sizeof(*ies) + ielen, gfp);
|
||||
if (!ies)
|
||||
return NULL;
|
||||
ies->len = ielen;
|
||||
ies->tsf = le64_to_cpu(mgmt->u.probe_resp.timestamp);
|
||||
ies->from_beacon = ieee80211_is_beacon(mgmt->frame_control);
|
||||
memcpy(ies->data, mgmt->u.probe_resp.variable, ielen);
|
||||
|
||||
if (ieee80211_is_probe_resp(mgmt->frame_control))
|
||||
|
|
|
|||
Loading…
Reference in a new issue