Commit Graph

55 Commits

Author SHA1 Message Date
Shashikala Prabhu
236152dcc0 qcacmn: Register callback to get max supported FW phymode
Register a callback to get max supported FW phymode for the given
channel list.

Also, corrected the array index value used to populate the DFS flag and
phymode.

Change-Id: Id635a159acac085827831726d3020cc209b810cf
CRs-Fixed: 3083405
2022-01-25 16:53:32 -08:00
Shashikala Prabhu
a117c19fda qcacmn: Add support to extract the channel info from RTT measreq
Add support to extract the freq, cfreq1, cfreq2, PHY mode, Destination
macaddr, and channel BW values from the RTT measurement request buffer
received from the LOWI application. Pass these values to a registered
callback. Users can use these values to make some decisions on the RTT
scan.

Change-Id: Idb2232c07bbfa2946dc01e75908b9a6036597ecf
CRs-Fixed: 3060685
2021-11-22 15:09:55 -08:00
abhinav kumar
86812026a0 qcacmn: Possible Integer overflow in wifi_pos_oem_rsp_handler
API "target_if_wifi_pos_oem_rsp_ev_handler" is the handler for
the event with WMI_OEM_RESPONSE_EVENTID. Host receives
"rsp->dma_len" from fw. The integer overflow occurs if
"oem_rsp->dma_len" is big enough while calculating the total
length of the Oem Data response buffer.

Fix is to add a sanity check for rsp->dma_len to avoid integer
overflow.

Change-Id: Idfbd358f62534eae0147f03505ced5728877a269
CRs-Fixed: 3001191
2021-08-21 15:17:29 -07:00
Shashikala Prabhu
005e1f3dd7 qcacmn: Replace MAX_CHANNELS with NUM_CHANNELS in wifipos module
In wifipos component, channel info array is allocated for MAX_CHANNELS(255)
and passed to the regulatory module which uses NUM_CHANNELS to fill the
channels. NUM_CHANNELS can be more than 255. This may lead to an array out
of boundary access.

Use NUM_CHANNELS in wifipos component to allocate channel info array.
also, add a boundary check on the number of channels received from the
regulatory component.

Change-Id: I5b7a7a4767d8bbb259c5631cf744e57ee3e1effb
CRs-Fixed: 2938879
2021-05-18 23:31:34 -07:00
Lincoln Tran
3bed44b5cd qcacmn: Update wifi_pos logs to debug
Update some logs in the wifi positioning module to be debug prints.
This helps reduce unnecessary prints in dmesg.

Change-Id: I9828fb4c2360e7d25195130da0315d605c04c14b
CRs-fixed: 2928849
2021-04-28 12:05:13 -07:00
Shashikala Prabhu
5d097b9e40 qcacmn: Add support to send channel info to WIN LOWI application
In the current code, host does not send the channel list information to
WIN LOWI application. LOWI application populates the TX power in OEM RTT
request frame from the host received channel list information. Since the
channel list was not received from host TX power was set to 0. This was
leading to low RSSI for RTT ack frames.

Send the channel list information of all the PDEVs and PSOCs to WIN LOWI
application  to set a valid TX power.

Change-Id: I9b7d740b37349d092629aa2f9550555901fb4331
2021-04-27 01:15:20 -07:00
Jianmin Zhu
d6329cff1b qcacmn: Replace channel with frequency
Replace channel with frequency.

Change-Id: I291dd5110d5fe69361c636d60635b60309e8575f
CRs-Fixed: 2776242
2020-09-24 10:45:50 -07:00
Vijay Krishnan
dcb1efdcce qcacmn: Remove reg_get_channel_list_with_power
reg_get_channel_list_with_power function is a redundant function as its
counterpart reg_get_channel_list_with_power_for freq have the same
functionality. Also the two functions have almost the same implementation.
Therefore removing the function reg_get_channel_list_with_power.

Also added the assignment of the variable "chan_num" to the function
reg_get_channel_list_with_power_for_freq, as the assignment was missing.

CRs-Fixed: 2738838
Change-Id: Ifd2fd795cacd89989e1755f3b8fd56ccd7d5b84f
2020-09-11 11:50:15 -07:00
Ashish Kumar Dhanotiya
dc2d337116 qcacmn: Fill correct max BW to set channel params
Currently wifi positioning api to update channel bandwidth
info is invoking regulatory component api to set the channel
params with BW as CH_WIDTH_MAX, because of which regulatory
component is returning the maximum BW supported for the current
regdomain which is 160MHz. If target does not support 160MHz in
that case it may lead to undefined behavior.

To address this issue, pass max supported BW by target as
argument to regulatory component so that regulatory component
does not return the BW greater then the target supported BW.

CRs-Fixed: 2730665
Change-Id: I6051336ab2f3ea902a70ed80290e5a5f060de5b9
2020-08-15 16:56:10 -07:00
Vijay Krishnan
53f1d00e8f qcacmn: Remove references to CHAN_NUM_API
CONFIG_CHAN_NUM_API macro will be disabled. Remove all the references to
any function defined/declared under the macro. The function
reg_get_channel_list_with_power was placed under CHAN_NUM_API by mistake.
This API does not have any CHAN_FREQ_API counterpart. Therefore, move
this function out of CHAN_NUM_API macro.

The function dfs_send_radar_ind_for_freq is redundant as its counterpart
dfs_send_radar_ind has the same arguments and same functionality,
removing the function dfs_send_radar_ind_for_freq. The function
dfs_send_radar_ind is moved out of CHAN_NUM_API macro.

The function wlan_reg_chan_to_freq, wlan_reg_legacy_chan_to_freq is
moved out of CONFIG_CHAN_NUM_API macro. Since it is applicable for legacy
bands.

CRs-Fixed: 2711600
Change-Id: Ib29be638c17ce51f928c865e362ac5b2b8954b42
2020-07-23 21:37:06 -07:00
Shashikala Prabhu
6d11d6f27a qcacmn: Add support to get pdev_id and psoc from dev_name
LOWI application provides the interface name as part of lowi message to
host driver. Add support in the driver code to get the corresponding
pdev_id and pdev from interface name using  dev_get_by_name().

Change-Id: I267b95c843a9bb1dd0c58ff45767f31999500b1c
CRs-Fixed: 2711423
2020-07-17 01:51:26 -07:00
Lincoln Tran
64db569708 qcacmn: Fix wifi_pos_send_rsp pointer cast
Update the wifi_pos_send_rsp function pointer cast to have the
same parameters as the actual function pointer.

Change-Id: I7e9f5f9972fe96f74c76ffb0fa069a93c98db72b
CRs-fixed: 2685627
2020-06-01 09:34:07 -07:00
Neha Bisht
4bda764146 qcacmn: remove dependency of public files from wlan_objmgr_psoc_obj.h
Remove dependency of wlan_lmac_if_def headerfiles from
wlan_objmgr_psoc_obj.h

Change-Id: Ibe2f22c4b4f22b15eef201d1a42844ccf2931fef
2020-05-15 10:41:50 -07:00
Vinay Gannevaram
7ccc84acb3 qcacmn: Add support for NLA type OEM_DATA REQ-RESP in LOWI
Host driver processes cld80211 vendor subcmd
CLD80211_VENDOR_SUB_CMD_OEM_DATA and send
response in NLA format. Peer status indication
is also sent in nla format

CRs-Fixed: 2597282
Change-Id: I94f1fb7939141952ef92dbb7d3a130ba20d31608
2020-03-21 12:35:42 -07:00
Vinay Gannevaram
8fd2d1abbf qcacmn: Add support for NLA type CH_INFO_RESP in LOWI
Host driver processes cld80211 vendor sub command
CLD80211_VENDOR_SUB_CMD_GET_CH_INFO and respond with
NLA type CH_INFO response

CRs-Fixed: 2595374
Change-Id: Ibe6f2431ac1cae6e4560ec11424434b4f1cf8b76
2020-03-21 12:35:24 -07:00
Vinay Gannevaram
23a3603951 qcacmn: Add support for NLA type CAP_RESP in LOWI
Host driver processes cld80211 vendor sub command
CLD80211_VENDOR_SUB_CMD_GET_CAPS and respond with
NLA type CAP response

CRs-Fixed: 2595140
Change-Id: I5a6aa1fac537ca618404520b81c541a20dafd6fb
2020-03-21 12:35:02 -07:00
Vinay Gannevaram
2250592dcd qcacmn: Add support to get fwr phymode for frequency
Currently, wifi-pos uses channel number to get the fwr phymode.
For adding 6g support wifi-pos need to get the phymode from
frequency instead of channel number
As a part of fix, Add handler for getting phymode based on
frequency

CRs-Fixed: 2617903
Change-Id: I007edebe41bf5ca750a1262c85043f628dc9f89f
2020-02-15 04:43:36 -08:00
Amruta Kulkarni
65f217ba99 qcacmn: Cleanup for function wlan_reg_is_dfs_ch()
Replace wlan_reg_is_dfs_ch() with wlan_reg_is_dfs_for_freq()

Change-Id: Idb40beeea3ba07e133f3346b46998ae9ac549ba7
CRs-Fixed: 2615754
2020-02-10 20:36:44 -08:00
Abhishek Ambure
d49729cd47 qcacmn: Add oem target six ghz support disable flag in wifipos
Host driver sends channel list and number of channels to lowi-server
in ANI_MSG_GET_OEM_CAP_RSP. 6Ghz channels in the channel list are not
useful for legacy lowi-server not supporting 6Ghz channels.

For legacy oem targets, driver sets "oem_6g_support_disable".

Change-Id: Ibc072ff2df3d7b246d3a48d7cebcb5feac35b715
CRs-Fixed: 2597645
2020-01-15 19:33:06 -08:00
Abhishek Ambure
f39c249a32 qcacmn: Add support for LOWI 6GHz enhancements
Append 4 bytes enhancement flags in ANI_MSG_APP_REG_RSP message.
NL_ENABLE_OEM_REQ_RSP i.e. 0x00000001 in ANI_MSG_APP_REG_RSP message
represents host driver support for NLA type request and response
for oem commands.

Change-Id: I5d07d017a27b676537c24fbf15f224af8964c665
CRs-Fixed: 2591896
2020-01-09 23:00:33 -08:00
Ashish Kumar Dhanotiya
4260dcf3f8 qcacmn: Invoke correct api to convert channel to frequency
Currently wifi update channel bw api is using legacy api
wlan reg get chan freq to convert channel numbers to the
frequency which does not take care of the bonded channels
and returns invalid channel number error code for bonded
channels which results in undefined behavior on the user
space application which is using the result of this api.

To address above issue, use the correct api to convert
channel number to frequency.

Change-Id: I80295b0ff502747d5655642f2506283bd3ba0b52
CRs-fixed: 2547546
2019-10-23 14:29:52 -07:00
Hariharan Basuthkar
43168e82c6 qcacmn: Dynamically allocate ch_list in wifi_pos_pdev_iterator()
Dynamically allocate ch_list in wifi_pos_pdev_iterator(), to avoid
exceeding the stack frame limit with the introduction of new channels.

Change-Id: I41aaa3ad0405a3023768e5278dacf7475524c4e0
CRs-Fixed: 2463009
2019-08-19 23:56:03 -07:00
Kiran Venkatappa
d2ede02e21 qcacmn: Add support in wifi pos to send wru/ftmrr frames
FTMRR and WRU frames should be sent from host and these request should
not be forwarded to FW. Add support in wifi pos to process this request
and send response to userspace.

Change-Id: I54049a1a889839e44d418ceebcca09e5092f6063
CRs-Fixed: 2500751
2019-08-02 10:17:23 -07:00
Kiran Venkatappa
2e5d58d46f qcacmn: Send wifi pos WMI commands using pdev's wmi handle
For multi-radio SoCs, wmi handle is maintained per pdev to map to
separate copy engine used for sending WMI commands to taget. Add support
to send wifi position related WMI to send it per pdev.

Change-Id: I300be2bbfd77cb9390fef37b5b02a002284976e0
CRs-Fixed: 2495277
2019-07-29 16:12:15 -07:00
Rajeev Kumar Sirasanagandla
d36ba2d9cf qcacmn: Fix possible overread in wifi_pos_parse_req
In wifi_pos_parse_req(), payload sections of nl attributes ATTR_DATA and
ATTR_META_DATA are type casted to driver internal structures tAniMsgHdr
and wifi_pos_field_info respectively without validating payload lengths
which can lead to buffer overread if the payload lengths are less than
size of internal structures.

To fix this, avoid type-cast and return error if payload lengths of nl
attributes ATTR_DATA and ATTR_META_DATA are less than size of tAniMsgHdr
and wifi_pos_field_info respectively.

Change-Id: Ie9e3197f2cd3852b394e834991aa8d3a5b530d85
CRs-Fixed: 2471275
2019-07-17 08:31:58 -07:00
Abhiram Jogadenu
1c2b583ee2 qcacmn: Componentize and enable conv WIFI POS
Componentize and enable converged WIFI POS

Change-Id: I8e3f745dbb087818c9d411c7a00e1cdb2907d4d3
2019-07-16 17:15:24 -07:00
Ashish Kumar Dhanotiya
034a01be32 qcacmn: Fill valid channels on oem caps user request
Currently when user request comes to populate oem
capabilities, driver is populating all the channels which
includes disabled channels also and the logic to populate
the  channels is incorrect. This is resulting in invalid
channel configuration for user space command.

To avoid above issue, use correct api which returns only valid
channels and valid number of channels and populate the channels
correctly in the output buffer.

Change-Id: Ib239d5d869ca9d010c85f444b83751d2e121625d
CRs-fixed: 2470193
2019-06-14 14:20:58 -07:00
Madhvapathi Sriram
b73fc282d8 qcacmn: Remove error log for qdf_mem_malloc in umac files
qdf layer already has the error trace

Change-Id: I2ea22fe0e3e59b9d41ac21142615ffb96227abaf
CRs-Fixed: 2376418
2019-03-04 07:30:21 -08:00
Shashikala Prabhu
c8c709f6d4 qcacmn: Add common, build_chan_list and priv_objs regdb files
Create below regdb files in core component and move the code from
reg_services.c file.

These files has the common code used by both WIN and MCL.

reg_common_services.c: this file has regdb common APIs used by both WIN and
MCL.
reg_build_chan_list.c: this file has APIs to build master and current
channel list.
reg_priv_objs.c: this file has the APIs to create regulatory private PSOC
and pdev objects.

Change-Id: I891b14fac7a4eddf2697d2ecdc0ac4a82046f532
CRs-Fixed: 2349173
2019-01-23 15:14:26 -08:00
Paul Zhang
d2dad4b5bd qcacmn: Refine spinlock in ucfg_wifi_pos_process_req
Currently, the function causes the system false when
tries to release the spinlock because it holds the
spinlock longer than max_hold_time.

Change-Id: I90c78b7d8530cf3d1c224a693ab9f743f669b730
CRs-Fixed: 2371481
2019-01-02 01:38:06 -08:00
Qun Zhang
b3606a896a qcacmn: Add sanity check for wifi_pos priv obj in wifi_pos_main.c
Add sanity check before pointer dereferenced in wifi_pos_main.c

Change-Id: Iaea0c56f0684e2cfc959153b09468811a16ef22e
CRs-Fixed: 2370311
2018-12-26 12:33:35 -08:00
Qun Zhang
80cc5ab546 qcacmn: Add sanity check before pointer dereferenced
Add sanity check before pointer dereferenced in wifi_pos APIs.

Change-Id: Ib12bab1d7bfbe20689148274941f3c0d86f256c6
CRs-Fixed: 2370311
2018-12-24 05:44:56 -08:00
Arif Hussain
738581ae50 qcacmn: Fix null pointer dereference in wifi_pos_oem_rsp_handler()
Add validation code to make sure wifi_pos_send_rsp
function pointer is not null.

Change-Id: I6761f5065b1a49855afac2691523c41bcf383b2b
CRs-Fixed: 2329346
2018-10-09 14:43:10 -07:00
Ashish Kumar Dhanotiya
04c074d219 qcacmn: Update correct PHY mode while processing ch_info_req
Currently PHY mode is not getting updated and it is being set as
0, which is resulting in an invalid channel setting to FW
for LOWI.
To address this issue update the PHY mode correctly.

Change-Id: I77b2a517915a05d6a13dec5cee064d83bfae2992
CRs-Fixed: 2318563
2018-09-28 19:01:52 -07:00
Nirav Shah
1b9674e21e qcacmn: umac: Add logging macros without function/line info
Add per module logging macros without function/line info
to avoid adding function/line info where it is not required.

Change-Id: I34ba6f6485f9b506264daf4e116052d2858bed40
CRs-Fixed: 2278876
2018-08-14 21:44:21 -07:00
Nirav Shah
a175314c51 qcacmn: Map all module logs to per-level log APIs
Map all module level log APIs to per-level log APIs
to compile out specific log level if required.

Change-Id: I4072b6740cb43200fd95c40943b66e1d5f8f1847
CRs-Fixed: 2266719
2018-07-13 10:36:22 -07:00
Naveen Rawat
305da26660 qcacmn: Avoid un-initialized access in wifi_pos_get_ch_info
In function wifi_pos_get_ch_info initialize channel list array
before use.

Change-Id: I3b6071448fddee4aa62e833fb9bcc50aefffd7a9
CRs-Fixed: 2254723
2018-06-22 14:08:10 -07:00
Rajeev Kumar
f0e1361efe qcacmn: Do not take PSOC ref count during PSOC create notification
Do not take a common object ref count during common object create
notification because until common object destroy notification is
not received the ref count will not be released and in this case
ref count will never be released becasue object destory notification
will never come. takign ref coutn from object create notification
will always lead to object leak.

Change-Id: Iab7da602ef2d627866c3353b978eaa63749b62dd
CRs-Fixed: 2252274
2018-06-04 10:12:37 -07:00
Naveen Rawat
2d39710f9b qcacmn: Protect wifi_pos global psoc object
Protect wifi_pos global psoc object with spinlock.

Change-Id: I5a250061b482fd2699bebb34c7eac3bd649831f7
CRs-Fixed: 2235825
2018-05-30 15:51:51 -07:00
Naveen Rawat
a83c716d5f qcacmn: Revert to old API signature for WIFI_POS component
Legacy User space application for wifi pos component uses old
API signature hence using new signature breaks the legacy interfac
between user space application and host driver. Revert to old
signature to fix the interface.

Change-Id: Idc55ecba23a8ac6263dd82fa9fb3650784db67f6
CRs-Fixed: 2244016
2018-05-20 23:25:51 -07:00
Jeff Johnson
da0a82610b qcacmn: umac: Remove legacy markings
Per current guidance remove legacy markings.

Change-Id: I34c7acfad802a3878ffa373489b7f6a4194abb62
CRs-Fixed: 2230684
2018-05-18 02:17:46 -07:00
Jeff Johnson
3a1832e598 qcacmn: Fix typo "capabilites"
Replace typo "capabilites" with correct spelling "capabilities"

Change-Id: I8efa1d974ecabb1466bdf27ec305fd9960da0616
CRs-Fixed: 2238309
2018-05-17 00:46:46 -07:00
Naveen Rawat
fc5e85f7be qcacmn: Avoid possible null pointer dereference
Check return of function target_if_wifi_pos_get_txops against
NULL before using to avoid null pointer dereference.

Change-Id: Icbd58e4495a6bd31a9fe5c74eb51b67bb8157acf
CRs-Fixed: 2160763
2018-01-03 17:25:30 -08:00
Naveen Rawat
0b44828ab9 qcacmn: Use regulatory API for channel info
In wifi_pos component, use regulatory APIs to get channel
information and remove UMAC_REG_COMPONENT

Change-Id: I85bb6dac2930dd702f6f9468fa5cebf920270255
CRs-Fixed: 2122877
2017-12-05 17:37:10 -08:00
Naveen Rawat
9523aa15fa qcacmn: Add ucfg_wifi_pos set/get apis for FTM value
Define ucfg_wifi_pos apis for set/get of fine_time_meas_initiator.

Change-Id: Id33ba633c58e5b286211da9343797fc99ec364aa
CRs-Fixed: 2124286
2017-10-20 13:54:00 -07:00
Kapil Gupta
09b574f3d4 qcacmn: Correct OEM signature string for POS utils
Add changes to correct string names as par guidelines.

Change-Id: If6f58d7e122b5f3f3c46f68738a16b98c8122563
CRs-Fixed: 2078300
2017-07-27 12:52:04 -07:00
Vivek
b02a649f89 qcacmn: Remove vdev/peer locks for trivial APIs
Remove vdev/peer locks from trivial API's. This follows the changes from
which the lock requirement from few simple APIs are removed.

Change-Id: I9972d51dfd1a42bdedbfd0fd4e67af03d030a1f5
CRs-Fixed: 2060880
2017-06-26 23:32:22 -07:00
Vivek
5ec0bd3636 qcacmn: Remove psoc/pdev locks for trivial APIs
Remove psoc/pdev locks from trivial API's. This follows the changes from
which the lock requirement from few simple APIs are removed.

Change-Id: Ib5769c2234c8d57f485c0eef5a4e3c61fa170508
CRs-Fixed: 2060880
2017-06-26 23:32:19 -07:00
Naveen Rawat
7c3c746398 qcacmn: Handle CIR/CFR capture in WMI_OEM_RESPONSE_EVENT
Add handling of indirect data in WMI_OEM_RESPONSE_EVENTID.
This data then needs to be sent to userspace app.

Change-Id: Id1661f23ff000b33da9640cc44ea7be25e9f8dc0
CRs-Fixed: 2053958
2017-06-02 14:47:31 -07:00
Naveen Rawat
ba24c486a3 qcacmn: Initialize DMA rings using hal_srng APIs
Initialize DMA rings for CIR/CFR capture and program them
to firmware.

Change-Id: I41c32cddc3fc0f7f0a972bf69ecbacfc9f0626f7
CRs-Fixed: 2053958
2017-06-02 14:47:29 -07:00