Commit Graph

2890 Commits

Author SHA1 Message Date
Edayilliam Jayadev
d9667ef801 qcacmn: Prevent out of order delivery of mgmt frames
Keep track of the global time stamp of the last
management frame delivered to the upper layer.
Drop all the frames older than the last delivered
frame.

CRs-Fixed: 3049671
Change-Id: Ibe0cc239f7af38da63ea8c405b3f89fc9473ea57
2021-10-12 00:09:10 -07:00
Pragaspathi Thilagaraj
ce387c8fd3 qcacmn: Validate SSID first while fetching peer pmksa
Validate the SSID & cache ID if SSID length is present in the
pmksa entry, as in FILS case only SSID and cache id are filled
and BSSID is not filled.

So validate the BSSID only if the SSID is not present.

Change-Id: Ia0a31f953869f00495fad597bb564ec706425312
CRs-Fixed: 3051530
2021-10-08 23:15:58 -07:00
abhinav kumar
7427e70f15 qcacmn: Fix race condition between connect and disconnect
Scenario: In case of STA + STA, NB/SB issues disconnection for
vdev 0 when vdev 1 is in connecting state.

As connection is blocking serialization command and it can try
multiple candidates and can take upto 30+ sec, there is a
chance that disconnect may get timeout and is followed by
vdev delete from osif. This can lead to vdev delete sent
without vdev down/stop and bss peer delete for vdev 0.

So abort connection when trying for candidate if any of the
vdev is waiting for disconnect, to avoid disconnect timeout.

Change-Id: I7ef50b2e870317d2b095dd0385fcbe1c5b86fd20
CRs-Fixed: 3051567
2021-10-08 13:55:33 -07:00
Lincoln Tran
40e49db431 qcacmn: Add all membership selector elements
Include all elements from the BSS membership selector value encoding
table.

Change-Id: Ia9dda9aaa44d5c6ea83d750676511c1ed74bfb4b
CRs-fixed: 3050316
2021-10-07 23:15:56 -07:00
Bapiraju Alla
8354390c7d qcacmn: Add ML IE handling in util_scan_copy_beacon_data
Currently, ML IE address update is missing while copying the beacon data.
This may result in illegal memory access when ML IE accessed from copyied
scan entry after original scan entry got freed.

To avoid this, update ML IE address in new scan entry while copying
scan entry.

Change-Id: I6161481cbd13573b8177f122f7d26d177cc07aaa
CRs-Fixed: 3052302
2021-10-07 18:42:54 -07:00
Edayilliam Jayadev
8498476787 qcacmn: Add lock to protect reo algorithm entry
Add spin lock protect the critical section in reorder
algorithm entry.

CRs-Fixed: 3048994
Change-Id: I9bc6b30b2102dd14f0e5e2ba593e9a6bbbb72714
2021-10-07 18:42:49 -07:00
Shashikala Prabhu
f833646e06 qcacmn: Do not limit the max length of RSN/WPA IE as 28
Do not limit the max length of RSN/WPA IE as they can contain multiple AKM
and CIPHER. We need to consider all the variables to limit the max length.

Change-Id: I204f86d7c773d0c104ad1f58b3648d6c5577af94
CRs-Fixed: 3051247
2021-10-07 07:05:44 -07:00
Vignesh U
9abbd66770 qcacmn: Do not allow to set same 6G AP power mode
The API that takes in the input 6G AP power type and updates current
channel list, allows setting the same power type which is not needed and
is a costly operation.

Change-Id: Ia690f40a6796a0db243f0abd15f2eebc8340d1d9
CRs-Fixed: 3051502
2021-10-07 04:46:08 -07:00
Vignesh U
c47cd3f96c qcacmn: Reset AFC power event received status
The power event received status is set when AFC power event is received
and is reset unconditionally when AFC expiry event received.

Reset AFC power event received status only on receiving AFC expiry event
with sub-type AFC_EXPIRY_EVENT_SWITCH_TO_LPI.

Change-Id: Ib7c1d12cbc2797ddbb19d73fd38d82d100adf3d3
2021-10-07 04:46:04 -07:00
Himanshu Batra
069f37b825 qcacmn: Use osif_cfg as disconnect source for ML internal disconnect
In case when connect req is received while ML connect is in progress,
disconnect is issued with SB_disconnect as source but sb disconnect is
not handler in join active. So, send osif_cfg_disconnect as a source

Change-Id: I9604e23193ba3aef334f0873d2460a992b1914ea
2021-10-06 13:06:04 -07:00
Hariharan Basuthkar
7a1cdfbd43 qcacmn: Intersect CFIs with SP chan list and AFC frequency range
When the frequency ranges and channel frequency indices in the AFC
server response are not the same, the current channel list has
channels enabled, that are absent in the CFIs.

This is because the AFC master channel list is built by intersecting
the frequency ranges in the AFC frequency object and state of the
channels in the SP AP master channel list.

To fix this issue, build the AFC master channel list by intersecting
the frequency ranges in the AFC frequency object and state of the
channels along with the CFIs received in the AFC channel objects from
the target.

Change-Id: I12cc54f90b75b9a7be491e7dd2e9c101be6dd1f6
CRs-Fixed: 3042040
2021-10-06 04:22:38 -07:00
Venkateswara Swamy Bandaru
d70df100f7 qcacmn: Add 11be D1.0 Capability defines
Add 11be D1.0 Mac and Phy capability defines.
Corrected lengths if the capability fields.

Change-Id: I40e2d048946857498c425ca01c3010f255081833
CRs-Fixed: 3025958
2021-10-05 13:07:50 -07:00
Rhythm Patwa
e60e11bb76 qcacmn: Add QDF module ID for AFC
Add QDF module ID for AFC debug logs.

Change-Id: I741b85df50e3bf23b0ff5096270f0dd7a20679e3
2021-10-05 07:36:50 -07:00
Vignesh U
350da55314 qcacmn: Find radar found frequency for 11BE Chipset
The "wmi_pdev_dfs_radar_detection_event" has an unused field "chan_freq".
It currently holds the value of primary 20MHz channel. With the
introduction of 11BE chipsets, this field is changed to hold the value of
the center frequency of the channel width on which the radar is found.

This new change is indicated by a wmi service
"wmi_is_radar_found_chan_freq_eq_center_freq".

For the Chipsets that support this service, the radar found frequency
can be calculated by mere addition of the fields "chan_freq" and
"freq_offset" field.

Change-Id: I8d2ce0023e2feb6e749ca8d7d5f547fafc0fdf98
2021-10-04 13:53:50 -07:00
Edayilliam Jayadev
3038a860fc qcacmn: Fix compilation issues in MGMT RX REO module
Fix compilation issues in management rx reorder module.

Change-Id: I4eb7e2e3421f107607c6d99aa737fe3643e2ed12
CRs-Fixed: 3046412
2021-10-03 22:55:54 -07:00
Kiran Venkatappa
24d3c5dc59 qcacmn: Compilation fix when 11BE files are removed
Add some 11BE files inclusion under feature flag to fix
compilation error when 11BE files are removed.

Change-Id: I809c5a3e3be2b6a7db35fa420714063b730ebe1d
2021-10-01 15:18:16 -07:00
Hariharan Basuthkar
006d4dc049 qcacmn: Check in SP channel list before enabling in AFC master list
When the AFC dummy server sends the frequency range with only the
UNII-6 channels, the AP still moves to SP and comes up on the
UNII-6 channel.

In reg_fill_max_psd_in_afc_chan_list, the channels are enabled in the
AFC master channel list only based on the frequency ranges present
in the AFC frequency object. There is no condition present to check
if the channels are supported by the reg_rules sent by the target
in the WMI_REG_CHAN_LIST_CC_EXT_EVENT.

To fix this issue, before enabling the channel in AFC master channel
list, check if the channel is also enabled in the SP AP master channel
list.

Change-Id: I2cbe69acf13bff57662f77eeab70e3f3a3240196
CRs-Fixed: 3042428
2021-10-01 07:52:01 -07:00
Bapiraju Alla
8c5f682d9d qcacmn: Reset auth type for partner link connect request
Currently ML secure connection is failing for second link at STA.
This is because, auth type is not proper in connect request crypto
params. Hence failed to get the partner scan entry with matching
auth type.

To resolve this, reset auth type while preparing partner link connect
request.

Change-Id: Ic291ad4e4405ea2f625c1e47d052166eba21036b
CRs-Fixed: 3040789
2021-09-30 15:15:14 -07:00
Edayilliam Jayadev
29fe92fbd7 qcacmn: Add fixes in wait count calculation
1. Add fixes in wait count calculation logic.
2. Add necessary debug logs in wait count calculation.

CRs-Fixed: 3026035
Change-Id: I5aad3a5b56ae1db7b00e17240bb768f35cd83abc
2021-09-30 08:38:35 -07:00
Edayilliam Jayadev
9fd7fb390c qcacmn: Add fixes in snapshot read logic
1. Initialize the temporary variable to read snapshot to zero.
2. Read correct number of shared snapshot values.

CRs-Fixed: 3026029
Change-Id: I6f4fc9d1d2bfe4818304be16f7c80830b4fb260b
2021-09-30 08:38:30 -07:00
Edayilliam Jayadev
b8bb556398 qcacmn: Add new QDF module for management rx reorder
Add new QDF module for management rx reorder feature.

CRs-Fixed: 3026019
Change-Id: I471757f4f32ed8439d94c9cd96a330b21299140a
2021-09-30 08:38:21 -07:00
Ananya Barat
c2bca12b79 qcacmn: Modify get bonding pair function to accommodate 320 MHz bandwidth
Following are the changes:
1. Add macros relevant to the addition of the 320 MHz root to the preCAC
   tree.

2. Adding 320MHz bandwidth in switch case and separating
   'case CH_WIDTH_320MHZ' using a compile time macro ( 11BE), forces us
   to use the macro inside the function, which is not allowed by the
   coding guideline.

   Convert the "switch case" mapping (which is generally a binary search)
   into a linear search of a mapping (BW -> bonded pair) array , thereby
   using the macro WLAN_FEATURE_11BE to separate the 320MHz bandwidth
   in the data structure space instead of doing the separation inside
   the function space.

Change-Id: Iaab2328deef1cb7b2ff82bafe5d3cd2ea137e725
2021-09-30 06:27:30 -07:00
Lincoln Tran
92f93cb246 qcacmn: Add MLO as disconnect source
When processing a peer or southbound disconnect on the non assoc link,
there is a vdev stop issue due to the correct state not being set. For
this link, set the disconnect source as MLO instead of passing it down
from the caller.

Change-Id: I8db444e7c80659a1a1026a53326e99c96ef631f0
CRs-fixed: 3040658
2021-09-29 15:05:32 -07:00
Shiva Krishna Pittala
697dce6937 qcacmn: Add an API to check if a given channel width is supported
Add an API to check if a given channel width is supported on a given pdev
by looking at its wireless modes.

CRs-Fixed: 3042932
Change-Id: I7194412b147147eba00dbe860875e46dac602b5b
2021-09-27 22:22:28 -07:00
Shiva Krishna Pittala
29817dce94 qcacmn: Move REGDMN and wireless modes to reg_services_public_struct.h
There is a requirement to use REGDMN and wireless modes in UMAC layer of
the cmndev component. As the WMI_HOST_REGDMN modes currently are defined in
WMI layer, we can't use them directly in the UMAC layer. Hence move them
to the reg_services_public_struct.h and rename them as HOST_REGDMN modes.
Replace all WMI_HOST_REGDMN instances with HOST_REGDMN. Wireless modes are
currently defined in WIN component, use them to cmndev component.

CRs-Fixed: 3044590
Change-Id: Iee5fa1745a1a44b834334746b10bdbb6f6563a0a
2021-09-27 22:22:23 -07:00
Shiva Krishna Pittala
81f3009593 qcacmn: Add support for run-time enablement of MGMT Rx REO feature
Add INI and WMI service bit based enablement support for
MGMT Rx REO feature.

CRs-Fixed: 3014353
Change-Id: I95650718d69b70f119621a9481dbf1518bc5500b
2021-09-27 17:58:04 -07:00
Lincoln Tran
bb30b105cf qcacmn: Fix MLO compilation issues
Fix compilation issues in MLO related code.
Add debug prints when generating link assoc response.
Add NULL value check.

Change-Id: Ie5951816ee39428c086ec91eaa6fc9cf598072b6
CRs-fixed: 3038725
2021-09-27 17:57:59 -07:00
Sai Pratyusha Magam
ce2fc16440 qcacmn: Add additional packet type check in wlan_crypto_get_keyid function
Add additional packet type check in wlan_crypto_get_keyid function

Change-Id: Iee31a428a20c256797c1b460b835dbe31dc6f2e9
CRs-Fixed: 3040714
2021-09-27 15:44:45 -07:00
Shiva Krishna Pittala
b0384b31da qcacmn: Expose the external APIs from MLO global shared memory handling
Expose the following APIs from MLO global shared memory handling
    - APIs required by the REO logic
    - APIs required to invoke the MLO global shared memory parsing

Change-Id: Ia2fb0b0fee5d3904bae8cd70ce3364360d5ea16e
CRs-Fixed: 3014343
2021-09-25 17:22:07 -07:00
Hariharan Basuthkar
479b0d31a1 qcacmn: Fix the issues pointed out by KW in the regulatory module
Fix the issues pointed out by KW :

1) https://kwdbprod16.qualcomm.com:8070/review/insight-review.html#
   issuedetails_goto:problemid=222576,project=CRM_NHSS_QSDK_11_5_P

   Initialize dbg_id in reg_process_afc_power_event.

2) https://kwdbprod16.qualcomm.com:8070/review/insight-review.html#
   issuedetails_goto:problemid=222579,project=CRM_NHSS_QSDK_11_5_P

   In ucfg_reg_get_partial_afc_req_info, add a sanity check for afc_req
   to prevent NULL pointer dereference.

3) https://kwdbprod16.qualcomm.com:8070/review/insight-review.html#
   issuedetails_goto:problemid=222580,project=CRM_NHSS_QSDK_11_5_P

   Add a sanity check for afc_chan_obj to prevent NULL pointer
   dereference.

Change-Id: I0481fda6d08590312a863a33a1823a0b07fa194e
CRs-Fixed: 3043280
2021-09-25 06:03:29 -07:00
Himanshu Batra
dff5855dd9 qcacmn: Add API to get ML vdev list
Add API to get ML vdev list

Change-Id: Ie4a001dc5b1906f2236f54335e3867727fd25e02
2021-09-24 20:45:03 -07:00
Lincoln Tran
9f659010f4 qcacmn: Fix legacy connection when the 11be feature is enabled
Add the following fixes:
-Don't update the SA in mgmt frames when vdev is not operating as
 STA
-Set the MLO vdev capability when setting the link address. In
 case of non ML connection, this bit should not be set.

Change-Id: I23f8fb8d43afbed687f619c7029893a7d09696d2
CRs-fixed: 3038626
2021-09-24 20:44:58 -07:00
Kani M
2c41328915 qcacmn: Enable code under WLAN_CONV_CRYPTO_SUPPORTED
This incorporates and enables the code under the flag
WLAN_CONV_CRYPTO_SUPPORTED.

Change-Id: I5be4606fac8dbf172b017cc91ba6e19af03e282b
2021-09-24 18:27:48 -07:00
Vignesh U
23be35ae70 qcacmn: Set "agile_precac_active" for all applicable pdevs
Currently, "agile_precac_active" is set only after receiving the start
event in the init state. "agile_precac_active" indicates whether adfs is
supported in the radio or not. This has to be set based on the agile precac
enabled check when the vap is brought up and when the event
DFS_AGILE_SM_EV_AGILE_START is sent to DFS Agile State Machine.

Change-Id: I2084d6d413ee11fa9f77026326dab79aafcd64fb
2021-09-24 02:14:43 -07:00
Surya Prakash Sivaraj
7d2ec40194 qcacmn: Send SSID in join req for OWE transition mode
STA connection with OWE transition mode SSID fails due to join
failure timeout. Since, it is OWE transition mode, STA needs probe
response for join success.

The scan table entry of the candidate BSSID is sent in the join request.
This entry is used to create session and to send probe request to AP.
In case of OWE transition mode, the beacon carries wildcard SSID.
Therefore, the scan table entry also has wildcard ssid. Also,
during the candidate selection, scm_ignore_ssid_check_for_owe check
allows even entries with wildcard SSIDs to be selected as candiates
for OWE transition mode.

The join request with Wildcard SSID in the scan entry is used by LIM
to create session, as well as to send probe request.Therefore,
the AP doesn't respond to the probe request with wildcard ssid
leading to join failure timeout.

This change adds ssid from connect request to the cm_vdev_join_req,
which can be used by LIM to create session and to send probe request
whenever the SSID in scan entry is wildcard.

Change-Id: If43d7e8a65bc3e37d67e22609932cf18f804f0ab
CRs-Fixed: 3041142
2021-09-24 02:14:38 -07:00
Huashan Qu
88c125a678 qcacmn: Rename QCA_MCL_DFS_SUPPORT to MOBILE_DFS_SUPPORT
Rename QCA_MCL_DFS_SUPPORT to MOBILE_DFS_SUPPORT.

Change-Id: Ic209f76e3a9b1a7a524d7036a0fef7ca044d4ca8
CRs-Fixed: 3038271
2021-09-23 21:35:24 -07:00
Himanshu Batra
06f52d9da2 qcacmn: Add API to check if STA vdev is mlo assoc or link vdev
Add API to check if STA vdev is mlo assoc or link vdev

Change-Id: If5d5fab4c423939d272156e1dea4fae5d1d8d80a
2021-09-23 21:35:19 -07:00
Krishna Rao
32caa92ae8 qcacmn: Add MLO specific definitions for RNR IE
Add definitions related to MLO specific aspects of Reduced Neighbor
Report IE.

CRs-Fixed: 3042063
Change-Id: I0cba496a071ccb2be719dbe584f2f0f98d4a5b8a
2021-09-23 17:09:35 -07:00
Vignesh Mohan
5fc1705df5 qcacmn: Avoid switching to spur channels in UNII-1 band
When operating in 20/40MHz modes in channels 52/56/60/64, spur
is found on adjacent channels (40, 44, 48) if we switch to those
channels after radar. To avoid this issue, add a SW WAR to ignore
selecting the adjacent channels if radar is found on the UNII-2
channels (52-64).

Change-Id: I4d02c53bf57171b9e5e5704d36552d0d5c6423b9
2021-09-22 07:37:31 -07:00
Jyoti Kumari
8f7c876c10 qcacmn: Update beacon interval for p2p_cli from scan entry
During p2p AGO and GC connection, beacon interval of GC doesn't
match with AGO which causes connection failure.

As part of fix, update beacon interval of p2p_cli from scan entry

Change-Id: Icb38d129809dea0ef0645df29723a6315e32b0f5
CRs-Fixed: 3039930
2021-09-22 05:27:28 -07:00
Krishna Rao
cea74e2c92 qcacmn: Add 802.11 field lengths and other definitions
Add or modify the following IEEE 802.11 related definitions for use in
protocol processing code:
- Add individual length definitions for the following initial fields
used in some 802.11 management frames: Timestamp, Beacon Interval,
Capability Information, Listen Interval, Status Code and AID. These
are added so that protocol processing code that needs to skip over
individual fields can refer to the relevant lengths.
- Modify the definitions of assoc request/response IE offsets to use
some of the above individual definitions.
- Add definition of position of element ID extension
- Add element ID for fragment element
- Add definition for size in octets of Link ID Info subfield in Basic
variant Multi-Link element Common Info field.

Change-Id: I272a5f99573b41d7431c8dd782d02bd141813def
CRs-Fixed: 3025500
2021-09-22 03:16:17 -07:00
Vijay Krishnan
d57b561f80 qcacmn: Check Global Opclass if no Opclass present
In IEEE80211 spec, US Opclass is not supporting the 5.9Ghz
channels, therefore whenever 5.9Ghz channels are enabled,
while adding channel switch IE element, if there is no Opclass
available for the destination frequency, then check the Global
Opclass table for the destination frequency and select the
appropriate Opclass number.

Change-Id: I495576555db7dbb6fb5d5a77a3b17ec5b83cf286
CRs-Fixed: 3020692
2021-09-22 00:57:27 -07:00
Hariharan Basuthkar
72fea5404a qcacmn: Add separate APIs to find chan enums
When the 6G AP comes up on a SP mode, the current channel list has
channel 97 (6435 MHz center frequency) enabled, even though the
BDF reg_rule and AFC frequency object has the range 5925-6425 MHz.

When 6425 is given as the input to reg_find_chan_enum_for_6g, it also
returns the enum corresponding to 6435, which is incorrect.

To fix this issue, add two new functions
reg_find_low_limit_chan_enum_for_6g and
reg_find_high_limit_chan_enum_for_6g to find the lower channel enum and
upper channel enum respectively. In reg_fill_max_psd_in_afc_chan_list,
call reg_find_low_limit_chan_enum_for_6g instead of
reg_find_chan_enum_for_6g to find the lower channel enum, and
call reg_find_high_limit_chan_enum_for_6g to find the right upper
channel enum.

Change-Id: Ib5738242b453e1abf641034240ce019865e46377
CRs-Fixed: 3033667
2021-09-21 09:30:34 -07:00
Basamma Yakkanahalli
9ea8540ecd qcacmn: Add service_ready handling for multiple MBSSID groups
Add change to handle service_ready for,
1.  Ema multi-MBSSID group support
2.  Large beacon support greater than 1.5K

CRs-fixed: 3036717
Change-Id: I1c985faf429aacd78ae74fe0ffe18958fd6aa821
2021-09-21 09:30:28 -07:00
Himanshu Batra
fd8df63e25 qcacmn: Print Vdev/CM SM history in case of Connect/Disconnect timeout
Print Vdev/CM SM history in case of Connect/Disconnect serialisation
timeout

Change-Id: I51abd2fd72b7c5fe837b6b0acf124b9006bf130b
CRs-Fixed: 3034463
2021-09-21 06:51:39 -07:00
Shashikala Prabhu
2b8f8e7ee5 qcacmn: Set extended supported rates IE max len to 12
As per the spec, the maximum IE length of supported rates are 8 and ext
supported rates are max_rates minus supported rates (=44-8).
In the field, some APs are non-compliance with the spec and includes
12 rates. Due to this, our STAs does not scan and connect to those APs.

To fix this issue, supported rates IE length is already set to 8. Hence,
set extended supported rates IE max len back to 12.

Change-Id: I0d8ce972b08aa28c08a7e797df4208dd36154983
CRs-Fixed: 3036878
2021-09-17 13:48:27 -07:00
abhinav kumar
8fc035b072 qcacmn: Fix Supported rates max length
Currently the driver checks for the supported rates IE,
and if the length of the IE is greater than 8, the driver
rejects the IE, according to spec.
But some APs supports 12 rates hence are not scanned.

Fix is to have a supported rates IE length check of 12 instead
of 8.

Change-Id: I3e32171e1b089ccc8754872fa5c37ba35b8b2cf7
CRs-Fixed: 3036878
2021-09-17 13:48:21 -07:00
Shiva Krishna Pittala
01c079b17b qcacmn: Add handlers for FW consumed and Host dropped MGMT frames
Consider the management frames that are consumed/dropped in the FW and also
the frames that are received at the Host but dropped in lower layers.
The host has the MGMT Rx REO parameters about these frames via WMI events.

There could be frames waiting in the MGMT Rx REO list for the above-said
frames. If we update the waiting frames with the MGMT Rx REO parameters of
the above-said frames, the waiting frames could be released and sent for
processing. Add the logic for the same.

Change-Id: I6be4577d30c4aefe2e964aefbb56472749a90cb4
CRs-Fixed: 2987941
2021-09-17 05:54:06 -07:00
Shiva Krishna Pittala
5d74978e0d qcacmn: Hook MGMT Rx REO algorithm in MGMT Rx path
When a management Rx frame enters the MGMT TxRx component, route it to the
MGMT Rx REO module where the REO algorithm decides whether the frame needs
to be processed right away or need to wait for frames on other links.

Change-Id: Ib7ca911dfaeee131fd71d9a4345f5bc720326228
CRs-Fixed: 2987784
2021-09-17 05:54:01 -07:00
sheenam monga
a554290f06 qcacmn: Fetch fw cap to support p2p + p2p concurrency
Fetch fw capability to support p2p+p2p concurrency and
store cap info in 29th bit of soc_fw_ext_caps.

Change-Id: Id8e4c0310f8db503a2997e8aed5a6f1ce813dcc7
CRs-Fixed: 3032068
2021-09-16 22:58:23 -07:00