[PATCH 0/4] ath10k: add encapsulation offloading support

Sergey Ryazanov ryazanov.s.a at gmail.com
Sun May 15 20:25:15 PDT 2022


this series introduces driver support for hardware encapsulation
offloading feature.

The main goal of the series is an overall improvement of system
performance. On a QCA9563+QCA9888-based access point in bridged mode,
encapsulation offloading increases TCP 16-streams DL throughput from
365 to 396 mbps (+8%) and UDP DL throughput from 436 to 483 mbps (+11%).

The series consist of four patches, the first three prepare the code,
and the last one introduces the offloading support itself. The first
patch reworks transmission status reporting to make it flexible enough
to support 802.11 and Ethernet encapsulated frames reporting. The second
patch reworks improves Ethernet encapsulated frames handling in the HTT
Tx layer. The third patch reworks the module parameter that configures
the main encapsulation format of frames that are passed from the driver
to the hardware. It makes it possible to configure more encapsulation
methods than just raw or not-raw. And, as stated before, the fourth
patch actually introduces offloading support. It changes a couple of
frame analysis places along the xmit path and starts reporting
offloading support to mac80211 via the corresponding hw attribute.

The new feature has been extensively tested with QCA9888. It works well
and introduces a measurable performance increase on platforms with not
so fast CPU (e.g. QCA9563). Tests with MT7621+QCA6174 show no
regression. I was unable to observe any measurable throughput increase
in tests with QCA6174 due to the poor perfomance the SISO client and OTA
testing. Only slight downlink rate stability increase with slight
reducing of the SIRQ load on the AP side.

Tests with QCA9880, QCA9980, QCA9984, QCA9377 revealed no regression
[1]. No specific throughput tests have been performed. In OTA tests with
a regular load, there is a slight increase in througput stability.

In tests of the QCA9377 in Sta mode, Edward Matijevic noticed a possible
regression in the Ethernet tx mode compared to the Native WiFi tx
> There might be a regression in download bandwidth under ETHERNET mode
> but I didn't do enough tests to see if was my PC or the adapter as the
> upload bandwidth was similar to other tests.
> NATIVE_WIFI performs the same as without the patch.

Credits: thanks to OpenWrt folks Oldřich Jedlička
<oldium.pro at gmail.com> and Edward Matijevic <motolav at gmail.com> who
helped me a lot to perform extensive testing with various chips after a
RFC/RFT post in the OpenWrt development mailing list [1]. Thanks to
Zhijun You <hujy652 at gmail.com> who helped with the testing, pointed me
to the previous work (see below) and the missed parts in the HTT Tx
layer [1].

Prior work: similar patches were independently developed by QCA and then
submitted for inclusion by John Crispin <john at phrozen.org> [2] and
latter by Zhijun You <hujy652 at gmail.com> [3]. The work was not merged
due to the lack of a part for 64-bits descriptors [4]. The idea of HTT
Tx layer change from this work was adopted for the series in patch #2.

1. https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg62013.html
2. https://lore.kernel.org/all/20191216092207.31032-1-john@phrozen.org/
3. https://lore.kernel.org/all/20210524103130.66693-1-hujy652@gmail.com/
4. https://patchwork.kernel.org/project/linux-wireless/patch/20191216092207.31032-1-john@phrozen.org/

CC: Edward Matijevic <motolav at gmail.com>
CC: John Crispin <john at phrozen.org>
CC: Oldřich Jedlička <oldium.pro at gmail.com>
CC: Tom Psyborg <pozega.tomislav at gmail.com>
CC: Vasanthakumar Thiagarajan <vthiagar at qti.qualcomm.com>
CC: Zhijun You <hujy652 at gmail.com>

Changes since RFC:
 * new Tested-on and Tested-by tags
 * new patch #2 for better Ethernet encapsulation support in the HTT Tx
 * rebased on top of latest ath-next

Sergey Ryazanov (3):
  ath10k: improve tx status reporting
  ath10k: htt_tx: do not interpret Eth frames as WiFi
  ath10k: turn rawmode into frame_mode
  ath10k: add encapsulation offloading support

 drivers/net/wireless/ath/ath10k/core.c   | 11 ++--
 drivers/net/wireless/ath/ath10k/core.h   |  1 +
 drivers/net/wireless/ath/ath10k/htt_tx.c | 61 ++++++++++++---------
 drivers/net/wireless/ath/ath10k/mac.c    | 67 +++++++++++++++++++-----
 drivers/net/wireless/ath/ath10k/txrx.c   | 12 ++++-
 5 files changed, 108 insertions(+), 44 deletions(-)


More information about the ath10k mailing list