Commit Graph

96 Commits

Author SHA1 Message Date
Sai Pavan Akhil Remella
e8b3b4792b qcacld-3.0: Add min_dwell_time_6g ini support in roam offload scan
Currently min_dwell_time_6g ini support is there only for normal
scan.
Added support to configure min_dwell_time_6g in roam offload scan.

Change-Id: I7da5fff738dbaf2a28a909e58ab6c797724ccfaf
CRs-Fixed: 3156597
2022-04-11 04:09:34 -07:00
Qun Zhang
3f80fae5f0 qcacld-3.0: Refine roam event processing for LFR2/LFR3
Currently wmi_roam_event_id event handler only register under feature
WLAN_FEATURE_ROAM_OFFLOAD, but it's needed for LFR2 roaming too. So
refine roam event processing for LFR2/LFR3.

Change-Id: Ic07fd8a543142fc1e151f484979ab99ff55ce802
CRs-Fixed: 3161973
2022-04-09 01:22:20 -07:00
chunquan
8f4ed84d9d qcacld-3.0: Replace blacklist abbreviation bl for dl
Replace blacklist abbreviation bl for denylist dl.

Change-Id: Ibbefba66f27cde8711c8c171f821cf668ba350ba
CRs-Fixed: 3153291
2022-03-21 03:16:52 -07:00
Deeksha Gupta
620ca069f1 qcacld-3.0: Add support for allowed_authmode
Currently, STA doesn't support roam between WPA2 to WPA3
security or vice versa. To support this feature, host sends
list of allowed_authmode. So that Firmware will check and
roam on those authmode.

Fix, add support for allowed_authmode list in ap_profile.

Change-Id: I438a133a434ea12ec34680997ace358fd4910028
CRs-Fixed: 3113219
2022-03-15 19:16:43 -07:00
Deeksha Gupta
5a5a3deb12 qcacld-3.0: Add support for security scoring
Add support for security score. On the basis of score,
host will select AP for initial connection and roaming.

Change-Id: I041a1b0c1456d7f01dd07e9b282996c56755655e
CRs-Fixed: 3113213
2022-03-14 10:10:56 -07:00
chunquan
03c551de67 qcacld-3.0: Rename files with blacklist/whitelist
Rename files with blacklist/whitelist to denylist/whitelist.
Rename files with blm to dlm.

Change-Id: Ief7ce0a797f74460c9708f8d2dd440412af5b7eb
CRs-Fixed: 3099864
2022-03-14 08:50:05 -07:00
Pragaspathi Thilagaraj
4648e9fece qcacld-3.0: Fix ROAM/NO_ROAM print conditions
As part of the Roam candidate result logging, the
driver prints ROAM if reassociation is successful and
NO_ROAM if candidate is found and roaming is successful.
But the expectation is to print ROAM even if candidate
is found and roaming has failed.

Change the logic to print ROAM/NO_ROAM based on below condition:
1. Roam result successful -> ROAM
2. Roam result failure && candidate is found -> ROAM
3. ROam result failure && candidate is not found -> NO_ROAM

Fix the authentication/association missing frame print
in the roam logging, also cleanup the unused API's.

Change-Id: I43e0cea007890f4796b421b0a42cc71b8ca1a600
CRs-Fixed: 3146630
2022-03-11 09:16:12 -08:00
Pragaspathi Thilagaraj
f1dd1a7be4 qcacld-3.0: Fix BTM response ordering in connectivity logs
Currently for WTC BTM roam trigger, below order is followed:
[22:22:51.127105][BTM] RESP token=1 status=1 delay=0 [vdev_id=0
fw_time=00:53:58.350672]
[22:22:51.127129][BTM] WTC reason_code=6 [vdev_id=0
fw_time=00:53:58.350672]

But expected order is:
[22:22:51.127129][BTM] WTC reason_code=6 [vdev_id=0
fw_time=00:53:58.350672]
[22:22:51.127105][BTM] RESP token=1 status=1 delay=0 [vdev_id=0
fw_time=00:53:58.350672]

Fix this order issue and also ignore the BTM response TLV if
timestamp is 0.

Change-Id: I21fe268a3e3ea065482c1c2938d03b844cd387ea
CRs-Fixed: 3143297
2022-03-10 19:23:52 -08:00
chunquan
f07969a044 qcacld-3.0: Replace blacklist/whitelist for denylist/allowlist
Replace blacklist/whitelist with denylist/allowlist in
qcacld3.0. and replace blm with dlm.

Change-Id: I9ba61dde3b3ea008ca3777448d1f8dab83d33ec1
CRs-Fixed: 3091211
2022-03-05 07:10:49 -08:00
Liangwei Dong
baf5200060 qcacld-3.0: Fix out of bounds access in wmi_extract_pdev_hw_mode_trans_ind
Add tlv array number check for vdev_mac mapping elements in roam
and roam sync event to fix potential out of bounds access of memory.

Change-Id: Iad3951bab65153a67d1b76aa745a831d0fd2cb45
CRs-Fixed: 3132366
2022-02-19 18:37:31 -08:00
Srinivas Dasari
db3c1a98e5 qcacld-3.0: Wait for RSO stop response from firmware
Firmware doesn't expect any vdev commands from host while RSO stop
is happening. It sends a response to the RSO_STOP command once
it's done with cleanup. Host needs to run a timer after sending
RSO stop command to firmware and wait for a maximum of 6 seconds
for the response. Host can stop the timer and allow the commands
to firmware in the below cases,
1. RSO_STOP response with success status
2. RSO_STOP response with HO_FAIL status followed by
   HO_FAIL event: Host needs to wait till HO_FAIL event is received

If firmware doesn't send any response in the 6 seconds wait, issue
a recovery to help to check the firmware state.

Also, set WMI_ROAM_SCAN_MODE_FLAG_REPORT_STATUS always when MLO is
supported while sending RSO_STOP to firmware. It's sent only
in case of wpa_supplicant disabled roaming currently.

Change-Id: I8182e60beb9288dba23cc72e978dc781c8ab1707
CRs-Fixed: 3106023
2022-02-18 23:21:06 -08:00
Krupali Dhanvijay
aaf60192cf qcacld-3.0: Add support to configure 6G roam scan dwell time
Add ini support to configure 6GHz active and passive
scan dwell time and send this to firmware
to be used for LFR scans via WMI_ROAM_SCAN_MODE.

Based on these values, firmware will use host sent values
else use hardcoded values.

Currently firmware uses hardcoded values to configure 6Ghz
roam scan dwell time. With this change user can configure
it using INI.

Change-Id: I90e79ad59eef7f73faa0b9dfd2d38b65aca12285
CRs-Fixed: 3116861
2022-02-10 07:08:46 -08:00
Amruta Kulkarni
a0d98934c7 qcacld-3.0: Handle more than one ROAM_SYNC_FRAME event
FW can send more than one wmi_roam_sync_frame_event_id before
roam sync event,change done in host code to handle this scenario.

Change-Id: I1ab02ed3e984948b8e57a2f9a2000b9f9493629c
CRs-Fixed: 3116569
2022-01-28 20:53:50 -08:00
Jianmin Zhu
cd9d714bbb qcacld-3.0: Consider connected AP for roaming candidate
If reassoc MAC from user space is broadcast MAC as:
"wpa_cli DRIVER FASTREASSOC ff:ff:ff:ff:ff:ff 0",
user space invoked roaming candidate selection will be based on firmware
score algorithm, current connection will be kept if current AP has highest
score. It is requirement from customer which can avoid ping-pong roaming.

Change-Id: I8de3e2a26a6f346c900157aa823205f849d233f7
CRs-Fixed: 3106276
2022-01-20 15:27:11 -08:00
Liangwei Dong
f01e9fec4b qcacld-3.0: Fix hw mode update failure by roam sync event
Update HW mode change tlv information to wma/policy mgr.
Losing the information will cause FW/host out of sync.

Change-Id: I1ba9931d10617664da653e85335fade1352c3600
CRs-Fixed: 3109789
2022-01-19 12:34:56 -08:00
chunquan
51509a327f qcacld-3.0: Replace blacklist/whitelist for denylist/allowlist
Replace blacklist/whitelist with denylist/allowlist for
blacklist manager component. and replace blm with dlm.

Change-Id: I8dec146d8cb3b61dc891b72bea44704b8ab733fe
CRs-Fixed: 3087575
2022-01-14 03:50:03 -08:00
Amruta Kulkarni
24f04ca536 qcacld-3.0: Add api's to handle MLO Roaming
- New api's added to handle mlo roaming scenarios.
- Read and store link addr from wmi.

Change-Id: I6a18802d27f72235dc69d2eedb05f3e563d1b0f4
CRs-Fixed: 2997105
2022-01-13 01:11:30 -08:00
Surya Prakash Sivaraj
6ae47b3e0b qcacld-3.0: Update preauth candidate entry to scan table
During SAE roam auth offload, update the beacon/probe response
frame coming from the FW via WMI_ROAM_FRAME_EVENTID into the
scan db.

When the bss info of the preauth candidate is unavailable in
the host/kernel scan entry, supplicant fails to determine the
proper SAE PWE config of the peer and the commit request fails.

Change-Id: Ia782ece7bebf8274f949fe9fb3b2a2882bf47597
CRs-Fixed: 3075458
2021-12-02 12:14:52 -08:00
Amruta Kulkarni
15760d2d1b qcacld-3.0: Fix double free in cm_roam_pmkid_request_handler
Currently memory allocated for structure roam_pmkid_req_event
is freed in two places causing usage after free.
Fix is to free memory only once in
target_if_pmkid_request_event_handler api.

Change-Id: Idc70e8437f89cb1cf4f6d35f924085409994714a
CRs-Fixed: 3064667
2021-12-01 04:22:46 -08:00
Pragaspathi Thilagaraj
13e26a9179 qcacld-3.0: Fill validity timer in BTM Request event
Validity timer value is printed wrongly in logcat
logs for BTM request event. This is because the value
is filled from disassociation timer instead of the
validity timer field.
Also the neighbor report related prints are seen
only if the roam msg info TLV is present, which is
not correct.

Fill validity timer in BTM Request event and print the
neighbor report related prints on receiving 11kv
TLV.

Change-Id: I59606f27b0836ea567fed561bbe19f600377d3ed
CRs-Fixed: 3069855
2021-11-18 14:28:36 -08:00
Pragaspathi Thilagaraj
4a48e7ab4e qcacld-3.0: Use correct attribute for BTM response target BSSID
Currently driver QCA_WLAN_VENDOR_ATTR_DIAG_BTM_TARGET_BSSID uses
instead of QCA_WLAN_VENDOR_ATTR_DIAG_BTM_TARGET_BSSID attribute
in the BTM response event. This causes the target bssid field to
be missed in BTM response print.
The WTC BTM response event is not queued when reason code is
non-zero.

Use QCA_WLAN_VENDOR_ATTR_DIAG_BTM_TARGET_BSSID attribute.
And queue the WTC btm response event.

Change-Id: Id713bfeda20c43148e95630f5c6e925b80418ca3
CRs-Fixed: 3071242
2021-11-18 14:28:29 -08:00
Pragaspathi Thilagaraj
e76383cae5 qcacld-3.0: Fix BTM logging
If BTM/Neighbor report is sent indvidually by firmware, then the
prints are not seen in kmsg, as the driver drops the event if
roam trigger/scan stats is not present.

To avoid this, parse the BTM TLV if roam trigger/scan info is
not present.

Change-Id: I1a9f197ed66a080d7b5b5d7fd3a82aac8d1d708a
CRs-Fixed: 3062768
2021-11-14 16:09:40 -08:00
Srikanth Marepalli
bbeccbc9ce qcacld-3.0: Fill the vendor attributes with the Roam stats
This change gathers the roam event stats from the FW.
New vendor event is used to fill in the vendor attributes
whenever the roam stats are received from Firmware.

Change-Id: I9a2ddef62d26b0b68897891788733df452ac1ceb
CRs-Fixed: 3036518
2021-11-08 09:41:34 -08:00
Srinivas Dasari
b0b8c6afb5 qcacld-3.0: Drop the blacklist event if no APs are present
Currently, target_if forwards the blacklist event to upper layers
even if there is no AP info present. This event can be dropped in
target_if to avoid accessing unallocated memory.

Change-Id: Icfaabb0a8e3304882979ffde7f5cd27fd4c8a067
CRs-Fixed: 3057424
2021-10-22 18:19:15 -07:00
Srinivas Dasari
fbd5ee5c48 qcacld-3.0: Cleanup ROAM_TARGET_IF_CONVERGENCE usage
wma to target_if convergence code is guarded under the feature
flag ROAM_TARGET_IF_CONVERGENCE and it's is enabled currently.
Remove the flag usage and remove the deprecated code(else part)
also.

Change-Id: I6973d9c366ec6a9c6164dd19f6f4775dd3ebf5f0
CRs-Fixed: 3049942
2021-10-06 00:02:06 -07:00
Deeksha Gupta
6c451072ad qcacld-3.0: Fix possible OOB in extract_peer_stats_count_tlv
Currently in function extract_peer_stats_count_tlv,
num_peers is copied directly to wmi_host_stats_event
structure without any validation which may cause
out of bound issue if num_peers provided in fixed
param becomes greater than actual number of peer
stats info.

Fix is to validate num_peer_stats_info before populating
stats_param->num_peer_stats_info_ext.

Change-Id: Icfb1c4fd34d3ec9120064e14bb65e35f8539f7fd
CRs-Fixed: 3032139
2021-09-28 11:53:43 -07:00
Amruta Kulkarni
806fba5a8c qcacld-3.0: Fix compilation issue for MLO
Remove unused variables to fix compilation issue.

Change-Id: I069fa617375bd9cd77d724dd7340dbf5c719aaee
CRs-Fixed: 3043229
2021-09-26 07:39:14 -07:00
VIJAY RAJ
7862b826b2 qcacld-3.0: Invalid rem_len computation in roam stats evt handler
rem_len is calculated based on MAX size of the WMI message
(WMI_SVC_MSG_MAX_SIZE) while extracting data from
WMI_ROAM_STATS_EVENTID event data.

Correct this by considering the actual message length
received in the event.

Change-Id: If24f732a8fdc0ad403e9b8a936ff8cfa0b7f7737
CRs-Fixed: 3035196
2021-09-24 18:27:37 -07:00
abhinav kumar
9bb838865c qcacld-3.0: Send roam scan info to userspace
Host receives WMI_ROAM_STATS_EVENTID event
from fw whenever roam scan trigger happens.
Send roam scan details and candidate AP details
to userspace.

Change-Id: I92a35d7b15951321107db14ae588d66e82a8174e
CRs-Fixed: 3031391
2021-09-22 03:15:38 -07:00
Pragaspathi Thilagaraj
db383df8c9 qcacld-3.0: Add support to parse roam frame info TLV
Add support to parse roam frame info TLV.
Add changes to send the BTM request logging event.

Change-Id: I24fab5fc0ec204fce74cf822742b5a44b0e7774f
CRs-Fixed: 3013489
2021-09-22 03:15:32 -07:00
Pragaspathi Thilagaraj
612fe2eca2 qcacld-3.0: Add infrastructure for connect/roam logging
Add new files for connect/roam logging. Add changes to
initialize the logging buffer.
Make changes to support enqueue/dequeue log.
Define enums for MAIN_TAG, Sub TAG, category.
Add structure definitions for logging buffer.

Change-Id: I1d283fcf464da90d4f5533214d480ddda156ec27
CRs-Fixed: 3013486
2021-09-17 13:47:47 -07:00
abhinav kumar
04389c608d qcacld-3.0: Allow roaming between same OWE profile AP's
Currently, firmware can roam between owe security SSID's
even though open SSID is different for both of the AP's.
This commit adds support to restrict roaming between the
same OWE profile AP's which means if the device needs to
roam then target AP's open SSID and owe SSID should match
with current AP.

Change-Id: Ib59127a90cab9ee6626b018d581edbf76ad89856
CRs-Fixed: 3025667
2021-09-10 22:28:38 -07:00
abhinav kumar
3173789d99 qcacld-3.0: Add new BT Coex roam trigger reason
Send additional roam trigger TLV for BTC in
WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID
command, to support a new roaming trigger
"WMI_ROAM_TRIGGER_REASON_BTC".

Change-Id: Ib767bd6bcf005c187b0fb58986ad287fe8753c1b
CRs-Fixed: 3009788
2021-09-10 20:09:34 -07:00
abhinav kumar
939ba8556a qcacld-3.0: Add BTC as a new roam trigger reason in host
To support BTC roaming, add a definition of BTC roam trigger
reason in ini roam_triggers. It goes to fw via roam_enable
trigger command (WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID)

Change-Id: I231a72ed98a74fb1b5ced12da7c3932af12d485d
CRs-Fixed: 3009787
2021-09-10 20:09:28 -07:00
Srinivas Dasari
3aeaeefe07 qcacld-3.0: wma to target_if migration of roam pmkid request evt
Currently, wmi_roam_pmkid_request_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I3fad4e4d7ceeb85c632723e161809bf980d5375f
CRs-Fixed: 3014248
2021-08-28 00:29:22 -07:00
Vijay Patil
23999e417d qcacld-3.0: wma to target_if migration of roam_auth_offload_event
Currently, wmi_roam_auth_offload_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I128db23077d423c5e5ecf27636bc3af35cbbc58f
CRs-Fixed: 3010419
2021-08-28 00:29:16 -07:00
Amruta Kulkarni
07e3dc73ab qcacld-3.0: Wmi changes for mlo roaming
-Extract new wmi struct added as part of MLO roaming
 changes.
- Send EHT and MLO weightage percentage to FW via
 WMI_ROAM_AP_PROFILE.

Change-Id: I6b3f1f62ef6ea323cd1b75f63a5c63c38b000f1f
CRs-Fixed: 3010039
2021-08-25 17:31:29 -07:00
Sai Pavan Akhil Remella
b35419136e qcacld-3.0: wma to target_if migration of roam_stats_event
Currently, wmi_roam_stats_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I5e336b01e1a2183e49b3e6eeb125c7c9fd0fd73c
CRs-Fixed: 3003125
2021-08-24 13:12:34 -07:00
Pragaspathi Thilagaraj
5a540a315f qcacld-3.0: Add additional debugs in PMKSA caching path
Add additional debugs in pmksa caching path.

Change-Id: I5e412c60c3455c1a40d6f742fb6536b9ac621748
CRs-Fixed: 2978751
2021-08-11 15:50:27 -07:00
Amruta Kulkarni
c71017d971 qcacld-3.0: Roam sync event migration
Wma to target_if migration for ROAM SYNC EVENT

Change-Id: Id2e9d5697f12f709cfdd665dabf1095863d87277
CRs-Fixed: 2990767
2021-08-07 02:58:54 -07:00
Srinivas Dasari
f39f703609 qcacld-3.0: wma to target_if migration of roam_scan_ch list_event
Currently, wmi_roam_scan_chan_list_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I8f59f9ebfe1bbdc7ef37ccc1f10178fe8128e912
CRs-Fixed: 2990376
2021-07-30 21:50:44 -07:00
Srinivas Dasari
a655f5e64e qcacld-3.0: wma to target_if migration of vdev_disconnect_event
Currently, wmi_vdev_disconnect_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I2486cc3f63c4b35305b60ac55cd0a622c7185323
CRs-Fixed: 2990373
2021-07-30 21:50:40 -07:00
Srinivas Dasari
cb5b2dde46 qcacld-3.0: wma to target_if migration of btm_blacklist_event
Currently, wmi_roam_blacklist_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I41d2ef6c228acd8f86f24107c02d11f1a8ac6dea
CRs-Fixed: 2990369
2021-07-30 21:50:35 -07:00
Srinivas Dasari
78cb3008e6 qcacld-3.0: wma to target_if migration of wmi_roam_event
Currently, wmi_roam_event_id data is extracted and processing is
also done in wma. This is not inline with component model where
target_if takes care of data extraction and handover the extracted
data to corresponding component(connection mgr in this case).
Add changes to support the same. As the legacy CSR/LIM is not
yet converged, have a wrapper from connection mgr to wma to call
these legacy APIs.

Change-Id: I0e22bbccfe21200b90771a01f9ee7454f4ecb119
CRs-Fixed: 2990355
2021-07-30 14:29:36 -07:00
Deeksha Gupta
ed12a74d8c qcacld-3.0: Add support for FT over DS
Add support to enable the "FT over DS" via
QCA_WLAN_VENDOR_ATTR_CONFIG_FT_OVER_DS vendor config
command.

This configuration helps the firmware to support
“FT over DS” instead of “FT over Air”

Change-Id: I493bf15f83bc39135aaeefa9d8ef328f0fc0cda3
CRs-Fixed: 2968680
2021-07-15 04:13:04 -07:00
Amruta Kulkarni
0c30cb8f04 qcacld-3.0: Roam sync frame event Wma cleanup
Wma to target_if migration for ROAM SYNC FRAME EVENT

Change-Id: I2a56dadf7f45a13a577bdf49bc9514ab2e6dee29
CRs-Fixed: 2968404
2021-07-12 19:12:01 -07:00
Pragaspathi Thilagaraj
73b225f611 qcacld-3.0: Add support for candidate AP RSSI in different bands
Currently in WTC mode the candidate AP RSSI threshold
configuration is applied for candidates on all band.

Add support to configure the candidate AP RSSI threshold for
different bands.

Change-Id: I94442c0f1bd3ea20dc2f5ebe893a9ead7fb8d890
CRs-Fixed: 2951610
2021-05-30 23:51:55 -07:00
Pragaspathi Thilagaraj
4cad5e9c11 qcacld-3.0: Enable partial roam scan for provided triggers
By default, the driver fills the roam scan scheme as none for
all the triggers in WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID
but if the roam scan scheme bitmap is set for particular
trigger, then for the corresponding trigger the roam scan scheme
should be sent as ROAM_TRIGGER_SCAN_MODE_PARTIAL.

Send ROAM_TRIGGER_SCAN_MODE_PARTIAL if roam scan scheme bitmap is
provided.

Change-Id: I82f16f7c0e24be472c95278eb3085f7d2623b63a
CRs-Fixed: 2914142
2021-04-06 23:12:27 -07:00
abhinav kumar
ca8d71c421 qcacld-3.0: Configure proper default scan mode while roaming
Currently, host configures scan mode as ROAM_TRIGGER_SCAN_MODE_PARTIAL
instead of ROAM_TRIGGER_SCAN_MODE_NONE via
WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID command for below roam
reasons:
WMI_ROAM_TRIGGER_REASON_BSS_LOAD
WMI_ROAM_TRIGGER_REASON_BTM
WMI_ROAM_TRIGGER_REASON_LOW_RSSI
WMI_ROAM_TRIGGER_REASON_BMISS
WMI_ROAM_TRIGGER_REASON_PER
WMI_ROAM_TRIGGER_REASON_PMK_TIMEOUT

Fix is to send proper by-default scan mode while roaming.

Change-Id: I60999c1c0f1068417aed54bcb49d16cfaed135d5
CRs-Fixed: 2907413
2021-03-31 03:11:25 -07:00
Amruta Kulkarni
604d76d660 qcacld-3.0: Send roam score delta and min rssi params
When "wmi_service_configure_roam_trigger_param_support" service
bit is set populate roam score delta and min rssi parameters
and send via WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID.

Change-Id: I3c7fc56a95c28c43992763be3351d91d9fd44041
CRs-Fixed: 2890148
2021-03-11 16:11:23 -08:00