mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
We have a number of changes, but things are settling down:
* a fix in the new 6 GHz channel support
* a fix for recent minstrel (rate control) updates
for an infinite loop
* handle interface type changes better wrt. management frame
registrations (for management frames sent to userspace)
* add in-BSS RX time to survey information
* handle HW rfkill properly if !CONFIG_RFKILL
* send deauth on IBSS station expiry, to avoid state mismatches
* handle deferred crypto tailroom updates in mac80211 better
when device restart happens
* fix a spectre-v1 - really a continuation of a previous patch
* advertise NL80211_CMD_UPDATE_FT_IES as supported if so
* add some missing parsing in VHT extended NSS support
* support HE in mac80211_hwsim
* let mac80211 drivers determine the max MTU themselves
along with the usual cleanups etc.
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEH1e1rEeCd0AIMq6MB8qZga/fl8QFAl148l4ACgkQB8qZga/f
l8TafQ//Yjunnxq49ClKMDxyKwxIBvLRAMr4D3QwaWAcWUpar1/V0Ft/5glnHtbZ
7QptwbxVNUk/N68hYi8wlpMpvfzv/nShZD8QBNS1bk5E3Gng3yow03LhOx5iaYb2
KJXS1GE4jwkMD7Xn65+eMeb8rt1vEj8LleX91cguilq+y5YbcNFsP1nil2RtQyBU
cf5i8CBu4I5rTBoFaRvcz2xn+blqPSm2/piA+yXjzFp9vyVmhD+FjR5T482u48pj
wi/1zersGVUzBNElnZOKg67XPir1fcJqCfLILr7okPItWuYXHdVHGfn+arhimK4W
dyIpv1EfCe0lwKl4VTdhXt1GwhKvWCc2Ja7lz/RnDisGq9CYPJNfW7jFgR3tw4eg
SccnUhnxRIgD1V2KDcvsRadPo+2YsBJBmC61JRX1K6L3zpHLbktDyzxvTwCeVQ9A
TQp5bmQcKqDoq+/60JNHI6IxMbmX/vc2PC7dENGWUkem/JEmSWBB1wcL9gsRkhVi
c4uHyvFeXJaIV7YFA36hWCfa0fr+UUYxfzxudRSvxq/tTpayqBKu6fr3Pvv0SqTj
/BKkezoIdJntClhJv4PcDkZMva4uMCPtHCero9eICX5J+4AanD6caRNefX6L0PfF
DtN1sscVOy9zY2fV4tqvn3IASmOE5yB/dxjtKkMYyNHkZsGiDI0=
=HAuT
-----END PGP SIGNATURE-----
Merge tag 'mac80211-next-for-davem-2019-09-11' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says:
====================
We have a number of changes, but things are settling down:
* a fix in the new 6 GHz channel support
* a fix for recent minstrel (rate control) updates
for an infinite loop
* handle interface type changes better wrt. management frame
registrations (for management frames sent to userspace)
* add in-BSS RX time to survey information
* handle HW rfkill properly if !CONFIG_RFKILL
* send deauth on IBSS station expiry, to avoid state mismatches
* handle deferred crypto tailroom updates in mac80211 better
when device restart happens
* fix a spectre-v1 - really a continuation of a previous patch
* advertise NL80211_CMD_UPDATE_FT_IES as supported if so
* add some missing parsing in VHT extended NSS support
* support HE in mac80211_hwsim
* let mac80211 drivers determine the max MTU themselves
along with the usual cleanups etc.
====================
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
commit
c1b3ddf7c3
19 changed files with 274 additions and 161 deletions
|
|
@ -5,7 +5,7 @@
|
|||
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
||||
* Copyright 2015-2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018 Intel Corporation
|
||||
* Copyright (C) 2018-2019 Intel Corporation
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
|
@ -300,12 +300,13 @@ static int cfg80211_rfkill_set_block(void *data, bool blocked)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void cfg80211_rfkill_sync_work(struct work_struct *work)
|
||||
static void cfg80211_rfkill_block_work(struct work_struct *work)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev;
|
||||
|
||||
rdev = container_of(work, struct cfg80211_registered_device, rfkill_sync);
|
||||
cfg80211_rfkill_set_block(rdev, rfkill_blocked(rdev->rfkill));
|
||||
rdev = container_of(work, struct cfg80211_registered_device,
|
||||
rfkill_block);
|
||||
cfg80211_rfkill_set_block(rdev, true);
|
||||
}
|
||||
|
||||
static void cfg80211_event_work(struct work_struct *work)
|
||||
|
|
@ -516,7 +517,7 @@ use_default_name:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
INIT_WORK(&rdev->rfkill_sync, cfg80211_rfkill_sync_work);
|
||||
INIT_WORK(&rdev->rfkill_block, cfg80211_rfkill_block_work);
|
||||
INIT_WORK(&rdev->conn_work, cfg80211_conn_work);
|
||||
INIT_WORK(&rdev->event_work, cfg80211_event_work);
|
||||
|
||||
|
|
@ -1061,7 +1062,7 @@ void wiphy_rfkill_set_hw_state(struct wiphy *wiphy, bool blocked)
|
|||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
|
||||
|
||||
if (rfkill_set_hw_state(rdev->rfkill, blocked))
|
||||
schedule_work(&rdev->rfkill_sync);
|
||||
schedule_work(&rdev->rfkill_block);
|
||||
}
|
||||
EXPORT_SYMBOL(wiphy_rfkill_set_hw_state);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ struct cfg80211_registered_device {
|
|||
/* rfkill support */
|
||||
struct rfkill_ops rfkill_ops;
|
||||
struct rfkill *rfkill;
|
||||
struct work_struct rfkill_sync;
|
||||
struct work_struct rfkill_block;
|
||||
|
||||
/* ISO / IEC 3166 alpha2 for which this device is receiving
|
||||
* country IEs on, this can help disregard country IEs from APs
|
||||
|
|
|
|||
|
|
@ -2100,6 +2100,7 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
|
|||
CMD(add_tx_ts, ADD_TX_TS);
|
||||
CMD(set_multicast_to_unicast, SET_MULTICAST_TO_UNICAST);
|
||||
CMD(update_connect_params, UPDATE_CONNECT_PARAMS);
|
||||
CMD(update_ft_ies, UPDATE_FT_IES);
|
||||
}
|
||||
#undef CMD
|
||||
|
||||
|
|
@ -8805,6 +8806,10 @@ static int nl80211_send_survey(struct sk_buff *msg, u32 portid, u32 seq,
|
|||
nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_SCAN,
|
||||
survey->time_scan, NL80211_SURVEY_INFO_PAD))
|
||||
goto nla_put_failure;
|
||||
if ((survey->filled & SURVEY_INFO_TIME_BSS_RX) &&
|
||||
nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_BSS_RX,
|
||||
survey->time_bss_rx, NL80211_SURVEY_INFO_PAD))
|
||||
goto nla_put_failure;
|
||||
|
||||
nla_nest_end(msg, infoattr);
|
||||
|
||||
|
|
@ -10800,9 +10805,11 @@ static int cfg80211_cqm_rssi_update(struct cfg80211_registered_device *rdev,
|
|||
hyst = wdev->cqm_config->rssi_hyst;
|
||||
n = wdev->cqm_config->n_rssi_thresholds;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
for (i = 0; i < n; i++) {
|
||||
i = array_index_nospec(i, n);
|
||||
if (last < wdev->cqm_config->rssi_thresholds[i])
|
||||
break;
|
||||
}
|
||||
|
||||
low_index = i - 1;
|
||||
if (low_index >= 0) {
|
||||
|
|
@ -14992,12 +14999,10 @@ void nl80211_common_reg_change_event(enum nl80211_commands cmd_id,
|
|||
return;
|
||||
|
||||
hdr = nl80211hdr_put(msg, 0, 0, 0, cmd_id);
|
||||
if (!hdr) {
|
||||
nlmsg_free(msg);
|
||||
return;
|
||||
}
|
||||
if (!hdr)
|
||||
goto nla_put_failure;
|
||||
|
||||
if (nl80211_reg_change_event_fill(msg, request) == false)
|
||||
if (!nl80211_reg_change_event_fill(msg, request))
|
||||
goto nla_put_failure;
|
||||
|
||||
genlmsg_end(msg, hdr);
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ int ieee80211_frequency_to_channel(int freq)
|
|||
return (freq - 2407) / 5;
|
||||
else if (freq >= 4910 && freq <= 4980)
|
||||
return (freq - 4000) / 5;
|
||||
else if (freq < 5940)
|
||||
else if (freq < 5945)
|
||||
return (freq - 5000) / 5;
|
||||
else if (freq <= 45000) /* DMG band lower limit */
|
||||
/* see 802.11ax D4.1 27.3.22.2 */
|
||||
|
|
@ -969,6 +969,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
|
|||
}
|
||||
|
||||
cfg80211_process_rdev_events(rdev);
|
||||
cfg80211_mlme_purge_registrations(dev->ieee80211_ptr);
|
||||
}
|
||||
|
||||
err = rdev_change_virtual_intf(rdev, dev, ntype, params);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
* we directly assign the wireless handlers of wireless interfaces.
|
||||
*
|
||||
* Copyright 2008-2009 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright (C) 2019 Intel Corporation
|
||||
*/
|
||||
|
||||
#include <linux/export.h>
|
||||
|
|
@ -864,8 +865,8 @@ static int cfg80211_wext_siwtxpower(struct net_device *dev,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
rfkill_set_sw_state(rdev->rfkill, true);
|
||||
schedule_work(&rdev->rfkill_sync);
|
||||
if (rfkill_set_sw_state(rdev->rfkill, true))
|
||||
schedule_work(&rdev->rfkill_block);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue