提交图

95 次代码提交

作者 SHA1 备注 提交日期
Utkarsh Bhatnagar
2ed83c128c qcacld-3.0: Add support for TDLS 11AX for 6Ghz band
Add support for TDLS 11AX for operations on 6Ghz
band.

Change-Id: I56e27f1e3560cd4374ba186f161bbc2ad945fe1d
CRs-Fixed: 2990682
2021-07-19 08:15:44 -07:00
Utkarsh Bhatnagar
c7e32c7021 qcacld-3.0: Enable TDLS 11AX only if supported by FW
Don't fill the 11ax capabilities if FW doesn't support
TDLS 11AX capability.

Change-Id: I267ccaa439bb3cf17d27493172b4f324d112724b
CRs-Fixed: 2925250
2021-05-10 09:02:55 -07:00
Utkarsh Bhatnagar
ea990e3972 qcacld-3.0: Handle TDLS peer count logic for SSR scenario
Always decrement tdls_soc_obj->set_state_info.set_state_cnt
in case TDLS is disconnected due to STA disconnection
triggered as part of SSR.

If it is not, then for SSR, after the system restarts,
this count is used and can be interpreted as second
tdls connection.
Currently, multiple tdls links are not supported, so
TDLS set state CMD (WMI_TDLS_SET_STATE_CMDID) won't be
sent to fw, although peer create and peer assoc will
go to firmware which results in crash.

Change-Id: Ib764cd04a04fab237840cdffafa9752fbe202418
CRs-Fixed: 2931199
2021-04-27 16:13:00 -07:00
Jyoti Kumari
e9a700f4aa qcacld-3.0: Don't use wlan_freq_to_chan
As part of regulatory cleanup, wlan_freq_to_chan() is removed.

Use wlan_reg_freq_to_chan() instead of wlan_freq_to_chan()

Change-Id: I18d7996a0b117de90cd32f2208702d01655ceeb9
CRs-Fixed: 2926114
2021-04-20 11:42:27 -07:00
Utkarsh Bhatnagar
106e4937db qcacld-3.0: Fix TDLS teardown issue
TDLS teardown happens in high throughput
scenario as rx pkt count increment API
"tdls_update_rx_pkt_cnt" is not called
if hdd_is_current_high_throughput API
returns TRUE. The reason for this is due
to high cpu cycles consumed by
tdls_update_rx_pkt_cnt API.

As part of fix optimize tdls_update_rx_pkt_cnt,
tdls_update_tx_pkt_cnt API's for high
throughput scenario. In high throughput
scenario mostly the use-case is to increment
the pkt counter so move that logic to
the top of the API's.

Change-Id: I4eb0da3571c45b5ee91e051e251158af15f73973
CRs-Fixed: 2888746
2021-03-25 20:20:02 -07:00
Jianmin Zhu
a8863243de qcacld-3.0: Clean up wlan_reg_get_channel_reg_power
Clean up channel id api wlan_reg_get_channel_reg_power.

Change-Id: I2757383c182f84ed8e5089a9584f003d06ade28e
CRs-Fixed: 2905089
2021-03-24 21:02:09 -07:00
sheenam monga
1f6cb040c4 qcacld-3.0: Don't find dsrc channel based on channel number
Channel number may be same for different bands due to which
non-dsrc channel may be treated as dsrc or vice-versa.

Fix is to find channel is dscrc or non-dsrc based on frequency.

Change-Id: I349172713dda6880771e14231aeb1b4419a86e01
CRs-Fixed: 2902986
2021-03-22 13:31:02 -07:00
Utkarsh Bhatnagar
fb5ff5a539 qcacld-3.0: Introduce 11ax capabilities for tdls
Introduce HE cap IEs in addstareq. Also, Add
HE capabilities in frames for TDLS Setup Req,
Setup Rsp, Discovery Rsp. Add He Operations
in TDLS setup Confirm.

Implement APIs under feature WLAN_FEATURE_11AX
which will be used to:
1) Fill HE capabilities in TDLS Discovery Response,
   TDLS Setup Request, TDLS Setup Response.
2) Fill HE operations in TDLS Setup Confirm.
3) Convert he_capa capabilities from station
   parameters to tdls tDot11fIEhe_cap type.
4) Set Chan width based on session, peer
   capabilities.

Change-Id: If36b1a3c3eed0e6026043494a097673f9d74b580
CRs-Fixed: 2883443
2021-02-25 04:03:32 -08:00
sheenam monga
1c7977d211 qcacld-3.0: Remove usage of wlan_reg_get_channel_state
Use wlan_reg_get_channel_state_for_freq to get channel state
instead of wlan_reg_get_channel_state.

Change-Id: I0ab0465458801747cc97bf03b3aee4ec255beb57
CRs-Fixed: 2859852
2021-01-29 16:48:46 -08:00
Tushnim Bhattacharyya
2cac8a113b qcacld-3.0: Release resource after TDLS cmd processing
It doesn't free resources in failed cases like getting vdev or tdls
vdev object when handling tdls commands. This causes reference
count of psoc leak or memory leak. Following are the functions,

tdls_set_responder
tdls_notify_sta_connect
tdls_notify_sta_disconnect
tdls_set_operation_mode
tdls_reset_all_peers

Change-Id: I8b5d5fa8a137a1b07f0fa6e4667047db95d7b99e
CRs-Fixed: 2839099
2020-12-18 17:41:09 -08:00
Wu Gao
f1d9812ccd qcacld-3.0: Release WLAN_TDLS_SB_ID when teardown TDLS connection
It doesn't handle failed case about getting vdev or tdls vdev object
when teardown tdls connection. Which causes reference count of psoc
leak.

Change-Id: Ie4e7966c0a07f378483cd5e6344599645c75ac68
CRs-Fixed: 2836949
2020-12-14 01:43:02 -08:00
Gururaj Pandurangi
370f376c02 qcacld-3.0: Modify connect start code in if mgr
Modify connect start code in interface manager by
moving disable roam and tdls link teardown notify
APIs from HDD to if mgr. Alongside, move tdls link
teardown notify API from HDD to if mgr in start bss API.
Also, move the tdls link teardown API to TDLS module from
HDD module as TDLS should manage the wait logic.

Change-Id: I09fa31878563a3daaa7c5fde46327475829317b3
CRs-Fixed: 2811807
2020-11-20 13:11:00 -08:00
Srinivas Dasari
376de8f82f qcacld-3.0: Fetch vdev from psoc in TDLS handlers
Currently, if the TDLS timer expires while the scheduler thread
is processing something(e.g., station vdev destroy), the handler
would be in wait queue and it gets called once the scheduler
thread is done with its current task(i.e., vdev deletion).
TDLS handler tries to use the vdev even it has just got freed,
which leads to use-after-free.
This happens because of the below,
1. vdev destroy notification has no knowledge of the TDLS timer
   expiry as timer_stop is used to stop the timer.
2. vdev is passed to TDLS handler as part of registration.

Fix:
1. Use timer_stop_sync in vdev_destroy_notification to make
   sure the handler is posted to scheduler thread if the timer
   had expired.
2. Get the vdev in handler from psoc instead of passing it to
   the timer handler. This can make sure the vdev is referred
   only if it exists.

Change-Id: I186fd0d44b2364ebb375a8445dd1239368543e7b
CRs-Fixed: 2792020
2020-10-12 19:12:01 -07:00
hqu
f88549090b qcacld-3.0: Fix implicit-fallthrough compile error casued by gcc 9.3
Compiling with gcc 9.3 will cause many implicit-fallthrough
compile errors.

Fix is to add keyword fallthrough to resolve such compile error.

Change-Id: I3fdc48b1a9ab2345a47ae644e3217b4d29238364
CRs-Fixed: 2785172
2020-10-01 12:28:39 -07:00
Srinivas Girigowda
d36054fbd2 qcacld-3.0: components: Remove logs for qdf_mem_malloc() checks
qdf_mem_malloc() function already takes care of logging the
caller function name and line number in case of any allocation error.
Hence there is no need to add the error log again.

Getting rid of these unnecessary logs reduces driver memory footprint.

Change-Id: If0b9425f82f9ed793c7639c0ed09eb1f868b6d5c
CRs-Fixed: 2781932
2020-09-25 12:59:42 -07:00
Utkarsh Bhatnagar
3fb55f01e4 qcacld-3.0: Update peer if add TDLS is rejected in of case ongoing setup
In case two clients try to establish the TDLS connection simultaneously,
the peer who is able to transmit the setup request first will be
connected and the other request is in driver without notifying the peer.
This causes peer to get stuck waiting for the TDLS setup response. So,
send TDLS setup response with unspecified failure reason code, ift here
is already TDLS setup.
Also, drop the setup response only if status code is zero in case setup
is already in progress. This way if the status code is set which will be
set in tdls_activate_add_peer(), in case of request already in process,
the same error code can be notified to the peer.

Change-Id: I83fea4586d6e344a86a9185b078e4d87ec38c664
CRs-Fixed: 2771973
2020-09-23 19:35:09 -07:00
Wu Gao
56afad67cb qcacld-3.0: Set current mode properly for TDLS
This change fixes two issues about TDLS:
    1. It updates current mode only if tdls vdev object is NULL.
    2. Handles pre-scan callback but ignore scan done callback if device
       type isn't station or P2P client.

Change-Id: I4badbf3a7c40eca813a6360817d5483be88f2c5d
CRs-Fixed: 2769638
2020-09-14 09:55:07 -07:00
Srinivas Girigowda
3e043aa2ce qcacld-3.0: tdls: Change %pM/QDF_MAC_ADDR_STR/ARRAY to QDF_MAC_ADDR_FMT/REF
Change %pM/QDF_MAC_ADDR_STR/ARRAY to QDF_MAC_ADDR_FMT/REF.

CRs-Fixed: 2752355
Change-Id: I79eb9801810c2bd08699dede9e73ff7bf17fc5b9
2020-08-22 16:00:45 -07:00
Wu Gao
1f1d0c9560 qcacld-3.0: Teardown TDLS link if TDLS disallows scan
DUT doesn't teardown TDLS link if set gEnableTDLSScan = 0 just as
previous branch. This change will teaddown TDLS link if set
gEnableTDLSScan = 0 and disallow scan.

Change-Id: I287f3ec200c05ed6e7bc1d2887f659ab8ccc90fa
CRs-Fixed: 2749536
2020-08-17 01:14:03 -07:00
Wu Gao
a0a03562ea qcacld-3.0: Check the state before starting tdls timer
Since tdls_implicit_enable will be called in different scenarios, and
there is error level output if repeated start same timer. So check
the state before starting tdls timer.

Change-Id: Id023affa016f337286dad539298a9bbc15381091
CRs-Fixed: 2747370
2020-08-07 02:53:16 -07:00
Pankaj Singh
bc917e55af qcacld-3.0: Invalid offchannel freq sent in tdls offchannel command
In WMI_TDLS_SET_OFFCHAN_MODE_CMDID the offchannel freq is set to invalid
value due to uninitialized local tdls_channel_switch_params type variable
resulting in fw reading incorrect non zero offchanel freq.

Fix, to zero initialize the local tdls_channel_switch_params variable.

Change-Id: Ia7d6daac098a179a22676620875a2b0d6488a8ad
CRs-Fixed: 2739267
2020-08-06 18:40:53 -07:00
Ashish Kumar Dhanotiya
28d3dfd5e0 qcacld-3.0: De-initialize idle timer on tdls peer reset
Currently idle timer does not gets de-initialize on tdls peer
reset because of which there could be a possibility that in
case of multiple tdls connection and disconnection with multiple
peers, this timer might get assigned and re-assigned to different
peers which may lead to an issue where this timer never gets
started for the required peer.

In current scenario whenever the first TDLS connection
(Peer a with sta_idx 0) happens, tdls peer idle timer object is
initialized with “&tdls_soc->tdls_conn_info[0];”.
Now if this peer a gets disconnected and peer b gets connected
and peer gets the same sta_idx 0, then peer will be associated
with timer “&tdls_soc->tdls_conn_info[0];”,hence 2 timer init
happens with the same sta_idx for peer a and peer b.
(here peer a is in disconnected state and peer b is in connected
state)

Now if peer a gets connected it will get the sta_idx 1, as timer
initialization is already done for peer a with sta index 0 so
timer initialization will not be done again.
Now if peer b gets disconnected it will set the tdls_info for
sta_idx 0 to invalid (INVALID_TDLS_PEER_INDEX).
Now for peer a timer will be started and when timer expires in
timer handler function “tdls_ct_idle_handler” will not be invoked
as sta_idx is already set to INVALID_TDLS_PEER_INDEX.

To address above issue, de-initialize the idle timer for tdls
peer on every tdls peer reset.

CRs-Fixed: 2746046
Change-Id: Icc2e64a9299852d5b29d26dec79b7f1efb2594b8
2020-08-04 01:51:53 -07:00
Pankaj Singh
af44671317 qcacld-3.0: Extend Tdls external mode config support
Current implementation of external mode requires supplicant to
send tdls peer mac address. On matching of stats tdls implict
link procedure is trigger for configured peer.

Fix, to allow both configured peer and other peer that supports
tdls to establish the tdls link.

Change-Id: I8f65e6dcc9dec565623ac2d8d2c77e12570f8bfb
CRs-Fixed: 2733830
2020-07-24 13:10:00 -07:00
Lincoln Tran
d5e1f78aa8 qcacld-3.0: Introduce getband vendor command
Update calls from reg_get_curr_band to reg_get_band since
they provide the same functionality.
Update calls to reg_get_band to expect a bitmap since the API
has been updated.
Update getband driver command to convert the bitmap to the
old values. Also add the new vendor command getband.

Change-Id: I069489ebf4826f8f4bfcb974b74e4d0591d5b33f
CRs-fixed: 2726361
2020-07-14 22:45:22 -07:00
Wu Gao
7a5b681708 qcacld-3.0: Add wow support for TDLS
Prevent wow if TDLS is started, allow wow if TDLS link disabled. This
feature is enabled only if lithium plaform isn't drv supported.

Change-Id: Ie66d62cb139fe9a1d292925a78f2dd861f16ef69
CRs-Fixed: 2716922
2020-07-10 05:38:44 -07:00
Pankaj Singh
f9b5466cb6 qcacld-3.0: TDLS not releasing the vdev ref taken with WLAN_TDLS_NB_ID
During NAN+TDLS case, when NAN is present dut is trying
to add TDLS peer and the ref is not released which results in
assert due to obj delete timeout.

Fix is to release the ref taken properly in default handing of
tdls serialization cmd and error handling.

Change-ID: Ia1ff16fdde7f70e45b712d260c1eca372ceb947e
CRs-Fixed: 2727206
2020-07-09 13:43:27 -07:00
Wu Gao
acf04962a7 qcacld-3.0: Don't reset connecting TDLS peer to idle state
It resets connecting TDLS peer to idle state, and then won't send
peer delete command to FW, which cause FW break down. So check link
status and avoid to reset connecting TDLS peer to idle state.

Change-Id: I8e8c883c6a517d516f496790350324a4257c9325
CRs-Fixed: 2726207
2020-07-07 21:38:28 -07:00
Ashish Kumar Dhanotiya
f2ff802b63 qcacld-3.0: Add new scan type SCAN_FOR_SSID for conn_manager infra
Add new scan type SCAN_FOR_SSID to support connection manager
infrastructure.

CRs-Fixed: 2713775
Change-Id: I399f2c5cac0a09b78b6c13786105a9f098922c72
2020-07-02 08:48:05 -07:00
Jianmin Zhu
e6c35ab600 qcacld-3.0: Replace channel with freq for 6G
Replace WLAN_REG_IS_24GHZ_CH with WLAN_REG_IS_24GHZ_CH_FREQ.
in TDLS.
Change-Id: I6c0ee6ec3a2d24cc0c826f93527d4655925cc6cd
CRs-Fixed: 2717000
2020-06-23 15:44:06 -07:00
Pankaj Singh
9dcc7e0e82 qcacld-3.0: Tdls avoid peer access after peer deletion
Currently, peer can be accessed after deletion in hdd because
cdp_clear_peer called via tdls_process_del_peer_rsp
tries to remove peer from physical device after deletion of
peer in datapath.

Fix is to remove cdp_clear_peer from hdd as it is handled by
cdp_peer_delete.

Change-Id: Ibdeb9a2a8dcf3318d66a48b9e9c7ca4d5cd74cb3
CRs-Fixed: 2663555
2020-04-24 17:09:36 -07:00
Pankaj Singh
8e2e7b47a3 qcacld-3.0: Don't send peer update after peer delete
During tdls peer delete, wmi command WMI_PEER_DELETE has been
send but later on from driver wmi command for peer update is
send without checking for peer reference before sending to fw.

Fix, to check for peer reference before posting the cmd to fw.

change-ID: I216d1ad726af3369c227ae566e22949cadb8300c
CRs-Fixed: 2667811
2020-04-24 17:09:25 -07:00
Pankaj Singh
be72e139d5 qcacld-3.0: Clean up logs in TDLS path
Clean up redundant logs in tdls path.

Change-Id: Ibf9ad4021cf0c690470bca252117a6eb34295cec
CRs-Fixed: 2625114
2020-02-28 09:09:52 -08:00
gaurank kathpalia
c749f7d136 qcacld-3.0: Print the peer only when rx tx is going
Currently the TDLS module prints the peer info
every defined time interval which leads to too
much of information even when no rx tx is
ongoing with the peer which leads to excessive
logging.

Fix is to limit the logs and print only when there
is activity going on.

Change-Id: I6c1bf5a1ce8a858dfe895168178154a6c8b49c1f
CRs-Fixed: 2625632
2020-02-25 10:58:14 -08:00
Abhinav Kumar
86afc8fbc4 qcacld-3.0: Optimize logs after connect complete
Optimize logs after connect complete i.e roam offload params
and tdls state etc.

Change-Id: I5df7eb236ef1c7369f4d996c4f0eda7225652f12
CRs-Fixed: 2627694
2020-02-25 03:00:49 -08:00
Amruta Kulkarni
fc875ea635 qcacld-3.0: Cleanup for function wlan_reg_is_dfs_ch()
Replace wlan_reg_is_dfs_ch() with wlan_reg_is_dfs_for_freq()

Change-Id: Ifa62248169ad7b8ff1c62cab44c92d99a8db0e45
CRs-Fixed: 2609311
2020-02-08 02:07:03 -08:00
Abhishek Singh
48175fd4f7 qcacld-3.0: Optimize logs in scan path
Remove redundant logs and optimize the logs in scan path.

Change-Id: Ie6ff84b1a832a29d5fe01c649be4b8143bd13c94
CRs-Fixed: 2612637
2020-02-04 14:15:54 -08:00
gaurank kathpalia
16f2a47c11 qcacld-3.0: Optimize logs in serialization
Remove redundant logs in serialization.

Change-Id: Icaebd5ce800ec035f082210785e95372cf2e7e72
CRs-Fixed: 2612824
2020-02-04 02:01:34 -08:00
Arun Kumar Khandavalli
8b61ce1e4c qcacld-3.0: Selectively reduce tdls logs
Reduce tdls logs from info to debug.

Change-Id: I2de71c4aa5d9915afb68bc192dcd6a749f6b3b4e
CRs-Fixed: 2607020
2020-01-23 03:41:19 -08:00
Vevek Venkatesan
e9fa59de57 qcacld-3.0: cdp: Converge cdp_ctrl_ops
Currently cdp ops are given pdev/vdev handle
as its arguments, which is directly accessed
in those APIs. This can cause a race-condition
in access of the respective handles, if it has
been deleted in parallel.

Hence as a part of cdp convergence, pass only
the pdev_id/vdev_id which will be used to get the
respective handles and hence avoiding unwanted
access of the handles if it has been deleted.

Also deleting few ops which stores and retrieves
such handles and adding ops to set/get pdev params.

- txrx_set_safemode
- txrx_set_drop_unenc
- txrx_get_pdev_param
- txrx_set_pdev_param
- wdi_event_sub
- wdi_event_unsub

Change-Id: Ib3511cbdead75b30e899dbf00f936ffdae316b71
CRs-Fixed: 2541657
2020-01-20 17:50:23 -08:00
bings
059c4a06c2 qcacld-3.0: Configure TDLS off channel mode when band switches
Disable TDLS off channel if 2g or 5g is disabled, restore TDLS off
channel configure when all bands are enabled.

Change-Id: Iabfdcdbf84e4a6313ad04e381b70e21c871d66c2
CRs-Fixed: 2595303
2020-01-10 04:07:57 -08:00
Abhishek Singh
345be418c9 qcacld-3.0: Replace sme_session_id with vdev_id
Replace sme_session_id with vdev_id in SME and LIM.

Change-Id: I7a4a85c440d8d7d7a2a4163bc71776e288da0222
CRs-Fixed: 2569190
2019-11-22 07:12:45 -08:00
Liangwei Dong
897b439b3c qcacld-3.0: Add policy_mgr_is_hw_dbs_required_for_band API
policy_mgr_is_hw_dbs_required_for_band is for any HW where
PHYA/MAC0 doesn't support the given band. We need to switch
to DBS mode to support the band. So far we have
overloaded policy_mgr_is_hw_dbs_2x2_capable to achieve above.
Need a cleaner API to work in a generic way
(for 2x2, 1x1 or any chain mask configuration).

Change-Id: I1cb28bece1242fc749a0a6a56fadca0502850c43
CRs-Fixed: 2565939
2019-11-21 00:44:19 -08:00
Bala Venkatesh
ff86f89448 qcacld-3.0: Add the ini gTDLSDiscoveryWakeTimeout
Add the support for the ini gTDLSDiscoveryWakeTimeout.
with this ini gTDLSDiscoveryWakeTimeout, FW will be awake
for configured value after sending the discovery request.

Change-Id: I194e5c99972968bbaa46ffb6b8e83604bff15a0a
CRs-Fixed: 2546515
2019-11-11 02:05:27 -08:00
Bala Venkatesh
7ce8fb0556 qcacld-3.0: Do not reset the tdls link status to tearing
If the force peer is removed from wpa_cli, then without
checking the current link status link status is set to tearing.
Then if the same peer is again marked as forced then that peer
status is not reset to idle and that can lead to tdls connection
denial of that peer.

Reset the tdls link status to tearing only in connected state.

Change-Id: Idd4128b4599fc2dfbb768984f8f9390fc14ab5f6
CRs-Fixed: 2551180
2019-11-06 14:05:41 -08:00
Bala Venkatesh
ce98442c2a qcacld-3.0: Fill the pmf info for TDLS peer
Fill the pfm info of the TDLS peer before sending the peer assoc
command to FW.

Change-Id: I4e336c345c0fb8f063157b3e3a780efa777f1a74
CRs-Fixed: 2535832
2019-10-24 14:33:37 -07:00
Manikandan Mohan
7fdb02592b qcacld-3.0: Use policy manager frequency APIs
For 6GHz support and to remove channel number ambiguity use policy
manager APIs updated for frequency in other modules. This change
covers following APIs:
policy_mgr_is_chnl_in_diff_band
policy_mgr_check_for_session_conc
policy_mgr_handle_conc_multiport
policy_mgr_change_sap_channel_with_csa
policy_mgr_get_channel
policy_mgr_get_nondfs_preferred_channel

Change-Id: I4a6673db3a02b6e8d7fa94ae452338db618e3883
CRs-fixed: 2545099
2019-10-22 18:09:18 -07:00
Yeshwanth Sriram Guntuka
4ac1584527 qcacld-3.0: Cleanup sta_index in TDLS structures and APIs
Remove sta index references in TDLS structures and APIs
and mac address would be used instead to refer the peer.

Change-Id: I861f7ce068f3f545598129b9f3955b84b2a6fbce
CRs-Fixed: 2524512
2019-10-22 09:05:33 -07:00
Yeshwanth Sriram Guntuka
e6b54245d6 qcacld-3.0: Remove sta index in few prints
Remove sta index in few prints and replace it
with MAC address as part of sta_index cleanup.

Change-Id: I689ede9dc345667f1a054f76bf3d08b236131c13
CRs-Fixed: 2524505
2019-10-22 09:05:02 -07:00
Ashish Kumar Dhanotiya
ca5d922263 qcacld-3.0: Process rx_mgmt_pkt based on frequency
As a part of 802.11ax amendment, 6GHz band operation is added.

Since the 6 GHz channel numbers are overlapping with existing 2.4GHz
and 5GHz channel numbers, use frequency to identify unique channel
operation instead of channel number. Channel frequency is unique across
bands.

As part of above requirement add logic to process rx mgmt
packets based on the frequencies instead of channel numbers.

Change-Id: Ib063070738ecdb4f83379eafe50629778a490aae
CRs-fixed: 2522693
2019-10-18 02:55:17 -07:00
Manikandan Mohan
cf5048294b qcacld-3.0: Disallow TDLS when NAN is active
Since NAN has higher priority over TDLS, disallow TDLS link
when NAN is active.

Change-Id: I7de34dbb2f808c36358ac5266c26e2729b901941
CRs-fixed: 2537158
2019-10-14 05:47:03 -07:00