Commit Graph

12750 Commits

Author SHA1 Message Date
nobelj
20a3940590 qcacmn: Add fix to support proxy arp function call
a call to osif_proxy_arp need to be invoked inside UMAC_SUPPORT_PROXY_ARP
as it was protected under build macro UMAC_SUPPORT_PROXY_ARP.

Change-Id: I6e165a328ac65fb659cb9fbc3a0ce39fcbb6744b
2021-04-14 18:08:30 -07:00
Harsh Kumar Bijlani
02fbfe0c0a qcacmn: Fix double nbuf unmap error for Pine
When nbuf map-unmap debug is enabled and monitor vap is created on
Pine, then double nbuf unmap error is reported.
This is because in case of Pine, first monitor destination ring is
processed, then first buffer from monitor status ring is processed
to check for ppdu_id difference and then finally monitor status ring
is processed where the same buffer is unmapped again and thus resulting
in the issue.
Add fix to resolve the same.

Change-Id: Ic20b2ead8ef345c4ff568242544d5f69e83fcfdf
2021-04-14 18:08:26 -07:00
Paul Zhang
cedbb9d221 qcacmn: Support congestion report on multiple interfaces
Support congestion report on multiple interfaces

Change-Id: I8a3dcc006576b26574e072cf6f74daee4925e6be
CRs-Fixed: 2909919
2021-04-14 05:34:26 -07:00
Shiva Krishna Pittala
ec05e79403 qcacmn: Print an error message when Agile spectral frequency is 0
When agile spectral frequency is 0 and user tries to start agile spectral
scan, 'A parameter is not initialized' message is thrown from user space
but that message is not enough to identify that agile spectral frequency
is not initialized. To address this, print an error message from driver
when Agile spectral frequency is 0.

CRs-Fixed: 2921000
Change-Id: Ibbb144a57774ad274b31015c7a04aa6097daf09f
2021-04-14 00:52:29 -07:00
Vulupala Shashank Reddy
0e7182e1ca qcacmn: Extract TSF time stamp for mgmt rx packets
Extract TSF time stamp for mgmt rx packets.

Change-Id: Id76048d79ea1937c002479314e83b40da807771b
CRs-Fixed: 2916738
2021-04-14 00:52:25 -07:00
Gururaj Pandurangi
74827187ce qcacmn: Remove all wlan_reg_chan_has_dfs_attribute instances
Use wlan_reg_chan_has_dfs_attribute_for_freq API to check DFS
attribute flag instead of unused wlan_reg_chan_has_dfs_attribute
API as part of regulatory cleanup effort.

Change-Id: I201e88f346da0ed84d330985783d93a95f608546
CRs-Fixed: 2908161
2021-04-13 18:54:04 -07:00
Nisha Menon
ab30ba1267 qcacmn: Unmapped IPA buffer results in smmu fault
Check the return status of the IPA api that creates or
releases the smmu mappings of the tx/rx buffers. If the
api returns a failure then assert.

Change-Id: I755765c7c35c901341279eefbc8087d0dce0494c
CRs-Fixed: 2898353
2021-04-13 18:54:00 -07:00
Mohit Khanna
9f35babf04 qcacmn: Set LRO hash keys based on PDEV flag
Currently dp_lro_hash_setup is being done in dp_vdev_attach_wifi3 when
pdev->vdev_count==1. However, this counter is not getting decremented and
may overflow on repeated VDEV attach/detach calls. This may result in
LRO keys being programmed again.
Use a PDEV flag to determine whether to configure LRO or not. Fix
pdev->vdev_count by decrementing it during VDEV detach.

Change-Id: I03cba0d95c30831fbe8047828f7bb2cf4a869213
CRs-Fixed: 2906871
2021-04-13 16:44:03 -07:00
Mohit Khanna
759a7573ed qcacmn: Add structures for FISA pkt history
Add DP data structures to add history in FISA aggregation path.

Change-Id: I2feb2d9fdef8f78f6cbfaf847c199580ceab9887
CRs-Fixed: 2912971
2021-04-13 16:43:59 -07:00
Nisha Menon
5d7e26e27f qcacmn: Dump the rx reo queue descs in ddr
Add iwpriv option 34 to dump the reo rx h/w descs
in DDR for debugging. This cmd will first send cache
flush cmd to REO for all rx tids and invalidate the h/w
cache. Henceforth ensuring that the reo status tlvs and
the DDR values are in sync.
iwpriv wlan0 txrx_stats 34 0
Add fix to ensure bar frame with 2k jump err code is
processed correctly using the REO error code instead of the
REO push reason.

Change-Id: Ia05be668343f3a5d4b3262b8d6a367a50875add5
CRs-Fixed: 2895965
2021-04-13 14:50:51 -07:00
Vijay Krishnan
fe6b1dc264 qcacmn: DO not disable NOL channels
As part of FR68217, wlan_get_chaninfo fetches information from the
regulatory channel list. In regulatory channel list, if radar is
detected the entire channel is marked as disabled channels.

After radar detection, when cfg80211 request for channel info,
"QCA_NL80211_VENDOR_SUBCMD_LIST_CHAN" returns center channel number
as 0. SON application uses the center channel number for channel
preference update.

The center channel number value should be a valid channel number
instead of 0. Therefore instead of marking the NOL channel as
disable, update the channel state as CHANNEL_STATE_DFS. This
helps in updating the center channel number.

CRs-Fixed: 2919437
Change-Id: I1722e23e1a68adec4870ad13b2b9a5e41005921c
2021-04-13 11:52:24 -07:00
Vijay Krishnan
e4831f5794 qcacmn: Modify 11BE Opclass changes
New Opclass for 11BE mode is introduced. The new opclass for 11BE is
included in global opclass according to 802.11_2016-SPEC.

Another change is modify the type of chan_spacing variable in
struct reg_dmn_op_class_map_t from uint8_t to uint16_t. The places
where the chan_spacing variable used is also modified with the updated
data type.

CRs-Fixed: 2897863
Change-Id: I11f0fc03a8e1bbd188968b7f0cfc4a3b4a3784be
2021-04-12 20:10:49 -07:00
Aditya Kodukula
4396086c69 qcacmn: Remove INI parameter gReorderOffloadSupported
As part of WiFi ini clean-up FR, the ini gReorderOffloadSupported,
is identified as an obsolete parameter. Hence it is deprecated.

Change-Id: I7d5ef3b77eb90ccbad1f84ec7d3cce1df761af15
CRs-Fixed: 2896016
2021-04-12 13:04:27 -07:00
Priyadarshnee Srinivasan
6a6557ab2a qcacmn: 802.11BE Regulatory Support
Build regulatory channel list for 802.11BE wireless mode and for the
new channel width 240/320 MHZ. Following is the summary of the changes:
1. Add a new channel width CH_WIDTH_320MHZ.
2. Enumerate a list of 320 bonded channel frequencies.
3. Increase the maximum supported bandwidth to 320/240 in the channel map
4. Introduce reg_channel_list structure which holds an array of
channel params and also a bitmap to indicate the regulatory
puncturing pattern.
4. Build 320 and 240MHZ (punctured 320) regulatory channel list.

CRs-Fixed: 2901260
Change-Id: Ide6a070e0121fbdabf77820a552ca743ca38732a
2021-04-12 05:43:03 -07:00
Priyadarshnee Srinivasan
ca3471eeec qcacmn: Avoid mem copy for different structure types
The regulatory wireless modes are populated by FW in
wlan_psoc_hal_reg_capability during service ready. This is copied
to the host regulatory data structure reg_cap. To accommodate the
802.11BE wireless modes, data type of wireless_modes in reg_cap is
changed from uint32_t to uint64_t, though FW still advertises as a 32
bit flag. As the wireless mode data type of host and FW are different,
structure copy using qdf_mem_copy does not work as expected and it corrupts
the adjacent elements.

Hence copy the elements individually from wlan_psoc_hal_reg_capability
to wlan_psoc_host_hal_reg_capabilities_ext structure. Also, typecast the
wireless_modes to 64 bit before storing in the host structure.

CRs-Fixed: 2901260
Change-Id: I42c8de831f97ec691c9b8cb50b8982662e39e7d9
2021-04-12 05:42:57 -07:00
Priyadarshnee Srinivasan
2b51168ba8 qcacmn: Add 11BE wireless mode and NO11BE phybitmap
Extract the 11BE flags advertised by FW in WMI_SERVICE_READY_EXT2_EVENTID
and update the regulatory pdev wireless modes. The wireless mode is
currently represented as 'uint32_t' and all the 32 bits are exhausted.
To accommodate the new 11BE flags, change the data type of wireless_modes
from 'uint32_t' to 'uint64_t'.

Add a regulatory phymode 'REG_PHYMODE_11BE' in enum reg_phymode.

If the chip does not support 11BE phymode, FW advertises it via
WMI_REGULATORY_PHYBITMAP enum with a value of REGULATORY_PHYMODE_NO11BE.
Extract the phybitmap and store it in the regualtory
as 'REGULATORY_PHYMODE_NO11BE' bitmap.

CRs-Fixed: 2901260
Change-Id: I4ed3fc7c907b1f76e59efb347c747acea2a163b0
2021-04-12 05:42:52 -07:00
Hariharan Basuthkar
28de31d838 qcacmn: Add a sanity check for 6G ap type and client type
Add a sanity check for ap type and client type in the APIs
reg_get_cur_6g_ap_pwr_type and reg_get_cur_6g_client_type respectively,
to prevent array index out of bounds.

Change-Id: I4c9ee7e742089e6b494b731d223b76b069fe1200
CRs-Fixed: 2919361
2021-04-09 23:45:01 -07:00
Tiger Yu
f7f01e0c10 qcacmn: Add sanity checking before removing ase from soc AST hash table
Add sanity checking before removing the ase from soc AST hash table to
avoid potential stability issue if ase is not found in the table.

Change-Id: I97b756cd5bdb052b0ce797cca5d96c6bac8f844e
CRs-fixed: 2912024
2021-04-09 00:37:52 -07:00
Deeksha Gupta
b1faf3e88d qcacmn: Add new reason codes for TWT session
The firmware sends new reason codes due to roaming in
progress and channel switch. Add new reason code for
TWT session.

Change-Id: I3820ac74910e382f5a029de85f8e0915220bb996
CRs-Fixed: 2908384
2021-04-08 10:50:07 -07:00
Srinivas Dasari
f08cb9d934 qcacmn: Don't optimize 6g channels in case of RRM scan request
Currently, scan requests are optimized to trim 6g channels based
on the ini params scan_mode_6ghz and scan_mode_6ghz_duty_cycle.
But RRM scan request comes to host driver with a fixed set of
channels and the expectation is to scan all supported channels
out of these.

Don't consider scan_mode_6ghz_duty_cycle to optimize the
channels in case of RRM scan request. Thereby no 6g channels
would be trimmed.
Ini param "scan_mode_6ghz" is still honored if it's set to
"SCAN_MODE_6G_NO_CHANNEL", which filters out all 6g
channels from the scan request.

Change-Id: I960ac2c68f8d291209acc1c59d2f5b9076f042d7
CRs-Fixed: 2913913
2021-04-08 08:47:33 -07:00
Yeshwanth Sriram Guntuka
69e696c423 qcacmn: Reset the inv bit in ring desc cookie for jumbo pkts
When a msdu scattered across multiple nbufs is received
in REO2SW ring and the remaining nbufs are not yet
available in the ring, loop in dp_rx_process is exited
without resetting the invalid bit in the ring desc cookie.
This will result in an incorrect assertion failure when
the same entry is processed the next time.

Fix is to reset the invalid bit in ring desc cookie
when the loop is exited in the above msdu scattered
scenario.

Change-Id: Ie5cfa1fb8ea1db4b7a0a4837545ecbfdfbb8719a
CRs-Fixed: 2916296
2021-04-08 02:50:56 -07:00
sheenam monga
9b74a6bc2a qcacmn: Add support to offload igmp feature to fw
Send command with required params to offload igmp
feature to fw.

Change-Id: I8b34b3f465c85db6b6cccd5fba439bee1c5640f4
CRs-Fixed: 2908041
2021-04-07 21:52:10 -07:00
Yeshwanth Sriram Guntuka
a5e6565dd6 qcacmn: Check for equal case in nbuf len sanity
MSDU with len 1654 is received in the REO2SW ring and
the total len of the pkt would be 1654 + 392 (pkt tlvs)
+ 2 (l2 hdr padding) = 2048bytes. The nbuf len sanity
checks for strictly less than 2048 bytes which results
in the assertion failure.

Fix is to add the equal case when validating the
nbuf len.

Change-Id: I7e5d1df10339c8d7908a12001c2322028965a8fe
CRs-Fixed: 2916351
2021-04-07 14:32:52 -07:00
Abhishek Ambure
c36e8ad74f qcacmn: Add support to handle vendor specific protected action frame
Host add support to handle action frames with category field
ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED(vendor specific
protected action frames).

Change-Id: Iae105fe7c5c37438b29d9b2bc135961f795c5ab8
CRs-Fixed: 2897655
2021-04-07 14:32:48 -07:00
Lincoln Tran
d9b92d56f2 qcacmn: Remove option LPI as option for AP pwr type
For devices operating in SAP mode, they must operate in VLP mode only,
unless in the countries which does not yet support VLP. In US and PR,
they currently operate in LPI, which will be updated when VLP support
comes. Remove the condition that allows the power type to be set to
LPI. Also, update the current channel list when the power type
changes.

Change-Id: I999862e44f213026ed11da2c08766d9bd77e3b7a
CRs-fixed: 2909703
2021-04-07 11:47:26 -07:00
Yeshwanth Sriram Guntuka
6512d66c27 qcacmn: Create IPA SMMU maps for host replenished bufs
Buffers replenished post processing entries in the
REO2TCL ring do not have ipa smmu mappings created
when RX_PREALLOC_BUFFER_POOL feature is disabled.
This will result in SMMU fault when IPA HW accesses
such replenished buffers.

Fix is to create IPA SMMU mapping for replenished buffers
when RX_PREALLOC_BUFFER_POOL feature is disabled as well.

Change-Id: I0fe611a1279b91a3e45bc269348e05de9015d596
CRs-Fixed: 2915686
2021-04-07 08:16:35 -07:00
Tushnim Bhattacharyya
7d8f444b48 qcacmn: Remove all WLAN_REG_IS_SAME_BAND_CHANNELS instances
Use WLAN_REG_IS_SAME_BAND_FREQS API to check if 2 channel
frequencies are on same band instead of the deprecated
WLAN_REG_IS_SAME_BAND_CHANNELS API as part of regulatory
cleanup effort.

Change-Id: I71318847c7993b4ec44625e9f759b522a553ee4b
CRs-Fixed: 2898310
2021-04-06 23:12:38 -07:00
Karthik Kantamneni
1759c5d6cb qcacmn: Rate limit excessive logs in WBM error path
Rate limit excessive logging prints in WBM error path

Change-Id: Ifb69959b78740bf4a0fca7b7611a2da0ef740413
CRs-Fixed: 2908240
2021-04-06 18:43:06 -07:00
Tushnim Bhattacharyya
ca2545b8a1 qcacmn: Remove all WLAN_REG_CHAN_TO_BAND instances
Use wlan_reg_freq_to_band API to get band instead of
the deprecated WLAN_REG_CHAN_TO_BAND API as part of
regulatory cleanup effort.

Change-Id: I782c2e270e695fdfe1b88d05928cf063dadc859d
CRs-Fixed: 2898232
2021-04-06 05:28:43 -07:00
bings
542e1cb014 qcacmn: Add eht_cap for psoc_phy_config
Add eht_cap for psoc_phy_config to support 11BE

Change-Id: I09d3e52fff3650235c9ab083cd78d3485344035a
CRs-Fixed: 2908971
2021-04-06 05:28:39 -07:00
Venkateswara Swamy Bandaru
216478aaae qcacmn: EHT changes as per latest fw cmn headers
Updated the EHT related variables as per latest fw cmn headers.
Address review comments from previous EHT gerrits.

Change-Id: I67cd58a4efcf3e06d2ca3b5570432593b1d80825
CRs-Fixed: 2902607
2021-04-05 04:45:25 -07:00
Venkateswara Swamy Bandaru
a8e24fd6c0 qcacmn: Add 11be support WMI peer assoc command
Add 320Mhz band width support and EHT capabilities information in
WMI peer assoc command.

Change-Id: Ie4ee95fb1790c828275e90b384b2bdc04efb3f29
CRs-Fixed: 2882054
2021-04-04 04:55:43 -07:00
Venkateswara Swamy Bandaru
bb3a53e3dd qcacmn: Add 320Mhz bandwidth support
Expand bandwidth related fields to support 320MHz.

Change-Id: I4d80625607d0f507373decd70006d55d79b3629a
CRs-Fixed: 2881992
2021-04-04 00:15:30 -07:00
Gururaj Pandurangi
6d6ae3f176 qcacmn: Add dispatcher to reg_get_cur_6g_ap_pwr_type
Add dispatcher API wlan_reg_get_cur_6g_ap_pwr_type to call
reg_get_cur_6g_ap_pwr_type from legacy TPC power calculation
API to obtain AP power type for SAP.

Change-Id: I7b135561af6f1cfaa14bbb724eb984e972a4a19a
CRs-Fixed: 2912227
2021-04-02 20:32:29 -07:00
Kiran Kumar Lokere
dfb42ec511 qcacmn: Drop the invalid 6GHz security beacon from scan result
Validate the 6GHz AP beacon in the scan result for valid security
if user enables the 6GHz security checks.
Drop the beacon from scan result if valid security is not found.

Change-Id: I6e02e77cc996b4f4fb7dc7a1678990419a51c79e
CRs-Fixed: 2904741
2021-04-02 15:03:28 -07:00
Rakshith Suresh Patkar
6fa61a5368 qcacmn: Make agile center freq 0 in stop sscan
In agile spectral scan scenario, if there is a chan switch,
it is possible for the new operating span to overlap with
the agile frequency, which results in erroneous outcome.

Make agile center freq 0 as part of every stop agile
scan. This ensures that a new frequency is mandated
as part of every agile scan.

Change-Id: I4531aa0636a62b918bace66098c2c287e72d55d3
CRs-Fixed: 2910449
2021-04-02 15:03:24 -07:00
Rajeev Kumar
c0a7a9dfe2 qcacmn: Replace request_firmware by firmware_request_nowarn
Replace request_firmware by firmware_request_nowarn to avoid warning
message when the file is not found and sysfs fallback mechanism is
enabled if direct filesystem lookup fails.

Change-Id: Ib55d257aa01c52523b1f1137165c842e139ce614
CRs-Fixed: 2912039
2021-04-02 12:02:49 -07:00
Ashish Kumar Dhanotiya
9498b63b87 qcacmn: Use feature flag based api for 4_9GHz channels population
Currently reg fill master channel list api directly uses 4_9GHz
channel macros to populate band channels. Since 4_9Ghz channels
are featurized if feature flag is disable 4_9GHz channels might
be invalid which may lead to out of bound access in reg populate
band channels api.

To address above issue, use feature flag based api to populate
4_9GHz channels.

Change-Id: Ied9a43301451faf2741188e4a98d4c8e47af9f38
CRs-Fixed: 2913703
2021-04-02 12:02:44 -07:00
Venkateswara Swamy Bandaru
873624584b qcacmn: Add scan support for 11be
Add EHT capability and EHT operation IE definitions and supporting
functions to parse these IEs.

Change-Id: Ida6f8b29fb33a581d2f13584f92327162cfa1664
CRs-Fixed: 2858005
2021-04-01 23:36:01 -07:00
Venkateswara Swamy Bandaru
b390b57146 qcacmn: Add 11be phymodes support in WMI
Extend phymodes to support 11be phymodes in WMI layer.

Change-Id: I98e7f5eac90952ed7daf26745fc9731c128756e5
CRs-Fixed: 2881926
2021-04-01 23:35:57 -07:00
Vevek Venkatesan
da069e5990 qcacmn: add qdf wrapper API for is_driver_state_module_stop
Add qdf wrapper API support for is_driver_state_module_stop.

Change-Id: I6965b4049aebcbe9ec612cf3d70398eb269450e4
CRs-Fixed: 2912016
2021-04-01 20:34:10 -07:00
Venkateswara Swamy Bandaru
11f4850bfd qcacmn: Initialization changes for 11be
EHT capapilities will be received as part of ext2 service ready message.
Update the structure as per firmware common header file and extract the
EHT capabilities field.

Change-Id: Id2dd170db4de588008742f95493d4d06a6431f1c
CRs-Fixed: 2857802
2021-04-01 06:11:30 -07:00
Liangwei Dong
94310d764e qcacmn: Fix debug print to use channel frequency
Use "Chan freq" string for channel frequency value debug
message print.

Change-Id: Ie9e2d2d38b8e7bad2c7fcaa052e5fa5b555fb7ea
CRs-Fixed: 2903498
2021-04-01 01:24:25 -07:00
Ruben Columbus
5708cdac6f qcacmn: remove preamble from peer delayed stats
delete copy preamble from ppdu_desc to peer in data type case.
this will give mu_bar preamble of a data frame instead of ctrl frame.

this will not affect tx_capture given that preamble is copied to
phy_type in ppdu_desc from ppdu_desc preamble itself.

this should fix issue with pulling information from ppdu descriptor by
having data frames with low mcs. mcs was correct but preamble gave
impression that frame was a data but it was a ctrl frame.

Change-Id: Id82e6eb98af0e9488227bff43fc77f188eee77e3
2021-03-31 19:06:27 -07:00
sandhu
30d75bfe8a qcacmn: Add Null check function pointer
Add NULL check for function pointer vdev->osif_proxy_arp .
Which is leading to a NULL pointer derefrence error.

Change-Id: I850d10da879231255970572487260e75fe2e3a78
CRs-Fixed: 2909911
2021-03-31 17:12:07 -07:00
Vignesh U
1bcf72f3f8 qcacmn: Reset radar queues after disabling phyerror processing
When the phyerrors get accumulated in the radar queue and matches a filter,
the radar queues is  reset. But the phyerror reception is not disabled
immediately, instead only done after taking radar action. In this interval,
the radar queue still continues to accumulate pulses until phyerror
reception is disabled.
When radar action is completed, channel is changed and phyerror reception
is re-enabled, the existing pulses in the radar queue continue to exist
and cause false radar on the newly changed channel. This will potentially
add all the dfs channels to NOL.

In order to avoid such a scenario, reset all the delaylines, radar queues
and the associated stats variables after disabling the phyerror
reception.

CRs-Fixed: 2891715
Change-Id: I6ad202a6d99d313895b347119fcae0a2a2651ca1
2021-03-31 14:14:51 -07:00
Manikanta Pubbisetty
5abda36e03 qcacmn: use disable_irq for EXT GRP IRQs
Currently, as part of device suspend, EXT GRP IRQs are disabled.
disable_irq_nosync() which is currently being used to disable
interrupts will not wait for pending IRQs to completion. With this
API, there is a chance where IRQ handler can be executed after the
device suspend. Use disable_irq() instead so that pending IRQs will
be completed before returing from disable_irq().

CRs-Fixed: 2904518
Change-Id: Ib9acabe89b0337add82918be24b4782a6b125d05
2021-03-31 14:14:46 -07:00
sheenam monga
937c5c5af7 qcacmn: Read fw capability to offload igmp
Read fw capability to support igmp offload

Change-Id: I87ff7b07a5add99d8e9f8234912b656e5b866569
CRs-Fixed: 2904971
2021-03-31 12:06:55 -07:00
Jeff Johnson
79b61afd8f qcacmn: Do not export static functions
Linux kernel commit 15bfc2348d54 ("modpost: check for static
EXPORT_SYMBOL* functions") adds a check to make sure that static
functions are not exported.

With this in place the following fatal errors are reported:
FATAL: modpost: "__qdf_nbuf_get_ether_type" is a static EXPORT_SYMBOL
FATAL: modpost: "os_if_spectral_free_skb" is a static EXPORT_SYMBOL
FATAL: modpost: "qdf_nbuf_tx_desc_count_update" is a static EXPORT_SYMBOL
FATAL: modpost: "__qdf_nbuf_get_ip_offset" is a static EXPORT_SYMBOL

To fix these errors do not export the static functions.

Change-Id: Ib5caab904401900bafb23dee23b119daa76d4055
CRs-Fixed: 2910980
2021-03-31 10:07:30 -07:00
Utkarsh Bhatnagar
9df8be508d qcacmn: Add sanity check for the command to remove in connection mgr
Add sanity check for the command to remove in connection mgr, as
by default in case of invalid cm id the disconnetc command is removed.

Also cm_id pointer passed in the cm_remove_cmd, may get freed as
part of cm_delete_req_from_list(), if its part of the cm_req.

Also move the add to ser logic for the roam sync to connect state
handling.

Change-Id: Ie69e8a65fc864a55c51d149570573e6f9aef4564
CRs-Fixed: 2911267
2021-03-31 08:08:38 -07:00