Commit Graph

321 Commits

Author SHA1 Message Date
Aggarwal, Nishank
9130c3db8d qcacld-3.0: Fix compilation issue for 32 bit builds
In function csr_roam_chk_lnk_disassoc_ind format
specifier to print sizeof() is for 64 bit systems
which leads in compilation error on 32 bit systems.

Fix this issue by common format specifier for both
32 and 64 bit compilation.

Change-Id: Ib3a5df243c8c29040321af4bdcf7230a6e5e0e52
CRs-Fixed: 1055344
2016-09-06 14:26:15 -07:00
Deepak Dhamdhere
f2a7d8be0e qcacld-3.0: Use OkcEnabled .ini flag to control firmware OKC
Turn off opportunistic key caching (OKC) in firmware based on
"OkcEnabled" parameter in WCNSS_qcom_cfg.ini.
It is enabled by default and can be turned off with value 0.
Remove FEATURE_WLAN_OKC compilation option because OKC is always
compiled in for cld3.0. Remove underlying empty routine
cb_notify_set_okc_feature_enabled().

CRs-Fixed: 1057181
Change-Id: I174e860abef0532d62517635fe56927d8c3c9fd3
2016-09-02 21:27:00 -07:00
Kiran Kumar Lokere
ea85ee0516 qcacld-3.0: Correct the country code validation check
Country code comparison result is checked against true value,
but the comparison result is non-zero if the country code is
valid, hence checking the result against true fails and do
not set the country code.

Correct the conditional logic to check if the given country
valid or not.

Change-Id: Id893cfec8571939e4e455fa35ea95310f4c77263
CRs-Fixed: 1060242
2016-09-02 18:23:44 -07:00
Abhishek Singh
f78bd2d501 qcacld-3.0: Ignore security mismatch during WPS registration
qcacld-2.0 to qcacld-3.0 propagation

During WPS registration process the psession encryption type is 0.
Now if AP's beacon have RSN IE, while processing beacons security
mismatch is detected and DUT sends unicast probe request without
WPS IE.

To avoid this ignore security mismatch during WPS registration.

Change-Id: Ic1b4de116ec6a99749ec3d8ba28b29d52190c344
CRs-Fixed: 967553
2016-09-02 18:22:57 -07:00
Gupta, Kapil
76ed25e536 qcacld-3.0: Removed invalid vht IEs for 2.4G in SAP Mode
qcacld-2.0 to qcacld-3.0 propagation

SoftAP should check gEnableVhtFor24GHzBand ini variable before
enabling vht mode in 2.4Ghz mode.
Added changes to turn off vht mode if gEnableVhtFor24GHzBand is
disabled for 2.4Ghz.

Change-Id: I135e5449f95342a98abfa0b9cd5b1849a84c5c4c
CRs-Fixed: 988240
2016-09-02 17:23:27 -07:00
Kapil Gupta
63ddab2c4b qcacld-3.0: Ignore active timeout handler in case of ROC timeout
qcacld-2.0 to qcacld-3.0 propagation

DUT sends continuous GO Negotiation Response for the request
while ROC is in progress. These frames increase timeout of
cancel ROC timer and ROC is not removed from the active timout.
This can cause ROC to be in active cmd list even after current
timeout value.

Add changes to return from active timeout handler in case of ROC.

Change-Id: I58577b5d2addf7614d8ee458df0ce4632dafa7c0
CRs-Fixed: 990808
2016-09-02 17:23:22 -07:00
Sreelakshmi Konamki
544e33b0bb qcacld-3.0: Remove redundant MTRACE logs
qcacld-2.0 to qcacld-3.0 propagation

Currently few MTRACE logs are logged repetitively which leads to
overwriting of other important MTRACE logs.

To avoid this,
1. Remove MTRACE logs which are seen repetitively in scan,
   connect/disconnect path and few timer functions.
2. Remove MTRACE log in lim_process_mlm_req_messages() and
   lim_process_sme_req_messages() as few enums already logged in
   lim_process_messages().
   Add MTRACE log in lim_post_mlm_message() and lim_post_sme_message() for
   the rest of enums which are not logged in lim_process_messages()

Change-Id: I1478f3e9ab8fb57d8b8b2f65cf2eb3450eb7b64c
CRs-Fixed: 855840
2016-09-02 17:23:07 -07:00
Sreelakshmi Konamki
6a06536e7f qcacld-3.0: Add missing MTRACE logs in SME
qcacld-2.0 to qcacld-3.0 propagation

MTRACE logs are not present in SME, for messages tx/rx WMA.
So add missing MTRACE logs in SME before transmitting and
after receiving messages to/from WMA.

Change-Id: Iac45ffc1736eecc40e203174888e296767b50a0d
CRs-Fixed: 855871
2016-09-02 17:23:03 -07:00
Sreelakshmi Konamki
58697e1331 qcacld-3.0: Fix suspicious dereference of pointer
qcacld-2.0 to qcacld-3.0 propagation

Dereference of 'roamSession' pointer before NULL check in
sme_is_sta_smps_allowed().

Fix to move dereference statements after NULL check.

Change-Id: I04d72a4b8fbc4ba68850ae665e2248a386fa4c10
CRs-Fixed: 992082
2016-09-02 17:22:56 -07:00
Aggarwal Nishank
51dece43e2 qcacld-3.0: Fix compilation issue for 32 bit builds
In function csr_roam_chk_lnk_disassoc_ind frame size
exceeds 1024 bytes. Because of this compilation fails
on 32 bit systems as there is stack check flag on
32-bit compilation.

Fix is to convert stack allocations to dynamic memory
allocation.

Change-Id: I7c91bc0ed91796ba4dac9c85ea4b1b6f2d8a6ee5
CRs-Fixed: 1055344
2016-09-02 17:22:48 -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
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
Srinivas Girigowda
c34f11dfd8 qcacld-3.0: Add support to enable/disable packetlog using iwpriv
Add support to enable/disable packetlog using
iwpriv wlan0 pktlog command.

Change-Id: Ia17f659e16221985be5cd9e75ebf0c46f2dc5693
CRs-Fixed: 970647
2016-08-20 10:36:55 -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
Sandeep Puligilla
829d6acb75 qcacld-3.0: Remove duplicate OBSS start scan request
Host is sending OBSS start scan request twice to firmware.
OBSS scan start is triggered as part of the set context response
processing and it gets called twice after association.

Added condition check to allow only once the OBSS scan request.

Change-Id: I8ccc7172df9d89aaa09ad924ced7f8ed5a6ace13
CRs-Fixed: 1053626
2016-08-17 20:06:11 -07:00
Masti, Narayanraddi
ab712a7a63 qcacld-3.0: Fix to encrypt broadcast frames
qcacld-2.0 to qcacld-3.0 propagation

Currently, In SAP mode due to incorrect wep key
index broadcast frames are not encrypted.

Fix is to make sure to update default index for
BSS(group) key.

Change-Id: I328855decbad20dbd88b48022e466e4f78f5d722
CRs-Fixed: 932749
2016-08-17 11:21:47 -07:00
Krunal Soni
53993f7939 qcacld-3.0: Sessionize VHT Capability
Sessionize VHT Capability by updating the session
entry at join request or start bss and read the same
capablities at LIM instead of reading from global VHT
CFG items.

Following CFG items are taken care as part of this change.
WNI_CFG_VHT_SU_BEAMFORMER_CAP,
WNI_CFG_VHT_SU_BEAMFORMEE_CAP,
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
WNI_CFG_VHT_MU_BEAMFORMER_CAP,
WNI_CFG_VHT_MU_BEAMFORMEE_CAP

Change-Id: I7c33de1180416db0027b4690170060549847dd9a
CRs-Fixed: 1029145
2016-08-13 18:26:59 -07:00
Sandeep Puligilla
9891743c1e qcacld-3.0: Sessionize VHT Capability
Sessionize VHT Capability by updating the session
entry at join request or start bss and read the same
capablities at LIM instead of reading from global VHT
CFG items .

Change-Id: Idef009d4c76cfc6939359dc09379fc1f0d820589
CRs-Fixed: 1029145
2016-08-13 18:26:47 -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
Rakesh Sunki
1f0553fd55 qcacld-3.0: Fix NAN APIs when NAN data path feature is disabled
qcacld-2.0 to qcacld-3.0 propagation

Add NAN API wrapper function definitions and also fix compilation
failure when NAN data path feature is disabled.

Change-Id: Ib4a3133568eee0c2257c65bb0a8905c44048f0c2
CRs-Fixed: 1049546
2016-08-13 14:07:29 -07:00
Rakesh Sunki
ae936b6a50 qcacld-3.0: Delete peer(if needed) in ndp end indication
qcacld-2.0 to qcacld-3.0 propagation

Take action to delete peer in NDP_END Indication, rather than
NDP_END Response event from firmware. Earlier, device initiating
NDP_END will only get NDP_END_Response event from firmware, but
that behavior is changed now and both self and peer device will get
NDP_END_indication with peer map for ndp end.

Change-Id: I7316cc3864052eef4c7bbe9bbac01f0333909c59
CRs-Fixed: 962367
2016-08-13 14:07:29 -07:00
Krunal Soni
cbda8555e6 qcacld-3.0: Remove deprecated API csr_isconcurrentsession_valid
In current driver, there is already an API called cds_allow_concurrency
which is functionally similar to csr_isconcurrentsession_valid. Remove old
API csr_isconcurrentsession_valid to have single API.

Change-Id: If81900af5cb7291917fe915b44af5cf763f16d46
CRs-Fixed: 1047054
2016-08-13 14:07:28 -07:00
Krishna Kumaar Natarajan
c1fa17d047 qcacld-3.0: Remove usage of typedef for oem related structures
Remove the usage of typedef for oem data request and oem
data response data structure.

Change-Id: I94f05833baa9b6baaf2272f63a33236437a96bbf
CRs-Fixed: 1038872
2016-08-04 12:35:36 -07:00
Krishna Kumaar Natarajan
bbbf2ef17b qcacld-3.0: Remove unused data structures related to OEM message
Remove unused data structures related to OEM message

Change-Id: I33c5190b78ffff2bf160e57a6edaf4b67189062c
CRs-Fixed: 1038872
2016-08-04 12:35:34 -07:00
Krishna Kumaar Natarajan
ad79826137 qcacld-3.0: Remove global oem data request/response buffer
Remove global oem data request/response buffer.

Change-Id: I95078c985c5034d9d530ad542ace129309d79886
CRs-Fixed: 1038872
2016-08-04 12:35:33 -07:00
Krishna Kumaar Natarajan
73ea9f2259 qcacld-3.0: Remove oem data rsp passing over multiple layers
Remove oem data rsp passing over multiple layers.

This change set sends the OEM data response directly to
SME from WMA instead of going through LIM/MLM.

Change-Id: I3cff10ff7bdbcee39b39bd9ba03b5eff8444b017
CRs-Fixed: 1038872
2016-08-04 12:35:30 -07:00
Krishna Kumaar Natarajan
c5e06accd6 qcacld-3.0: Remove oem data request passing over multiple layers
Remove oem data request passing over multiple layers.

This change set sends the OEM data request directly from
SME to WMA instead of going through LIM/MLM.

Change-Id: I151fa771544e9f74b1b69b18d689176752760621
CRs-Fixed: 1038872
2016-08-04 12:35:28 -07:00
Selvaraj, Sridhar
258594ca59 qcacld-3.0: Fix uninitialized heap and stack usage
qcacld-2.0 to qcacld-3.0 propagation

Fix uninitialized stack use in csrRoamReadTSF by initializing
variable of struct type tCsrNeighborRoamBSSInfo to zero.

Git-commit: d39cf92e69222e03f89238313f5b8c100ecd4ecc
Change-Id: I4211b41b5e30d414e45691a5bab4048587cc8499
CRs-Fixed: 1018486
2016-08-03 18:57:35 -07:00
Selvaraj, Sridhar
bc950df65f qcacld-3.0: Fix stack corruption issue in sme_RrmProcessNeighborReport
qcacld-2.0 to qcacld-3.0 propagation

When STA process Neighbor report from AP, session_id is declared
as one byte variable and its overwritten with four bytes value
in csrRoamGetSessionIdFromBSSID. This is observed on enabling stack
protection in kernel config(CONFIG_CC_STACKPROTECTOR).

Fix is to declare session_id as four bytes variable.

Git-commit: 96646d1eb48c4f3bf45555b8f636f90cf925b8b8
Change-Id: I6b2fd40a5466fe5dd72d394abb682229a550e0b1
CRs-Fixed: 1025272
2016-08-03 18:57:16 -07:00
Rajeev Kumar
348ed99339 qcacld-3.0: Add memory allocation failure check for BPF instructions
Add check for BPF instructions memory allocation failure and fail
the request gracefully if memory allocation fails.

Change-Id: Ifa6cab73c59aa4a7c587fa0b7d38e9b8523a3b1c
CRs-Fixed: 1047209
2016-08-03 18:57:10 -07:00
Rajeev Kumar
e5a1682c3e qcacld-3.0: memset bpf load to zero, update the bpf enabled correctly
Propagation from qcacld-2.0 to qcacld-3.0

- Current length of bpf is not set during the reset filter. set offload
  is allocated through malloc, so invalid values for current_length
  are recieved during reset. Memset set_bpfload to zero after
  allocation.
- update the bpf service to hdd correctly depending on the
  wmi service bitmap recieved from the firmware.

Change-Id: Iaf4774865cf0698a2deebac5cea62c873146e838
CRs-Fixed: 985562
2016-08-03 18:55:55 -07:00
Arif Hussain
d3bf1115ef qcacld-3.0: Fix memory leak in csr_update_lost_link1_cmd
In function csr_update_lost_link1_cmd, memory is allocated to
local variable struct scan_filter, further we passing this
variable to csr_roam_prepare_filter_from_profile function and
allocating memory to the members of the scan_filter. At some
point in the function we are returning without freeing memory
allocated to scan_filter, which causes memory leak.

Make sure to free scan_filter’s memory before returning.

Change-Id: I448cf0d4bb16d4769b50c96495038684909e0739
CRs-Fixed: 1048116
2016-08-03 18:34:39 -07:00
Krunal Soni
35b404c206 qcacld-3.0: Fix to avoid checking PCL when BSSID is given by upper layer
New flavor of OS is sending bssid along with STA connect command. When
connect command comes with bssids then don't allow Preferred channel
list algorithm as it won't be of any use and skipping the algorithm will
improve initial scan time.

Add log to inform whether BSSID hint is given by upper layer.

Change-Id: I9c1f41a0e00f9b2afc19629558b93a2482da6581
CRs-Fixed: 1047052
2016-07-29 18:15:21 -07:00
Ravi Joshi
4f447cb765 qcacld-3.0: Configure multicast filters for nan data interface
Configure multicast filters for the nan data interface.
Request to configure multicast filters is not honored for the
NAN data interface in the current implementation.

Integration from qcacld-2.0 to qcacld-3.0.

CRs-Fixed: 1046519
Change-Id: I48a4a30fd9f6369fe398254184d0016a35c0a6b3
2016-07-29 18:15:12 -07:00
Arun Khandavalli
4b55da70d6 qcacld-3.0: Refactor hdd callback (de)registration into a single function
As part of "load once unload never" architecture, cds modules can
be opened and closed several times. Refactor the hdd callback registration/
de-registration into hdd_register_cb/hdd_deregister_cb which can
be invoked during the open/close of the modules respectively.

Change-Id: I2da9018ff2fa6188e61e007c896bc13e8fddcb7d
CRs-Fixed: 1026817
2016-07-28 15:33:50 +05:30
Naveen Rawat
48f51d04e9 qcacld-3.0: Fix NPD of ies_local in csr_roam_join_handle_profile
In csr_roam_join_handle_profile variable ies_local is populated if input
argument result is not NULL. We cannot proceed to with roaming if IE parsing
fails, so abort roaming if input argument "result" passed to function
csr_roam_join_handle_profile is NULL.

Change-Id: I52c35a44598028115c48aff7827f3fc90bd48cb1
CRs-Fixed: 1038237
2016-07-28 15:32:46 +05:30
Varun Reddy Yeturu
3e91dad283 qcacld-3.0: Use Reassociation during BSS Transition
This is qcacld-2.0 to qcacld-3.0 propagation

The BSS transition request is handled by the supplicant.
The supplicant upon receiving the request will issue a
connect request to the driver with a hint of prev_bssid
telling the driver to perform a re-association.
Use this hint in the driver and initiate a re-association.
While doing the re-association, there is no need to do a
scan if the target AP is already present in the scan cache.
Optimize the re-association code to not do a scan if not
necessary in this particular case.

Change-Id: Idf1a7058009a8d2082bc1742dca1364cf59c405b
CRs-Fixed: 1010596
2016-07-28 15:31:44 +05:30
Anurag Chouhan
5de8d17671 qcacld-3.0: Add BSS status caching
Add BSS status caching to get the BSS Information
when disconnect happens.

Change-Id: I41b74700b161277bc454d8bb8978f4e1e92faea8
CRs-Fixed: 1013475
2016-07-15 04:23:12 -07:00
Naveen Rawat
696a930c25 qcacld-3.0: Fix start BSS failure
In function csr_roam_join_handle_profile, add NULL pointer check for
"result" after call to csr_roam_select_bss rather than before
csr_roam_join_handle_profile, since it is called for BSS role as well.

Change-Id: I800891fd66d5c851537968515e43eadbe38a2ae8
CRs-Fixed: 1038237
2016-07-14 18:50:50 -07:00
Naveen Rawat
a395d25d53 qcacld-3.0: Fix NULL pointer dereference in csr_roam_join_next_bss
Add NULL pointer check for "result" after call to csr_roam_select_bss.
This function can return a NULL value for variable "result", which is
later dereference in the function csr_roam_join_handle_profile.

Change-Id: I5e1f017de49301a14b899692b888f7694e979bf1
CRs-Fixed: 1027725
2016-07-14 18:50:50 -07:00
Gupta, Kapil
8a605e1b59 qcacld-3.0: Correct len size of oem data request
qcacld-2.0 to qcacld-3.0 propagation.

oem data request len size should be of 4 byte instead of
1 byte.
Add changes to correct len size in oem data structure across the
layers.

Change-Id: I9b377420c50ff1160964f94be5eaa0072df0f63d
CRs-Fixed: 1013488
2016-07-13 15:27:49 -07:00
Tushnim Bhattacharyya
f44a9d86cd qcacld-3.0: Fix chain mask & nss in policy manager connection table
The chain mask in policy manager connection table needs to be updated
with the capability that HW advertises at load time intersected with
related ini configuration on host. The dynamic change of the chain
mask & NSS values will be handled only by chain mask manager in
firmware.

Change-Id: I250668c93920a63c9278aefe93491cb5aaa91ca7
CRs-Fixed: 1037816
2016-07-12 10:02:49 -07:00
Kabilan Kannan
44f6586a20 qcacld-3.0: Add validation to avoid buffer overflow
Buffer overflow condition is not validated correctly in function
sme_update_tdls_peer_state(). This may result in erratic program
behavior.
Add buffer over flow validation to avoid memory access errors,
incorrect results, a crash, or a breach of system security.

Change-Id: I793bd056b32924b484ce7cb264b22c74c8c4cca4
CRs-Fixed: 1035656
2016-07-08 17:26:54 -07:00
Manjeet Singh
f82ed071d0 qcacld-3.0: Add support for WMI_PDEV_WAL_POWER_DEBUG_CMD
Add support for WMI POWER DEBUG command to control mac_core power features
for run time debugging.

Change-Id: I77ad747843cae31de1705b7ce8fa80e18c9ca53e
CRs-Fixed: 1007598
2016-07-08 05:14:42 -07:00
Sandeep Puligilla
707386ec00 qcacld-3.0: Update log level related to PNO
PNO kernel debug logs are too frequent.

Reduced the log level of PNO messages from error to info

Change-Id: I27166f542889e0d5071ae8c558e0227c51064c5f
CRs-Fixed: 1022820
2016-07-07 22:15:23 -07:00
Naveen Rawat
8d63a59f3b qcacld-3.0: Add NDP reason codes in deferred rsp sent for NDP commands
This is qcacld-2.0 to qcacld-3.0 propagation.

Add NDP reason codes in deferred response sent for NDP commands so that
failure during processing of NDP cmds can be notified to service layer.

Change-Id: I731b520fde226c351464d94033a1ced2888a4d18
CRs-Fixed: 962367
2016-07-06 13:31:56 -07:00
Naveen Rawat
64a9a1a5b3 qcacld-3.0: Free up ndp sme command resources at sme close
This is qcacld-2.0 to qcacld-3.0 propagation

Free up memory allocated for NDP SME commands at sme_close, so that in
the event of unload while NDP command response was awaited, resources
can be freed.

Change-Id: I287ad77cbdca4b816f38bea436173b88e6eafc93
CRs-Fixed: 962367
2016-07-06 13:31:38 -07:00
Deepak Dhamdhere
a6d2f4cec4 qcacld-3.0: Process NDP data end indication
qcacld-2.0 to qcacld-3.0 propagation

Firmware sends an array of:
    {ndp instance id, vdev id, active ndp num, peer mac address}
for the NDP instances that are to be terminated.
Host driver deletes the peers that have 0 active ndp instances and
sends the entire list of ndp instance id's to the service layer.

Change-Id: I325843ce7fb8198466cb66ce66710cef999d4581
CRs-Fixed: 962367
2016-07-06 13:31:29 -07:00
Naveen Rawat
f28315cd66 qcacld-3.0: Add support for NAN Data End Request
This is qcacld-2.0 to qcacld-3.0 propagation.

Add implementation of NAN Data End request.

Change-Id: Iddd22a83b0763dab2e7398f4d2cf5b9ada58225a
CRs-Fixed: 962367
2016-07-06 13:31:24 -07:00