Commit Graph

151 Commits

Author SHA1 Message Date
Mahesh Kumar Kalikot Veetil
319dbcde3d qcacld-3.0: Initialize debugfs support in QDF
Invoke QDF debugfs API from CDS to initialize and cleanup.

Change-Id: I8b67f46e94b08babee04102d65b7803e4db1da00
CRs-Fixed: 1083792
2017-01-25 18:33:10 -08:00
Rajeev Kumar
229f1d3cc0 qcacld-3.0: Remove obsolete CDS mq APIs reference from CDS module
After control path scheduler componentization CDS message queue
APIs are no longer used hence remove obsolete CDS mq APIs from CDS
module.

Change-Id: I7d83783d9fd126bb8b17a5c3292eac91c0966280
CRs-Fixed: 1114375
2017-01-23 13:06:14 -08:00
Rajeev Kumar
8eaedf65a1 qcacld-3.0: Remove obsolete CDS mq APIs reference from SME module
After control path scheduler componentization CDS message queue
APIs are no longer used hence replace CDS mq APIs in SME by
scheduler mq APIs.

Change-Id: I645209741a602798fc077a50ac66de198e292038
CRs-Fixed: 1114363
2017-01-21 22:01:01 -08:00
Rajeev Kumar
9fdfbe06ee qcacld-3.0: Remove obsolete CDS message queue init/deinit APIs
After control path scheduler componentization CDS message queue
init/deinit APIs are no longer used hence remove them.

Change-Id: I65c14872bf20412eb1014deac0172f2bfacc0f0f
CRs-Fixed: 1111033
2017-01-18 13:33:18 -08:00
Krunal Soni
a6e505bc7b qcacld-3.0: Fix compilation error and disable unit test framework
for policy manager component, unit test framework has been created.
this unit test framework can be enabled or disabled through Kbuild
flag. As policy manager is matured, unit test framework needs to
be disabled.

While disabling unit test framework, couple of compilation errors have
been observed. Fix those compilation errors.

Change-Id: I2a3ee57cc082e5ebc598f0aea2d05f31fb878732
CRs-Fixed: 1110876
2017-01-17 11:12:37 -08:00
yeshwanth sriram guntuka
310b3ac34c qcacld-3.0: Add support for vendor abort scan
Add vendor abort scan which takes adapter and scan
id as input. Supplicant may abort a scan if a
preferred AP or P2P peer device is found.

Change-Id: Ia9cbf4bb38d2111b1fcf42a1e1f51d1049f5a9ab
CRs-Fixed: 1090800
2017-01-16 11:31:07 -08:00
Krunal Soni
4274f36bcd qcacld-3.0: Allow full spectrum scan when agile & aDFS scan supported
Traditionally full spectrum scan on STA/CLI is not allowed when SAP/GO is
already present on DFS channel.

With new generation of hardware, agile scan and agile DFS scan features
are supported which will allow hardware to do full spectrum scan even if
SAP/GO is present on DFS channel.

Change-Id: I7e5a21601642e0d6afef73beeecf80a3e0475909
CRs-Fixed: 1103730
2017-01-12 13:12:51 -08:00
Poddar, Siddarth
a78cac3fe6 qcacld-3.0: Relocate and rename cds_flush_cache_rx_queue()
API cds_flush_cache_rx_queue() is added as part of propagation
from qcacld-2.0. This function does not belong in CDS but
instead belongs in TXRX because corresponding function in
qcacld-2.0 is tl_shim_flush_cache_rx_queue() which is a datapath
function.

CRs-Fixed: 1106306
Change-Id: I6ca10fa9ebb7ad7cdc0b54ff7ed2cc0595b7d82d
2017-01-10 23:08:47 -08:00
Amar Singhal
6edf9733ec qcacld-3.0: Keep source of driver hint also
Maintain source of driver as well as 11d hint. Use the source of
hint to correctly disable 11d if required.

CRs-Fixed: 1093565
Change-Id: Id0ccc44389836b72466b501f5ce024f1be4b5926
2017-01-09 11:21:45 -08:00
Selvaraj, Sridhar
0672a1213d qcacld-3.0: Add support for init/deinit with obj manager framework
Create the psoc, pdev, vdev, peer hierarchy by calling obj manager
API's in driver init/deinit code.

Change-Id: I804fd56fff0f72d69274dda2667efb6b681e4dda
CRs-Fixed: 1097219
2017-01-06 11:40:26 -08:00
Jeff Johnson
d9f0860957 qcacld-3.0: Remove obsolete "frame_xln_reqd" flag
The current driver inherited support for the "frame_xln_reqd" flag
from a prior version of the driver. In the prior version of the driver
this flag was used to communicate to hardware whether or not
hardware-assisted data frame translation was required. However the
current driver does not use this flag, so remove it from the code.

Change-Id: I41047864de374c12a89fa031c6d38729a285262a
CRs-Fixed: 1075631
2017-01-05 12:06:46 -08:00
Tushnim Bhattacharyya
53bcb93027 qcacld-3.0: Add support for new 3 port concurrency combinations
Update or add policy rules for new 3 port concurrency cases:
STA+STA+SAP
SAP+SAP+STA
SAP+SAP+SAP

Change-Id: I6ca605808f1de7f8d31ee9a2f05b88491319e6f2
CRs-Fixed: 1068000
2017-01-05 12:06:35 -08:00
Rajeev Kumar
3e5ef0da16 qcacld-3.0: Remove obsolete MC thread message buffers from cds
After control path scheduler componentization CDS message buffers,
and message wrappers are no longer used hence remove them.

Change-Id: If6e915ffe27775511cb359adb704fa9e03653420
CRs-Fixed: 1107094
2017-01-04 17:39:44 -08:00
Rajeev Kumar
52333410ab qcacld-3.0: Remove obsolete cds_is_mq_empty API
After control path scheduler componentization cds_is_mq_empty
API is no longer used hence remove it.

Change-Id: I6b90d185d4faad7a02fca1b784dfea9b08213005
CRs-Fixed: 1106123
2017-01-04 17:39:43 -08:00
Rajeev Kumar
08ef0d620a qcacld-3.0: Remove obsolete cds_core_return_msg API
After control path scheduler componentization cds_core_return_msg
API is no longer used hence remove it.

Change-Id: I66122b918f0b27236b2b5ca454e52b0de20b16ee
CRs-Fixed: 1106115
2017-01-04 17:39:42 -08:00
Rajeev Kumar
e4cbd534a6 qcacld-3.0: Clean up obsolete conditional compilation NAPIER_CODE
Clean up obsolete conditional compilation NAPIER_CODE.

Change-Id: I6655c135757117535be1ccdc688dbe7ff5bd5a6a
CRs-Fixed: 1095867
2016-12-14 14:25:02 -08:00
Krunal Soni
d32c6bc3fd qcacld-3.0: Enable converged control path scheduler
Enable converged control path scheduler for cld driver
and disable legacy cds MC thread scheduler.

Change-Id: I11ecc6a5ee930a1039ed3460b3a3d4e5f7b75ac6
CRs-Fixed: 1095867
2016-12-14 14:25:00 -08:00
Amar Singhal
0b51ecf196 qcacld-3.0: Regulatory domain changes
Add new regulatory domains APL15 and APL16. Also add
regulatory domains APl14_WORLD, APL15_WORLD and APL16_WORLD.
Also change reg-domain mappings for a host of countries. This
incorporates changes made 2016-10-31 to the regdomain.xls
regulatory database.

Change-Id: I12faa43bed83b7a046bba9b1921584ed5cef6f40
CRs-Fixed: 1090230
2016-12-14 14:07:11 -08:00
Aravind Narasimhan
5b7c2cd51f qcacld-3.0: Changes for concurrency FR 32755
Add second and third connection pcl tables and next actions
for 2X2 dbs solution

Change-Id: I4722e137360a4a0d349d856b01255a0fe11d59fb
CRs-Fixed: 1068000
2016-12-09 00:26:41 -08:00
Leo Chang
9b09703f79 qcacld-3.0: cds: change legacy data path api to cdp api
Remove legacy apis call from out side of data path.
Replace legacy apis to cdp apis.
cds module.

Change-Id: I3f26b69711f494bad7fbaf07c5b8961125f13e65
CRs-fixed: 1075736
2016-11-17 19:13:10 -08:00
Govind Singh
b048e87f2c qcacld-3.0: Refactor De-init sequence to firmware when the modules are not enabled
With the new statemachine  cds start/stop will not be invoked without an
interface up from upperlayer. As part of cds stop host sends de-initialization
sequence to firmware, If there is no interface up from the upper layer and
driver gets removed, host driver doesn't send the de-init
inidication to firmware and starts closing its modules because of this
fw & host are out of sync.

To mitigate the issue send the de-init sequence during if the modules are
opened but not enabled.

Change-Id: I52fddc1b8765105c44192085ba93bf00d14eb0bd
CRs-Fixed: 1073599
2016-11-14 11:51:19 -08:00
Mukul Sharma
b7b575b41b qcacld-3.0: Add support for silent recovery in cds_trigger_recovery()
qcacld-2.0 to qcacld-3.0 propagation

Currently, cds_trigger_recovery does not support silent recovery
instead host send WMI_FORCE_FW_HANG_CMDID and wait for timeout.
In cases where wmi cmd cannot be sent to firmware, host needs
silent recovery.
As a part of this fix, Parameterize the cds_trigger_recovery
function for silent recovery.

Change-Id: I9bb631f7346a267a10348037c49606af43c6be4f
CRs-Fixed: 1053303
2016-11-14 11:50:40 -08:00
Amar Singhal
5f9978661c qcacld-3.0: Consolidate and rename regulatory macros
Consolidate regulatory macros in cds file and rename for
homogeneity.

Change-Id: I572eda616b985a39655dca3944e26fb1e0b5efb4
CRs-Fixed: 1058399
2016-11-12 00:24:03 -08:00
Sandeep Puligilla
afa5289e90 qcacld-3.0: Trigger host crash for command timeout
Add feature to trigger host crash when firmware
fails to send the response and host timesout.

Change-Id: I47f23e03f2729981a346e2a9e8c8541ba9119af4
CRs-Fixed: 1078192
2016-11-12 00:20:47 -08:00
Prashanth Bhatta
f7969a6c2d qcacld-3.0: Mechanism to complete waiting thread
During remove() or shutdown(), driver waits for external thread
to complete but there is no mechanism available today to inform
lower layers that driver is about to go through remove() or
shutdown().  Add mechanism to provide the notification about
remove() or shutdown() so that lower layers can make use of it
and get out of waiting logic and complete the remove() or
shutdown() early without waiting for the timeout to happen.

Change-Id: I1eece21fb63e6d5e0454659795a4dad011483c75
CRs-fixed: 1079299
(cherry picked from commit 305516248006141ef331c8c1b7a4b56999fa496d)
2016-10-28 18:09:16 -07:00
Dustin Brown
cc1753d288 qcacld-3.0: 4.8 Kernel Migration - Remove ablkcipher
As of version 4.8 of the Linux kernel, the ablkcipher Api is removed.
Remove all obsolete crypto functions that reference this Api.

Change-Id: Ia82743d048834a67dfce23b91f660beb59b1e94d
CRs-Fixed: 1079951
(cherry picked from commit bf349575d765f53f207c7cb2ad6c66a198cf07de)
2016-10-28 18:09:06 -07:00
Himanshu Agarwal
46956a5aff qcacld-3.0: Add infrastructure for pktstats based on linkedlist
Proapagation from qcacld-2.0 to qcacld-3.0.

Currently pktstats are stored in static allocated memory. This
pkt stats can be accessed using
1) procEntry function
2) hal_proxy_daemon
If user access it using procEntry then read pointer is moved ahead
in static memory array because of which incomplete data goes when
queried using hal_proxy_daemon.
Fix this by maintaining the pktstats in link list. When the
request comes from hal_proxy_daemon, complete data is sent
to it from this link list

Change-Id: I09bbd03fe378b296e110ce52cc8cbeb8cf8d723d
CRs-Fixed: 958544
(cherry picked from commit c0d86fc4197383d0eb386e091cee5142a35b555a)
2016-10-28 18:04:11 -07:00
Naveen Rawat
91df30a191 qcacld-3.0: Trigger BUG ON only if recovery is disabled
When firmware event times out, panic only if recovery is disabled else
return failure so that driver load can fail gracefully.

Change-Id: I90d110af370842fcd2bc8cc11008d1524c99332e
CRs-Fixed: 1077315
2016-10-24 09:56:28 -07:00
Nitesh Shah
044fd675f5 qcacld-3.0: Set SMM if all new/existing conns are in same band
When the device is in DBS mode, and STA session gets
disconnected, then the dbs_opportunistic_timer is started
to wait for 10s and then sets back to SMM (Single MAC
mode) after timeout if DBS mode is not required.

The enhancement is to check the if the device is in DBS mode
and the STA session disconnects and new STA session starts in
the band in which existing connection are there, then stop the
dbs_opportunistic_timer and set hw_mode to SMM.

Change-Id: I16bfbb5135e36f2ab87bd09244d5eb6932846c72
CRs-Fixed: 1077488
2016-10-18 12:40:25 -07:00
Rajeev Kumar
f7d000060f qcacld-3.0: Clean up obsolete cds_shutdown API
qcacld-3.0 recovery does not use cds_shutdown routine hence
clean up this obsolete API.

Change-Id: I4779c1336062a2cc6357b2a4cf82248d4c457aa8
CRs-Fixed: 1077094
2016-10-17 21:57:35 -07:00
Nitesh Shah
5b7bae07fc qcacld-3.0: Add SBS support in hw_mode_list
The enhancement is to add SBS (Single Band Simultaneous)
support in hw_mode_list.

The WMI HW Mode definitions are redefined to use only
for host purpose.

Change-Id: I8b8c966b0130964c8e7de7967766629c955209d3
CRs-Fixed: 1072234
2016-10-10 03:55:02 -07:00
Kabilan Kannan
32eb50281c qcacld-3.0: Clean up and refactor tdls module
Currently the build fails, if we disable TDLS
feature flag in the kbuild.
Fix all the tdls conditional compilation issues
to make a successfull build with tdls feature
flag enabled/disabled.

Change-Id: I78114474d9ebe65e76840cb581389535f3486e4f
CRs-Fixed: 1066077
2016-10-07 19:57:23 -07:00
Poddar, Siddarth
1ab0a3db60 qcacld-3.0: Fix memory leak when SSR is triggered
qcacld-2.0 to qcacld-3.0 propagation.

Packets are not freed from cache buffer and causes memory
leak in SSR case. Flush cache RX frame queue to avoid this memory leak.

Change-Id: Idd9edde6fdb3b9ff3ecbe7d8139f9a66468b70af
CRs-Fixed: 1051019
2016-10-03 17:33:01 -07:00
Naveen Rawat
8cc23b0d9a qcacld-3.0: Update host DBS policy manager in roaming operations
Firmware DBS mode is updated during firmware based roaming. Same change
is reflected in the host policy manager. Process hw_mode TLV in roam sync
indication event. Update cds concurrency policy after roaming. Handle
exceptions for ROAM_ABORT and HO_FAIL conditions.

Change-Id: I826c6766f73441256e5946d3167966e645f23430
CRs-Fixed: 1044336
2016-10-03 16:43:23 -07:00
Krunal Soni
499d364340 qcacld-3.0: Fix dwell-time when 2G-SAP is active and DBS is supported
Old generation of projects, which had only one MAC, are restricted to
use 28ms of fix active and passive dwell time when SAP session is active
but with new generation of projects, which can have two MACs, are
permitted to use longer active and passive dwell time when SAP session
is active on 2G band and DBS is supported.

Change-Id: I2638d9b7a3677c3f0b329ed8109d01baa2cffd68
CRs-Fixed: 1071353
2016-09-28 09:40:21 -07:00
Komal Seelam
78ff65a8c6 qcacld-3.0: Add NL event to indicate SSR shutdown is triggered
propagation from qcacld-2.0 to qcacld-3.0.

On Dual-WiFi Platforms, Radio Device 1 (R1 - SDIO interface) should
be functional only if Radio Device 0 (R0 - PCIe interface) is active.
If SSR is indentified on R0, indicate userspace application to unload
R1 on this event and Reload R1 once R0 SSR and reload is complete.

CRs-Fixed: 1046397
Change-Id: I8a06b569fe536bb93dbb37bdb289295bfce62f6e
2016-09-26 04:49:39 -07:00
Padma, Santhosh Kumar
9509135262 qcacld-3.0: Add timer related messages at the top of PE queue
qcacld-2.0 to qcacld-3.0 propagation

Currently when PE queue is full, timer message gets queued at the
end of PE queue even when timer gets expired in time. This causes
delay in processing timer messages. This delay can be maximum if
timer message is the last message in PE queue. This can take substantial
amount of time to process timer message as timer message will be
processed only after processing of other messages. For instance,
if timer message processing takes substantial amount of time during
scan, it can delay sending max channel timeout and may result in
scan timeout. So, add timer related messages at
the top of PE queue to process those messages immediately.

Change-Id: Iccaf0075c97a7edd2c1de1d168f1a4e7d01381c2
CRs-Fixed: 936179
2016-09-21 17:01:47 -07:00
Naveen Rawat
03e8d95c9e qcacld-3.0: Send HT/VHT CAPs IE to firmware per band
Send HT/VHT CAPs IE to firmware per band. This will allow certain
features like LDPC to be configured per band.

Change-Id: I21c83af984f9be3ade46121ef148b52568c3ad0f
CRs-Fixed: 1055774
(cherry picked from commit 2a94c5666ea0c66477d0086c8d5a401db8e4afcf)
2016-09-11 16:49:46 -07:00
Manjunathappa Prakash
fff753c12e qcacld-3.0: Add option to control Rx flow steering
Add ini configuration to enable/disable Rx flow steering.
Add HTT message to configure RX flow steering.

Change-Id: I80aab262c754716b28bfdae561d1cbf5e1d38e4d
CRs-Fixed: 1055179
2016-09-11 15:23:53 -07:00
Anurag Chouhan
04dbf6de4d qcacld-3.0: Disable RA filter when BPF is enabled
qcacld-2.0 to qcacld-3.0 propagation.

In current implementation, RA filter is enabled irrespective of the
BPF filter status. This change checks if BPF configuration in ini as
well as in target config is enabled, then RA will be disabled.

Change-Id: I85df0828af665d2bcc13c865b0ba40ebf882fffe
CRs-Fixed: 1058884
(cherry picked from commit 8dda6e83eb85ef9f0342ab23954e093c6dfebe2e)
2016-09-10 19:06:41 -07:00
Sachin Ahuja
0c6d507d28 qcacld-3.0: Update the MAX Tx Power cap to 30dbm
Currently Host configures MaxTxPower as 22dbm
during join which fails the TRP requirement to meet
23dbm.
Change the code to configure the max tx Power to 30dbm
in FW during join.

Change-Id: I926288972e17a9276af2744d6a070b82333d5242
CRs-Fixed: 1023616
(cherry picked from commit 206e7dd1e735a3ff0a94f2d978b606dcf87e08fd)
2016-09-10 19:05:59 -07:00
Manishekar Chandrasekaran
1004ad9cae qcacld-3.0: Check for active STA/SAP connections before SAP channel switch
Check for active STA and SAP connections before switching the operating
channel of SAP to a DFS channel. SAP moves to a DFS channel only if
this movement ensures that the SAP does not go off the DFS channel which
is needed for continuous radar detection.

The existing check looks for the number of open sessions. But these
sessions may or may not be active. So, replace this check with suitable
APIs which will check for active sessions.

Change-Id: Ib37427a9c62a785abb5e22c14ec23f09e60bf4b7
CRs-Fixed: 1063212
(cherry picked from commit d470e33f6d390b84dd98892a1b4526fd45348c2b)
2016-09-10 19:05:28 -07:00
Anurag Chouhan
01cfa4e859 qcacld-3.0: Remove ani_global.h from qca-cmn
Currently ani_global.h is included in qca-cmn,
The change removes ani_global.h and there are
corresponding changes in Driver

Change-Id: I59684e475406386e250635bde88390797835c95f
CRs-Fixed: 1012452
2016-09-10 14:19:48 -07:00
Arun Khandavalli
55f890bb97 qcacld-3.0: Send De-init sequence to firmware when the modules are not enabled
With the new statemachine  cds start/stop will not be invoked without an
interface up from upperlayer. As part of cds stop host sends de-initialization
sequence to firmware, If there is no interface up from the upper layer and
driver gets removed, host driver dosent send the de-init
inidication to firmware and starts closing its modules because of this
fw & host are out of sync.

To migitate the issue send the de-init sequence during if the modules are
opened but not enabled.

Change-Id: Ice85f995a870e69e52b4fcf2fac13761bf1a63a1
CRs-Fixed: 1060893
2016-09-02 18:24:20 -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
Krunal Soni
0193b6f143 qcacld-3.0: Provide support enable RX LDPC in certain cases
In following conditions RX LDPC support needs to be enabled
1) when STA is coming up in 5G band
2) when IBSS is coming up in 5G band

for anyother cases RX LDPC needs to be disabled. If user has
choosen RX LDPC to be disabled from INI file then it needs to
be disabled for all the cases including above mentioned cases.

To achieve this, take the intersection of global, INI, and harware
specific RX LDPC settings.

Change-Id: Iae10aa4a8c0931cdb796cd9c8ff558d4bc8e0aed
CRs-Fixed: 1050004
2016-08-19 18:52:48 -07:00
Amar Singhal
604ba6cf04 qcacld-3.0: Modify DFS region for KR and CN
KR and CN have different DFS regions than what kernel provides.
Assign the correct DFS regions for KR and CN. Also use "enum
dfs_region" as the parameter type in functions that have
dfs region as parameter.

CRs-Fixed: 1047214
Change-Id: I2ddd67d3c29a448dd2a1d3a63113750783fb6731
2016-08-19 11:03:51 -07:00
Manishekar Chandrasekaran
d3ee9756dc qcacld-3.0: Ensure MAS commands to be made PDEV specific
Make MAS (MCC Adaptive Scheduler) commands to be PDEV
specific.

Two instances of OCS (Off Channel Scheduler) can exist
in the FW (one per MAC) and FW provides the option of
enabling and disabling MAS on a per MAC basis. But,
Host does not have enable/disable option for individual
MACs. So, the agreement with the FW is for the Host to
send down a ‘pdev id’ of 0. When ‘pdev id’ of 0 is used,
FW treats this as a SOC level command and applies the
same value to both MACs. So, irrespective of the value
of ‘WMI_SERVICE_DEPRECATED_REPLACE’ in the WMI service
bit map, the pdev id needs to be ‘0’ (SOC level) for
the WMI command
WMI_RESMGR_ADAPTIVE_OCS_ENABLE_DISABLE_CMDID.

WMI command WMI_RESMGR_SET_CHAN_TIME_QUOTA_CMDID to set
the MCC quota is sent down as channel – value pairs.
The value being channel time quota and the channel being
sent down is a home channel. The additional requirement
from FW is that all the channels in a single WMI command
belong to the same MAC. FW asserts if the WMI command
mixes and matches home channels associated with
different MACs. So, although the PDEV ID is not part of
the WMI command struct, the cmd is in a sense PDEV
specific.

There is no change in the WMI command
WMI_RESMGR_SET_CHAN_LATENCY_CMDID to make it PDEV
specific since this WMI command always send only one
channel-latency pair to the FW. So, there shouldn’t be
any problem of FW receiving home channels associated
with different MACs, for this WMI command.

Change-Id: Ie22800e07bbeef65c43f9171de828533b982a06b
CRs-Fixed: 1052652
2016-08-18 09:11:47 -07:00
Nirav Shah
c657ef50ea qcacld-3.0: Changes to update mac_id in packetlog
Changes to update mac_id in packetlog header
for DBS.

Change-Id: I602d399e1ef34077b5d7bfc867fb60678ed8612c
CRs-fixed: 1047382
2016-08-18 00:41:01 -07:00
Naveen Rawat
64e477ea40 qcacld-3.0: Add support for 5/10 MHz for STA and SAP role
Add support for 5/10 MHz channel width for STA and SAP role. To
enable/disable feature, following ini parameter will be used:
 * gSub20ChannelWidth=0: indicates do not use Sub 20 MHz bandwidth
   this is also the default value.
 * gSub20ChannelWidth=1: Bring up SAP/STA in 5 MHz bandwidth
 * gSub20ChannelWidth=2: Bring up SAP/STA in 10 MHz bandwidth

Change-Id: Ic6d534dc1eae60fcd2fb7533c934b9ea28e6dd78
CRs-Fixed: 1013211
2016-08-13 14:07:29 -07:00