qualcomm wifi: conditionally support using firmware with CCX tags

Co-authored-by: Javier Viguera <javier.viguera@digi.com>

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Isaac Hermida 2022-09-29 13:36:20 +02:00 committed by Javier Viguera
parent f3fb6e6342
commit 29b008b790
5 changed files with 2415 additions and 0 deletions

View File

@ -35,6 +35,7 @@ FW_QCA65X4_SDIO_PROPRIETARY = " \
file://qca65X4_sdio_proprietary/qwlan30.bin \
file://qca65X4_sdio_proprietary/utf30.bin \
"
FW_QCA65X4_SDIO_CCX = "file://qca65X4_sdio_proprietary/qwlan30-ccx.bin"
# Firmware files for QCA6574 (Qualcomm proprietary driver)
FW_QCA65X4_PCIE_PROPRIETARY = " \
@ -44,6 +45,7 @@ FW_QCA65X4_PCIE_PROPRIETARY = " \
file://qca65X4_pcie_proprietary/qwlan30.bin \
file://qca65X4_pcie_proprietary/utf.bin \
"
FW_QCA65X4_PCIE_CCX = ""
# Firmware files for QCA6574 (Qualcomm community driver)
# NOTE: the community file 'board.bin' must be substituted by proprietary
@ -60,13 +62,24 @@ FW_QCA6574_WIFI_COMMUNITY = " \
FW_QUALCOMM_WIFI ?= "${FW_QCA65X4_SDIO_PROPRIETARY}"
FW_QUALCOMM_WIFI:ccimx8x = "${@oe.utils.conditional('QUALCOMM_WIFI_DRIVER', 'community', '${FW_QCA6574_WIFI_COMMUNITY}', '${FW_QCA65X4_PCIE_PROPRIETARY}', d)}"
FW_QUALCOMM_CCX ?= "${FW_QCA65X4_SDIO_CCX}"
FW_QUALCOMM_CCX:ccimx8x = "${@oe.utils.conditional('QUALCOMM_WIFI_DRIVER', 'community', '', '${FW_QCA65X4_PCIE_CCX}', d)}"
SRC_URI = " \
${FW_QUALCOMM_BT} \
${FW_QUALCOMM_WIFI} \
${@oe.utils.vartrue('QUALCOMM_FW_CCX_TAGS', '${FW_QUALCOMM_CCX}', '', d)} \
"
S = "${WORKDIR}"
do_unpack[postfuncs] += "${@oe.utils.vartrue('QUALCOMM_FW_CCX_TAGS', 'copy_ccx_fw', '', d)}"
copy_ccx_fw() {
FW_CCX_FILE="$(echo ${FW_QUALCOMM_CCX} | sed -e 's,file\:\/\/,,g')"
FW_NOCCX_FILE="$(echo ${FW_CCX_FILE} | sed -e 's,-ccx,,g')"
cp --remove-destination ${WORKDIR}/${FW_CCX_FILE} ${WORKDIR}/${FW_NOCCX_FILE}
}
do_install() {
# BT firmware (remove 'file://' from variable with files list)
BT_FW_FILES=$(echo ${FW_QUALCOMM_BT} | sed -e 's,file\:\/\/,,g')

View File

@ -25,8 +25,14 @@ SRC_URI:append = " \
file://81-qcom-wifi.rules \
"
FILES_SDIO_CCX = " \
file://WCNSS_qcom_cfg-ccx.ini \
file://0001-add-CCX-tags-support-for-kernel-v5.15.patch \
"
FILES_SDIO = " \
file://modprobe-qualcomm.conf \
${@oe.utils.vartrue('QUALCOMM_FW_CCX_TAGS', '${FILES_SDIO_CCX}', '', d)} \
"
SRC_URI:append = "${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'sdio' , '${FILES_SDIO}', '', d)}"
@ -68,6 +74,11 @@ do_install:append() {
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini
install -d ${D}${sysconfdir}/udev/rules.d
install -m 0644 ${WORKDIR}/81-qcom-wifi.rules ${D}${sysconfdir}/udev/rules.d/
# Overwrite "qcom_cfg.ini" if QUALCOMM_FW_CCX_TAGS is enabled
if [ -f "${WORKDIR}/WCNSS_qcom_cfg-ccx.ini" ]; then
cp --remove-destination ${WORKDIR}/WCNSS_qcom_cfg-ccx.ini ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini
fi
}
do_install:append:ccimx6ul() {

View File

@ -0,0 +1,710 @@
# This file allows user to override the factory
# defaults for the WLAN Driver
# Enable IMPS or not
gEnableImps=1
# Enable/Disable Idle Scan
gEnableIdleScan=0
# Increase sleep duration (seconds) during IMPS
# 0 implies no periodic wake up from IMPS. Periodic wakeup is
# unnecessary if Idle Scan is disabled.
gImpsModSleepTime=0
# Enable BMPS or not
gEnableBmps=1
# Enable suspend or not
# 1: Enable standby, 2: Enable Deep sleep, 3: Enable Mcast/Bcast Filter
gEnableSuspend=3
# Phy Mode (auto, b, g, n, etc)
# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac
# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only
# 7 = 11b only 8 = 11ac only.
gDot11Mode=0
# CSR Roaming Enable(1) Disable(0)
gRoamingTime=0
# Assigned MAC Addresses - This will be used until NV items are in place
# Each byte of MAC address is represented in Hex format as XX
Intf0MacAddress=000AF58989FF
Intf1MacAddress=000AF58989FE
Intf2MacAddress=000AF58989FD
Intf3MacAddress=000AF58989FC
# UAPSD service interval for VO,VI, BE, BK traffic
InfraUapsdVoSrvIntv=0
InfraUapsdViSrvIntv=0
InfraUapsdBeSrvIntv=0
InfraUapsdBkSrvIntv=0
# Flag to allow STA send AddTspec even when ACM is Off
gAddTSWhenACMIsOff=1
# Make 1x1 the default antenna configuration
gNumRxAnt=1
# Beacon filtering frequency (unit in beacon intervals)
gNthBeaconFilter=50
# Enable WAPI or not
# WAPIIsEnabled=0
# Flags to filter Mcast abd Bcast RX packets.
# Value 0: No filtering, 1: Filter all Multicast.
# 2: Filter all Broadcast. 3: Filter all Mcast abd Bcast
McastBcastFilter=3
#Flag to enable HostARPOffload feature or not
hostArpOffload=1
#Flag to enable TCPChkSumOffld feature or not
gEnableTCPChkSumOffld=1
#Flag to enable HostNSOffload feature or not
hostNSOffload=1
#Flag to enable IPChkSumOffld feature or not
gEnableIPChecksumOffload=1
#SoftAP Related Parameters
# AP MAc addr
gAPMacAddr=000AF589dcab
# 802.11n Protection flag
gEnableApProt=1
#Enable OBSS protection
gEnableApOBSSProt=1
#Enable/Disable UAPSD for SoftAP
gEnableApUapsd=1
# Fixed Rate
gFixedRate=0
# Maximum Tx power
# gTxPowerCap=30
# Fragmentation Threshold
# gFragmentationThreshold=2346
# RTS threshold
RTSThreshold=1048576
# Intra-BSS forward
gDisableIntraBssFwd=0
# WMM Enable/Disable
WmmIsEnabled=0
# 802.11d support
g11dSupportEnabled=0
# 802.11h support
g11hSupportEnabled=1
# DFS Master Capability
gEnableDFSMasterCap=1
# ESE Support and fast transition
EseEnabled=1
ImplicitQosIsEnabled=0
gNeighborScanTimerPeriod=200
gNeighborLookupThreshold=76
gNeighborReassocThreshold=81
gNeighborScanChannelMinTime=20
gNeighborScanChannelMaxTime=30
gMaxNeighborReqTries=3
# Legacy (non-ESE, non-802.11r) Fast Roaming Support
# To enable, set FastRoamEnabled=1
# To disable, set FastRoamEnabled=0
FastRoamEnabled=1
#Check if the AP to which we are roaming is better than current AP in terms of RSSI.
#Checking is disabled if set to Zero.Otherwise it will use this value as to how better
#the RSSI of the new/roamable AP should be for roaming
RoamRssiDiff=3
# If the RSSI of any available candidate is better than currently associated
# AP by at least gImmediateRoamRssiDiff, then being to roam immediately (without
# registering for reassoc threshold).
# NOTE: Value of 0 means that we would register for reassoc threshold.
gImmediateRoamRssiDiff=10
# To enable, set gRoamIntraBand=1 (Roaming within band)
# To disable, set gRoamIntraBand=0 (Roaming across band)
gRoamIntraBand=0
# SAP Country code
# Default Country Code is 2 bytes, 3rd byte is optional indoor or out door.
# Example
# US Indoor, USI
# Korea Outdoor, KRO
# Japan without optional byte, JP
# France without optional byte, FR
#gAPCntryCode=USI
#Short Guard Interval Enable/disable
gShortGI20Mhz=1
gShortGI40Mhz=1
#Auto Shutdown Value in seconds. A value of 0 means Auto shutoff is disabled
gAPAutoShutOff=0
#Auto Shutdown wlan : Value in Seconds. 0 means disabled. Max 1 day = 86400 sec
gWlanAutoShutdown = 0
# Listen Energy Detect Mode Configuration
# Valid values 0-128
# 128 means disable Energy Detect feature
# 0-9 are threshold code and 7 is recommended value from system if feature is to be enabled.
# 10-128 are reserved.
# The EDET threshold mapping is as follows in 3dB step:
# 0 = -60 dBm
# 1 = -63 dBm
# 2 = -66 dBm
# ...
# 7 = -81 dBm
# 8 = -84 dBm
# 9 = -87 dBm
# Note: Any of these settings are valid. Setting 0 would yield the highest power saving (in a noisy environment) at the cost of more range. The range impact is approximately #calculated as:
#
# Range Loss (dB) = EDET threshold level (dBm) + 97 dBm.
#
gEnablePhyAgcListenMode=128
#Preferred band (both or 2.4 only or 5 only)
BandCapability=0
#Beacon Early Termination (1 = enable the BET feature, 0 = disable)
enableBeaconEarlyTermination=0
beaconEarlyTerminationWakeInterval=3
#Channel Bonding
gChannelBondingMode24GHz=1
gChannelBondingMode5GHz=1
#Enable Keep alive with non-zero period value
gStaKeepAlivePeriod = 30
#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds).
#For every 10 seconds DUT send Qos Null frame(i.e., Keep Alive frame if link is idle for last 10 seconds.)
#For both active and power save clients.
#Power save clients: DUT set TIM bit from 10th second onwards and till client honors TIM bit.
#If doesn't honor for 5 seconds then DUT remove client.
#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not success still we try on
#11th second if not tries on 12th and so on till 15th second. Hence before disconnection DUT will send 5 NULL frames.
#Hence in any case DUT will detect client got removed in (10+5) seconds. i.e., (gGoKeepAlivePeriod + gGoLinkMonitorPeriod)..
#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and it is period
#where we send NULL frame.
gApLinkMonitorPeriod = 30
gGoLinkMonitorPeriod = 10
#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame are succeed to send or not.
#Hence total effective detection time is gGoLinkMonitorPeriod+ gGoKeepAlivePeriod/gApLinkMonitorPeriod+ gApKeepAlivePeriod.
gGoKeepAlivePeriod = 3
gApKeepAlivePeriod = 10
#If set will start with active scan after driver load, otherwise will start with
#passive scan to find out the domain
gEnableBypass11d=1
#If set to 0, will not scan DFS channels
gEnableDFSChnlScan=1
# Enable DFS channel roam
# 0: DISABLE, 1: ENABLED_NORMAL, 2: ENABLED_ACTIVE
gAllowDFSChannelRoam=1
gVhtChannelWidth=2
# Enable Automatic Tx Power control
gEnableAutomaticTxPowerControl=1
# 0 for OLPC 1 for CLPC and SCPC
gEnableCloseLoop=1
#Data Inactivity Timeout when in powersave (in ms)
gDataInactivityTimeout=200
# VHT Tx/Rx MCS values
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gVhtRxMCS=2
gVhtTxMCS=0
# VHT Tx/Rx MCS values for 2x2
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gEnable2x2=1
gVhtRxMCS2x2=2
gVhtTxMCS2x2=2
#tx_nss_2g - Config Param to change tx nss for 2.4G band
#rx_nss_2g - Config Param to change rx nss for 2.4G band
#tx_nss_5g - Config Param to change tx nss for 5G band
#rx_nss_5g - Config Param to change rx nss for 5G band
#per vdev for 2.4ghz frequency connections
#This ini is used to change the num of tx spatial streams for eg:-
#0x01249249 - change all vdev's tx nss for 2.4ghz connections to 1 each
#0x02492492 - change all vdev's tx nss for 2.4ghz connections to 2 each
#Bits VDEV Type
#BIT[0:2] STA
#BIT[3:5] SAP
#BIT[6:8] P2P GO
#BIT[9:11] P2P Client
#BIT[12:14] TDLS
#BIT[15:17] IBSS
#BIT[18:20] P2P device
#BIT[21:23] OCB
#BIT[24:26] NAN
#BIT[27:31] Reserved
tx_nss_2g=0x02492492
rx_nss_2g=0x02492492
tx_nss_5g=0x02492492
rx_nss_5g=0x02492492
# This ini disables/enables chainmask setting on 2x2, mainly used for ROME
# BT/WLAN chainmask assignment.
# 0, Disable
# 1, Enable
enableBTChainSeparation=0
# Set txchainmask and rxchainmask
# These parameters are used only if gEnable2x2 is 0
# Valid values are 1,2
# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0.
# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1.
gSetTxChainmask1x1=0
gSetRxChainmask1x1=0
# Chain mask for 2G and 5G: 1 for chain0, 2 for chain1, 3 for: chain0 and chain1
rx_chain_mask_5g=3
tx_chain_mask_5g=3
rx_chain_mask_2g=3
tx_chain_mask_2g=3
# Dual mac disable
gDualMacFeatureDisable=1
#Drop beacon on mismatch channel
drop_bcn_on_chan_mismatch=0
# Scan Timing Parameters
# gPassiveMaxChannelTime=110
# gPassiveMinChannelTime=60
gActiveMaxChannelTime=80
gActiveMinChannelTime=40
#If set to 0, MCC is not allowed.
gEnableMCCMode=1
# MCC to SCC Switch mode: 0-Disable 1-Enable 2-Force SCC if same band
gWlanMccToSccSwitchMode = 0
# Band Switch Enable/Disable for MCC to SCC
gWlanBandSwitchEnable = 0
# 1=enable STBC; 0=disable STBC
gEnableRXSTBC=1
# 1=enable tx STBC; 0=disable
gEnableTXSTBC=1
# 1=enable rx LDPC; 0=disable
gEnableRXLDPC=1
# Enable Tx beamforming in VHT20MHz
# Valid values are 0,1. If commented out, the default value is 0.
# 0=disable, 1=enable
gEnableTxBFin20MHz=1
# Enable Active mode offload
gEnableActiveModeOffload=1
#Enable Scan Results Aging based on number of scans
gScanResultAgeCount=1
#Enable Power saving mechanism Based on Android Framework
#If set to 0 Driver internally control the Power saving mechanism
#If set to 1 Android Framwrok control the Power saving mechanism
isAndroidPsEn=0
#Enable thermal mitigation
gThermalMitigationEnable=0
gEnableFastRoamInConcurrency=1
#List of Country codes for which 11ac needs to be disabled
#Each country code must be delimited by comma(,)
gListOfNon11acCountryCode=RU,UA,ZA
#Maxium Channel time in msec
gMaxMediumTime = 6000
# 802.11K support
gRrmEnable=1
gRrmRandIntvl=100
#Scan offload
gEnableDirectedScanOffload=1
#FlexConnect Power Factor
#Default is set to 0 (disable)
gFlexConnectPowerFactor=0
#Disable split scan, the FW will take care of it
gNumChanCombinedConc=60
#Enable Power Save offload
gEnablePowerSaveOffload=2
#Enable firmware uart print
gEnablefwprint=0
#Enable firmware log
gEnablefwlog=1
# Additional firmware log levels
gFwDebugLogLevel=4
gFwDebugModuleLoglevel=1,0,2,0,4,0,5,0,6,0,7,4,8,0,9,0,11,0,13,0,17,0,18,0,19,0,27,0,29,0,31,0,35,0,36,0,38,0
#IPA config
gIPAConfig=0
gIPADescSize=800
gIPAPreFilterEnable=1
gIPARMEnable=1
gIPAIPv6Enable=1
#P2P Listen offload
gEnableP2pListenOffload=1
# Maximum MPDU length (VHT only. Valid values: 0->3895 octets, 1->7991 octets, 2->11454 octets)
gVhtMpduLen=2
# Maximum number of wow filters required
#gMaxWoWFilters=22
# WOW Enable/Disable.
# 0 - Disable both magic pattern match and pattern byte match.
# 1 - Enable magic pattern match on all interfaces.
# 2 - Enable pattern byte match on all interfaces.
# 3 - Enable both magic patter and pattern byte match on all interfaces.
# Default value of gEnableWoW is 3.
# gEnableWoW=0
# Enable or Disable MCC Adaptive Scheduler at the FW
# 1=Enable (default), 0=Disable
gEnableMCCAdaptiveScheduler=1
#Enable or Disable p2p device address administered
isP2pDeviceAddrAdministrated=0
# RX packet handling options
# 0: no rx thread, no RPS, for MDM
# 1: RX thread
# 2: RPS
rxhandle=2
# Set RPS CPU MAP as 0xe for the 4 RX queues
# This allows use of CPU1-CPU3 but not CPU0 for 4 RX queues
rpsRxQueueCpuMapList=c
# Remove Overlap channel restriction
gEnableOverLapCh=0
#Enable VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1
#Enable or Disable 5G early beacon termination
gEnable5gEBT=1
#Maximum number of offload peers supported
# gMaxOffloadPeers=2
# controlling the following offload patterns
# through ini parameter. Default value is 1
# to disable set it to zero. ssdp = 0
# Setup multicast pattern for mDNS 224.0.0.251,
# SSDP 239.255.255.250 and LLMNR 224.0.0.252
ssdp = 0
#Enable Memory Deep Sleep
gEnableMemDeepSleep=1
# Bus bandwidth threshold values in terms of number of packets
gBusBandwidthHighThreshold=2000
gBusBandwidthMediumThreshold=500
gBusBandwidthLowThreshold=150
# IPA bandwidth voting
gIPAHighBandwidthMbps=800
gIPAMediumBandwidthMbps=400
gIPALowBandwidthMbps=200
# Bus bandwidth compute timeout value in ms
gBusBandwidthComputeInterval=100
# Regulatory Setting; 0=STRICT; 1=CUSTOM
gRegulatoryChangeCountry=0
# RA filtering rate limit param, the current value would not
# help if the lifetime in RA is less than 3*60=3min. Then
# we need to change it, though it is uncommon.
# gRAFilterEnable=0
gRArateLimitInterval=600
# Maximum number of concurrent connections
gMaxConcurrentActiveSessions=2
# Disable/Enable GreenAP
# 0 to disable, 1 to enable, default: 1
gEnableGreenAp=1
# Radar PRI multiplier
gDFSradarMappingPriMultiplier=4
gPNOScanSupport=0
# Enable/Disable RX full reorder offload
gReorderOffloadSupported=1
# Enable/Disable LPASS support
# 0 to disable, 1 to enable
gEnableLpassSupport=0
# Whether userspace country code setting shld have priority
gCountryCodePriority=1
# Enable(1)/Disable(0) SIFS burst
gEnableSifsBurst=0
# Enable/Disable channel avoidance for SAP in SCC scenario
# 0 - disable
# 1 - enable
gSapSccChanAvoidance=0
# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode
gIbssTxSpEndInactivityTime=10
# Enable/Disable Roaming Offload Support (a.k.a Key Management Offload)
# 0 to disable, 1 to enable
gRoamOffloadEnabled=0
# Enable support for TDLS
# 0 - disable
# 1 - enable
gEnableTDLSSupport=1
# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall
# initiate TDLS Discovery towards a peer whenever setup criteria (throughput
# and RSSI) is met and then will initiate teardown when teardown criteria
# (idle packet count and RSSI) is met.
# 0 - disable
# 1 - enable
gEnableTDLSImplicitTrigger=1
# Enable TDLS External Control. That is, user space application has to
# first configure a peer MAC in wlan driver towards which TDLS is desired.
# Device will establish TDLS only towards those configured peers whenever
# TDLS criteria (throughput and RSSI threshold) is met and teardown TDLS
# when teardown criteria (idle packet count and RSSI) is met. However,
# device will accept TDLS connection if it is initiated from any other peer,
# even if that peer is not configured.
# 0 - disable
# 1 - enable
# For TDLS External Control, Implicit Trigger must also be enabled.
gTDLSExternalControl=1
# Enable support for TDLS off-channel operation
# 0 - disable
# 1 - enable
# TDLS off-channel operation will be invoked when there is only one
# TDLS connection.
gEnableTDLSOffChannel=1
IpaUcOffloadEnabled=1
gIpaUcStaOffload=1
gEnableSelfRecovery=1
# Enable or Disable Random MAC (Spoofing)
# 1=Enable, 0=Disable (default)
gEnableMacAddrSpoof=0
# Enable Auto suspend feature
# When this feature is enabled, it will shutdown the PCIe link
# when inactivity is detected in STA disconnected mode.
# 0 - disable
# 1 - enable
gEnableBusAutoSuspend=0
# Enable Runtime PM Feature.
# Enabling this feature will put target wow and shutdown pcie link
# when inactivity is detected in WLAN Driver.
# This feature is inactive when beaconing interfaces are active with
# clients associated.
# 0 - disable
# 1 - enable
gRuntimePM=1
# When gRuntimePM is disabled gRuntimeAutoTime won't take effect.
# The Time is in msec.
# 100 is min, 10000 is max, 500 is default.
gRuntimePMDelay=500
# Enable to check FW hash if secure FW feature is enabled. It's for defconfig
# builds only since it will be ignored in performance/release builds.
gEnableFWHashCheck=1
# Enable FW to filter out broadcast packets and wakeup host during runtime PM.
# As APPS is awake during runtime PM, if any application needs the broadcast
# packets OEM's can enable this flag.
# FW will filters the broadcast packets and wakeup host to deliver them during
# runtime suspend.
# This flag will take affect when Runtime PM is enabled
gRuntimePmEnableBcastPattern=0
# intervals length (in ms) during WLAN P2P (single vdev) + BT Paging
# min 20ms, max 200ms
gBTIntervalPageP2P=30
gWLIntervalPageP2P=30
# intervals length (in ms) during WLAN STA (single vdev) + BT Paging
# min 20ms, max 200ms
gBTIntervalPageSTA=30
gWLIntervalPageSTA=30
# intervals length (in ms) during WLAN SAP (single vdev) + BT Paging
# min 20ms, max 200ms
gBTIntervalPageSAP=30
gWLIntervalPageSAP=30
# Enable OCB/DSRC tx per packet stats, disable it as default because
# it would degrade throughput
gOcbTxPerPktStatsEnable=0
# Eanble self recovery on standalone SPs
gEnableFwSelfRecovery=1
gSoftApMaxPeers=14
gEnablePacketLog=0
END
# Note: Configuration parser would not read anything past the END marker