Skip to content

Commit

Permalink
ath11k_nss: Refresh patches against rebase 53eab61
Browse files Browse the repository at this point in the history
Author:     Felix Fietkau <nbd@nbd.name>
AuthorDate: Mon Nov 18 11:21:02 2024 +0100
Commit:     Felix Fietkau <nbd@nbd.name>
CommitDate: Mon Nov 18 11:44:44 2024 +0100

    mac80211: backport some upstream fixes

    Fix various issues, including potential crashes

    Signed-off-by: Felix Fietkau <nbd@nbd.name>

Signed-off-by: Sean Khan <datapronix@protonmail.com>
  • Loading branch information
qosmio committed Nov 29, 2024
1 parent 2dbb073 commit dbb4a11
Show file tree
Hide file tree
Showing 13 changed files with 48 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* from the RX info data, so leave those zeroed when building this data)
* @RX_FLAG_RADIOTAP_HE_MU: HE MU radiotap data is present
* (&struct ieee80211_radiotap_he_mu)
@@ -2124,6 +2140,16 @@ static inline bool lockdep_vif_wiphy_mut
@@ -2127,6 +2143,16 @@ static inline bool lockdep_vif_wiphy_mut
lockdep_vif_wiphy_mutex_held(vif))

/**
Expand All @@ -99,7 +99,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* enum ieee80211_key_flags - key flags
*
* These flags are used for communication about keys between the driver
@@ -2827,6 +2853,8 @@ struct ieee80211_txq {
@@ -2830,6 +2856,8 @@ struct ieee80211_txq {
* implements MLO, so operation can continue on other links when one
* link is switching.
*
Expand All @@ -108,15 +108,15 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/
enum ieee80211_hw_flags {
@@ -2887,6 +2915,7 @@ enum ieee80211_hw_flags {
@@ -2890,6 +2918,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_DISALLOW_PUNCTURING,
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
IEEE80211_HW_HANDLES_QUIET_CSA,
+ IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,

/* keep last, obviously */
NUM_IEEE80211_HW_FLAGS
@@ -3902,6 +3931,10 @@ struct ieee80211_prep_tx_info {
@@ -3905,6 +3934,10 @@ struct ieee80211_prep_tx_info {
* non-MLO connections.
* The callback can sleep.
*
Expand All @@ -127,7 +127,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* @prepare_multicast: Prepare for multicast filter configuration.
* This callback is optional, and its return value is passed
* to configure_filter(). This callback must be atomic.
@@ -4464,7 +4497,9 @@ struct ieee80211_ops {
@@ -4467,7 +4500,9 @@ struct ieee80211_ops {
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *info,
u64 changed);
Expand All @@ -138,7 +138,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_bss_conf *link_conf);
void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
@@ -4774,7 +4809,7 @@ struct ieee80211_ops {
@@ -4777,7 +4812,7 @@ struct ieee80211_ops {
int (*reset_tid_config)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta, u8 tids);
Expand Down Expand Up @@ -184,7 +184,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* the suspend->resume cycle. Since we can't check each caller
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -414,6 +414,17 @@ void ieee80211_link_info_change_notify(s
@@ -416,6 +416,17 @@ void ieee80211_link_info_change_notify(s
drv_link_info_changed(local, sdata, link->conf, link->link_id, changed);
}

Expand All @@ -202,7 +202,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
{
sdata->vif.bss_conf.use_cts_prot = false;
@@ -852,12 +863,6 @@ struct ieee80211_hw *ieee80211_alloc_hw_
@@ -854,12 +865,6 @@ struct ieee80211_hw *ieee80211_alloc_hw_
NL80211_FEATURE_FULL_AP_CLIENT_STATE;
wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_FILS_STA);
wiphy_ext_feature_set(wiphy,
Expand All @@ -215,7 +215,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
NL80211_EXT_FEATURE_SCAN_FREQ_KHZ);
wiphy_ext_feature_set(wiphy,
NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE);
@@ -1185,6 +1190,18 @@ int ieee80211_register_hw(struct ieee802
@@ -1187,6 +1192,18 @@ int ieee80211_register_hw(struct ieee802
return -EINVAL;
}

Expand Down Expand Up @@ -375,7 +375,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
{
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1860,6 +1860,8 @@ void ieee80211_vif_cfg_change_notify(str
@@ -1861,6 +1861,8 @@ void ieee80211_vif_cfg_change_notify(str
void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
struct ieee80211_link_data *link,
u64 changed);
Expand Down Expand Up @@ -427,7 +427,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
TP_PROTO(struct ieee80211_local *local,
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -991,7 +991,8 @@ static bool ieee80211_set_sdata_offload_
@@ -986,7 +986,8 @@ static bool ieee80211_set_sdata_offload_
local->hw.wiphy->frag_threshold != (u32)-1)
flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>

--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -9722,4 +9722,15 @@ ssize_t wiphy_locked_debugfs_write(struc
@@ -9766,4 +9766,15 @@ ssize_t wiphy_locked_debugfs_write(struc
void *data);
#endif

Expand All @@ -49,7 +49,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
#endif /* __NET_CFG80211_H */
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -7563,6 +7563,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
@@ -7566,6 +7566,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
int len);

/**
Expand Down Expand Up @@ -166,7 +166,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
[NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA] = { .type = NLA_FLAG },
[NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
[NL80211_ATTR_MLO_TTLM_ULINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
@@ -20446,6 +20447,42 @@ void cfg80211_schedule_channels_check(st
@@ -20442,6 +20443,42 @@ void cfg80211_schedule_channels_check(st
}
EXPORT_SYMBOL(cfg80211_schedule_channels_check);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>

extern const struct cfg80211_ops mac80211_config_ops;

@@ -1185,6 +1188,9 @@ struct ieee80211_sub_if_data {
@@ -1186,6 +1189,9 @@ struct ieee80211_sub_if_data {
struct dentry *default_beacon_key;
} debugfs;
#endif
Expand All @@ -65,7 +65,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
/**
* DOC: Interface list locking
*
@@ -781,6 +787,13 @@ static int ieee80211_stop(struct net_dev
@@ -776,6 +782,13 @@ static int ieee80211_stop(struct net_dev
ieee80211_stop_mbssid(sdata);
}

Expand All @@ -79,7 +79,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
wiphy_lock(sdata->local->hw.wiphy);
wiphy_work_cancel(sdata->local->hw.wiphy, &sdata->activate_links_work);

@@ -1232,6 +1245,34 @@ void ieee80211_del_virtual_monitor(struc
@@ -1227,6 +1240,34 @@ void ieee80211_del_virtual_monitor(struc
kfree(sdata);
}

Expand Down Expand Up @@ -114,7 +114,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
/*
* NOTE: Be very careful when changing this function, it must NOT return
* an error on interface type changes that have been pre-checked, so most
@@ -1460,6 +1501,21 @@ int ieee80211_do_open(struct wireless_de
@@ -1457,6 +1498,21 @@ int ieee80211_do_open(struct wireless_de

ieee80211_recalc_ps(local);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>

--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5273,6 +5273,17 @@ void ieee80211_sta_pspoll(struct ieee802
@@ -5276,6 +5276,17 @@ void ieee80211_sta_pspoll(struct ieee802
*/
void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);

Expand Down Expand Up @@ -74,7 +74,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
trace_drv_add_interface(local, sdata);
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -702,6 +702,9 @@ static void ieee80211_do_stop(struct iee
@@ -697,6 +697,9 @@ static void ieee80211_do_stop(struct iee

switch (sdata->vif.type) {
case NL80211_IFTYPE_AP_VLAN:
Expand All @@ -84,15 +84,15 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
break;
case NL80211_IFTYPE_MONITOR:
if (local->monitors == 0)
@@ -982,6 +985,7 @@ static bool ieee80211_iftype_supports_hd
@@ -977,6 +980,7 @@ static bool ieee80211_iftype_supports_hd
switch (iftype) {
/* P2P GO and client are mapped to AP/STATION types */
case NL80211_IFTYPE_AP:
+ case NL80211_IFTYPE_AP_VLAN:
case NL80211_IFTYPE_STATION:
return true;
default:
@@ -1036,7 +1040,8 @@ static void ieee80211_set_vif_encap_ops(
@@ -1031,7 +1035,8 @@ static void ieee80211_set_vif_encap_ops(
struct ieee80211_sub_if_data *bss = sdata;
bool enabled;

Expand All @@ -102,8 +102,8 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
if (!sdata->bss)
return;

@@ -1368,10 +1373,17 @@ int ieee80211_do_open(struct wireless_de

@@ -1365,10 +1370,17 @@ int ieee80211_do_open(struct wireless_de
(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE);
switch (sdata->vif.type) {
case NL80211_IFTYPE_AP_VLAN:
- /* no need to tell driver, but set carrier and chanctx */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>

--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2224,6 +2224,8 @@ enum ieee80211_key_flags {
@@ -2227,6 +2227,8 @@ enum ieee80211_key_flags {
* @tx_pn: PN used for TX keys, may be used by the driver as well if it
* needs to do software PN assignment by itself (e.g. due to TSO)
* @flags: key flags, see &enum ieee80211_key_flags.
Expand All @@ -33,7 +33,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
* @keyidx: the key index (0-3)
* @keylen: key material length
* @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte)
@@ -2243,6 +2245,7 @@ struct ieee80211_key_conf {
@@ -2246,6 +2248,7 @@ struct ieee80211_key_conf {
u8 hw_key_idx;
s8 keyidx;
u16 flags;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
};


@@ -2919,6 +2939,7 @@ enum ieee80211_hw_flags {
@@ -2922,6 +2942,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
IEEE80211_HW_HANDLES_QUIET_CSA,
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
+ IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,

/* keep last, obviously */
NUM_IEEE80211_HW_FLAGS
@@ -4427,6 +4448,8 @@ struct ieee80211_prep_tx_info {
@@ -4430,6 +4451,8 @@ struct ieee80211_prep_tx_info {
* @set_sar_specs: Update the SAR (TX power) settings.
* @sta_set_decap_offload: Called to notify the driver when a station is allowed
* to use rx decapsulation offload
Expand All @@ -129,7 +129,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
* @add_twt_setup: Update hw with TWT agreement parameters received from the peer.
* This callback allows the hw to check if requested parameters
* are supported and if there is enough room for a new agreement.
@@ -4821,6 +4844,12 @@ struct ieee80211_ops {
@@ -4824,6 +4847,12 @@ struct ieee80211_ops {
void (*sta_set_decap_offload)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta, bool enabled);
Expand All @@ -142,7 +142,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
void (*add_twt_setup)(struct ieee80211_hw *hw,
struct ieee80211_sta *sta,
struct ieee80211_twt_setup *twt);
@@ -7728,4 +7757,100 @@ int ieee80211_emulate_switch_vif_chanctx
@@ -7731,4 +7760,100 @@ int ieee80211_emulate_switch_vif_chanctx
int n_vifs,
enum ieee80211_chanctx_switch_mode mode);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>

--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2878,6 +2878,8 @@ struct ieee80211_txq {
@@ -2881,6 +2881,8 @@ struct ieee80211_txq {
*
* @IEEE80211_HW_SUPPORTS_NSS_OFFLOAD: Hardware/driver supports NSS offload
*
Expand All @@ -25,7 +25,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/
enum ieee80211_hw_flags {
@@ -2940,6 +2942,7 @@ enum ieee80211_hw_flags {
@@ -2943,6 +2945,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_HANDLES_QUIET_CSA,
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>

--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1020,7 +1020,8 @@ static bool ieee80211_set_sdata_offload_
@@ -1015,7 +1015,8 @@ static bool ieee80211_set_sdata_offload_
flags |= IEEE80211_OFFLOAD_DECAP_ENABLED;

if (local->monitors &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>

--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -2081,6 +2081,11 @@ netdev_tx_t ieee80211_subif_start_xmit(s
@@ -2083,6 +2083,11 @@ netdev_tx_t ieee80211_subif_start_xmit(s
struct net_device *dev);
netdev_tx_t ieee80211_subif_start_xmit_8023(struct sk_buff *skb,
struct net_device *dev);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>

--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -2273,6 +2273,10 @@ int ieee80211_if_add(struct ieee80211_lo
@@ -2270,6 +2270,10 @@ int ieee80211_if_add(struct ieee80211_lo

ndev->features |= local->hw.netdev_features;
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>

--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2879,6 +2879,9 @@ struct ieee80211_txq {
@@ -2882,6 +2882,9 @@ struct ieee80211_txq {
*
* @IEEE80211_HW_SUPPORTS_TID_CLASS_OFFLOAD: Hardware suports tid calssification offload.
*
Expand All @@ -33,7 +33,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/
enum ieee80211_hw_flags {
@@ -2942,6 +2945,7 @@ enum ieee80211_hw_flags {
@@ -2945,6 +2948,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_TID_CLASS_OFFLOAD,
Expand Down Expand Up @@ -135,7 +135,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>

--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1001,7 +1001,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_
@@ -1003,7 +1003,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_
atomic_set(&local->agg_queue_stop[i], 0);
}
tasklet_setup(&local->tx_pending_tasklet, ieee80211_tx_pending);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>

--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -8827,6 +8827,7 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -8871,6 +8871,7 @@ bool cfg80211_rx_spurious_frame(struct n
* @dev: The device the frame matched to
* @addr: the transmitter address
* @gfp: context flags
+ * @link_id: link id
*
* This function is used in AP mode (only!) to inform userspace that
* an associated station sent a 4addr frame but that wasn't expected.
@@ -8836,7 +8837,8 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -8880,7 +8881,8 @@ bool cfg80211_rx_spurious_frame(struct n
* for a reason other than not having a subscription.)
*/
bool cfg80211_rx_unexpected_4addr_frame(struct net_device *dev,
Expand Down Expand Up @@ -127,7 +127,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>

--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -18995,7 +18995,8 @@ void cfg80211_conn_failed(struct net_dev
@@ -18991,7 +18991,8 @@ void cfg80211_conn_failed(struct net_dev
EXPORT_SYMBOL(cfg80211_conn_failed);

static bool __nl80211_unexpected_frame(struct net_device *dev, u8 cmd,
Expand All @@ -137,7 +137,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
@@ -19021,6 +19022,9 @@ static bool __nl80211_unexpected_frame(s
@@ -19017,6 +19018,9 @@ static bool __nl80211_unexpected_frame(s
nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr))
goto nla_put_failure;

Expand All @@ -147,7 +147,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
genlmsg_end(msg, hdr);
genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid);
return true;
@@ -19044,14 +19048,15 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -19040,14 +19044,15 @@ bool cfg80211_rx_spurious_frame(struct n
return false;
}
ret = __nl80211_unexpected_frame(dev, NL80211_CMD_UNEXPECTED_FRAME,
Expand All @@ -165,7 +165,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
bool ret;
@@ -19066,7 +19071,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
@@ -19062,7 +19067,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
}
ret = __nl80211_unexpected_frame(dev,
NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
Expand Down
Loading

0 comments on commit dbb4a11

Please sign in to comment.