]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: ath12k: Advertise encapsulation/decapsulation offload support to mac80211
authorNithyanantham Paramasivam <nithyanantham.paramasivam@oss.qualcomm.com>
Fri, 18 Jul 2025 02:55:13 +0000 (08:25 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Sat, 19 Jul 2025 16:14:45 +0000 (09:14 -0700)
Currently, the mac80211 layer handles construction and parsing
of 802.11 headers during packet transmission and reception.
Offloading encapsulation and decapsulation to hardware can
significantly enhance performance. Check the service bit to determine
if the firmware supports Ethernet offload. If supported, advertise the
capability to mac80211 to bypass software-based 802.11 header
processing.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00217-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Signed-off-by: Nithyanantham Paramasivam <nithyanantham.paramasivam@oss.qualcomm.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250718025513.32982-4-nithyanantham.paramasivam@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/mac.c
drivers/net/wireless/ath/ath12k/wmi.h

index c56201fbee7ad523cbcf6b36313d8edb17338c08..05250fa0600d6bb868b8def2dd9a226dc8fc437f 100644 (file)
@@ -13755,6 +13755,11 @@ static int ath12k_mac_hw_register(struct ath12k_hw *ah)
        ieee80211_hw_set(hw, REPORTS_LOW_ACK);
        ieee80211_hw_set(hw, NO_VIRTUAL_MONITOR);
 
+       if (test_bit(WMI_TLV_SERVICE_ETH_OFFLOAD, ar->wmi->wmi_ab->svc_map)) {
+               ieee80211_hw_set(hw, SUPPORTS_TX_ENCAP_OFFLOAD);
+               ieee80211_hw_set(hw, SUPPORTS_RX_DECAP_OFFLOAD);
+       }
+
        if (cap->nss_ratio_enabled)
                ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW);
 
index 5b782258f87085245867a311f2e631a90cf5666c..f3b0a6f57ec2b0d9f9a1b1831b04639088ded27d 100644 (file)
@@ -2255,6 +2255,7 @@ enum wmi_tlv_service {
        WMI_TLV_SERVICE_WMSK_COMPACTION_RX_TLVS = 361,
 
        WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT = 365,
+       WMI_TLV_SERVICE_ETH_OFFLOAD = 461,
 
        WMI_MAX_EXT2_SERVICE,
 };