Commit Graph

762 Commits

Author SHA1 Message Date
Sandeep Puligilla
e087566368 qcacld-3.0: UMAC: Add support for 2.4Ghz HT40 STA
- Add support for 2.4Ghz HT40 STA.
- Add HT40 OBSS scan start and stop operation.
- Add support for extraction of OBSS scan paramters from beacon
  and probe response.

Change-Id: I58e8d72b8ee922f710af0474ed3efd0438fff3a7
CRs-Fixed: 947086
2016-04-13 21:51:26 -07:00
Tushnim Bhattacharyya
15596cf5c1 qcacld-3.0: Fix compilation issues with ocb functions
OCB header files shouldn't be under FEATURE_WLAN_CH_AVOID. During cld2.0 to
cld3.0 propagation ocb header file inclusion mistakenly got inside above
featurization. Relocate it outside the FEATURE_WLAN_CH_AVOID conditional.

Change-Id: Ib1cbc179dc0f5b769e18a4d7d8268081a25ede3f
CRs-Fixed: 975731
2016-04-13 21:51:25 -07:00
Kiran Kumar Lokere
5899f43818 qcacld-3.0: Remove obsolete StaRateMode related code
Remove obsolete StaRateMode related functionality.

Change-Id: Id051d9081a68adfa8e32dd7960caff06fd9b677a
CRs-Fixed: 980689
2016-04-13 21:51:25 -07:00
Kiran Kumar Lokere
9a733a7fcc qcacld-3.0: Remove WLAN_FEATURE_11AC feature flag
Remove WLAN_FEATURE_11AC feature flag

Change-Id: I8c521502a44f2e8a0647843cd7a972497e900c17
CRs-Fixed: 980682
2016-04-13 21:51:25 -07:00
Krishna Kumaar Natarajan
047e7d590e qcacld-3.0: Redefine dfs data structure to fix prealloc size concern
Redefine dfs filter type to avoid prealloc problem by making one
large chunk into multiple smaller chunks.

With current data structure, dfs attach was requesting huge chunk
of memory from the heap which results in failure. This change set
fixes the issue by modifying the data structure so that one
large chunk is made as multiple smaller chunks.

Change-Id: If944747de63a68d55a83b8595d0a07dd05f53dbe
CRs-Fixed: 975903
2016-04-13 21:51:25 -07:00
Krishna Kumaar Natarajan
59f546c6ac qcacld-3.0: Fix incorrect flags setting in peer assoc command
qcacld-2.0 to qcacld-3.0 propagation.

Fix incorrect flag setting while sending peer assoc command.

This change set will add a check before setting 40MHZ support bit
and shortGI support bit in the peer flags. If the peer is not HT
capable, these flags should not be set.

Change-Id: I89d43bd86b97637b291dc871aaf7e2a3269df853
CRs-Fixed: 974242
2016-04-13 21:51:25 -07:00
Yue Ma
da39642b24 qcacld-3.0: Fix compilation bug for LPASS feature
If CONFIG_WLAN_FEATURE_LPSS flag is not enabled, there will be
compilation errors due to missing definitions. Fix them by moving
inline funtions to the corresponding header file.

Change-Id: I90b55daeb0068b2ab40fbb27d650a5382681705c
CRs-fixed: 979523
2016-04-13 21:51:25 -07:00
Yue Ma
b8f2bb50a4 qcacld-3.0: Enable some features depending on ICNSS platform driver
Currently some features depending on platform driver are only enabled
when CNSS driver is enabled. Enable these features as well when ICNSS
driver is enabled.

Change-Id: I9c5296e888f81fcd40101f87d289f60f40f299e7
CRs-fixed: 979523
2016-04-13 21:51:25 -07:00
Amar Singhal
388b3f01f0 qcacld-3.0: Make regulatory code more readable
Re-write part of regulatory code to make more readable.
Rename variables to more intuitive names. Also simplify the
logic.

Change-Id: I4ab896d18a6b5f6e2f9c84884268e2af2077f74b
CRs-Fixed: 856727
2016-04-13 21:51:25 -07:00
Amar Singhal
b8d4f1575c qcacld-3.0: Change channel nomenclature
Change channel nomenclature to more appropriate names.

Change-Id: If7fcd832a35563896534bab425ca05b528e1de93
CRs-Fixed: 856727
2016-04-13 21:51:25 -07:00
Amar Singhal
7ccdc4ff47 qcacld-3.0: Remove 40mhz bonded channel from driver
40 mhz channel array is redundant and does not give the
correct channel bonding information. Therefore remove
these channels, bonding array, and its associated usage.

Change-Id: I913fb97cdc913b1a027d21b0df526dfd5cd5902f
CRs-Fixed: 856727
2016-04-13 21:51:25 -07:00
Amar Singhal
e4f28eedfd qcacld-3.0: Re-arrange regulatory code.
Re-arrange core regulatory code between HDD and CDS
layers. Move the OS dependent code to HDD.

Change-Id: I8ac26a48d0e8d613b2f6c23fd764e5cf94365c39
CRs-Fixed: 856727
2016-04-13 21:51:25 -07:00
Rajeev Kumar
d004abc6f3 qcacld-3.0: Fix compilation error caused by hdd_indicate_mgmt_frame
hdd_indicate_mgmt_frame is defined under CONFIG_CNSS feature flag
which is not defined for MSM8998 SNOC target. Fix this compilation
error by taking out definition of hdd_indicate_mgmt_frame from
CONFIG_CNSS feature flag.

Change-Id: I4b2de5d947ff4fdd21032d6b7e3d5fe4e9eb3eec
CRs-Fixed: 978800
2016-04-13 21:51:25 -07:00
Nirav Shah
36a87bfb6e qcacld-3.0: Use sta id to derive peer in ol_rx_data_cb
Derive peer from sta id in ol_rx_data_cb to
make sure that peer is still valid before
using peer to avoid NULL pointer dereference

Change-Id: I8f9219d4c6ffbfb207385b08bc704cc0f86a1e1b
CRs-Fixed: 962949
2016-04-13 21:51:25 -07:00
Govind Singh
a72a4e325d Release 5.1.0.4G
Rebase of 5.0.0.164 onto 5.1.0.3G

Change-Id: Ia080faea192c9da47bdf492535f2a42293a5ec17
CRs-Fixed: 688141
2016-04-13 21:51:25 -07:00
Manjunathappa Prakash
7b67e626c5 qcacld-3.0: During load/unload ignore pdev suspend ack timeout
qcacld-2.0 to qcacld-3.0 propagation

Ignore the ack timeout in case of load/unload, as FW is anyways going to
get reset. This handles the CDF_BUG assertion when FW crashed during
driver unload and wma_suspend_target fails to receive ACK for pdev
suspend.

Change-Id: I0883c5161c6db18cf7af2b0c0ca23573ecd985ba
CRs-Fixed: 911696
2016-04-13 21:51:25 -07:00
Gupta, Kapil
c68ad460fc qcacld-3.0: Add support for dense roam params
qcacld-2.0 to qcacld-3.0 propagation

In High dense environment roaming should be triggered early
at dense RSSI threshold which provide better throughput result.
Add support for dense roaming parameters to read from ini file
and send to FW with other roaming parameters

CRs-Fixed: 953579
Change-Id: Ia63bfdd1248b4507d988b019f07164a7c75566af
2016-04-13 21:51:24 -07:00
Kiran Kumar Lokere
40a9d8da1f qcacld-3.0: Remove the PS timer check in suspend req
FW can enter into suspend mode even if the BMPS is not enabled.
Hence the auto PS timer check is not required in suspend request.

Change-Id: Ic2b774cea10516ea0b23141922ba1e16aa33f395
CRs-Fixed: 974918
2016-04-13 21:51:24 -07:00
Ahmad Kholaif
30a966ecd7 qcacld-3.0: CL 1449067 update fw common interface files
Increase WHAL_DBG_CMD_RESULT_MAXCNT from 10 --> 11 (affects Helium only).

Change-Id: Id03083d3e791f7f5d3036b458e4a228765170553
CRs-fixed: 865207
2016-04-13 21:51:24 -07:00
Krishna Kumaar Natarajan
0379b59f95 qcacld-3.0: Fix memory leak in dfs module
Fix memory leak in dfs module by removing check for the board id.

During dfs_attach dfs_hw_bd_id was zero, so memory was allocated for
pulses_ext_seg but in wma registration process correct board was
updated. In dfs_detach while freeing the memory we check for the
board id and we leaked the memory for pulses_ext_seg.

Change-Id: Ica9719cc4cd67e895fad850c59c753d39473f46d
CRs-Fixed: 974299
2016-04-13 21:51:24 -07:00
Krishna Kumaar Natarajan
f1d6deee43 qcacld-3.0: Fix the timeout handler to handle add bss timeout
Fix the timeout handler to handle add bss request timeout.

wma_hold_req_timer is not defined to handle WMA_ADD_BSS_REQ. When
WMA_ADD_BSS_REQ times out, no response is sent back to SME which
results in SME command queue stuck. This change set will enable
wma_hold_req_timer to handle add bss request timeout.

Change-Id: I55ec44acafc3af717458134340075b55bca7cddf
CRs-Fixed: 975400
2016-04-13 21:51:24 -07:00
Krishna Kumaar Natarajan
bc7e494559 qcacld-3.0: Fix error in populating oem data capabilities
Fix the error in populating oem data capabilities by fixing
incorrect conditional logic.

populate_oem_data_cap API returns zero on success and that
was misinterpreted as failure in the caller. Caller returns
without doing proper assignment.

Change-Id: I579106cb62c08622e8e5ab933747faf671a1d5cd
CRs-Fixed: 975352
2016-04-13 21:51:24 -07:00
Ryan Hsu
3a0f5230d6 qcacld-3.0: Update rate_info_flag for Kernel upgrade
Commit: b51f3be ("cfg80211: change bandwidth reporting to explicit field")

Above commit clean up the rate flag and bandwidth info and is merged since
Kernel 4.0.

Remove bandwidth info from rate_info flag, and use a separate bw field
instead.

Change-Id: I655ed919f1069cc04ed71ee1f3d457e228734d33
CRs-fixed: 966065
2016-04-13 21:51:24 -07:00
Ryan Hsu
6bf33b327c qcacld-3.0: Update cfg80211_sched_scan_request for Kernel upgrade
Commit: 3b06d27 ("cfg80211: Add multiple scan plans for scheduled scan")

Above commit introduces the scan_plan to include the interval parameters,
to support configuring multiple sched scan, and is merged since Kernel 4.4.

Change-Id: I9e232cfd6f82408fb2e21bef905b6e044951089d
CRs-fixed: 966054
2016-04-13 21:51:24 -07:00
Ryan Hsu
a335c16780 qcacld-3.0: Update cfg80211_disconnected interface for Kernel update
Commit: 80279fb ("cfg80211: properly send NL80211_ATTR_DISCONNECTED_BY_AP
in disconnect")

Above commit is merged in Kernel 4.2, it introduces the new parameter
to indicate if the disconnect event is generated locally.

Change-Id: I016df3b400f5f4b8447676882df79fab6915a8f5
CRs-fixed: 966069
2016-04-13 21:51:24 -07:00
Ryan Hsu
8ecb0fa07a qcacld-3.0: Clean up cfg80211 del_station for Kernel upgrade
Commit: 89c771e ("cfg80211: Convert del_station() callback to
use a param struct")
Commit: 9885686 ("cfg80211: Specify frame and reason code for
NL80211_CMD_DEL_STATION")

These two commits have been merged in Kernel 3.19.

Add a kernel version macro to support this.
And refactor the inclusion of CFG80211_DEL_STA_V2 by adding a
helper function to clean it up, that way we can keep the flag
only in wlan_hdd_cfg80211.h/c as this is the cfg80211 interface
related changes.

Change-Id: I811065b7fa1cf2aee68cfe63c5cf78c2270e5af7
CRs-fixed: 963651
2016-04-13 21:51:24 -07:00
Ryan Hsu
e7bc3a73f6 qcacld-3.0: Clean up enum station_info_flags for Kernel upgrade
Commit: 319090bf ("cfg80211: remove enum station_info_flags")

The station_info_flags is removed from cfg80211.h since Kernel 4.0.
Since they're duplicate information that's already in nl80211 attributes.

One more small change needed:
  * remove STATION_INFO_ASSOC_REQ_IES, nl80211 interface use the length
    (assoc_req_ies_len) to check the existence

Change-Id: I9ed324c097ac300c7233f439d71540176744e425
CRs-fixed: 961351
2016-04-13 21:51:24 -07:00
Naveen Rawat
5b34c95e16 qcacld-3.0: Do not request ROC if already on correct channel
This is qcacld-2.0 to qcacld-3.0 propagation

If cfg80211_mgmt_tx_params.offchan is set, driver need not send ROC
if device is already on correct channel. Check current home channel
of associated adapter and if it is same as target channel requested
skip ROC request and directly send frame over the air.

Change-Id: Ib13a885437a4349702e1706b3a466af262813f8a
CRs-Fixed: 921117
2016-04-13 21:51:24 -07:00
Naveen Rawat
2546093dca qcacld-3.0: Fix memory leak for lim preauth timers at driver unload
This is qcacld-2.0 to qcacld-3.0 propagation

Fix memory leak at driver unload by freeing memory for lim preauth
timers.

Change-Id: I7be177e6c475a8f8fdc4cc7d2744e34a4bf5dbf5
CRs-Fixed: 960617
2016-04-13 21:51:24 -07:00
Krunal Soni
99752a11b3 qcacld-3.0: Splits function lim_process_assoc_req_frame
Splits function lim_process_assoc_req_frame into smaller sub functions

Change-Id: Iaf21b0d157e910b740ac3288039465bac43507c4
CRs-Fixed: 824222
2016-04-13 21:51:24 -07:00
Krunal Soni
e353194792 qcacld-3.0: Add support for changing FTM capability during runtime
Add VENDOR subcmd to support changing of Fine Time Measurement
capability
dynamically. This command can be used by user space application to
change
FTM capability. FTM capability set by user space is intersected with
capability set by firmware to compute new capability value.

Change-Id: I5f3a57e66f2c6a9f3fa8acc7e9da8cb23cb766e3
CRs-Fixed: 968594
2016-04-13 21:51:24 -07:00
Naveen Rawat
6186ff9600 qcacld-3.0: Reindent lim_fill_assoc_ind_wapi_info
This patch fixes multi-level indentation for function
lim_fill_assoc_ind_wapi_info()

Change-Id: I438309425a82bb76c4c31d463b6cead7c661e27b
CRs-Fixed: 824222
2016-04-13 21:51:24 -07:00
Naveen Rawat
e6ddcaab1a qcacld-3.0: Proper mem allocation for lim, pre auth timers
This is qcacld-2.0 to qcacld-3.0 propagation.

Fix mem alloc for pre auth timer and add error handling for limInitMlm.

Currently number of preauth timer is taken as cfg param and memory is
allocated in bulk. In case the memory allocation fails, no error is
returned from limInitMlm, which causes undefined behavior. Also preauth
timers do not need contiguous memory allocation, so allocate an array of
pointers instead of single chunk for pre auth timers.

Change-Id: I92677aa9bb7970034630f4c6487fa9d196ccfb4c
CRs-Fixed: 955557
2016-04-13 21:51:24 -07:00
Sandeep Puligilla
fade9b7887 qcacld3.0: Remove condition to start BSS in HT20
SAP is always coming up in HT20 on 2.4Ghz band even though
hostapd configures HT40 mode.

Remove condition to start BSS only in HT20 for
2.4Ghz channels.

Change-Id: I1e4712ee49bbb079c81a2193e2130d2c846c865f
CRs-Fixed: 970396
2016-04-13 21:51:24 -07:00
Sandeep Puligilla
e390be5cda qcacld-3.0: Remove pending scans from HDD scan queue
Pending scan entries are not cleared during SSR
execution which is causing scan failure after SSR
recovery.

Remove all pendings scans from global scan queue and
send scan complete callback to NL with abort flag set.

Change-Id: Iebffcf56ace59a3ded4df8141caf639c55f0b278
CRs-Fixed: 966580
2016-04-13 21:51:24 -07:00
Jeff Johnson
1f61b61df4 qcacld-3.0: Use ENTER_DEV() in cfg80211 vendor commands
The ENTER_DEV macro was introduced to log both the function and device
name when a function is entered.  Update all cfg80211 vendor command
handlers to use this macro.

Change-Id: I3bb7112c6e5967577fa0f891e0b37ad7412bd2fc
CRs-Fixed: 975826
2016-04-13 21:51:24 -07:00
Jeff Johnson
6ee91eeeb3 qcacld-3.0: Use ENTER_DEV() in STA private WEXT ioctls
The ENTER_DEV macro was introduced to log both the function and device
name when a function is entered.  Update all STA-mode private
wireless extensions ioctl handlers to use this macro.

Change-Id: I5a69d2a92c82bcf7931350e12ee7610748f5e3ab
CRs-Fixed: 975414
2016-04-13 21:51:24 -07:00
Jeff Johnson
0205031ea9 qcacld-3.0: Use ENTER_DEV() in HostAP private WEXT ioctls
The ENTER_DEV macro was introduced to log both the function and device
name when a function is entered.  Update all HostAP-mode private
wireless extensions ioctl handlers to use this macro.

Change-Id: I746788be7dd9a0d5317b483908adde22d96413dc
CRs-Fixed: 975414
2016-04-13 21:51:23 -07:00
Jeff Johnson
651f9f2758 qcacld-3.0: Use ENTER_DEV() in HostAP standard WEXT ioctls
The ENTER_DEV macro was introduced to log both the function and device
name when a function is entered.  Update all HostAP-mode standard
wireless extensions ioctl handlers to use this macro.

Change-Id: I5cc2ee8c6fbde2778d4153a0dc3d5e509a3bb647
CRs-Fixed: 975414
2016-04-13 21:51:23 -07:00
Jeff Johnson
b25dcb1704 qcacld-3.0: Use ENTER_DEV() in STA standard WEXT ioctls
The ENTER_DEV macro was introduced to log both the function and device
name when a function is entered.  Update all STA-mode standard
wireless extensions ioctl handlers to use this macro.

Change-Id: Ia76fb5a471e4e3f03a1b4cd53c95227e6b7a815c
CRs-Fixed: 975414
2016-04-13 21:51:23 -07:00
Jeff Johnson
3c3994a8be qcacld-3.0: Use ENTER_DEV() in control plane netdev ops
The ENTER_DEV macro was introduced to log both the function and device
name when a function is entered.  Update all control plane netdev
methods to use this macro.

Change-Id: Id73214481616eb34cc40f125ea7fb756b3097dc7
CRs-Fixed: 938146
2016-04-13 21:51:23 -07:00
Jeff Johnson
a6177c31b6 qcacld-3.0: Convert wlan_hdd_trace.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_trace.c to use the unified set of APIs.

Change-Id: I41f40000031a6a7203bebfdd4fcf11cc0673a973
CRs-Fixed: 959683
2016-04-13 21:51:23 -07:00
Jeff Johnson
398b3d640f qcacld-3.0: Introduce ENTER_DEV() logging macro
Currently HDD defines an ENTER() macro which is used to log entry into
certain HDD functions.  Many of the functions HDD registers with the
kernel are called with either a netdev or wdev parameter.  When
logging entry into those functions it would be beneficial to log the
name of the netdev so that in subsequent log analysis we not only know
which functions were called but also know which device was being used.
Introduce a new ENTER_DEV() macro for this purpose which will log both
the function name and the device name.

Change-Id: I32ef2bcc958b8148e6d439b30b21102be144a327
CRs-Fixed: 938146
2016-04-13 21:51:23 -07:00
Chandrasekaran, Manishekar
ce2172e9ed qcacld-3.0: Fix reason code used during Nss update request
Fix the reason code used during Nss update request. If
there is MCC upgrade or DBS downgrade, the hw mode change
request internally send the Nss update request. But, the
current implementation uses the same fixed reason code
during Nss update request and due to this on receiving the
hw mode change response, the expected callback function is
not getting invoked. Fix this by passing the right reason
code during Nss update request.

CRs-Fixed: 978663
Change-Id: I706cb9a86d66d8601ec87f560459604e562f6037
2016-04-13 21:51:23 -07:00
Chandrasekaran, Manishekar
2859de43af qcacld-3.0: Sanitize the session id before issuing scan
Ensure that the session id is sanitized before issuing
the scan request. During the transient stages of a new
interface when no session exists for that interface and
if a scan is received for that particular interface, it
would result in scan with invalid vdev id. Validate the
session id to avoid the same.

Change-Id: Ib22262493a141491d1d86ae682b14113d303685d
CRs-Fixed: 973773
2016-04-13 21:51:23 -07:00
Chandrasekaran, Manishekar
41ab6b0036 qcacld-3.0: Fix incorrect value of Rx Nss in operating mode field
Fix the incorrect value of receive spatial streams added for use
in operating mode field. The Operating Mode field is present in
the Operating Mode Notification frame and Operating Mode
Notification element. These are used to notify STAs that the
transmitting STA is changing its operating channel width, the
maximum number of spatial streams it can receive, or both.

As per the 802.11ac spec:
- If the Rx NSS Type subfield is 0, indicates the maximum number
of spatial streams that the STA can receive.
- If the Rx NSS Type subfield is 1, indicates the maximum number of
spatial streams that the STA can receive as a beamformee in an SU
PPDU using a beamforming steering matrix derived from a VHT
Compressed Beamforming report with Feedback Type subfield
indicating MU in the corresponding VHT Compressed Beamforming
frame sent by the STA.

Set to 0 for Nss = 1
Set to 1 for Nss = 2
...
Set to 7 for Nss = 8

Change-Id: I60cb7259df3986c0356666a357b8a4ef575b7ca4
CRs-Fixed: 973411
2016-04-13 21:51:23 -07:00
Krunal Soni
ee57247afe qcacld-3.0: Fix follow-up comments for csa changes in STA/CLI case
Move cdf/cds module related operation from
lim_handle_hw_mode_change_on_csa to cdf_handle_hw_mode_change_on_csa
to keep majority of cdf/cds operation in one place.

Change-Id: I5af9ee941f8430be49cf2e467f9eac77dc09dde4
CRs-Fixed: 972184
2016-04-13 21:51:23 -07:00
Chandrasekaran, Manishekar
5c19dc5f8e qcacld-3.0: Set hw mode during channel switch in STA/P2P-CLI case
Set the hw mode, if needed, during channel switch in STA and
P2P-CLI scenario. The STA/P2P-CLI on receiving the channel change
event may need to do a hw mode change to get the best out of the
hw capabilities.

e.g.1, In a STA+SAP concurrency, the STA and SAP are doing SCC on
channel 6. When the STA interface receives a channel event for
channel 36, it is better the driver moves to a DBS scenario.

e.g.2, In a STA+SAP concurrency, the STA is on channel 6 and the
SAP is on channel 36. When the STA interface receives a channel
event for channel 36, it is better the driver moves from a DBS
scenario to a SCC scenario.

For MCC upgrade, the following steps are taken
1. Opportunistic timer is started
2. vdev restart is initiated on the new channel
3. PM will check if MCC upgrade can be done on timer expiry

For DBS downgrade, the following steps are taken
1. PM will initiate HW mode change to DBS right away
2. vdev restart is initiated on the new channel

Change-Id: I202842bf28c3117e8cc91954cdfd3b39a0062f4e
CRs-Fixed: 972184
2016-04-13 21:51:23 -07:00
Satish Singh
107e6a36c1 Release 5.1.0.3G
Rebase of 5.0.0.163 onto 5.1.0.2G

Change-Id: If244ee2a2bc26a8b4387c89d7bce965c00497630
CRs-Fixed: 688141
2016-04-13 21:51:23 -07:00
Houston Hoffman
c7c72a8cc9 qcacld-3.0: Prevent runtime suspend when recovery initiated
qcacld-2.0 to qcacld-3.0 propagation

When self recovery initiated, CRASH_INJECT command is sent to
firmware. If firmware crash doesn't reach the host in time then
RuntimePM may kick in and try to suspend the PCIe link. At this
time, firmware might already been crashed just that host missed
the interrupt. Add the logic to prevent the Runtime suspend when
initiating the recovery so that host driver doesn't attempt the
suspend which may not go through and cause stability issues.

Change-Id: Ie8d5fc6aa08e4864fa5f03119c25037f5aeb5cec
CRs-fixed: 924538
2016-04-13 21:51:23 -07:00