wcn36xx: Fix multiple AMPDU sessions support
authorLoic Poulain <loic.poulain@linaro.org>
Fri, 24 Jul 2020 10:20:47 +0000 (12:20 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 14 Aug 2020 15:02:16 +0000 (18:02 +0300)
commitffe835aa5bdb33572fceb0b14cba6a44c3371bdd
tree5af5da86c1c5e635b7002ba6ffd0154e2c1e1904
parent743adae9da12aeae93b4006d7f7724530e8c54f6
wcn36xx: Fix multiple AMPDU sessions support

Several AMPDU sessions can be started, e.g. for different TIDs.
Currently the driver does not take care of the session ID when
requesting block-ack (statically set to 0), which leads to never
block-acked packet with sessions other than 0.

Fix this by saving the session id when creating the ba session and
use it in subsequent ba operations.

This issue can be reproduced with iperf in two steps (tid 0 strem
then tid 6 stream).

1.0 iperf -s                                # wcn36xx side
1.1 iperf -c ${IP_ADDR}                     # host side

Then

2.0 iperf -s -u -S 0xC0                     # wcn36xx side
2.1 iperf -c ${IP_ADDR} -u -S 0xC0 -l 2000  # host side

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1595586052-16081-2-git-send-email-loic.poulain@linaro.org
drivers/net/wireless/ath/wcn36xx/main.c
drivers/net/wireless/ath/wcn36xx/smd.c
drivers/net/wireless/ath/wcn36xx/smd.h