qcacld-2.0 to qcacld-3.0 propagation
Initialize spinlocks sap_update_info_lock and sta_update_info_lock which
are used during SAP and STA information update respectively. These
uninitialized spinlocks lead to crash during access due to bad magic
value of the spinlock.
Change-Id: I7d2df8337f9feed352430774907aa095affa5a69
CRs-Fixed: 1011996
Make special handling for monitor mode operation. Take care to handle
amsdu packets in which case firmware marks the last_frag in msdu_info
field. These MSDUs of AMSDU are stiched using frags_list of skb and
handed over to network stack.
Also take care to extract and update the radiotap header to head of
the packet.
Change-Id: I4ed9696175e63884b5db682a2a4c4df504a7fb20
CRs-Fixed: 963060
Correct comparison for 5G and 2G channel width. Currently the
maximum channel width test in cds_set_5g_channel_pararms() or
cds_set_2g_channel_params is incorrect. Set input channel width to
80p80 if input width is more than equal to maximum channel width.
Change-Id: I5a418c15474b355ea3c62c2de45052908f28113c
CRs-Fixed: 1009720
Add new user country XA to regulatory tables. This is an 'engineered'
country for Japan that has channels 5150-5230 marked as passive.
Change-Id: I6c582bc0635ecae2c37b98d761f72f222c408d2f
CRS-Fixed: 1007217
Ensure that the wait for Nss update happens only in the case of
beaconing modes. Nss update request is done only in the case of
beaconing modes. As part of Nss update callback, check for Nss
update is being done for all modes due to which subsequent hardware
mode change is not getting initiated. Fix the same by ensuring that
the check for Nss update happens only in the case of beaconing
modes.
Change-Id: Icf975661236dba54d2948484445b0509e15f1da0
CRs-Fixed: 1011483
There is a race condition between hdd_disconnect_handler and
cds_pkt_proto_trace_close while trying to update the trace_buffer.
Fix race condition by calling cds_pkt_proto_trace_deinit (formerly
cds_pkt_proto_trace_close) at the end of cds_close, after all the threads
have been torn down and other modules have been shut. Similarly,
call cds_pkt_proto_trace_init at the begining of cds_open, so it gets
initialized before any of the threads are up or any modules have been
initialized.
Change-Id: If9e2d6a360d814b7f1b0c92789dc0fd3fe3d974b
CRs-Fixed: 1009162
qcacld-2.0 to qcacld-3.0 propagation
Change to initiate BUG report in case of fatal event
Add INI support to Enable/Disable it.
The fatal event handled are as below:
- Roaming failed after successful preauth.
- SME command timeout.
- PE defer queue is full.
- CDS run out of message wrapper.
- HDD level wait for event timeout.
CRs-Fixed: 912560
Change-Id: I64dff8b7d0836340ce3bec5f5985d1919b600c23
qcacld-2.0 to qcacld-3.0 propagation
Add diag event for EVENT_WLAN_TDLS_TX_RX_MGMT. This event contains
TDLS action frame type, subtype and if its rx or tx.
Change-Id: I6ec744518b7a391e4511c503cb858d532ef11322
CRs-Fixed: 934447
Per regulatory data, the regdomain pair mapping for
CTRY_JAPAN14 is MKK5_MKKA2 and not MKK5_MKKA. Therefore
correct the same.
Change-Id: Ica36574c2111753e4e23e2cd30d438a4613eefd8
CRs-Fixed: 1000056
Modify the set hardware mode command sequence during channel switch
in the case of SAP/P2P-GO and STA/P2P-CLI as per the latest FW
requirements. This is primarily to accommodate the time take for
calibration during hardware mode change which could lead to
momentary data stalls.
The new sequence is as follows:
1. Send (E)CSA
2. Do vdev restart/vdev up
3. For DBS downgrade:
a. PM will initiate HW mode change to DBS right away
4. For single MAC upgrade:
a. Opportunistic timer is started, PM will check if MCC
upgrade can be done on timer expiry
The old sequence is as follows:
For MCC upgrade:
1. Send (E)CSA
2. Opportunistic timer is started
3. vdev restart is initiated on the new channel
4. PM will check if MCC upgrade can be done on timer expiry
For single mac upgrade:
1. Send (E)CSA
2. PM will initiate HW mode change to DBS right away
3. vdev restart is initiated on the new channel
Change-Id: I4bce2ee176cae43b6a46c47216ed7ab47a82a54c
CRs-Fixed: 1006992
Replace the obsolete WMI command WMI_SOC_SET_HW_MODE_CMDID with
WMI_PDEV_SET_HW_MODE_CMDID and event WMI_SOC_SET_HW_MODE_RESP_EVENTID
with WMI_PDEV_SET_HW_MODE_RESP_EVENTID respectively. These new WMI
commands and events additionally carry the pdev id and all mac id
references are replaced with pdev id.
Change-Id: If2a3f93dcd1947eedce8d4eac8ed936166f7e078
CRs-Fixed: 989502
Replace the obsolete WMI command WMI_SOC_SET_PCL_CMDID with
WMI_PDEV_SET_PCL_CMDID. WMI_PDEV_SET_PCL_CMDID carries the weightage
for all the channels (preferred and non-preferred) in the same order
and length as that of the command WMI_SCAN_CHAN_LIST_CMDID. This is
in contrast to the command WMI_SOC_SET_PCL_CMDID which carries only
the preferred channel list.
Change-Id: I040f4307491d3242d2e9409dbbe8005c4b307bf5
CRs-Fixed: 989502
During peer unmap handler, while the peer is being deleted, there is a
possible race condition if the OL Rx thread is processing RX packets
and accesses the peer structure after its contents have been nulled.
Remove race condition by -
* Flush all RX packets in ol_txrx_peer_detach function which happens
before peer unmap event is received from firmware
* Avoid use of peer data structures (for example peer->local_id)
outside of peer->info_lock in ol_rx_data_cb function. Use cached
local copies of peer data structures instead
Crash signature due to the race condition:
wlan: [0:E :CDF] TXRX: Deleting peer ffffffc012fd13c0
(02:a0:c6:81:f8:c0)
Unable to handle kernel paging request at virtual address 400000001
pgd = ffffffc0018b4000
[400000001] *pgd=0000000000000000, *pud=0000000000000000
Internal error: Oops: 96000005 [#1] PREEMPT SMP
Modules linked in: wlan(O) [last unloaded: wlan]
CPU: 1 PID: 29506 Comm: cds_ol_rx_threa Tainted: G W O
3.18.20-g5222edf-13780-g2219ed2 #1
Hardware name: Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8996 CD (DT)
task: ffffffc09350d400 ti: ffffffc0556a4000 task.ti: ffffffc0556a4000
PC is at hdd_rx_packet_cbk+0x84/0x224 [wlan]
LR is at hdd_rx_packet_cbk+0x48/0x224 [wlan]
pc : [<ffffffbffdd55b5c>] lr : [<ffffffbffdd55b20>] pstate: 80000145
Change-Id: I4b32313024ec214f33dcdcfc401aadfa8af9d692
CRs-Fixed: 1002081
Provide correct cds concurrency action when M2M limitation enabled and
channel switch is happening from 5G to 2G band.
Change-Id: I2e7c82831afa6a19d7716980e95951cbfc60457d
CRs-Fixed: 997785
When there is a VHT160 or VHT80+80 connection present disallow
concurrency as no other connection is supported in VHT160/80+80
mode.
Change-Id: I6ec6fe3e7883cef34d141ee78311c1d8a0966208
CRs-Fixed: 996928
qcacld-2.0 to qcacld-3.0 propagation
While suspending threads suspend complete event is set before
resume wait event is initialized.
In case resume is followed by suspend there might arise a condition
where resume wait event is set even before its initialization.
Thus after initializing the wait event thread will keep on waiting
on the event and thus get stuck.
To avoid this initialize the thread resume wait event before
setting the suspend event.
Change-Id: Iaffacd23f363f386fbaef4de066784cfd4d9e139
CRs-Fixed: 972287
Provide support for STA+SAP DFS concurrency feature
Here is the brief description on the changes,
1) if STA came up first on DFS channel and SAP is coming up second
then as per concurrency rule SAP can't come up on DFS channel,
it can come up on 5G-non-dfs or 2G band.
2) if SAP came up first on DFS channel and STA is coming up second
then as per concurrency rule SAP has to move to non-dfs channel
by using channel switch announcement IE. Once SAP moves to
non-dfs channel then and then STA can continue on connection.
3) if there is any STA connection alive then SAP/GO's PCL shouldn't
contain any DFS channel in the list.
Change-Id: Iba1a64e66fbf5182152e9d2e15041923b8528c31
CRs-Fixed: 992939
Add API to CDS to add bonded channel parameters. Given an
operating channel and channel width, the API would verify and
populate the center frequencies.
Change-Id: Ib2c5029cda567308210b028b628d96419e3fd05c
CRs-Fixed: 988355
Use the pcl channel list to do random channel selection when the
radar is detected.
Change-Id: I286bf447a398bf1d9a7a1493ac4bbfd9847de148
CRs-Fixed: 988325
Currently channel width has different enum values in
different modules. Move the channel width enum definition
to CDS to maintain single channel width enum value in
the driver
Change-Id: I6a46d0c02546263080a15a3ec7c52486fc51e98e
CRs-Fixed: 983914
Add kernel documentation for regdomain data structures. Also
rename some of the data structures to better names.
Change-Id: Iae26079ae8a7f06e2670594694ae36c2c2a0a524
CRs-Fixed: 961806
Correct the definitions from country code to regulatory domains
mappings. Add the missing countries to regulatory domain mappings.
Also streamline the definitions of regulatory domain pairs and
regulatory domains.
Change-Id: I0ff5a13425c6b5d4671864745f6b44a0d16b78aa
CRs-Fixed: 961806
Data structures defined in cds_regdomain_common.h are similar
to those defined in cds_regdomain.h. Therefore remove the file.
Change-Id: I929b03058e9441e4a652314789cf91dbd94d0329
CRs-Fixed: 961806
Instead of using two different enums for setting adapter mode,
combined them to make only one set of enum.
Change-Id: Iaa945f64dd9f90f6abc0b1716b176fce0971ba71
CRs-Fixed: 985273
Instead of using two different enums for setting adapter mode,
combined them to make only one set of enum.
Change-Id: Ie41244becec39fe1f5f24a721f5b24e137e7fd26
CRs-Fixed: 985273
Current connection update timeout value for DBS concurrency case
is 500ms, which is not long enough as there are other WMI messages
need to be processed by master thread. Increase the timeout value
to 1000ms to ensure the set hardware mode WMI message has enough
time to be processed
Change-Id: Idecf2e830a7a37258787eb4f8c5f117cbe2a825b
CRs-fixed: 983174
Send channel switch request instead of performing SAP restart when
doing a MCC to SCC switch. This is controlled using the existing INI
item 'gWlanMccToSccSwitchMode'. The new value of '3' will perform
this channel change by sending (E)/CSA whereas the old value of '2'
can still be used to do a channel change by doing SAP restart
Change-Id: I79e7317219503de0a9957940f3cf7a4e91c7a521
CRs-Fixed: 986202
Enable feature flag FEATURE_WLAN_MCC_TO_SCC_SWITCH in the Kbuild to
make use of the MCC to SCC switch feature. The resulting errors in
compilation are fixed along with some enhancement in the debug logs
in this feature path
Change-Id: I0ddb2f371c28ade6d8fc9ea12ba104a99394827f
CRs-Fixed: 986079
Remove obsolete regdomain data structures. Also remove the obsolete
fields from REG_DOMAIN and REG_DMN_PAIR_MAPPING data structures.
Change-Id: I1ff906571dfadf9cf6a4dc963d8eef62acc5f6b5
CRs-Fixed: 961806
Firmware does not require the sub-ctl codes from the host. Therefore,
remove the calculation of sub-ctl codes from the host APIs. Also
remove the associated data structures.
Change-Id: Ib5d5f074b45f2dae2bb9a7c172ee7f8750ad5355
CRs-Fixed: 961806
Define the correct country codes per the data published by the
regulatory compliance team.
Change-Id: I2474acb2657ba1e4a0f62aef013df296aebfcb53
CRs-Fixed: 961806
Avoid message handler of netlink APIs to be OS agnostic. Retain the
message handler to get the concurrency matrix in HDD.
Change-Id: Ieb121512e3d8ae15678da46ed8425c07fd003f69
CRs-Fixed: 946161
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
Re-arrange core regulatory code between HDD and CDS
layers. Move the OS dependent code to HDD.
Change-Id: I8ac26a48d0e8d613b2f6c23fd764e5cf94365c39
CRs-Fixed: 856727
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
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
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
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
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
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
Current code is using seperate change interface for IBSS and
STA/P2PCLI.
Fix the API such that IBSS/STA/P2PCLI all can use same API.
Change-Id: I7a1d9fa3ef42091fcb7f71d95b604e3dceb8da50
CRs-Fixed: 973626
Update the policy manager table during channel switch in case of
STA/CLI/SAP/P2P-GO mode. The vdev (re)start response carries the
updated vdev parameters such as the new MAC to which the vdev
connection moved to etc.
Change-Id: I55a56acdba8234e09d1439698b2b13751d4e9b2d
CRs-Fixed: 970794