| From 1a3d0721e46690d2494707895b791d77a5eb7c3a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 16 Oct 2021 17:32:43 +0200 |
| Subject: mwifiex: Send DELBA requests according to spec |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Jonas Dreßler <verdre@v0yd.nl> |
| |
| [ Upstream commit cc8a8bc37466f79b24d972555237f3d591150602 ] |
| |
| While looking at on-air packets using Wireshark, I noticed we're never |
| setting the initiator bit when sending DELBA requests to the AP: While |
| we set the bit on our del_ba_param_set bitmask, we forget to actually |
| copy that bitmask over to the command struct, which means we never |
| actually set the initiator bit. |
| |
| Fix that and copy the bitmask over to the host_cmd_ds_11n_delba command |
| struct. |
| |
| Fixes: 5e6e3a92b9a4 ("wireless: mwifiex: initial commit for Marvell mwifiex driver") |
| Signed-off-by: Jonas Dreßler <verdre@v0yd.nl> |
| Acked-by: Pali Rohár <pali@kernel.org> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Link: https://lore.kernel.org/r/20211016153244.24353-5-verdre@v0yd.nl |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/marvell/mwifiex/11n.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/wireless/marvell/mwifiex/11n.c b/drivers/net/wireless/marvell/mwifiex/11n.c |
| index e435f801bc912..acbef9f1a83b6 100644 |
| --- a/drivers/net/wireless/marvell/mwifiex/11n.c |
| +++ b/drivers/net/wireless/marvell/mwifiex/11n.c |
| @@ -657,14 +657,15 @@ int mwifiex_send_delba(struct mwifiex_private *priv, int tid, u8 *peer_mac, |
| uint16_t del_ba_param_set; |
| |
| memset(&delba, 0, sizeof(delba)); |
| - delba.del_ba_param_set = cpu_to_le16(tid << DELBA_TID_POS); |
| |
| - del_ba_param_set = le16_to_cpu(delba.del_ba_param_set); |
| + del_ba_param_set = tid << DELBA_TID_POS; |
| + |
| if (initiator) |
| del_ba_param_set |= IEEE80211_DELBA_PARAM_INITIATOR_MASK; |
| else |
| del_ba_param_set &= ~IEEE80211_DELBA_PARAM_INITIATOR_MASK; |
| |
| + delba.del_ba_param_set = cpu_to_le16(del_ba_param_set); |
| memcpy(&delba.peer_mac_addr, peer_mac, ETH_ALEN); |
| |
| /* We don't wait for the response of this command */ |
| -- |
| 2.33.0 |
| |