Commit Graph

344 Commits

Author SHA1 Message Date
Himanshu Agarwal
75e74413db qcacld-3.0: Avoid selection of irrelevant channel in 80/160MHz config
When channel list contains all channels from channel 1 to channel
165 and ch width is 80MHz, the channel to be selected as part of
ACS algorithm should be a 5GHz channel as 2.4GHz channels does not
support 80MHz but 2.4GHz channel gets selected with channel
width as 40MHz. Similarly when ch width is 160Mhz, the 160Mhz bonding
can be made only by 36-64 and 100-128 channels but 2.4Ghz channel or
some other 5Ghz channel gets selected as a result of ACS algorithm.

Assign max weight to all the 2.4GHz channels in 80Mhz and to all 2.4 Ghz
channels and 5Ghz channels not in the range 36-64 and 100-128 in 160 Mhz
so that only a valid channel is selected after the ACS algorithm is
completed.

Change-Id: I00c40e5d000a1cf8b79397fd4e361838a60b363d
CRs-Fixed: 2182011
2018-02-08 07:55:35 -08:00
bings
1826d9cbd5 qcacld-3.0: Move dfs leakage from cld to cmn
Move dfs leakage from cld to dfs module of cmn.

Change-Id: I17276fedf575f1a4029265be58d8fd088c1d956d
CRs-Fixed: 2174457
2018-02-04 21:43:22 -08:00
bings
02297abea9 qcacld-3.0: Use new APIs to get and set DFS Non-Occupancy-List(NOL)
Current driver is using pld_wlan_set_dfs_nol() and pld_wlan_get_dfs_nol()
directly through eSAP_DFS_NOL_SET and eSAP_DFS_NOL_GET case statements
respectively within HDD module. These methods are obsoleted as per
new driver design.

Use DFS component's utils_dfs_init_nol() and utils_dfs_save_nol() APIs
instead to get and set DFS NOL respectively.

Change-Id: I63e8adac3f99c2052c26e6b01d19071f098e0a4f
CRs-Fixed: 2172024
2018-02-02 00:27:24 -08:00
Liangwei Dong
fc26cdae30 qcacld-3.0: Fix NULL acs_cfg ptr access
acs_cfg is not initialized when sap starts
failed. And acs_cfg is accessed during
Random channel selection when sap interface
gets Radar event.

Fix by checking sap ctx state and acs_cfg
During dfs radar event.

Change-Id: I7e04e1a9e357ccd0b39b4edcc4c8a34b54e388ce
CRs-Fixed: 2174532
2018-01-31 01:28:36 -08:00
Paul Zhang
0f85b41310 qcacld-3.0: Setting the right country IE for SAP
Currently, when sap starts, it will get the default
country code for the country IE if 80211d enabled.
Using api wlan_reg_read_current_country() instead of
wlan_reg_read_default_country() to get the current
country.

Change-Id: I67e63630c56b17d0d6890704bc1852e40185cf48
CRs-Fixed: 2170425
2018-01-30 23:55:11 -08:00
bings
d79e606efb qcacld-3.0: Do not get nol since channel status of nol is disabled
Currently there is no need to get nol when removing nol from candidate
channel list, because status of nol is set to CHANNEL_STATE_DISABLE in
regulatory.

Remove channels whose status are CHANNEL_STATE_DISABLE when trying to
remove nol from candidate channel list.

Change-Id: I90722116814e837fca456de1b2ef88d8519e9aff
CRs-Fixed: 2180752
2018-01-30 23:55:08 -08:00
wadesong
a8637bb1b6 qcacld-3.0: Add more check points for SAP callback
When auth failure occures, hostapd will issue BSS stop
command, resulting in BSS peer deleted. After that, auth
frame may still get received, and SAP callback may still
access BSS peer object for remote peer creation, which
results in an assertion.

Add more check points to make sure SAP callback is
handling the peer object addition correctly based on
different status of SAP state machine.

Change-Id: Icdb7ae2db018f16cb60878bda8bab1e791667cba
CRs-Fixed: 2179494
2018-01-30 21:28:53 -08:00
bings
1f98e9fa79 qcacld-3.0: Process radar event after getting vdev start response
Do not process radar event until receiving vdev start response, because
during channel switch, radar may be detected again in the old channel.

Change-Id: I1a524e38c25f91c684fd2c4962aeaf556d2445eb
CRs-Fixed: 2175891
2018-01-29 02:17:37 -08:00
bings
10f2645d36 qcacld-3.0: Use iwpriv setRadarDbg to configure dfs log level
Use iwpriv command "setRadarDbg" to configure dfs log level because
MCL does not have tools to trigger dfs_control.

Change-Id: I2d7b30b026dfedbf03002463652fead83220fa2a
CRs-Fixed: 2178636
2018-01-26 21:26:47 -08:00
Tushnim Bhattacharyya
691680ed4c qcacld-3.0: Trim the ACS scan channel list as per acs config
Trim the scan channel list for ACS based on the channel list provided
from user space as part of acs config.

Change-Id: Iaafa6f78098c59782478351e206ae360d50b89bc
CRs-Fixed: 2177457
2018-01-26 20:02:46 -08:00
Srinivas Girigowda
80213e5216 qcacld-3.0: Move the logs to appropriate log levels
Move the logs to appropriate log levels.

Change-Id: I67ff9972113f95c51214f8d032c2c20d2ba6d195
CRs-Fixed: 2177347
2018-01-26 00:34:22 -08:00
bings
73e793e2a6 qcacld-3.0: Switch channel when radar is found in dfs channel
When radar is found, the current channel is put in NOL list and the state
is set as CHANNEL_STATE_DISABLE.

Currently if channel state is not CHANNEL_STATE_DFS, it will not do channel
change. This is not correct.

Do channel change when radar is found in dfs channel

Change-Id: Iabc8ef5ee92e9d2dc83a95d8fce36a2271ca056c
CRs-Fixed: 2155835
2018-01-26 00:34:16 -08:00
bings
38b3d4f66c qcacld-3.0: Stop sap if there is no available channel
When radar is found, the current channel is put in NOL list and the state
is set as CHANNEL_STATE_DISABLE.

So change the channel state check from wlan_reg_is_dfs_ch to
wlan_reg_is_passive_or_disable_ch

Change-Id: If0595682100746cb12ddb8a1c3ca0106ccd1af21
CRs-Fixed: 2178842
2018-01-25 23:39:19 -08:00
bings
819bdead9e qcacld-3.0: Do not switch channel in DFS testing mode
If gDisableDFSChSwitch is configured as 1, channel should not be
switched even radar is found.

Set usenol as 0 when gDisableDFSChSwitch is configured as 1.

Change-Id: I05c4afea3eb9af9c541b2324a2d50ea59c05f7d7
CRs-Fixed: 2178652
2018-01-25 21:40:52 -08:00
bings
1f55b66040 qcacld-3.0: update sap_ctx->ch_params after channel is selected
Old ch_width is set as invalid after radar detection, and can't be
used anymore. Update sap_ctx->ch_params after channel is selected.

Change-Id: I9e068785312d7072eeaeaa4b1aae4bd82d62d36f
CRs-Fixed: 2178586
2018-01-25 21:40:49 -08:00
Min Liu
2fef579fc1 qcacld-3.0: Fix safe channel switch failure
For the AP+AP SCC LTE-Coex case, when channel avoidance event
is reported, the channel switch request for SAP will be blocked
by policy manager if the target channel is different with the
operating channel of the existing SAP due to the SCC policy.

Need to update the logic to give higher priority to the channel
avoidance request.

Another change is to move the dfs_radar_found ref counter from
hdd_ctx to hdd_adapter so that the channel switch request of
the 2nd SAP will not be blocked when the 1st one is still in
progress since it might take some time to get VDEV restart
response from FW.

Change-Id: I8594b35b70276f7ed3884697caf69a99ee91b952
CRs-Fixed: 2171958
2018-01-25 11:27:33 -08:00
Abhinav Kumar
5670d365dc qcacld-3.0: Fix to reduce QXDM Log Size
Currently in SAP cases, logging is huge and hence failure
logs are getting overwritten very fast within 2mins itself.
Fix it to delete the some irrelevant log prints.

Change-Id: I90a77ba9348b84eb7e5c3518391f7c98a04bb39f
CRs-Fixed: 2169101
2018-01-25 01:41:36 -08:00
Sourav Mohapatra
ab088faa4a qcacld-3.0: Fix potential buffer overflow
In the function sap_clear_session_param, sapctx->sessionId can have
value more than max value allowed for the array
mac_ctx->sap.sapCtxList.

Add sanity check for the variable sapctx->sessionId

Change-Id: I846a8a1435de63d0a2e34f23bc407e0a8fa53eb2
CRs-Fixed: 2162255
2018-01-24 23:46:52 -08:00
bings
19bf84d3c8 qcacld-3.0: Configure IEEE80211_CHAN_DFS for DFS channel
Configure IEEE80211_CHAN_DFS for DFS channel, otherwise channel changes
does not happen.

Change-Id: I0cfbff43d0fff79ae17f1e96b764d4c213ae2ea1
CRs-Fixed: 2155839
2018-01-24 08:27:12 -08:00
Jiachao Wu
c279f9741b qcacld-3.0: Fix a memory leak in SAP when SSR
Fix a memory leak in SAP when SSR.

Change-Id: I1ceaa9e31f64c7fe4c70eab5d0daf2fc60063ef2
CRs-Fixed: 2176124
2018-01-23 12:30:11 -08:00
Himanshu Agarwal
fee2e36308 qcacld-3.0: Set ACS weight to max for channels not in scan list
When gApAutoChannelSelection is set to 1 in ini, HOST driver ACS
runs in wlan_hdd_cfg80211_start_bss() with all the channel width,
hw mode and start and end channel parameters overridden with the
values from ini. After scan on all the channels, a weight is
assigned to all the channels based on rssi and no. of BSS present
on that channel. Weights of all the channels not present in the
scan list remains 0 as no scan happened on those channels and so
BSS count is 0 and RSSI is max. As the channel with lowest weight
is selected, channel which is not even present in scan list is getting
selected.

Assign SAP_ACS_WEIGHT_MAX to all the channels not in the scan list so
only one of the channel present in scan list gets selected after ACS
algorithm is completed.

Change-Id: Ic567c412ec7f68e2bb5d12e8e982650e56fd0488
CRs-Fixed: 2164979
2018-01-22 05:39:40 -08:00
wadesong
4879f42765 qcacld-3.0: ACS fail-safe channel config indication
When ACS scan fails due to some reason, the default channel will
be configured based on ACS band and channel range config, but
the channel and band configs are not indicated to hostapd in a
proper way.

Add code for fail-safe channel and band config indication to
hostapd when ACS scan fails.

Change-Id: Ibbafbc7b853e753cee5563ab64c12c81c3fe54e2
CRs-Fixed: 2166815
2018-01-16 01:59:02 -08:00
Ashish Kumar Dhanotiya
443d31f5f8 qcacld-3.0: Cache deleted station's information in case of SAP
During disconnection process, cache disconnecting STA information
so that the same information is updated to upper-layer on receiving
GET_STATION vendor command, after disconnection.

Change-Id: I2e5a0be42d81b86e6f4490de1bdf9d7e0797506d
CRs-Fixed: 2126182
2018-01-08 09:39:09 -08:00
wadesong
1795e14189 qcacld-3.0: Refine ACS fail-safe channel selection
1) Change some of the parameters for the following two functions
to reflect the right PHY mode definitions at different layers:

wlan_hdd_set_acs_ch_range
sap_select_default_oper_chan

2) Refine the kernel-doc for the above 2 functions due to their
parameter changes.

3) Use eCsrPhyMode instead of uint32_t to define hw_mode in
struct sap_acs_cfg to reflect the right PHY mode definition.

4) Refine the ACS code logic due to the changes introduced above.

Change-Id: I91b7814831a05265cfff456452eef0fe2ef97d1e
CRs-Fixed: 2167355
2018-01-08 02:07:16 -08:00
wadesong
c46581bc1c qcacld-3.0: Fix an ACS hw mode mapping discrepancy
When ACS is started, acs_cfg.hw_mode in AP context will
be set after mapping from values defined in enum
qca_wlan_vendor_acs_hw_mode to values defined in enum
eCsrPhyMode, but when ACS scan fails due to some reason,
such as scan timeout, the code in function
sap_select_default_oper_chan is still using values
defined in enum qca_wlan_vendor_acs_hw_mode to setup
the default channel.

Change the code in function sap_select_default_oper_chan
to use the values defined in enum eCsrPhyMode when
setting up the default channel.

Change-Id: Ic0d43c43bf9b9a9a36c290d2754c30ebb40bb0e3
CRs-Fixed: 2163658
2018-01-02 07:26:38 -08:00
Arif Hussain
21ad43430c qcacld-3.0: Add null pointer check and fix buffer overflow in sap
Add null pointer validation and fix possible buffer overflow issue
in sap module.

Change-Id: I314e07a31368dd3ca854b9aeab4a0bce0402a81b
CRs-Fixed: 2162246
2017-12-22 15:26:08 -08:00
gaurank kathpalia
16a721a680 qcacld-3.0: Fix memory leak issue of ch_list in sap_get_channel_list
In the api sap_get_channel_list, list is allocated memory to store the
channel list to be sent for scan request. This api is called by
sap_goto_channel_sel which initializes scan_request.ChannelInfo.ChannelList
to channel_list, without any prior NULL check of channel_list.
Also in scan callback wlansap_scan_callback, if the state machine structure
is in disconnected state , the host returns without freeing the memory
allocated to the channel list in sap_ctx .

Fix is to free the memory allocated to the channel list
and make the sap_ctx->channellist, sap_ctx->num_of_channel
as NULL and zero respectively in both the instances.

Change-Id: Ia54287d6e77e206c717bd3c205ebe57510ea801c
CRs-Fixed: 2159489
2017-12-20 19:27:21 -08:00
Naveen Rawat
9ec27ecbf2 qcacld-3.0: Check regulatory domain before assuming ETSI channels
In function add missing check for regulatory domain before assuming
channel 120-130 to be ETSI weather channel.

Change-Id: Ief9761b5ac06a511a4132f71c0a63c796741149d
CRs-Fixed: 2150264
2017-12-08 13:28:27 -08:00
Arunk Khandavalli
96c122ff77 qcacld-3.0: Free the ies in case during the stop adapter
Reset the sap configuration ie while stopping the adapter in
the sap mode to avoid memory leak.

Change-Id: I5b47afe561430fcb3f508820bc74c28b56d28b3c
CRs-Fixed: 2123524
2017-11-28 07:26:19 -08:00
Arif Hussain
110965e97b qcacld-3.0: Remove dfs source from qcacld-3.2 project
Remove unused dfs code from qcacld-3.2 project as dfs
code moved to cmn project.

Change-Id: I21a8e5a39df9241544ef53baf42d3aa0ba434636
CRs-Fixed: 2133649
2017-11-27 16:37:22 -08:00
Krunal Soni
b5d18ae94b qcacld-3.0: (Part-2) Refactor open and close session logic in SAP module
Current open and close session APIs mainly defined in HDD, SME, and SAP
modules are not proper. They require some design changes to maintain the
consistency.

In order to achieve the goal of making symmetrical design for open and
close session logic, refactor existing API in SAP module.

CRs-Fixed: 2147969
Change-Id: Iccc5ddd2b14ec2b27e6746a211edd10ec06ad434
2017-11-22 17:41:23 -08:00
Krunal Soni
5943765644 qcacld-3.0: Rename few SAP APIs & introduce the new wrapper APIs
wlansap_open(), wlansap_close(), wlansap_start(), and wlansap_stop()
APIs are not doing what their names' suggest. Rename these APIs such
a way that they reflect the true meaning of it.

Introduce two new APIs to create and destroy the sap context.

CRs-Fixed: 2147974
Change-Id: Ie0475df480d1b19e796ddf3b639de3078a5a61a0
2017-11-22 17:41:17 -08:00
Nachiket Kukade
d915283486 qcacld-3.0: Correction in conditional logic in key operations
In set default key operation module, under SAP mode, there are
conditional checks on key type information derived from the
Station's context. Also in get/add key operations SAP or STA
context pointers are derived without knowing the device mode
first, which is incorrect.

Derive key type info from SAP context in set default key and
derive station or sap context pointers only after knowing the
device mode.

Change-Id: I09b0e6f8d6315677e7584c7c24f003daa3eca9a3
CRs-Fixed: 2127288
2017-11-15 23:36:57 -08:00
Sandeep Puligilla
20aa0c714c qcacld-3.0: Process stop bss during the channel change
Stop bss request is dropped during the
channel change request and it is causing
IPA disconnect event not to sent to IPA
module.

Process stop bss during channel change
request so that IPA disconnect is sent
to IPA module.

Change-Id: I41bb3c0d5ba9f9e9b3a655b67d126ee34c777f4d
CRs-Fixed: 2134143
2017-11-14 23:30:13 -08:00
Abhishek Singh
a394b6cd72 qcacld-3.0: Add changes to handle scan req structure change
Add support changes to fix compilation failure due to change in
scan req structure due to wide band scan changes in scan module.

Change-Id: I9ae1584fa3289fd97c5adf8708db731ae91848ab
CRs-Fixed: 2137835
2017-11-10 17:40:53 -08:00
Jeff Johnson
c1e6278e02 qcacld-3.0: Use enum QDF_OPMODE
Change "qcacmn: Rename enum tQDF_ADAPTER_MODE" (qca-wifi-host-cmn
Change-Id I20f1b6d1a0ab4b8fe6a85cefdff96a49e2f4652c) renamed enum
tQDF_ADAPTER_MODE to QDF_OPMODE. Update all references to use the
new name.

Change-Id: Ic6f663dac11a100f168b2626c7c0fbcaccbfca4f
CRs-Fixed: 2141065
2017-11-10 00:27:42 -08:00
Jeff Johnson
172237b859 qcacld-3.0: Replace typedef tCsrRoamInfo
The Linux Coding Style enumerates a few special cases where typedefs
are useful, but stresses "NEVER EVER use a typedef unless you can
clearly match one of those rules." The tCsrRoamInfo typedef does not
meet any of those criteria, and the underlying struct is already being
used in some places, so replace all remaining tCsrRoamInfo references
with a reference to the underlying struct.

Change-Id: I1da4b04ec92e176fe28b33d30ec7823828c35c8d
CRs-Fixed: 2140349
2017-11-08 19:42:51 -08:00
Jeff Johnson
e6bf719666 qcacld-3.0: Rename struct tagCsrDelStaParams
Per the Linux coding style "mixed-case names are frowned upon" so
rename struct tagCsrDelStaParams.

Change-Id: I60d6448f4bae15e604a8ea55e72a6070a6ebdfbe
CRs-Fixed: 2140346
2017-11-08 19:42:43 -08:00
lifeng
7c607dd603 qcacld-3.0: Add a timer to reduce and resume beacon interval
qcacld-2.0 to qcacld-3.0 propagation

Reduce the beacon interval just before the channel switch.
This would help in reducing the downtime on the STA side which
is waiting for beacons from the AP to resume back transmission.

Switch back the beacon_interval to its original value after
the channel switch based on the timeout. This would ensure
there are atleast some beacons sent with increased frequency.

Change-Id: I37db52713d9e2c78abbb97a7cd0274d9da35bfd2
CRs-Fixed: 1094958
2017-11-07 01:13:18 -08:00
lifeng
1c16b6b0ac qcacld-3.0: Enhance dfs beacon tx
qcacld-2.0 to qcacld-3.0 propagation

Send one action frame along with each beacon tx to reduce failure
of channel switching on sta side.

Change-Id: Idbbe1a4bcb4976101680974214fe85d9886ba7d1
CRs-Fixed: 1094958
2017-11-07 01:13:15 -08:00
Sandeep Puligilla
999ba33342 qcacld-3.0: cleanup legacy scan request processing
Cleanup legacy scan request processing
from HDD and SME api to process the same.

Change-Id: Ic160dfafcfa015eb42a226304260b1be3dddc6f0
CRs-Fixed: 2136149
2017-11-05 00:08:30 -07:00
Jeff Johnson
2ec495d3c9 qcacld-3.0: Remove eSAP_GET_WPSPBC_SESSION_EVENT
"qcacld-3.0: Remove support for eWNI_SME_GET_WPSPBC_SESSION_REQ"
(Change-Id: Ia95c4911600a45d1004b9e6148b1b04f414e2475) removed the
only function which sends eSAP_GET_WPSPBC_SESSION_EVENT. Since this
event is obsolete, remove it.

Change-Id: I9d83f66bce4ec66bc131747254a45d8b6afb5cbb
CRs-Fixed: 2134951
2017-11-02 12:59:15 -07:00
Krunal Soni
f6a367bf53 qcacld-3.0: Make SAP open()-close() & start()-stop() symmetrical
Current driver is not having wlansap_open() and wlansap_close()
symmetrical and same goes for wlansap_start() and wlansap_stop()
which may create confusion in understanding.

Create a symmetry and clean-up any unnecessary data-structure.

CRs-Fixed: 2135995
Change-Id: I2c3b96e1f2ee44c9f1158108d4b5e48495222080
2017-11-01 17:39:02 -07:00
Himanshu Agarwal
dfc4dcac67 qcacld-3.0: Code cleanup in Vendor ACS support code
1. Add modularity to the vendor acs logic
2. Add error conditions, return values and their handling.
3. Add appropriate kernel doc.

Change-Id: I5e07910d243686f77a8abbed373ea7970992b6d0
CRs-Fixed: 2100804
2017-10-30 01:39:13 -07:00
Jayachandran Sreekumaran
9f18042578 qcacld-3.0: Restrict AP switching to DFS channel
Restrict AP switching to DFS channel to enforce SCC
in AP+STA+AP case

Change-Id: I5b581142abb02a9209200ee21fb6a2e1fbc18795
CRs-Fixed: 2133126
2017-10-26 23:48:13 -07:00
Ajit Pal Singh
813383c330 qcacld-3.0: Force SCC for STA+P2PGO if gWlanMccToSccSwitchMode!=0
While selecting P2PGO channel in sap_goto_channel_sel(), force SCC
if there is STA + P2PGO concurrency AND gWlanMccToSccSwitchMode!=0,
This makes behaviour similar to STA + AP concurrency.

Change-Id: Ib80a36c22432791c5466b68b625373c58e4c8206
2017-10-25 07:40:52 -07:00
Srinivas Girigowda
b9086af019 qcacld-3.0: Fix checkpatch warnings (QUOTED_WHITESPACE_BEFORE_NEWLINE)
Fix checkpatch warnings (QUOTED_WHITESPACE_BEFORE_NEWLINE).

Change-Id: I8901c49fa48c8a9c3a9c83c6be5ff003fe0eae62
CRs-Fixed: 2126814
2017-10-24 16:40:56 -07:00
Srinivas Girigowda
ea4d806da9 qcacld-3.0: Fix checkpatch warnings (SPACING)
Fix checkpatch warnings (SPACING).

Change-Id: I966fe641b4722cc15584defc42c90921090687fb
CRs-Fixed: 2126814
2017-10-24 16:40:54 -07:00
Srinivas Girigowda
4d65ebe983 qcacld-3.0: Fix checkpatch warnings (LINE_SPACING)
Fix checkpatch warnings (LINE_SPACING).

Change-Id: Ibac537792bfd68a1e4b42eec0f5ece579fb15a20
CRs-Fixed: 2126814
2017-10-24 16:40:49 -07:00
Jayachandran Sreekumaran
9575dec599 qcacld-3.0: Allow MCC in exceptional cases
In AP + STA case allow MCC if the STA's channel
is DFS or passive or part of LTE avaoidance channel list

Change-Id: Iece69bf5d70d5e2ed9f9505a72c7a40f35d11b75
CRs-Fixed: 2127091
2017-10-23 06:13:00 -07:00