|
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
-@@ -4150,6 +4150,35 @@ static int ath11k_set_he_mu_sounding_mod
|
|
|
|
|
|
+@@ -4304,6 +4304,35 @@ static int ath11k_set_he_mu_sounding_mod
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -62,7 +62,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
|
|
static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
|
|
struct ieee80211_vif *vif)
|
|
struct ieee80211_vif *vif)
|
|
{
|
|
{
|
|
-@@ -4159,7 +4188,6 @@ static int ath11k_mac_op_add_interface(s
|
|
|
|
|
|
+@@ -4313,7 +4342,6 @@ static int ath11k_mac_op_add_interface(s
|
|
struct vdev_create_params vdev_param = {0};
|
|
struct vdev_create_params vdev_param = {0};
|
|
struct peer_create_params peer_param;
|
|
struct peer_create_params peer_param;
|
|
u32 param_id, param_value;
|
|
u32 param_id, param_value;
|
|
@@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
u16 nss;
|
|
u16 nss;
|
|
int i;
|
|
int i;
|
|
int ret;
|
|
int ret;
|
|
-@@ -4253,30 +4281,7 @@ static int ath11k_mac_op_add_interface(s
|
|
|
|
|
|
+@@ -4407,30 +4435,7 @@ static int ath11k_mac_op_add_interface(s
|
|
list_add(&arvif->list, &ar->arvifs);
|
|
list_add(&arvif->list, &ar->arvifs);
|
|
spin_unlock_bh(&ar->data_lock);
|
|
spin_unlock_bh(&ar->data_lock);
|
|
|
|
|
|
@@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
nss = get_num_chains(ar->cfg_tx_chainmask) ? : 1;
|
|
nss = get_num_chains(ar->cfg_tx_chainmask) ? : 1;
|
|
ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
|
|
ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
|
|
-@@ -5599,6 +5604,7 @@ static const struct ieee80211_ops ath11k
|
|
|
|
|
|
+@@ -5753,6 +5758,7 @@ static const struct ieee80211_ops ath11k
|
|
.reconfig_complete = ath11k_mac_op_reconfig_complete,
|
|
.reconfig_complete = ath11k_mac_op_reconfig_complete,
|
|
.add_interface = ath11k_mac_op_add_interface,
|
|
.add_interface = ath11k_mac_op_add_interface,
|
|
.remove_interface = ath11k_mac_op_remove_interface,
|
|
.remove_interface = ath11k_mac_op_remove_interface,
|
|
@@ -110,7 +110,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
.config = ath11k_mac_op_config,
|
|
.config = ath11k_mac_op_config,
|
|
.bss_info_changed = ath11k_mac_op_bss_info_changed,
|
|
.bss_info_changed = ath11k_mac_op_bss_info_changed,
|
|
.configure_filter = ath11k_mac_op_configure_filter,
|
|
.configure_filter = ath11k_mac_op_configure_filter,
|
|
-@@ -5852,6 +5858,7 @@ static int __ath11k_mac_register(struct
|
|
|
|
|
|
+@@ -6034,6 +6040,7 @@ static int __ath11k_mac_register(struct
|
|
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
|
|
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
|
|
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
|
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
|
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
|
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
|
@@ -120,7 +120,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
ieee80211_hw_set(ar->hw, TX_AMPDU_SETUP_IN_HW);
|
|
ieee80211_hw_set(ar->hw, TX_AMPDU_SETUP_IN_HW);
|
|
--- a/include/net/mac80211.h
|
|
--- a/include/net/mac80211.h
|
|
+++ b/include/net/mac80211.h
|
|
+++ b/include/net/mac80211.h
|
|
-@@ -1603,6 +1603,21 @@ enum ieee80211_vif_flags {
|
|
|
|
|
|
+@@ -1606,6 +1606,21 @@ enum ieee80211_vif_flags {
|
|
IEEE80211_VIF_GET_NOA_UPDATE = BIT(3),
|
|
IEEE80211_VIF_GET_NOA_UPDATE = BIT(3),
|
|
};
|
|
};
|
|
|
|
|
|
@@ -142,7 +142,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
/**
|
|
/**
|
|
* struct ieee80211_vif - per-interface data
|
|
* struct ieee80211_vif - per-interface data
|
|
*
|
|
*
|
|
-@@ -1623,6 +1638,11 @@ enum ieee80211_vif_flags {
|
|
|
|
|
|
+@@ -1626,6 +1641,11 @@ enum ieee80211_vif_flags {
|
|
* these need to be set (or cleared) when the interface is added
|
|
* these need to be set (or cleared) when the interface is added
|
|
* or, if supported by the driver, the interface type is changed
|
|
* or, if supported by the driver, the interface type is changed
|
|
* at runtime, mac80211 will never touch this field
|
|
* at runtime, mac80211 will never touch this field
|
|
@@ -154,7 +154,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
* @hw_queue: hardware queue for each AC
|
|
* @hw_queue: hardware queue for each AC
|
|
* @cab_queue: content-after-beacon (DTIM beacon really) queue, AP mode only
|
|
* @cab_queue: content-after-beacon (DTIM beacon really) queue, AP mode only
|
|
* @chanctx_conf: The channel context this interface is assigned to, or %NULL
|
|
* @chanctx_conf: The channel context this interface is assigned to, or %NULL
|
|
-@@ -1659,6 +1679,7 @@ struct ieee80211_vif {
|
|
|
|
|
|
+@@ -1662,6 +1682,7 @@ struct ieee80211_vif {
|
|
struct ieee80211_chanctx_conf __rcu *chanctx_conf;
|
|
struct ieee80211_chanctx_conf __rcu *chanctx_conf;
|
|
|
|
|
|
u32 driver_flags;
|
|
u32 driver_flags;
|
|
@@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
#ifdef CPTCFG_MAC80211_DEBUGFS
|
|
#ifdef CPTCFG_MAC80211_DEBUGFS
|
|
struct dentry *debugfs_dir;
|
|
struct dentry *debugfs_dir;
|
|
-@@ -2325,6 +2346,9 @@ struct ieee80211_txq {
|
|
|
|
|
|
+@@ -2328,6 +2349,9 @@ struct ieee80211_txq {
|
|
* aggregating MPDUs with the same keyid, allowing mac80211 to keep Tx
|
|
* aggregating MPDUs with the same keyid, allowing mac80211 to keep Tx
|
|
* A-MPDU sessions active while rekeying with Extended Key ID.
|
|
* A-MPDU sessions active while rekeying with Extended Key ID.
|
|
*
|
|
*
|
|
@@ -172,7 +172,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
|
|
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
|
|
*/
|
|
*/
|
|
enum ieee80211_hw_flags {
|
|
enum ieee80211_hw_flags {
|
|
-@@ -2377,6 +2401,7 @@ enum ieee80211_hw_flags {
|
|
|
|
|
|
+@@ -2380,6 +2404,7 @@ enum ieee80211_hw_flags {
|
|
IEEE80211_HW_SUPPORTS_MULTI_BSSID,
|
|
IEEE80211_HW_SUPPORTS_MULTI_BSSID,
|
|
IEEE80211_HW_SUPPORTS_ONLY_HE_MULTI_BSSID,
|
|
IEEE80211_HW_SUPPORTS_ONLY_HE_MULTI_BSSID,
|
|
IEEE80211_HW_AMPDU_KEYBORDER_SUPPORT,
|
|
IEEE80211_HW_AMPDU_KEYBORDER_SUPPORT,
|
|
@@ -180,7 +180,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
/* keep last, obviously */
|
|
/* keep last, obviously */
|
|
NUM_IEEE80211_HW_FLAGS
|
|
NUM_IEEE80211_HW_FLAGS
|
|
-@@ -3811,6 +3836,8 @@ enum ieee80211_reconfig_type {
|
|
|
|
|
|
+@@ -3814,6 +3839,8 @@ enum ieee80211_reconfig_type {
|
|
* @set_tid_config: Apply TID specific configurations. This callback may sleep.
|
|
* @set_tid_config: Apply TID specific configurations. This callback may sleep.
|
|
* @reset_tid_config: Reset TID specific configuration for the peer.
|
|
* @reset_tid_config: Reset TID specific configuration for the peer.
|
|
* This callback may sleep.
|
|
* This callback may sleep.
|
|
@@ -189,7 +189,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
*/
|
|
*/
|
|
struct ieee80211_ops {
|
|
struct ieee80211_ops {
|
|
void (*tx)(struct ieee80211_hw *hw,
|
|
void (*tx)(struct ieee80211_hw *hw,
|
|
-@@ -4122,6 +4149,8 @@ struct ieee80211_ops {
|
|
|
|
|
|
+@@ -4125,6 +4152,8 @@ struct ieee80211_ops {
|
|
int (*reset_tid_config)(struct ieee80211_hw *hw,
|
|
int (*reset_tid_config)(struct ieee80211_hw *hw,
|
|
struct ieee80211_vif *vif,
|
|
struct ieee80211_vif *vif,
|
|
struct ieee80211_sta *sta, u8 tids);
|
|
struct ieee80211_sta *sta, u8 tids);
|
|
@@ -210,7 +210,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
--- a/net/mac80211/driver-ops.h
|
|
--- a/net/mac80211/driver-ops.h
|
|
+++ b/net/mac80211/driver-ops.h
|
|
+++ b/net/mac80211/driver-ops.h
|
|
-@@ -1385,4 +1385,19 @@ static inline int drv_reset_tid_config(s
|
|
|
|
|
|
+@@ -1384,4 +1384,19 @@ static inline int drv_reset_tid_config(s
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
#endif /* __MAC80211_DRIVER_OPS */
|
|
#endif /* __MAC80211_DRIVER_OPS */
|
|
--- a/net/mac80211/ieee80211_i.h
|
|
--- a/net/mac80211/ieee80211_i.h
|
|
+++ b/net/mac80211/ieee80211_i.h
|
|
+++ b/net/mac80211/ieee80211_i.h
|
|
-@@ -990,8 +990,6 @@ struct ieee80211_sub_if_data {
|
|
|
|
|
|
+@@ -993,8 +993,6 @@ struct ieee80211_sub_if_data {
|
|
} debugfs;
|
|
} debugfs;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
@@ -241,7 +241,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
/* must be last, dynamically sized area in this! */
|
|
/* must be last, dynamically sized area in this! */
|
|
struct ieee80211_vif vif;
|
|
struct ieee80211_vif vif;
|
|
};
|
|
};
|
|
-@@ -1769,6 +1767,7 @@ void ieee80211_del_virtual_monitor(struc
|
|
|
|
|
|
+@@ -1772,6 +1770,7 @@ void ieee80211_del_virtual_monitor(struc
|
|
bool __ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata);
|
|
bool __ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata);
|
|
void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata,
|
|
void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata,
|
|
bool update_bss);
|
|
bool update_bss);
|
|
@@ -375,7 +375,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
res = ieee80211_check_queues(sdata,
|
|
res = ieee80211_check_queues(sdata,
|
|
ieee80211_vif_type_p2p(&sdata->vif));
|
|
ieee80211_vif_type_p2p(&sdata->vif));
|
|
if (res)
|
|
if (res)
|
|
-@@ -1286,61 +1371,6 @@ static const struct net_device_ops ieee8
|
|
|
|
|
|
+@@ -1293,61 +1378,6 @@ static const struct net_device_ops ieee8
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
@@ -437,7 +437,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
static void ieee80211_if_free(struct net_device *dev)
|
|
static void ieee80211_if_free(struct net_device *dev)
|
|
{
|
|
{
|
|
free_percpu(netdev_tstats(dev));
|
|
free_percpu(netdev_tstats(dev));
|
|
-@@ -1371,6 +1401,32 @@ static void ieee80211_if_setup_no_queue(
|
|
|
|
|
|
+@@ -1378,6 +1408,32 @@ static void ieee80211_if_setup_no_queue(
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
@@ -470,7 +470,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
static void ieee80211_iface_work(struct work_struct *work)
|
|
static void ieee80211_iface_work(struct work_struct *work)
|
|
{
|
|
{
|
|
struct ieee80211_sub_if_data *sdata =
|
|
struct ieee80211_sub_if_data *sdata =
|
|
-@@ -1553,7 +1609,6 @@ static void ieee80211_setup_sdata(struct
|
|
|
|
|
|
+@@ -1560,7 +1616,6 @@ static void ieee80211_setup_sdata(struct
|
|
sdata->vif.bss_conf.txpower = INT_MIN; /* unset */
|
|
sdata->vif.bss_conf.txpower = INT_MIN; /* unset */
|
|
|
|
|
|
sdata->noack_map = 0;
|
|
sdata->noack_map = 0;
|
|
@@ -478,7 +478,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
/* only monitor/p2p-device differ */
|
|
/* only monitor/p2p-device differ */
|
|
if (sdata->dev) {
|
|
if (sdata->dev) {
|
|
-@@ -1688,6 +1743,7 @@ static int ieee80211_runtime_change_ifty
|
|
|
|
|
|
+@@ -1695,6 +1750,7 @@ static int ieee80211_runtime_change_ifty
|
|
|
|
|
|
ieee80211_teardown_sdata(sdata);
|
|
ieee80211_teardown_sdata(sdata);
|
|
|
|
|
|
@@ -486,7 +486,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
ret = drv_change_interface(local, sdata, internal_type, p2p);
|
|
ret = drv_change_interface(local, sdata, internal_type, p2p);
|
|
if (ret)
|
|
if (ret)
|
|
type = ieee80211_vif_type_p2p(&sdata->vif);
|
|
type = ieee80211_vif_type_p2p(&sdata->vif);
|
|
-@@ -1700,6 +1756,7 @@ static int ieee80211_runtime_change_ifty
|
|
|
|
|
|
+@@ -1707,6 +1763,7 @@ static int ieee80211_runtime_change_ifty
|
|
ieee80211_check_queues(sdata, type);
|
|
ieee80211_check_queues(sdata, type);
|
|
|
|
|
|
ieee80211_setup_sdata(sdata, type);
|
|
ieee80211_setup_sdata(sdata, type);
|
|
@@ -520,14 +520,14 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
- */
|
|
- */
|
|
- if (sdata->hw_80211_encap)
|
|
- if (sdata->hw_80211_encap)
|
|
- return -EINVAL;
|
|
- return -EINVAL;
|
|
-- /* Fall through */
|
|
|
|
|
|
+- fallthrough;
|
|
-
|
|
-
|
|
case WLAN_CIPHER_SUITE_AES_CMAC:
|
|
case WLAN_CIPHER_SUITE_AES_CMAC:
|
|
case WLAN_CIPHER_SUITE_BIP_CMAC_256:
|
|
case WLAN_CIPHER_SUITE_BIP_CMAC_256:
|
|
case WLAN_CIPHER_SUITE_BIP_GMAC_128:
|
|
case WLAN_CIPHER_SUITE_BIP_GMAC_128:
|
|
--- a/net/mac80211/trace.h
|
|
--- a/net/mac80211/trace.h
|
|
+++ b/net/mac80211/trace.h
|
|
+++ b/net/mac80211/trace.h
|
|
-@@ -2733,6 +2733,12 @@ TRACE_EVENT(drv_get_ftm_responder_stats,
|
|
|
|
|
|
+@@ -2734,6 +2734,12 @@ TRACE_EVENT(drv_get_ftm_responder_stats,
|
|
)
|
|
)
|
|
);
|
|
);
|
|
|
|
|
|
@@ -542,7 +542,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
#undef TRACE_INCLUDE_PATH
|
|
#undef TRACE_INCLUDE_PATH
|
|
--- a/net/mac80211/tx.c
|
|
--- a/net/mac80211/tx.c
|
|
+++ b/net/mac80211/tx.c
|
|
+++ b/net/mac80211/tx.c
|
|
-@@ -4181,11 +4181,10 @@ static bool ieee80211_tx_8023(struct iee
|
|
|
|
|
|
+@@ -4178,11 +4178,10 @@ static bool ieee80211_tx_8023(struct iee
|
|
|
|
|
|
static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
|
static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
|
struct net_device *dev, struct sta_info *sta,
|
|
struct net_device *dev, struct sta_info *sta,
|
|
@@ -555,7 +555,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
struct tid_ampdu_tx *tid_tx;
|
|
struct tid_ampdu_tx *tid_tx;
|
|
u8 tid;
|
|
u8 tid;
|
|
|
|
|
|
-@@ -4234,7 +4233,6 @@ static void ieee80211_8023_xmit(struct i
|
|
|
|
|
|
+@@ -4231,7 +4230,6 @@ static void ieee80211_8023_xmit(struct i
|
|
info->control.flags |= IEEE80211_TX_CTRL_HW_80211_ENCAP;
|
|
info->control.flags |= IEEE80211_TX_CTRL_HW_80211_ENCAP;
|
|
info->control.vif = &sdata->vif;
|
|
info->control.vif = &sdata->vif;
|
|
|
|
|
|
@@ -563,7 +563,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
if (key)
|
|
if (key)
|
|
info->control.hw_key = &key->conf;
|
|
info->control.hw_key = &key->conf;
|
|
|
|
|
|
-@@ -4251,12 +4249,9 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
|
|
|
|
|
+@@ -4248,12 +4246,9 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
|
{
|
|
{
|
|
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
|
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
|
struct ethhdr *ehdr = (struct ethhdr *)skb->data;
|
|
struct ethhdr *ehdr = (struct ethhdr *)skb->data;
|
|
@@ -578,7 +578,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
if (unlikely(skb->len < ETH_HLEN)) {
|
|
if (unlikely(skb->len < ETH_HLEN)) {
|
|
kfree_skb(skb);
|
|
kfree_skb(skb);
|
|
-@@ -4265,15 +4260,26 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
|
|
|
|
|
+@@ -4262,15 +4257,26 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
|
|
|
|
|
rcu_read_lock();
|
|
rcu_read_lock();
|
|
|
|
|