Commit Graph

1726 Commits

Author SHA1 Message Date
qcabuildsw
8b22a7b232 Release 5.1.0.24J
Release 5.1.0.24J

Change-Id: I395608033225e98f6f18bc0a8c302ddef729454d
CRs-Fixed: 688141
2016-08-27 16:04:03 -07:00
Himanshu Agarwal
19141bb676 qcacld-3.0: Add capability based logic to mark first packet after wakeup
Propagation from qcacld-2.0 to qcacld-3.0.

Add a capability in service bitmask to indicate that fw also supports
this feature of marking first packet after wow wakeup to maintain backward
compatibility.

Change-Id: I3d41f5425e3a170c046941a439d17e06df0c6bef
CRs-Fixed: 1021382
2016-08-27 16:02:41 -07:00
Himanshu Agarwal
053d4556d8 qcacld-3.0: Add support to mark first packet after wow wakeup
Propagation from qcacld-2.0 to qcacld-3.0.

Add support to mark the highest bit of the skb->mark for the first
packet after wow wakeup event from firmware

Change-Id: I877dd7af9a58ebc02d73461cc2a29e86a3945dec
CRs-Fixed: 989984
2016-08-27 16:01:58 -07:00
qcabuildsw
d792ae14de Release 5.1.0.24I
Release 5.1.0.24I

Change-Id: I5da266d9a85c6ddb48372f0094fbb76bc8f7887e
CRs-Fixed: 688141
2016-08-27 16:01:14 -07:00
Arun Khandavalli
1318b99a8d qcacld-3.0: Validate the hif_ctx before dereferencing
Validate the hif_ctx from cds_get_context before deferencing.

Change-Id: I352104058143224d2555d3323747719bd14066e5
CRs-Fixed: 1052039
2016-08-27 16:00:16 -07:00
qcabuildsw
d6c90fa458 Release 5.1.0.24H
Release 5.1.0.24H

Change-Id: If54e537f33f177e3c53c70bcea03d1cd69d05f53
CRs-Fixed: 688141
2016-08-27 15:57:00 -07:00
Sravan Kumar Kairam
c0873589a4 qcacld-3.0: Send anycast addresses for NS offload
Propagation from qcacld-2.0 to qcacld-3.0

Current implementation has support for IPv6 addresses of type
unicast for NS offload to firmware.

As part of this change add anycast addresses for NS offload.

Change-Id: I1151c8af3bbc815216c4ffd9668dd0b6561f222e
CRs-Fixed: 954880
2016-08-27 15:56:17 -07:00
Sravan Kumar Kairam
fece87f53f qcacld-3.0: Add HAL command support to set NS offload
Propagation from qcacld-2.0 to qcacld-3.0

Add support to enable/disable NS offload to firmware from HAL
vendor command.

As part of this fix when NS offload is set to disable from HAL
command, NS will not be offloaded when wlan goes to suspend state
even if NS offload is enabled in cfg ini.

Change-Id: Iffaaa9be2e62ea03fcbe3e32d2cc654d3e7334f5
CRs-Fixed: 954880
2016-08-27 15:55:34 -07:00
qcabuildsw
66f4165805 Release 5.1.0.24G
Release 5.1.0.24G

Change-Id: I04e11e18cb0c76284e516183344e89244b19c034
CRs-Fixed: 688141
2016-08-27 15:54:07 -07:00
Kapil Gupta
0a2477b23f qcacld-3.0: Set initial dense status in case of dense roaming
In case of dense roam scenario, Host should set initial dense
status if roamable AP count is more than minimum dense AP count.
Current implementation checks for the number of channels in roam
cache list instead of AP count.

Add changes to set the flag if roamable AP count is more than
configured value.

Change-Id: I4d5f7c6c69b1a9a527aace1677050373065af213
CRs-Fixed: 1058211
2016-08-27 15:52:52 -07:00
Kapil Gupta
7bad43148f qcacld-3.0: Update default value of gtraffic_threshold
gtraffic_threshold is needed to determine traffic condition for roam
scan.
Add changes to update default value of gtraffic_threshold in kbps.

Change-Id: I844903225ec178de7b88cf63b92531e46bdd9fe3
CRs-Fixed: 1056787
2016-08-27 15:51:55 -07:00
qcabuildsw
f4471ffc14 Release 5.1.0.24F
Release 5.1.0.24F

Change-Id: Ibec659ae068b3fffcc23e56113d75059e04466e1
CRs-Fixed: 688141
2016-08-27 15:50:39 -07:00
Selvaraj, Sridhar
ba726cbef5 qcacld-3.0: Add Association disallowed functionality for MBO
As part of MBO(MultiBand Operations), Station should not
initiate connection with BSS if association disallowed
subattribute in MBO IE of Beacon, Probe response frames
is SET.

Parse MBO IE and dont initiate connection if association
disallowed subattribute is present.

Change-Id: I6580b646c97b409453eade527285c97ed8cf86e4
CRs-Fixed: 1039969
2016-08-27 15:50:07 -07:00
qcabuildsw
9c9c51351c Release 5.1.0.24E
Release 5.1.0.24E

Change-Id: I293e525cd22d5c46308c909f0645ddd96e0b62be
CRs-Fixed: 688141
2016-08-27 15:49:17 -07:00
Manjeet Singh
ccfd185878 qcacld-3.0: Correct HAL PWR CMD SIR param value
Change SIR_HAL_POWER_DBG_CMD param value as it's already used.

Change-Id: Icb7af85bfc25a59961030980a5dc8d79a097b70f
CRs-fixed: 1056197
2016-08-27 15:48:32 -07:00
qcabuildsw
0ca889e263 Release 5.1.0.24D
Release 5.1.0.24D

Change-Id: Id20d5cea38015a1a59147c3f70a51cf4a2b5d662
CRs-Fixed: 688141
2016-08-27 15:47:48 -07:00
Selvaraj, Sridhar
fe696d2bac qcacld-3.0: Update RRM scan results to user space
qcacld-2.0 to qcacld-3.0 propagation

Currently RRM scan results are sent out to the requesting AP, but
are not updated to the kernel.

Update the results to the kernel so that it will be useful in future
in the userspace if a BTM request is received and the lookup of
scan cache can fetch a result for the target AP and an additional
scan can be avoided.

Git-commit: 3075ac910c015ce525bf8badd1eb4a277286b28f
Change-Id: Ie56b86e5c54910648cb2ae8bf2a7dac2ee873e00
CRs-Fixed: 1010596
2016-08-27 15:46:48 -07:00
Selvaraj, Sridhar
6f92ecb764 qcacld-3.0: Start the scan right away for RRM beacon requests
qcacld-2.0 to qcacld-3.0 propagation

Currently all the scan requests going from the host to the
firmware pass a rest time to the firmware. The firmware
waits for the rest time before starting the scan. This is
not needed in the case of RRM beacon requests with single
channel request to make it more optimal.

Configure the rest times to minimum and start the scan
right after receiving the request

Git-commit: b0132824baeceb25bbc80d0e82ed6693b783b4dd
Change-Id: Ia5c5a1c2c765d13611b901742910325954ce3d8a
CRs-Fixed: 1010596
2016-08-27 15:45:44 -07:00
Selvaraj, Sridhar
a9c7243143 qcacld-3.0: Use BSSID for active scan if provided by supplicant
qcacld-2.0 to qcacld-3.0 propagation.

Presently, supplicant does not send bssid parameter as part of scan
command to driver. Since that support is added, use the bssid received
from scan command for active scan ie add the bssid as part of scan
offload command to firmware so as to send probe request with bssid
set with the one received as part of the scan command.

Git-commit: 5ad6cc46eda9e6d7195c353730a22427b9937283
Change-Id: I97886b1dbd63fbca21fa410252df572f819df207
CRs-Fixed: 1010596
2016-08-27 15:39:54 -07:00
qcabuildsw
e97b85a158 Release 5.1.0.24C
Release 5.1.0.24C

Change-Id: Id99d09b3b19905f537f8e669e4624123d2381929
CRs-Fixed: 688141
2016-08-27 15:39:12 -07:00
Abhishek Singh
99bce86e3d qcacld-3.0: Drop connect if MFPEnabled is set but AP is non-PMF
qcacld-2.0 to qcacld-3.0 propagation

If ieee80211w=2 or pmf=2 is an explicit configuration in the
supplicant configuration MFPEnabled is set and driver assume it
as a PMF required connection, even if AP is in open security
mode.

Now when disconnect is received from supplicant driver sends a
protected deauth and assert is observed as firmware do not have
any valid key.

To fix this if ieee80211w=2 or pmf=2 is an explicit configuration
in the supplicant configuration but peer AP is non-PMF drop the
connection request.

Change-Id: I40faf63df4e95b367d66e9b51ff165759989a1d1
CRs-Fixed: 1011976
2016-08-27 15:38:21 -07:00
qcabuildsw
eddbe5379f Release 5.1.0.24B
Release 5.1.0.24B

Change-Id: I38d042ee1b8f77290e302fb8279adf7c34f3fb44
CRs-Fixed: 688141
2016-08-27 15:37:23 -07:00
Manishekar Chandrasekaran
b82554d382 qcacld-3.0: Map internal PCL weight to the FW weight representation
Map the internal PCL weights to the weights that the FW can
understand.

Change-Id: Ib7b2a67305ddec991fe94016cea09a834e5b4cb5
CRs-Fixed: 1050438
2016-08-27 15:34:44 -07:00
qcabuildsw
add0a31f67 Release 5.1.0.24A
Release 5.1.0.24A

Change-Id: Iada37702891f6cbe8ea2b5c4293ee44d5b442c1b
CRs-Fixed: 688141
2016-08-27 15:33:31 -07:00
Abhishek Singh
e740517a7b qcacld-3.0: Do not call pr_info while using spin_lock_irqsave
qcacld-2.0 to qcacld-3.0 propagation

wlan_queue_logmsg_for_app is called while holding spin lock with
interrupts disabled. It may call pr_info to log if node is dropped
while sending to user space.

This may cause interrupts disabled for some time.
As part of fix remove all pr_info from wlan_queue_logmsg_for_app.

Change-Id: Iffa5d463ae4e807bb30ff6eec5f3949735663fd5
CRs-Fixed: 1005714
2016-08-27 15:31:25 -07:00
Abhishek Singh
5a33171128 qcacld-3.0: Fix scan failure issue due to stale PE session
qcacld-2.0 to qcacld-3.0 propagation

If roaming is initiated by firmware, after getting the candidate
list the CSR will start preauth with the candidates and thus
preauth will be the active command in SME.

Now if at the same time connect is issued from supplicant,
HDD will queue disconnect cmd in SME queue and wait for disconnect
to get complete for 2 sec. Now there is a chance that channel
change along with preauth timeout can take more than 2 secs.
In this scenareo the disconnect will timeout in HDD and will
return connect failure to supplicant. Next supplicant will issue
disconnect which is ignored by HDD as disconnect is already been
queued in SME. Now if supplicant again sends the connect command,
as part of connect command CSR will remove the disconnect command
from the SME queue and queue this connect command.

On preauth timeout the preauth state machine checks if disconnect
is queued and if it is queued it will abort preauth. But in this
case disconnect is removed by the connect request and thus preauth
retry continues and if preauth is success handoff will be queued
in SME queue.

Now the connect request is processed and if this connect request's
BSSID is same as the BSSID of the roam candidate, as all the CSR
states for this BSSID session indicate roaming, instead of
join it will try to reassociate and continue changing the CSR states
again. Eventually this connect will fail. Next the handoff command
is processed and as part of handoff it will try to cleanup
original session, but as CSR states are changed by connect request
the original session is not cleaned up properly. This results in
stale PE session entry which does not allow the scan to be sent to
firmware, returning the cached results and thus 0 scan results.

To fix this:
- Increase the WLAN_WAIT_TIME_DISCONNECT to 5 sec to make sure all
  sessions are cleaned up before allowing the new connect to proceed.
- Increase the priority of preauth scans.

Change-Id: Id7cc1e6f3c31df8a8c8955eb3ff48cb60e5b5ab2
CRs-Fixed: 1048394
2016-08-27 15:29:57 -07:00
Service qcabuildsw
a1dc0f1502 Merge "qcacld-3.0: Do not reset short preamble support and beacon interval" into wlan-cld3.driver.lnx.1.1-dev 2016-08-27 15:18:16 -07:00
Ravi Joshi
bb8d451c63 qcacld-3.0: Drop replayed multicast packets
Integration from qcacld-2.0 to qcacld-3.0

IPv6 Multicast (Neighbor Solicitation) frames are
not rejected by the WLAN driver when these frames
are bounced back from the AP. This causes network
stack to assume the duplicate IP address on the
network and fails to assign the IPv6 address.
Currently, this is a workaround till the issue is
root caused.

Change-Id: If5d48ed903f484805e7f4be9df52582e50bd6ce5
CRs-Fixed: 748105
2016-08-25 22:18:19 -07:00
Service qcabuildsw
896fbae52a Merge "qcacld-3.0: Set rx_mode to be NAPI for iHelium" into wlan-cld3.driver.lnx.1.1-dev 2016-08-25 12:22:37 -07:00
Service qcabuildsw
c719610835 Merge "qcacld-3.0: Check and kickstart the modules state if they are closed" into wlan-cld3.driver.lnx.1.1-dev 2016-08-25 12:21:48 -07:00
Service qcabuildsw
119db31ba7 Merge "qcacld-3.0: Fixes for p2p from GUI/standalone" into wlan-cld3.driver.lnx.1.1-dev 2016-08-25 12:20:55 -07:00
Manjunathappa Prakash
2721f942ff qcacld-3.0: Set rx_mode to be NAPI for iHelium
With the introduction of rx_mode ini config, gEnableRxThread and
gEnableNAPI configuration are obsolete. So remove them.

Change-Id: Ida8063eff86a644ebf9c494b94bcb3396b35b6e8
CRs-Fixed: 1056091
2016-08-24 16:25:21 -07:00
Arun Khandavalli
99286457f6 qcacld-3.0: Check and kickstart the modules state if they are closed
There are few NL80211 commands which can be triggered from the upper
layer even when the interfaces are down. Check the driver state
machine when these commands gets triggered from the upper layer and
start the modules if they are closed, so these commands can be honoured
correctly.

Change-Id: I4a1d2e95379a5e690b00eea37e80ceb8a91925fb
CRs-Fixed: 1056959
2016-08-24 22:47:22 +05:30
Arun Khandavalli
b2f6c26fa4 qcacld-3.0: Fixes for p2p from GUI/standalone
* From the GUI, After change interface, only stop
  and de-init of adapter was getting done.
  The interface to be changed was not getting started. So, start
  the adapter from the mode since the interface was already up in the
  P2P device mode before the change_iface, supplicant doesn't invoke
  interface up on the adapter again.

* In the standalone scenario, the interface up for the p2p0 comes 1st,
  as part of which the sme session shall be opened with sessionId 0.
  So, as part of indicating the management from to HDD, LIM layer tries
  to traverse the adapter list with the sessionId and since the wlan0 interface
  is also part of the linked list with the same sessid. It tries to send the
  management frames on the wrong interface index because of which frames were
  not reaching the supplicant. To migitate this issue, once the adapter is
  allocated, fill the session with invalid sessionId so that it can be updated
  with the valid sessionId once the session is created.

Change-Id: I63b320aea1eb779883dfa070bad3f2057fd5c371
CRs-Fixed: 1056344
2016-08-24 16:39:02 +05:30
Abhishek Singh
af7e7fa67c qcacld-3.0: Do not reset short preamble support and beacon interval
qcacld-2.0 to qcacld-3.0 propagation

In pe_reset_protection_callback psession's beaconParams struct is
reset to 0 and thus short preamble support being part of this
structure is set to 0. Due to this beacons always have barker
preamble set to 1 even if no non short preamble enabled STA is
connected.

To avoid this do not reset the short preamble support and beacon
interval in psession's beaconParams structure.

Change-Id: I631fb202fba6bc129d03ff21cff2adef328abff2
CRs-Fixed: 1032578
2016-08-22 22:55:48 -07:00
qcabuildsw
e0676b5d59 Release 5.1.0.24
Release 5.1.0.24

Change-Id: Icf7dc61f1ec321f3d6330a26f74c4f8a6b55e933
CRs-Fixed: 688141
2016-08-22 12:44:51 -07:00
Deepak Dhamdhere
c47cfe8fa7 Revert "qcacld-3.0: Force delete peer entry during LFR3 roaming"
This reverts commit-id: "Ib028c29863d4e95ccac434f7d47bfedd59ef883f"
It caused peer object memory access after it was freed.

CRs-Fixed: 1057347
Change-Id: I99842eb646371e186ade3b126ea0e8f84b7f2187
2016-08-22 12:44:49 -07:00
qcabuildsw
6bacf440e4 Release 5.1.0.23Z
Release 5.1.0.23Z

Change-Id: Ib55a200a64fc6a52852cb0517791b36265c0e10f
CRs-Fixed: 688141
2016-08-21 18:04:13 -07:00
Sandeep Puligilla
58c84ef0cd Revert "qcacld-3.0: Check if vdev is up before sending vdev down to FW"
Auth request is not sent out due to which assoc reject is observed.

As part of the vdev down firmware clears the software tx queue which
is blocked due to the "Ia5394390d376c638b3976d446a6ecc98d0584159"
change. So reverting this change will enable
the vdev down and clears the tx queue.

This reverts commit-id "Ia5394390d376c638b3976d446a6ecc98d0584159"

Change-Id: If7d7ca5939f7586b12d84d6e070e94bb5e7e6c2c
CRs-Fixed: 1057329
2016-08-21 18:04:12 -07:00
qcabuildsw
09634035c6 Release 5.1.0.23Y
Release 5.1.0.23Y

Change-Id: I25f943db875a686133e45039774c334a704f268a
CRs-Fixed: 688141
2016-08-20 14:19:25 -07:00
Jeff Johnson
94be11c3eb qcacld-3.0: Convert wlan_hdd_main.c to unified logging [7/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 7 set the HDD_DISALLOW_LEGACY_HDDLOG flag so that no future
changes can introduce new instances of legacy logging.

Change-Id: I09ed8f80764cc7b55bbcdd506253f56b5ee07937
CRs-Fixed: 937663
2016-08-20 14:19:24 -07:00
Jeff Johnson
28f8a77d33 qcacld-3.0: Convert wlan_hdd_main.c to unified logging [6/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 6 update the following functions:
wlan_hdd_auto_shutdown_cb()
wlan_hdd_auto_shutdown_enable()
hdd_stop_bus_bw_compute_timer()
wlan_hdd_check_custom_con_channel_rules()
wlan_hdd_stop_sap()
wlan_hdd_start_sap()

Change-Id: I87781017f43b2e40ede02448d7332b6ee18465f1
CRs-Fixed: 937663
2016-08-20 14:19:22 -07:00
Jeff Johnson
34c88b7d5c qcacld-3.0: Convert wlan_hdd_main.c to unified logging [5/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 5 update the following functions:
hdd_ch_avoid_cb()
hdd_init_channel_avoidance()
hdd_populate_random_mac_addr()
hdd_cnss_wlan_mac()
hdd_wlan_startup()
hdd_softap_sta_deauth()
hdd_softap_sta_disassoc()
hdd_softap_tkip_mic_fail_counter_measure()
wlan_hdd_disable_roaming()
wlan_hdd_enable_roaming()
wlan_hdd_send_svc_nlink_msg()

Change-Id: If71de96e81600f2a5136a0907b2404a8e2a05a8b
CRs-Fixed: 937663
2016-08-20 14:19:21 -07:00
Jeff Johnson
760350b7b9 qcacld-3.0: Convert wlan_hdd_main.c to unified logging [4/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 4 update the following functions:
hdd_skip_acs_scan_timer_handler()
hdd_wlan_set_ht2040_mode()
hdd_wlan_notify_modem_power_state()
hdd_post_cds_enable_config()
hdd_exchange_version_and_caps()
hdd_bus_bw_compute_cbk()
wlan_hdd_init_tx_rx_histogram()
wlan_hdd_display_tx_rx_histogram()
wlan_hdd_display_netif_queue_history()

Change-Id: Ibfd53f4f2703dba8c7ce96368392afa3c0c12d5b
CRs-Fixed: 937663
2016-08-20 14:19:19 -07:00
Jeff Johnson
5880d792cd qcacld-3.0: Convert wlan_hdd_main.c to unified logging [3/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 3 update the following functions:
hdd_cleanup_actionframe()
hdd_cleanup_adapter()
hdd_open_adapter()
hdd_close_adapter()
wlan_hdd_reset_prob_rspies()
hdd_stop_adapter()
hdd_reset_all_adapters()
hdd_start_all_adapters()
hdd_get_adapter_by_vdev()
hdd_wlan_exit()
__hdd_wlan_exit()

Change-Id: I4eaedea4a7e7da5d4f0284be4ad2ca5d05f8b98a
CRs-Fixed: 937663
2016-08-20 14:19:17 -07:00
Jeff Johnson
1346fab2c8 qcacld-3.0: Convert wlan_hdd_main.c to unified logging [2/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 2 update the following functions:
__hdd_stop()
__hdd_uninit()
hdd_open_cesium_nl_sock()
__hdd_set_multicast_list()
hdd_register_interface()
hdd_sme_close_session_callback()
hdd_check_and_init_tdls()
hdd_init_station_mode()

Change-Id: Ia181a89d55b2e584739a543a0d163877b474d3ae
CRs-FIxed: 937663
2016-08-20 14:19:16 -07:00
Jeff Johnson
b8969cb51f qcacld-3.0: Convert wlan_hdd_main.c to unified logging [1/7]
Currently the HDD code uses a variety of logging APIs.  In qcacld-3.0
HDD should converge on a unified set of logging APIs.  Update
wlan_hdd_main.c to use the unified set of APIs.  Since there are a
large number of changes in this file, perform the conversion in
phases.

For phase 1 update the following functions:
__hdd_netdev_notifier_call()
hdd_checkandupdate_phymode()
hdd_set_ibss_power_save_params()
hdd_update_macaddr()
hdd_update_tgt_services()
hdd_update_tgt_ht_cap()
hdd_update_tgt_vht_cap()
hdd_update_tgt_cfg()

Change-Id: Id394b038f35c3f663ae6a00f49c903dc52f4f4a2
CRs-Fixed: 937663
2016-08-20 14:19:14 -07:00
Jeff Johnson
6f91707904 qcacld-3.0: Convert wlan_hdd_ftm.c to unified logging
Currently the HDD code uses a variety of logging APIs.  In
qcacld-3.0 HDD should converge on a unified set of logging APIs.
Update wlan_hdd_ftm.c to use the unified set of APIs.

Change-Id: I58b2214ba1243e93dd5e3c9b6774c08537094139
CRs-Fixed: 937659
2016-08-20 14:19:12 -07:00
qcabuildsw
f969f6fb42 Release 5.1.0.23X
Release 5.1.0.23X

Change-Id: I88868651e2c4144434d5dc3646d994d7a4c500f7
CRs-Fixed: 688141
2016-08-20 10:37:00 -07:00
Nirav Shah
d59b3b253e qcacld-3.0: Log rx packet in packetlog as per rx ind message
Log rx packet in packetlog as per HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND
message from firmware.

CRs-Fixed: 970647
Change-Id: I5773b67a9269063531d038d46ac404c978818dcc
2016-08-20 10:36:59 -07:00