Grafico dei commit

2229 Commit

Autore SHA1 Messaggio Data
gaurank kathpalia
8197e355fa qcacld-3.0: Peer ID cleanup in LIM, HDD and WMA
Cleanup peer id from the callers of cdp APIs from
where the peer ID was passed, and use mac address
instead to identify the STA.

Change-Id: Ie6dcae77e959439a71c11b1a2fa0daddcaa6e719
CRs-Fixed: 2529822
2019-12-06 01:51:09 -08:00
Will Huang
e38ae0f758 qcacld-3.0: Use channel frequency directly stead of channel number
Use channel frequency directly in function csr_get_dot11_mode() and
csr_neighbor_roam_preauth_rsp_handler().

Change-Id: I2dac911fac1d1c154a3d0f5465cfef3d85e81b85
CRs-Fixed: 2568346
2019-12-05 15:16:26 -08:00
Abhishek Ambure
6523bc72c9 qcacld-3.0: Clear Static channel list in fw for SETROAMSCANCONTROL 0
In the present implementation, it is observed that "SETROAMSCANCONTROL 0"
command is not clearing STATIC channels in the firmware for ROAM scan list.

So to clear STATIC channels configured for ROAM scan and set dynamically
added ROAM scan channels host sends two RSO commands to Firmware.

In the first RSO command STATIC channel list is cleared and second RSO
command will add dynamically added ROAM scan channels to ROAM scan list
in firmware.

Change-Id: Ic359326032c5776540c773a51d7531c0cfcd7bdc
CRs-Fixed: 2571119
2019-12-05 04:20:42 -08:00
gaurank kathpalia
318006772b qcacld-3.0: Verify the channel and BW info in monitor mode
Currently the monitor mode does not check the chan
validity and BW validity before starting the monitor
mode vdev which could result in invalid configuration
given to FW and thus further can lead to assert.
Eg. If the command comes for an invalid channel, or
suppose 160 MHZ and the device supports 80 MHZ only
then it can lead to assert.

Fix is to verify the channel and BW info and reject
the command if found invalid.

Change-Id: Iaf9f06f8d4b943bd1e8db5c22ea155a4fe3e61a8
CRs-Fixed: 2572152
2019-12-03 22:48:17 -08:00
Jianmin Zhu
a9c1b38b62 qcacld-3.0: Failed to add PMF required AP into LFR3 channel map
PMF info isn't filled in scan filter when find AP in scan
cache to build LFR3 channel map.

Change-Id: Ibacf0ee6534298415f97fc42e5223b7d85f203e0
CRs-Fixed: 2571777
2019-12-02 22:36:47 -08:00
Abhishek Singh
91562fa4be qcacld-3.0: Free connected profile, roam info etc during HB failure
In case of disconnect from peer or HB failure the connected profile,
roam info etc are not freed. So connected BSSID is still present in
sme session.

Now in STA+STA case if the vdev0 STA connect to a BSSID say AP1 and
then disconnect due to HB failure. Now if the 2nd vdev1 STA connect to
AP1 and again disconnect due to HB failure, in
csr_roam_chk_lnk_deauth_ind it will try to find the session using
BSSID, but as vdev0 BSSID is not yet deleted it will get the vdev0
vdev id and continue the process on the wrong BSSID.

This result in actual CSR session in connected state for the vdev1
but all other layer in disconnected state.

Now if a connect request is received on vdev1 again, as CSR is
connected state it lead to reassoc req to LIM and lead to out of
sync issues.

To fix this free connected profile, roam info etc during peer
initiated disconnects. Also ignore the BSSID if a vdev is already
connected to it.

Change-Id: I0f862259dc297217c7b9ecd5d1521a8ded2aadc3
CRs-Fixed: 2577795
2019-12-02 12:39:08 -08:00
hqu
bcd0a8f349 qcacld-3.0: Clear wlan_reg_freq_to_chan
Clear wlan_reg_freq_to_chan in is_dfs_unsafe_extra_band_chan,
refine unsafe_channel_list for hdd_context to store frequency.

Change-Id: I48a75e053228b202122633a32e750f446f839ea3
CRs-Fixed: 2574028
2019-12-02 12:38:55 -08:00
hqu
e947f6524f qcacld-3.0: Clear wlan_reg_freq_to_chan
Clear wlan_reg_freq_to_chan in csr_scan_filter_results.

Change-Id: I4c6815171f51790a795af3635c924225cdf5ac35
CRs-Fixed: 2570951
2019-12-02 07:19:10 -08:00
Abhishek Singh
f37d49f5b4 qcacld-3.0: Rename sessionId of struct tagSmeCmd to vdev id
Rename sessionId of struct tagSmeCmd to vdev id

Change-Id: I3b0d9c1f7e173e4f45bd3d0a29df6ab7dd0de64d
CRs-Fixed: 2575198
2019-12-01 17:40:42 -08:00
Srinivas Dasari
b24bdd3f73 qcacld-3.0: Consider NAN enabling also as connection in progress
There is a race condition while handling the below scenario,
1. NAN enable request is received from framework.
2. Policy mgr opportunistic timer expired and set hw mode
   initiated to Single MAC mode in scheduler thread at
   the same time

As the opportunistic timer handler doesn't have any info if
NAN enable initiated in DBS mode, it's configuring the hw
mode to Single Mac Mode just before NAN enable request is sent
to firmware. So the NAN enable request is sent to firmware in
Single Mac Mode which is not allowed by firmware.

NAN enable/disable is also similar to connection in progress
status in case of STA. So provide NAN enable/disable status
through hdd_is_connection_in_progress() to the opportunistic
timer handler. Opportunistic timer handler restarts the timer as
connection(NAN enable/disable) is in progress.

Also set hw_mode_change_in_progress before checking the
connection progress status. This is to avoid a possible race in
the below scenario,
1. NAN-enable sets the state but scheduler thread had read the
   state just before that
2. NAN-enable read the hw_mode_change_in_progress just
   before it gets set by scheduler thread.

Change-Id: I1a184c84520deb3f6ad1ec010a0fdefda96a5364
CRs-Fixed: 2566841
2019-12-01 17:39:45 -08:00
Gururaj Pandurangi
847342e013 qcacld-3.0: Remove logs in csr_nonscan_active_ll_peek_head
Remove logs in csr_nonscan_active_ll_peek_head to prevent
excessive logging while testing CVE-2017-0624

Change-Id: Ie5ab57d36fc05a3eac0d4fdba33a72b11eb7c561
CRs-Fixed: 2573914
2019-12-01 13:10:49 -08:00
hqu
a07736a6da qcacld-3.0: Clear wlan_reg_freq_to_chan
Clear wlan_reg_freq_to_chan in csr_fill_bss_from_scan_entry.

Change-Id: I06b2eef0f1c965466c1ec67edd3ea48db07dddc7
CRs-Fixed: 2570933
2019-11-29 06:16:20 -08:00
Liangwei Dong
17b35c18f9 qcacld-3.0: Remove op_chan and wlan_reg_freq_to_chan
Remove unused op_chan local variable. Remove call to
wlan_reg_freq_to_chan.

Change-Id: I351fe9df7f419fe9345dce73c948d34a73bfcc8a
CRs-Fixed: 2940016
2019-11-27 14:15:28 -08:00
wadesong
d8a7719df3 qcacld-3.0: Convert CSR legacy channel ID usage
1) Change the following functions to make them use channel
   frequencies intead of channel IDs:

   csr_process_roam_sync_callback
   csr_save_to_channel_power2_g_5_g
   csr_save_tx_power_to_cfg

2) Remove some local variable and code within function
   csr_save_tx_power_to_cfg as they're not used.

3) Retain the code for channel ID utilization within
   csr_get_channel_power_info as they're used to
   indicate diag info to upper layer apps.

Change-Id: Ib294fd04f770c008afaa0049fb1951aa912caf34
CRs-Fixed: 2573403
2019-11-27 07:04:33 -08:00
Rachit Kankane
e599de301c qcacld-3.0: Add check ongoing deauth message
There are two path in code to deauth a associated STA in SAP mode:
1. Deauth issued from user space
2. Deauth issued from peer

Rectified the check for ongoing deauth before queuing for another.

Change-Id: Ib3f45968c770b1df25c77aed9fd1e3bc8edd6e72
CRs-Fixed: 2567087
2019-11-26 08:42:08 -08:00
Sourav Mohapatra
2a67b0ed24 qcacld-3.0: Add driver command to request ANI level
The ANI level determines how well the device is coping with interference
in the wireless environment. Add support in the driver to query the ANI
level from the firmware and populate it for userspace entities to use.

Change-Id: I54934f670aa11737e11eca4d64e12f9dffb4f430
CRs-Fixed: 2554674
2019-11-26 05:30:13 -08:00
Abhishek Singh
f554e7a205 qcacld-3.0: Remove unused csr serialization APIs
Remove unused csr serialization APIs.

Change-Id: I80b126abbb3c52aa854343dcad6834835ae53038
CRs-Fixed: 2573395
2019-11-26 05:30:00 -08:00
hqu
19f7c76165 qcacld-3.0: Convert SME code legacy channel ID usage
Add op_freq info for structure host_log_ibss_pkt_type and
host_event_wlan_connection_stats before indicate diag event.

Change-Id: Icbb69c0d93062654984b63e11969d0819818c56e
CRs-Fixed: 2554198
2019-11-25 13:43:13 -08:00
Min Liu
818395d83e qcacld-3.0: Fix race condition when disconnecting
Fix one more scenario which is not covered by the change
Ib6a30057469d60efcc905d97b5234ea5a0e097a8

For some timing issue, HDD conn state is set to disconnecting
after hdd_association_completion_handler is called. So
hddDisconInProgress is not set and disconnect_comp_var will not
be completed in hdd_association_completion_handler.

To fix this issue, QDF_STATUS_CMD_NOT_QUEUED should be set only
when scan for ssid is in progress, with pSession->scan_info.profile
we can check if scan for ssid is in progress. So set
QDF_STATUS_CMD_NOT_QUEUED only when pSession->scan_info.profile
is set.

Also if disconnect from LIM was already in progress (i.e.
csr_is_conn_state_connected and
csr_is_roam_command_waiting_for_session are false and
pSession->scan_info.profile is set), return failure and wait for
WLAN_WAIT_DISCONNECT_ALREADY_IN_PROGRESS ms for the disconnect
to be completed.

Change-Id: Ib490021775a39614646f8e518860c878cc0fdaae
CRs-Fixed: 2564992
2019-11-25 03:56:58 -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
Abhishek Singh
5a2c42f803 qcacld-3.0: Replace smeSessionId with vdevid in SME, HDD and WMA
Replace smeSessionId with vdevid in SME, HDD and WMA files.

Change-Id: I3b2f5dd08dac2d107f89762cd763a032b4867d16
CRs-Fixed: 2569192
2019-11-22 07:12:28 -08:00
bings
534c403cf9 qcacld-3.0: Call csr_set_ldpc_exception with channel frequency
csr_set_ldpc_exception is already used channel frequency as input
parameter.

Call csr_set_ldpc_exception with channel frequency.

Change-Id: I0a30b558e570ed0e14f925d23241bdaf1b6f8a44
CRs-Fixed: 2568321
2019-11-22 04:12:18 -08:00
Arun Kumar Khandavalli
4f6a5bd519 qcacld-3.0: Send vdev create to fw from object create notification
Send vdev create to firmware when the mlme vdev create handler
is invoked as part of the vdev object create.

Change-Id: Ibba02f6b5885d7b3a62529ef51768f520395513e
CRs-Fixed: 2555943
2019-11-21 09:13:20 -08:00
Rakesh Pillai
6a36b0a26a qcacld-3.0: cdp: Convergence of cdp misc ops
Currently the cdp apis are given pdev/vdev/peer
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/vdev id or peer mac address, which will be
used to get the respective handles, and hence
avoiding the unwanted access of the handles if
it has been deleted.

Converged misc_ops
- tx_non_std
- get_opmode
- get_tx_ack_stats
- set_ibss_vdev_heart_beat_timer
- hl_tdls_flag_reset
- set_wisa_mode
- txrx_post_data_stall_event
- update_mac_id
- pkt_log_init
- pkt_log_con_service
- get_num_rx_contexts
- set_wmm_param
- flush_rx_frames
- bad_peer_txctl_set_setting
- bad_peer_txctl_update_threshold
- txrx_data_stall_cb_register
- txrx_data_stall_cb_deregister
- vdev_set_driver_del_ack_enable
- get_intra_bss_fwd_pkts_count
- mark_first_wakeup_packet
- register_pktdump_cb
- unregister_pktdump_cb
- pdev_reset_driver_del_ack
- runtime_suspend
- runtime_resume

CRs-Fixed: 2539735
Change-Id: I2baad09fde29d439ae2099e01e4e68ed6b94196d
2019-11-21 06:11:43 -08:00
tinlin
81f94d232d qcacld-3.0: Convert legacy channel usage
Modify the following API's code and parameters to make
sure it is using frequency instead of channel:

	csr_update_scan_entry_associnfo

Change-Id: Iff4e74fedc7816950ad7a71dbd3d8c08bb59f717
CRs-Fixed: 2563847
2019-11-21 00:45:04 -08:00
Arun Kumar Khandavalli
add284b880 qcacld-3.0: check for duplicate session before vdev create
Check for any duplicate peer with the same mac address before
the vdev is created.

Change-Id: Ie6d71b7b2892ab2ac6e8bfb37c99f20f0854c2f2
CRs-Fixed: 2555932
2019-11-21 00:44:54 -08:00
wadesong
a8940a2ddf qcacld-3.0: Convert HDD/SME/CSR legacy channel ID usage
1) Change the following functions' signatures and/or code
   to make them using frequencies instead of channel IDs:

   hdd_get_adapter_home_channel
   hdd_get_operating_channel
   wlan_hdd_request_pre_cac
   wlan_hdd_validate_and_get_pre_cac_ch
   __wlan_hdd_request_pre_cac
   hdd_check_and_disconnect_sta_on_invalid_channel
   set_first_connection_operating_channel
   sme_is_channel_valid
   csr_roam_is_channel_valid

2) Remove the declaration, definition and usage of
   csr_roam_is_chan_freq_valid, and replace it with
   csr_roam_is_channel_valid as this API does exactly
   the same thing.

3) Retain the code/logic for chan ID utilization in
   function set_first_connection_operating_channel as
   it is used to convert the parameters issued by
   user space apps.

4) Fix a few camel cases in csr_api_roam.c

Change-Id: I4f9cfa21a5f40288ad9492ac8be7939ed8eb6484
CRs-Fixed: 2565002
2019-11-21 00:44:43 -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
bings
14985fe5f6 qcacld-3.0: Clear wlan_reg_freq_to_chan
Clear wlan_reg_freq_to_chan in csr_fetch_ch_lst_from_occupied_lst.

Change-Id: Iea5fc40a3cb2bf6c497d130035f7f46c2adb6d7c
CRs-Fixed: 2568342
2019-11-20 05:51:27 -08:00
Kiran Kumar Lokere
5abc59e4bf qcacld-3.0: Fix incorrect phymode in 6GHz connection
Add support to parse 6GHz operation information from AP beacon for
connection.

Change-Id: I67d167cd982163e28b3bbe7dc81747d8289a1513
CRs-Fixed: 2567849
2019-11-20 01:15:01 -08:00
Pragaspathi Thilagaraj
7be8933aba qcacld-3.0: Allow roaming to whitelist SSID
Currently, when roaming to different SSID, the host driver
validates the SSID of the current connected AP and the roamed
SSID. If the validation fails, the driver disassociates with
the current AP, which results in data path carrier queues being
disabled. And as part of the roam indication to the user space,
the driver doesn't enable carrier queues.

Check if the SSID from the roam synch indication is present in
the allowed SSID list, if the SSID is present don't
disassociate with current AP.

Change-Id: Iafe3497d5d00753edbd5d5176ff3acd1a6d949bd
CRs-Fixed: 2567233
2019-11-19 22:32:52 -08:00
Wu Gao
ceac285c37 qcacld-3.0: Use pre_auth_channel_freq to replace preAuthchannelNum
Add pre_auth_channel_freq into struct sSirFTPreAuthReq and replace
preAuthchannelNum.

Change-Id: I47f8a1e4057b4efd2a307b26c066a695e5338aa2
CRs-Fixed: 2568598
2019-11-19 14:44:29 -08:00
Jianmin Zhu
d69d654b67 qcacld-3.0: Replace chan list with freq list in sme
populate pcl_freq_list instead of pcl_channel_list in
scan_filter.
populate chan_freq_list instead of channel_list in scan_filter.

Change-Id: I3ab0865f3533332ff4e7ad4511b857d3712a1404
CRs-Fixed: 2561869
2019-11-18 10:32:31 -08:00
Jianmin Zhu
5d162769f5 qcacld-3.0: Convert SME code legacy channel ID usage
Remove usage of sme_freq_to_chan_list from:

csr_neighbor_roam_get_scan_filter_from_profile
sme_rrm_send_scan_result

Change-Id: I67f968c306d31f1e17cc9434274f65600cb39b02
CRs-fixed: 2561229
2019-11-18 10:32:19 -08:00
Liangwei Dong
9f67bd28c8 qcacld-3.0: Fix Invalid 6G HE OP IE
1. Zero local variable "he_ops" before intersect with user IE.
2. If csr_check_and_validate_6g_ap fails, use "break" to
free memory in end of function csr_send_join_req_msg.
3. Remove co_located_bss checking for 6GHz AP. co_located_bss
can be valid for 6GHz AP.

Change-Id: I4b521eead6e09db860b5e21c21882f14a1be8576
CRs-Fixed: 2563923
2019-11-18 02:29:07 -08:00
Arun Kumar Khandavalli
dac7a45e2d qcacld-3.0: Donnot send vdev delete via serialization
Presently vdev delete is sent via serialization, which
needs a vdev reference. With the new FR to send the
vdev delete on the physical destroy in object manager
vdev delete cannot be sent via serialization.

Hence, disable the serialization for the vdev and
donot send the vdev delete via serialization.

Change-Id: I3afa34880ddaab68850ed235ec1451370d82e7dd
CRs-Fixed: 2566120
2019-11-15 16:00:57 -08:00
Will Huang
2f11454941 qcacld-3.0: Replace chan num with frequency about measurement request
Add frequency to tSirChannelInfo, not replace because channelNum has
specail meaning.
Replace channelNumber of struct report_channel_list.
Use channel frequency in functions which process measurement request

Change-Id: I615b1f61c2810474dac6daf1eeb1ce19c2b1da33
CRs-Fixed: 2559283
2019-11-14 23:25:32 -08:00
tinlin
e36cddb56f qcacld-3.0: Convert legacy channel usage
Modify the following API's code and parameters to make
sure it is using frequency instead of channel:

	csr_roam_select_bss

Change-Id: I9c68e173af01d7cb29672179a7bbffb354134f87
CRs-Fixed: 2564011
2019-11-14 23:25:23 -08:00
Arun Kumar Khandavalli
42b4487910 qcacld-3.0: Register Open/close session callbacks once
Open/close session callbacks are common for all the device modes
supported, so register once during the start_modules.

Change-Id: Ia94857ce4cc608be30e9974ddde8a6261d45f6e3
CRs-Fixed: 2555919
2019-11-14 19:25:21 -08:00
tinlin
c554e34f1c qcacld-3.0: Convert legacy channel usage
Modify the following API's code and parameters to make
sure it is using frequency instead of channel:

	csr_roam_call_callback

Change-Id: I7dffcae95d8db53dd1d2a05745861681c4b35e13
CRs-Fixed: 2564024
2019-11-14 19:24:56 -08:00
Tushnim Bhattacharyya
6c40b112ce qcacld-3.0: Replace channel id with frequency in ecsa indication
Replace channel ID with channel frequency in ecsa indication flow.

Change-Id: I1dd3148566e1da37a6f3fa71f1887e66f87f5d1c
CRs-Fixed: 2555384
2019-11-14 06:00:26 -08:00
Amruta Kulkarni
220ce5c328 qcacld-3.0: Fix uninitialized parameters
Initialize parameters with default values in wlan_hdd_update_phymode(),
csr_is_phy_mode_match()

Change-Id: I2b3b2aff09448776b5ef1d2cdc24b3e0abf3ec39
CRs-Fixed: 2559005
2019-11-14 06:00:11 -08:00
tinlin
7167dc1dfd qcacld-3.0: Convert legacy channel usage
Modify the following API's code and parameters to make
sure it is using frequency instead of channel:

	csr_roam_set_bss_config_cfg

Change-Id: I92ffda4ab9fa66340aa1cd75f3fcbb3b3e36b27d
CRs-Fixed: 2563211
2019-11-13 22:13:44 -08:00
gaurank kathpalia
0eddedfcc4 qcacld-3.0: ACS changes for 6ghz
Acs changes for 6ghz to change chan to frequency
in the spectral params structure.

Change-Id: Iffd348ac5c2457b313b702a92b340a258992e764
CRs-Fixed: 2564043
2019-11-13 06:52:43 -08:00
bings
e063e4f155 qcacld-3.0: Convert legacy chan ID usage to chan freq
Modify the following 3 APIs' code and parameters to make
sure they're using frequency instead of channel ID:
   sme_get_reg_info
   wlan_hdd_get_channel_info
   hdd_update_channel_bw_info

Change-Id: I87ad6fb9cd9fcd7fe4e41e62a32e4954e93f8ba1
CRs-Fixed: 2554710
2019-11-12 02:35:14 -08:00
Pragaspathi Thilagaraj
483d70b71b qcacld-3.0: Validate hidden ssid after roaming to avoid disconnection
After roam synch indication is received, the driver compares the
SSID of the current AP and SSID of the roamed AP. If there is a
mismatch, driver issues disassociate to current connected AP.
This causes data path queues to be stopped and M2 to the roamed
AP from userspace will fail. The SSID of the current AP is
parsed from the beacon IEs stored in the connected bss
description. In hidden ssid case the SSID IE has 0 length
and the host receives unicast probe with SSID of the
AP in the roam synch indication. So SSID mismatch happens
and validation fails.

Check if the current SSID in the bss description is NULL.
If its NULL, get the SSID from the connected profile in csr
session.

Change-Id: I30c41b821c0fc506d763eb33f8bb706dd26b405a
CRs-Fixed: 2544915
2019-11-11 16:44:08 -08:00
Li Feng
0ab277ae53 qcacld-3.0: Convert SME code legacy channel ID usage
Modify the following API code and parameters to make
sure they're using frequency instead of channel ID:
    csr_roam_get_phy_mode_band_for_bss

Change-Id: I98be07f9bcca3b85fd1dedbc532fc9810a8d5e4d
CRs-Fixed: 2560010
2019-11-11 15:15:19 -08:00
Will Huang
a6af7e1182 qcacld-3.0: Use channel frequency in sme_get_cfg_valid_channels()
Use channel frequency in API sme_get_cfg_valid_channels(), and modify
all places which call this API.

Change-Id: Iab15d03b6e9070c68711f06ec7300bb29d986185
CRs-Fixed: 2559274
2019-11-10 20:41:01 -08:00
Arun Kumar Khandavalli
c13afcd9da qcacld-3.0: Retrieve information from the object manager vdev
sme_session_params has duplicate information which can be retrived
from the vdev object directly, hence remove the duplicate values
and get information directly from the vdev.

Change-Id: I151dbefcfedc20673fbf072b9c308dc9a6243bb1
CRs-Fixed: 2555909
2019-11-09 02:26:27 -08:00
Li Feng
96955a1edd qcacld-3.0: Convert SME code legacy channel ID usage
Modify the following API code and parameters to make
sure they're using frequency instead of channel ID:
    csr_roam_chk_lnk_set_ctx_rsp

Change-Id: Ia96b78406fc09d0ee4383a446bdd5e09d8f7f12c
CRs-Fixed: 2559993
2019-11-08 18:23:37 -08:00