Commit Graph

1555 Commits

Author SHA1 Message Date
Tiger Yu
dc29b1f9d7 qcacmn: Limit logging when handling tx comp status if vdev is NULL
Use dp_info_rl instead of QDF_TRACE when handling tx completion status to
avoid excessive logging when vdev is destroyed in the another thread.

Change-Id: I1044c6d747ba1c7036664fe0265ec4855b7b4c47
CRs-Fixed: 2591486
2019-12-25 01:51:21 -08:00
Kai Chen
011b6c668b qcacmn: add block ack and ack frame for tx capture feature
Block ack and ack frame is composed and sent to up
layer after a unicast packet to AP is received for
tx capture feature.

Change-Id: I4b6bb35fa093432539d15d09a93f85a8ec700b34
2019-12-23 05:50:44 -08:00
Ruben Columbus
1bec34c1e4 qcacmn: add ppdu_desc to cdp_tx_indication_info
ppdu_desc contains more information that is relevant to radiotap.

Change-Id: Ie2d0d53027958edf0a1032b270b7a8339b849924
2019-12-23 01:20:33 -08:00
nobelj
0e00776f45 qcacmn: support flush tlv in tx capture
update ppdu desc member based on flush tlv field
to support tx capture feature.

Change-Id: I9c5bc3a1ccce935d6be63556c025997d01fb6d4b
2019-12-22 23:51:34 -08:00
nobelj
182938a5b0 qcacmn: Modify timestamp to support 64 bits
modify Tx timestamp to support 64 bits value

Change-Id: I1c032b2e07a5bae94ec3a58d33dd9340f95a622e
2019-12-22 23:51:19 -08:00
nobelj
cf57a9af2a qcacmn: support 64 bits timestamp in wmi mgmt completion
added support for 64 bits timestamp that come for each tx
wmi mgmt completion

Change-Id: I70d66bcbe04aebad507a872faa97df8ab9752657
2019-12-22 23:51:04 -08:00
Saket Jha
6ef034094f qcacmn: Initialize qdf_nbuf_t before use
Initialize qdf_nbuf_t variables before use.

Change-Id: I4922de4c9f31c98dc745802dbb23a0757795769d
CRs-Fixed: 2587451
2019-12-20 20:06:36 -08:00
nobelj
219e7e57e2 qcacmn: Fix NULL data Tx frame capture
Handle ppdu descriptor for NULL data frame as payload come
mgmt payload tlv.

Change-Id: I0d9322c8132dc520d0274b9cf1abcf3018469bf7
2019-12-19 10:25:51 -08:00
nobelj
4771edbadc qcacmn: support for tx capture stats
added support to print debug stats for tx capture

Change-Id: Id5533e076f9b5d3f15a392f61b4af5fdffa9efb0
2019-12-19 10:25:35 -08:00
Jinwei Chen
5bd952ce05 qcacmn: fix srng lock hold long time due to logging
when lot of fragment frame with invalid peer_id indicated to
host through reo exception ring, excessive logging cause srng
lock hold long time.
  degrade log level as a WAR to avoid excessive logging.

Change-Id: Iffb18ad723d1ac5955868cc8ec99bb0198785ee5
CRs-Fixed: 2584610
2019-12-19 03:05:15 -08:00
nobelj
68930ca688 qcacmn: tx capture update bar frames
as we are overriding bar ppdu information, we need bar start/end
timestamp and duration.
added resp_type, mprot_type, rts_success and rts_failure in
cdp completion user.

Change-Id: I53c215e948fad8d079e1d4c40ec07d34aff1fefe
2019-12-18 18:57:41 -08:00
Sumedh Baikady
48fdc2ddfb qcacmn: Add out of band advertisement in 6Ghz
Add WMI and objmgr support for maintaining RNR
buffer cache and receive tbtt events for all
vdevs using existing tbtt offset WMI.

Change-Id: Idfed63e104e629fbe455d1cf6202cd9b332f5cf9
2019-12-18 11:13:36 -08:00
nobelj
c5cb3bf9c5 qcacmn: multiple update of tid for same ppdu stats
remove multiple update of tid for same ppdu stats.
tid is populated from user rate, completion common and
ack ba status tlv. As tid from ack ba status tlv comes wrong
for non-qos tid. we remove the tid populate in ack ba status tlv.

Change-Id: Ia8b0004fc329bf0fecc1a622e199635034c213a7
2019-12-17 01:38:27 -08:00
Yue Ma
9c43a47af0 qcacmn: Clean up channel number usage for CDP API
For cdp_hl_fc_set_td_limit() API, use channel frequency instead of
channel number.

Change-Id: I852f1fc192374a4b603e615664d7fb27ea984f5f
CRs-fixed: 2565737
2019-12-16 19:46:13 -08:00
Mohit Khanna
82382b32e9 qcacmn: Handle BAR OOR/2K_JUMP REO errors
Currently in dp_rx_wbm_err_process, we donot handle
HAL_REO_ERR_BAR_FRAME_2K_JUMP and HAL_REO_ERR_BAR_FRAME_OOR REO errors.
Add support for the same.

Change-Id: I22147fcd2d531c1e08214626796994593ffeb3a6
CRs-Fixed: 2580876
2019-12-16 14:20:15 -08:00
Ruben Columbus
282f3a5ce1 qcacmn: RSSI averaging function accuracy
improvement on function for avergaging rssi accuracy

Change-Id: I4fb231aacb2ed76a2e5e1b5843a8b095e9901406
2019-12-13 12:15:02 -08:00
nobelj
ab929fe416 qcacmn: update tlv bitmap check and fix retries counter
expected tlv bitmap can't be guaranteed as different ppdu frame has
different expected tlv bitmap. Check last tlv before sending stats
as tlv are coming from firmware in sequential order.

retry counter is not populate correctly, only successful
completion ppdu status get update

Change-Id: Ia4b71371bbf38996df9dbb67746078d5fbd628a1
2019-12-12 18:32:25 -08:00
Jinwei Chen
3172ed4419 qcacmn: degrade log level in monitor dst processing
Degrade log level from ERROR to INFO_HIGH to prevent excessive
logging into dmesg console.

Change-Id: Ic0ef72cf2564ed2354b3db4d6e09e7ac7c832560
CRs-Fixed: 2582400
2019-12-12 18:17:36 +05:30
phadiman
a73cc69157 qcacmn: Fix pool alloc issue in detach path
Memory is freed and allocated only during
wifi load and unload in case of WIN and not
during wifi up/down

Calling dp_tx_soc_detach unconditionally
was leading to memory free in wifi down
path and when wifi up was issued the
memory which was freed was never allocated

Call dp_tx_soc_detach conditonaly only for
MCL in dp_soc_cmn_cleanup and for WIN in
dp_soc_detach using dp_soc_reinit flag which 
is set for WIN during wifi unload

Change-Id: I9da34f7945d65a34e719c7db58da13e85ae3d228
2019-12-12 18:15:18 +05:30
Pavankumar Nandeshwar
e54c584723 qcacmn: Decoupling changes for stats, wds, raw and pflow ops
Change cdp_host_stats_ops, cdp_wds_ops, cdp_raw_ops
and cdp_pflow_ops APIs to replace pdev, vdev and peer
dp handles with pdev_id, vdev_id and peer mac address
along with dp soc handle.

Change-Id: Ia956882535cc04e57a006905d46ccfe9d95bb731
2019-12-10 19:40:36 -08:00
Jeffin Mammen
084f936b71 qcacmn: Correct message in backpressure event
Correct the debug message to print the appropriate
ring id when backpressure events are reported

Change-Id: I4cb2af9c802469ecd0c38bdd3789439048de876f
CRs-Fixed: 2556208
2019-12-10 04:21:43 -08:00
Tiger Yu
1e974a9312 qcacmn: Reset ba_status to inactive irrespective of tid update status
Reset ba_status to inactive irrespective of tid update status to make
sure the ba_status reset successfully.

And also use pe_err_rl instead of pe_err to avoid excessive logging.

Change-Id: Ifc6adc166b5093742b34dd7d74924f9d54146ea4
CRs-Fixed: 2577663
2019-12-09 20:38:41 -08:00
Alok Kumar
3d15ae8780 qcacmn: Define CDP Ops for packet capture mode
Define CDP Ops for packet capture mode

Change-Id: If08191f47060210f4340940d01be8eb2cf8cc426
CRs-Fixed: 2528432
2019-12-09 17:29:15 -08:00
Jinwei Chen
9012d61d31 qcacmn: fix invalid accessing to rx_desc_status pool
crash scenario:
a. pktlog is enabled, the timer mon_reap_timer is active,
   reap mon_status_ring hal desc periodically.
b. rx_desc status pool is freed in dp_rx_pdev_mon_detach() when do
   dp_pdev_deinit() while the mon_reap_timer is still active until
   dp_rxdma_ring_cleanup() free it.
c. during the timeslot between dp_rx_pdev_mon_detach() and
   dp_rxdma_ring_cleanup(), if some hal desc is pending to be
   processed on mon_status_ring, invalid accessing to rx_desc_status
   pool happened.

solution:
  if pktlog is enabled, stop mon_reap_timer ahead of
dp_rx_pdev_mon_detach() in dp_pktlogmod_exit().

Change-Id: I91b16a88a5e4390587925d6eb2840b3ec1ec2187
CRs-Fixed: 2579817
2019-12-09 01:31:20 -08:00
Mohit Khanna
918456b6c3 qcacmn: Use HAL_RX_BUF_RBM_SW3_RBM for defrag pkts
Currently defragmented packets use HAL_RX_BUF_RBM_SW1_RBM as the RBM
value for the defragmented packets which are re-injected into REO.
Thus, if REO encounters any error while handling these packets, they
would end up in WBM2SW1 ring (via WBM), which is managed by the FW. The
FW will eventually recycle these buffers back to RXDMA via its refill
process. As a part of defragmentation, host does a 802.11 -> 802.3
header conversion. This is resulting in an address which is not 4
byte aligned. Hence, when RXDMA tries to use these addresses (after FW
recycles them), it may lead to issues.

Change the RBM value of the defragmented buffers which are
re-injected. Now, if REO ends up throwing an error for these
packets, they wll end up in WBM2SW3, which is managed by the host.
The host can then drop these packets and replenish RXDMA with 4 byte
aligned buffers (via FW).

Change-Id: I9d9c25385978d5be855699feb28d292c6f3fffdd
CRs-Fixed: 2572483
2019-12-07 04:22:09 -08:00
Jinwei Chen
fbd48efe1c qcacmn: fix dp vdev use after free for monitor mode
Crash scenario:
a. monitor mode dp_vdev is freed in dp_vdev_detach_wifi3 without
   checking whether any dp_peer is associated.
b. monitor mode self dp_peer do peer clean up when HTT peer
   unmap MSG received, invalid accessing to dp_vdev as it has been
   freed in step (a).

Check if there is dp_peer associated for monitor mode dp_vdev,
skip dp_vdev free, when all dp_peer is freed, dp_delete_pending_vdev
will free dp_vdev.

Change-Id: Iea4b0efc6e7bbd4109d9cd0b109dfddf727a9fff
CRs-Fixed: 2576604
2019-12-06 01:52:39 -08:00
Yeshwanth Sriram Guntuka
65d547730f qcacmn: Cleanup local peer id from DP APIs
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.

Cleanup local peer id usage from DP APIs.

Change-Id: I930e1c6a09092a373c093239632d6f310fee18e2
CRs-Fixed: 2529041
2019-12-06 01:52:16 -08:00
Yeshwanth Sriram Guntuka
92aa901f84 qcacmn: Cleanup unused DP APIs [PEER_ID_PHASE2]
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.

Cleanup unusued DP APIs which are based on local peer_id.

Change-Id: Idd95bc640ca7e36a427be7202935034d4ed58979
CRs-Fixed: 2529026
2019-12-06 01:52:01 -08:00
Pavankumar Nandeshwar
4c7b81b540 qcacmn: removal of cp handles and changes for ol_if_ops
Remove pdev and vdev control path handles from data path.
Instead send pdev_id and vdev_id along with opaque soc
handle in ol_if_ops.

Change-Id: I6ee083f07e464f283da0d70ada70a4e10e18e1b2
2019-12-04 07:45:10 -08:00
Pavankumar Nandeshwar
715fdc32ec qcacmn: remove ctrl_peer handle from dp peer
Remove ctrl_peer handle from dp peer and instead
use peer's mac address

Change-Id: I9e24fa94248749f9b4859bce4a1d79d70f32507e
2019-12-04 07:44:21 -08:00
Venkata Sharath Chandra Manchala
fb323024ac qcacmn: Avoid freeing the lock
Avoid freeing flow_pool_array_lock when it is
not created. So free flow_pool_array_lock in 2
ways:
1. When dp_soc_cmn_setup fails free the flow_pool_array
   lock only if it is created and then close the dp
   soc handle.
2. As flow_pool_array_lock is created in dp_soc_cmn_setup
   as part of dp_pdev_attach_wifi3 init sequence free the
   lock only in the dp_soc_cmn_cleanup as part of the
   dp_pdev_detach_wifi3 deinit sequence.

Change-Id: Ie3e11da0bc0854fa550c5d417ca3c0bc9e2593b1
CRs-Fixed: 2565603
2019-12-04 03:37:28 -08:00
Venkata Sharath Chandra Manchala
d62af87cc1 qcacmn: Increment/Decrement num_tx_outstanding
Increment pdev->num_tx_outstanding when
tx_desc is allocated and decrement tx_desc when tx_desc
is released. During runtime pm suspend, WOW PAUSE
is sent to firmware only if there are no
pending num_tx_outstanding descriptors.

Change-Id: I54aaa4d8a37b8cd47de1701a315bb0735c9739d2
CRs-Fixed: 2567689
2019-12-01 19:17:39 -08:00
Jinwei Chen
a9d46ad930 qcacmn: remove assert for invalid release source case
Remove host assert when receiving invalid release source entry from
WBM2SW0 ring.

Change-Id: Iae62ce3008024c55c1dde79e4dd0cd93d7e6f5a4
CRs-Fixed: 2571826
2019-12-01 19:17:10 -08:00
Kai Chen
a8cf59455e qcacmn: Add stats on OFDMA and MU-MIMO packet
Add MCS, NSS, MPDU FCS OK, MPDU FCS ERR stats
classified by SU, OFDMA and MU-MIMO.

Change-Id: I3ade03acc06bd924fdeb8dfcaf6b18fb01f01d68
2019-12-01 19:16:58 -08:00
Mainak Sen
8bc9b42eb3 qcacmn: Loopback check for ucast frame after hmmc
Add a check to drop unicast frame being sent to same originating
VAP after hmmc conversion of IGMP control packets

Change-Id: Ic25812a7848af793075a0cb483100ebcf59d85b2
2019-12-01 19:16:31 -08:00
Nirav Shah
aa6ca443db qcacmn: Add logic to bundle packets for HL
Add logic to queue and bundle packets before
giving it to scheduler to ensure predictive HTC
bundling for improvement in TX throughput.

Change-Id: Iab5066a46235ce7e41fd29c44a2ce0cfb04b1505
CRs-Fixed: 2574530
2019-12-01 17:43:11 -08:00
Rakesh Pillai
74368919c5 qcacmn: Ratelimit the tso descriptor alloc failure
In cases were all the tso tx descriptors are outstanding,
the alloc for any subsequent tso packet will fail.
This failure to get a tso tx descriptor floods the
console with failure logs.

Ratelimit the tso descriptor allocation failure and
increment the alloc failure in stats to get the exact
number of times the allocation failed.

CRs-Fixed: 2572580
Change-Id: I789788b917421be99df5435ad858d715ef0f5c8e
2019-12-01 17:42:07 -08:00
Priyadarshnee S
27f9726c24 qcacmn: Add an enum to configure UNII-1 and UNII-2A band coexistance
Add an enum that enables/disables coexistance of UNII-1 and
UNII-2A band channels.

CRs-Fixed: 2570364
Change-Id: I30cdda555675e4772aff59ebbbacfdd79f699af5
2019-12-01 17:41:51 -08:00
Sravan Goud
ba1d5aa876 qcacmn: Record last 32 dp ipa reo remap register writes
For debug purpose of issues related to IPA NOC errors and
register writes not going through, record last 32 dp ipa
reo remap register writes which are outside of non shadow
region registers.

Change-Id: If2dfe7250bb2a6bbe0e180df137c92b43a150b2c
CRs-Fixed: 2571608
2019-12-01 13:11:32 -08:00
Karunakar Dasineni
6342933715 qcacmn: Support SW retries in Tx capture
Changes to include SW retries in Tx capture.

Change-Id: I2bee277107356a6dca6f8a6cc52cded73aca6c7a
2019-11-27 09:15:45 -08:00
Chaithanya Garrepalli
b7796edd5b Revert "qcacmn: corrected the print statement"
This reverts commit I37a7c98eef6a8ad0b27541584927505ffc447cb2.

Reverting because below change address the compilation error
I4bb7bb14a2e521645be6e2677a44a78fa79fcb0b

Change-Id: Ib38276ab9974cf22486631f10ec345a629637b82
2019-11-27 07:05:15 -08:00
Surya Prakash Raajen
507b75ac5c qcacmn: Fix replenish size for monitor buffers during attach
Head_pointer == Tail_pointer is treated as ring empty and
Tail_pointer + 1 == head_pointer is treated as ring full,
hence replenish count should be num_entries-1 to avoid
buffer ring treated as empty or full.

Change-Id: I157834a86380bcd2f03679510357ad3ca5550374
CRs-Fixed: 2569491
2019-11-26 04:03:33 -08:00
nobelj
1063ea0420 qcacmn: Fix nss, ru size and initialize ofdma info valid bit for UL OFDMA
add 1 to nss value received from software response reference pointer.
ofdma_info_valid bit need to set zero.
populate ru_size from software response reference pointer.

Change-Id: Iea2019211902a468d8fd180423b3dedb4c04ce41
2019-11-26 02:16:36 -08:00
Alok Kumar
4c23054e43 qcacmn: Add support for DataStall Events
Register and de-register DataStall callback which posts
DataStall Events.

Change-Id: I078e34b0d476c350f175b797fd54a79789ca56f5
CRs-Fixed: 2561193
2019-11-26 02:16:17 -08:00
Venkata Sharath Chandra Manchala
2b0d3f38d5 qcacmn: Support force wake request
1. Add hif_force_wake_request API to wake the
mhi and umac before reading/writing the memory region
greater than BAR+4K.
2. Add hif_force_wake_release API to release the
PCIE_PCIE_LOCAL_REG_PCIE_SOC_WAKE_PCIE_LOCAL_REG so the
umac can power collapse again at a later point of time.
3. Add pci stats to dump the force wake status.

Change-Id: Ic6d5463ea0cdb28d9144be61da55e43033b53298
CRs-Fixed: 2478052
2019-11-26 02:15:13 -08:00
Rakesh Pillai
eee5d783b7 qcacmn: Skip enable/disable autonomy in SSR case
In case of SSR, the host driver is not supposed to
access any of the UMAC registers. The disable or
enable of autonomy during SSR can cause an invalid
access to the REO registers.

Avoid the REO registers access during SSR case.

CRs-Fixed: 2563761
Change-Id: I7e260c2894d8254eafba7038bc2677b52b6eba85
2019-11-22 04:13:00 -08:00
Jinwei Chen
490e7fd6b4 qcacmn: fix dp_vdev use after free caused by racing condition
crash scenario:
a. dp_peer_unref_delete remove peer from vdev->peer_list.
b. dp_vdev_detach_wifi3 skip setting vdev->delete.pending as
   vdev->peer_list is empty, dp_vdev is freed.
c. dp_peer_unref_delete still try to access dp_vdev after first
   peer_ref_mutex released, invalid accessing happened.

solution:
a. Get vdev member like vdev->delete.pending flag within
   first peer_ref_mutex in dp_peer_unref_delete to avoid vdev freed.
b. Separate dp_reset_and_release_peer_mem function into two function
   dp_vdev_reset_peer/dp_peer_release_mem, dp__vdev_reset_peer
   will be invoked within first peer_ref_mutex. after first
   peer_ref_mutex is released, invoke dp_peer_release_mem since dp_soc
   ->cdp_soc.ol_ops->peer_unref_delete should be outside of
   peer_ref_mutex in case deadlock issue reported from WIN.

Change-Id: I90f3b139030c5ce399d85723ae4f67ce0faf4b28
CRs-Fixed: 2568256
2019-11-22 00:27:54 -08:00
Amir Patel
a1a4fe1417 qcacmn: Update avg_rssi with per_pkt_rssi + per_bw_offset
Currently for averaging rssi we do not add per_bw_offset to SNR,
add per_bw_offset value to SNR to compute avg_rssi

Change-Id: I451f90e5794235c7466f3c4f1850df246e719d0a
2019-11-21 09:13:45 -08:00
Amir Patel
fea17f4d75 qcacmn: Free status buffer queue at proper place
Currently after disabling mcopy mode, remaining status
buffers are not freed, free status buffers at proper place

Change-Id: I4a04a7ab58771ce1dd21f3ee08b42589f312eb76
2019-11-21 07:49:03 -08:00
Vevek Venkatesan
2cc8c5d14d qcacmn: cdp: Converge cdp_ipa_ops
Currently cdp ops are given pdev/vdev/peer
handle as its arguments, which is directly
accessed in those APIs. This can cause a
race-condition in access of the respective
handles if it has been deleted in parallel.

Hence as a part of cdp convergence, pass only
the pdev_id or vdev_id or peer mac address,
which will be used to get the respective handles,
and hence avoiding the unwanted access of the
handles if it has been deleted.

- ipa_get_resource
- ipa_set_doorbell_paddr
- ipa_set_active
- ipa_register_op_cb
- ipa_get_stat
- ipa_tx_data_frame
- ipa_uc_get_share_stats
- ipa_uc_set_quota
- ipa_enable_autonomy
- ipa_disable_autonomy
- ipa_setup
- ipa_enable_pipes
- ipa_disable_pipes
- ipa_rx_intrabss_fwd

Change-Id: Ieb7e48d11a69a1e4a92a7114042b1db72d5f4b65
CRs-Fixed: 2540862
2019-11-21 06:13:07 -08:00