Grafico dei commit

1639 Commit

Autore SHA1 Messaggio Data
nobelj
7cc67e504f qcacmn: Support mgmt packet peer filter based on mac address
RA mac address is used to support tx capture mgmt peer filter.

Change-Id: I895034723d4b75557ad33f55adc017d1caa3a40d
2020-02-13 10:19:49 -08:00
Amir Patel
b8e9bcdf4c qcacmn: Read ppdu_id from reo_entrance ring
For qcn9000, As part HW enhancements, PPDU_ID is sent
in reo_entrance_ring descriptor instead of RX_MPDU_START
tlv. Add support to read ppdu id from descriptor.
Modify existing hal API hal_rx_hw_desc_get_ppduid_get ()
arguments to pass RxDMA ring HW descriptor.

Usage:
 a. Use hal_rx_hw_desc_get_ppduid_get () -
    to get ppdu id from rx_tlv_hdr or hw descriptor based on target.
    for qcn9000, this API gets ppdu_id from HW descriptor,
    for other platforms, gets ppdu_id from rx_tv_hdr
 b. Use hal_rx_get_ppdu_id () - to get ppdu_id from rx_tlv_hdr

Change-Id: I5838227c12cde50cbb2a9da7a0d8056b8b9b7ef5
2020-02-13 05:54:15 -08:00
Manjunathappa Prakash
3227df4b10 qcacmn: Tag FSE/FISA HTT setup commands as HTC_TX_PACKET_TAG_RUNTIME_PUT
FSE setup, FSE cache flush and FISA config commands do not have
response, tag them as HTC_TX_PACKET_TAG_RUNTIME_PUT so that get on
runtime_pm is released. Without this target fails to go to runtime_pm
suspend.

Change-Id: Ibb14484dd50c62bb4680b41acf93ce3da1bec796
CRs-Fixed: 2606884
2020-02-12 11:59:29 -08:00
Manjunathappa Prakash
b896f0eade qcacmn: Add NULL check for vdev before accessing
Add NULL check for valid vdev before accessing it.

Change-Id: I977671bd7f612a30e1cb3b72d6b46200eaf1a34c
CRs-Fixed: 2606040
2020-02-12 11:59:15 -08:00
Manjunathappa Prakash
5d73e075e8 qcacmn: Add support to deliver the packets to FISA
Hook FISA specific callback to deliver the Rx packets to
FISA frame work.

Change-Id: Ia16c857764c0c3bf99c3855eac01659eb03c7608
CRs-Fixed: 2599917
2020-02-12 11:58:59 -08:00
Manjunathappa Prakash
44aeb7256a qcacmn: Allocate and Initialize the FST for FISA feature
1) Allocate the FISA software flow search table
2) Allocate DDR flow search table
3) Send HTT command to program DDR flow table in FSE module.

Change-Id: I6d6084343d1a9c0298b1cf8a1ba033b2b46e6a82
CRs-Fixed: 2599917
2020-02-12 11:58:35 -08:00
Sravan Goud
dbf2ff57bc qcacmn: Do not process rxdma err decrypt frames
Do not process or drop rxdma error decrpt frames. In case of
decrypt error the decryption is not proper and Rx OLE gets
corrupted bytes. So accessing these can lead to invalid buffers.

Change-Id: Idb3f942facf08fc26bde0fd9826db28955ca01d5
CRs-Fixed: 2613068
2020-02-10 15:13:42 -08:00
Rakesh Pillai
fc60b6d73b qcacmn: Do not try to delete a peer if already deleted
Currently if any layer tries to delete a peer which
has already been deleted, there is no check to stop
the delete operation. Deleting an already deleted peer
is incorrect.

Check if the peer is valid before we try to delete
the peer.

Change-Id: Icc280554a652e0ee3f1ea38c98fb130ea3c1ae80
CRs-Fixed: 2613595
2020-02-06 00:47:25 -08:00
syed touqeer pasha
6997a37a1e qcacmn: Extract msdu end TLV information at once during Rx fast path
Rather than extracting msdu end pkt tlv information per field basis
during fast data path, extract msdu end pkt tlv information at once
and store in local structure.

Change-Id: I0877ba4f824d480cc0851c72090f010852d0d203
2020-02-05 02:28:41 -08:00
Sravan Goud
fbe04282e0 qcacmn: Drop nbuf if msdu done is not set
Drop the packet if msdu_done bit is not set while processing
rxdma err frames. This is not expected while reaping WBM RX
release ring.

Change-Id: I8776d15ea88319d7d955fdae90958648484dbda0
CRs-Fixed: 2603791
2020-02-04 19:34:50 -08:00
Adil Saeed Musthafa
bbc4de06d7 qcacmn: per-peer protocol count tracking
Maintain packet counters for each peer based on protocol. Following 3
protocols are supported
* ICMP (IPv4)
* ARP (IPv4)
* EAP

Change-Id: I56dd9bbedd7b6698b7d155a524b242e8cabd76c3
CRs-Fixed: 2604877
2020-02-04 14:17:14 -08:00
Linux Build Service Account
7425efbdbe Merge "qcacmn: Add common framework for mon filters" 2020-02-03 09:38:34 -08:00
Linux Build Service Account
da64f244ea Merge "qcacmn: Stop the monitor reap timer at dp suspend" 2020-02-03 09:38:26 -08:00
Aniruddha Paul
f9d2c0f54e qcacmn: Add common framework for mon filters
A framework is added where the filters for every
mode are stored on a radio instance. Whenever a mode comes
up, it stores the filters in the radio and calls a
common API which iterates through all the enabled
mode filters and loops through them to create a
superset of filters which is sent to HTT.

This framework can be extended for new feature addition
which set filters for the monitor status and monitor
destination rings.

Change-Id: I9b739af2086bbe261b65c57af0a5bd867294f30f
CRs-Fixed: 2585872
2020-02-03 04:23:05 -08:00
phadiman
89b6d79dff qcacmn: Fix incorrect access to lmac_id
pdev_id and mac_id were incorrectly passed
as arguments to dp_get_lmac_id_for_pdev_id

Fix passing the arguments in right order to
the API to access appropriate lmac_id

Change-Id: I42773a6ccae2f87f128d3c462e6a332fe658f45e
CRs-Fixed: 2611926
2020-02-03 00:07:04 -08:00
Linux Build Service Account
9cf6099bec Merge "qcacmn: Replace 8074_VP with WIFI_EMULATION_3_0" 2020-01-31 05:37:08 -08:00
Linux Build Service Account
f91621de73 Merge "qcacmn: Send val of separate iface support for NAN INI to Fw" 2020-01-31 05:37:07 -08:00
Nandha Kishore Easwaran
b7c18849ae qcacmn: Replace 8074_VP with WIFI_EMULATION_3_0
Replace QCA_WIFI_QCA8074_VP with CONFIG_WIFI_EMULATION_WIFI_3_0
since VP platform is not being used anymore.
Most of the parameters present inside QCA_WIFI_QCA8074_VP are related
to emulation timeouts. Hence replacing it with a more meaningful flag.

Change-Id: I22a0e5803e765333947f1613b376dcc6bd25b5af
2020-01-31 02:34:19 -08:00
Alok Kumar
fef1078ed0 qcacmn: DP change to get buffer size from INI file
DP layer change to read the packet log buffer size
from INI file.

Change-Id: If307ad5abfd0360c3f39247ccc62abd32095303f
CRs-Fixed: 2611406
2020-01-30 23:24:11 -08:00
Linux Build Service Account
665f64fe99 Merge "qcacmn: Set monitor mode interrupts" 2020-01-30 18:38:45 -08:00
Nisha Menon
4f6336687c qcacmn: Add vdev callback null check in rxdma err processing
In the function that processes rxdma err frames add null check
before calling vdev callback function. If its valid then deliver
the skb to stack or free the skb.

Change-Id: I7c481eb8f702d9109c4a9f79db7e050ece6c3689
CRs-Fixed: 2607658
2020-01-30 11:15:55 -08:00
Surya Prakash Raajen
c10ffa0652 qcacmn: Run time enablement of CE tasklet debug
Add support for enbalement of CE_TASKET_DEBUG_ENABLE in
run time.

Change-Id: I0132c3b989b75e7d526680f1e5f73a716e9db54c
CRs-Fixed:: 2610811
2020-01-30 05:00:18 -08:00
Radha Krishna Simha Jiguru
64b4848aa0 qcacmn: Do cleanup related to peer_map_unmap_v2
AST entry delete logic has some conditional checks making code with respect
to HTT V1 and V2 messages making it tough to follow.

Change-Id: I229324446134b32021a956fb689e4726256fcc28
2020-01-29 23:02:57 -08:00
Shashikala Prabhu
03a9f5b19c qcacmn: Add framework to configure varying data/monitor buf size
Add a framework to configure varying buffer size for both data and monitor
buffers.
For example, with this framework, the user can configure 2K SKB for Data
buffers, monitor status rings, monitor descriptor rings, monitor
destination rings and 4K SKB for monitor buffers through compile time.

Change-Id: I212d04ff6907e71e9c80b69834aa07ecc6db4d2e
CRs-Fixed: 2604646
2020-01-29 18:08:33 -08:00
Sravan Goud
37c06b57a3 qcacmn: Stop the monitor reap timer at dp suspend
In case of wlan suspend if packet log is enabled stop the
monitor reap timer and reap the pending frames in the ring.
Also in case of FW target suspend ACK status reap monitor
status ring. During target suspend FW will disable the monitor
status ring. This change will make sure no pending frames in
the ring during start of system suspend and the target suspend.

Change-Id: I350fa508f3ddd125d5e00a7fc60e89507ce8fb4e
CRs-Fixed: 2604389
2020-01-29 20:01:02 +05:30
Mainak Sen
d13ed3e9e1 qcacmn: API support for AST flow override
Lithium HW can parse each MSDU when packets are enqueued to transmit
classifier and each MSDU can get enqueued to different MSDU-Queue.
By default, there are 2 queues per TID – UDP and NON-UDP. Based on
the flow parsing, packets will be queued to either of them.
Enterprise customers uses RAW mode frames which transmit classifier
would not be able to identify L4 protocol for  UDP or NON-UDP queue
for encrypted frames.
Customer can also have different application based packets which needs
to be enqueued to differently prioritized queues. They can choose to
tag each MSDU based on application DPI and derive the flow priority
as below –
•	UDP
•	NON-UDP
•	HI-PRIO
•	LOW-PRIO
Customer needs API support from host which will provide an ast-index
based on a particular flow id given peer mac address. Based on the mac
address, host will find the associated peer and return the ast_index &
cache set number corresponding to the flow id from peer flow based ast
entry table. Customer will then program this ast-index and ast override
in transmit classifier CMD ring to enqueue MSDU to a specific
flow-queuein TQM.
Host API:
Input parameter – uint8_t *peer mac address, uint8_t flow id
Output – uint16_t ast_index
Change-Id: I79557c31532514ad5ec0c1848827a3e5cd91cdf2
2020-01-27 17:37:43 -08:00
Shashikala Prabhu
8533bb54fe qcacmn: Add API to set/get number of monitor vdev counts in pdev
Add API to set/get monitor vdev count in pdev object.

Also update the max peer count in pdev and psoc when FW allocated peer
count is different than host requested.
Number of vdevs and beacon tx offload max vdevs in wlan_res_cfg are updated
in target_if_update_pdev_tgt_info().

Also, add radio related parameters to get number of vdevs and peers per
psoc and pdev.

Change-Id: I0165f3bd4638280b45ad54391319806fba62e2fe
CRs-Fixed: 2600984
2020-01-27 12:44:51 -08:00
Jinwei Chen
0b92469595 qcacmn: fix invalid accessing to rx_tlv_hdr due to scattered msdu
long length msdu is received and looks this msdu is spread across
multiple nbufs, there is no corresbonding logic for this case.
qdf_set_pkt_len will invoke pskb_expand_head to renew skb->head
buffer, but the rx_tlv_hdr is still pointed to original skb->data
buffer, invalid accessing will happen.
  As a WAR, drop this msdu related nbufs after dp_rx_sg_create is done.

Change-Id: Iceb09fd04e4d768325018a8ddd4261ab4f75991a
CRs-Fixed: 2597927
2020-01-26 16:23:50 -08:00
Jinwei Chen
3222184e14 qcacmn: fix RX desc is using but freed back to pool
Crash scenario:
(1) frag data A is dropped and related RX desc A is replenished
and reused, but pdev->free_list_tail is still pointed to RX desc A.
(2) frag data B/C is coming, defrag fails then pdev->free_list_head
will point to B-->C RX desc, but pdev->free_list_tail still point to A.
(3) for defrag failing case, host only will replenish 1 RX buffer for
current case, RX desc B is replenished, while C will be free back to
RX desc pool.
(4) dp_rx_add_desc_list_to_free_list will set RX desc A-->next =
free_list, free_list point to C insted.
(5) when step (1) RX desc A replenished buffer indicated to host by
REO2Dst ring, RX desc A -->nbuf actually is pointed to another RX
desc, invalid skb accessing will happen.

Solution:
a. reset tail pointer in dp_rx_add_desc_list_to_free_list at last.
b. reset tail pointer same as head in dp_rx_add_to_free_desc_list
if head->next is NULL.
c. set correct rx_bufs number for replenish when dp_rx_defrag fails.

Change-Id: Ib297baea3605a09dd7d85d1f5ceb95db48a2e1f1
CRs-Fixed: 2603676
2020-01-25 07:43:47 -08:00
Pavankumar Nandeshwar
29c280ef73 qcacmn: Use lmac_id to get the rx_desc_pool instead of pdev_id
Use lmac_id to get the rx_desc_pool while freeing
the rx_desc_pool for rx_desc_buf.

Change-Id: I549e7f54b267d2c82dceb391a766297dfe18ceb7
CRs-Fixed: 2608209
2020-01-24 20:08:38 -08:00
Saket Jha
f0640bc083 qcacmn: Set monitor mode interrupts
Ensure monitor mode interrupt masks are set as they are DP_INTR_POLL
type. Move wlan_cfg_fill_interrupt() call to inside dp_soc_attach as it
is called before dp_soc_init.

Change-Id: Id9c49e3ed5c01e7c1bf641fa4c2f419d31381608
CRs-Fixed: 2608683
2020-01-24 14:45:19 -08:00
Venkateswara Swamy Bandaru
0605cde1f1 qcacmn: Fix issue in athstats
Incorrect size is given while copying pdev stats.
Fix this by properly passing pdev stats struct
while calculating size of pdev stats.

Change-Id: I4b4be2542d092c5c984252a62e2406cb1e83bcd8
CRs-Fixed: 2603674
2020-01-23 22:17:26 -08:00
Pavankumar Nandeshwar
61ec40476d qcacmn: Avoid exchanging dp handles with non dp modules
Corresponding changes in datapath for avoiding storage
of dp handles in umac objects.

Change-Id: I61ba9cca9a10cc7e3d618c7f1ec384dda2e85132
2020-01-23 14:28:38 -08:00
Chaithanya Garrepalli
960a937799 qcacmn: use right API to get pdev from lmac_id
Use appropriate API to get pdev from lmac_id

Change-Id: I5cca2f7f57b80b7a94111a10afb257fa197aba20
2020-01-23 07:56:20 -08:00
Shivani Soni
a5707a4ded qcacmn: Update MAC address format dp
Updating MAC Address format in dp

Change-Id: I9e855d4081a5c5eadd69945d94596a699e2c2cd1
CRs-Fixed: 2599241
2020-01-23 06:27:28 -08:00
Subhranil Choudhury
22434e5ebd qcacmn: Add ast-type in wds_add
Add ast-type as argument in wds peer create command.
This helps to identify the ast entry from the time when ast add is done.

Change-Id: Ia0c073cf8f2573608e6a84410dffee6edf9b064b
2020-01-22 19:23:51 -08:00
Chaithanya Garrepalli
b543c23ae2 qcacmn: Create new CDP API for mode change
Add new CDP API for mode change instead of reusing
map_pdev_to_lmac API

Change-Id: Ie0bcf9a9faec96b633986c64a43b8eeae813e78e
2020-01-22 16:26:34 -08:00
Pavankumar Nandeshwar
2771d985bc qcacmn: provide an API to fetch individual peer stats
Provide an API to fetch required individual peer stats
from the data path peer stats instead of copying the
whole peer stats structure.

Change-Id: I1c9619bc7d9bb0e3e3df6d38cc5f4570869e31fe
2020-01-22 14:58:29 -08:00
Padma Raghunathan
752b5a18a2 qcacmn: CFR: Adapt to changes made for dynamic mode change feature
As part of Dynamic mode change feature, rxdma_mon_status_ring
has been moved from dp_pdev to dp_psoc. Adapt CFR to this change.

Dynamic mode change feature change -
Ib017d49243405b62fc34099c01a2b898b25341d0

Change-Id: I43ee4e08ad70614d042be3e08c0add66e7e011f9
CRs-Fixed: 2606001
2020-01-22 09:25:35 -08:00
Vevek Venkatesan
af776988bf qcacmn: cdp: Converge cdp_peer_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.

Also remove the ops which are used to store
and retrieve such handles, that no more needed.

- register_peer
- clear_peer
- change_peer_state
- peer_get_ref_by_addr
- peer_release_ref
- peer_state_update
- get_vdev_by_sta_id
- register_ocb_peer
- get_peer_state
- get_vdev_for_peer
- update_ibss_add_peer_num_of_vdev
- remove_peers_for_vdev
- remove_peers_for_vdev_no_lock
- copy_mac_addr_raw
- add_last_real_peer
- is_vdev_restore_last_peer
- update_last_real_peer
- peer_detach_force_delete

Change-Id: I4a41211464a30e018e8b73b8e9b91c7a509327b4
CRs-Fixed: 2541711
2020-01-22 02:46:27 -08:00
Rakesh Pillai
c1aeb35c3c qcacmn: Do not process RX packet if vdev is pending delete
If the vdev is marked as delete in progress, then the
packets received on that particular vdev should not be
submitted to the network stack.

Drop the packets if the vdev is marked to be deleted.

CRs-Fixed: 2599128
Change-Id: I0996669bea368b6c0afc10e1d929bc2f314ae6fe
2020-01-21 14:03:05 -08:00
Jeevan Kukkalli
3476f08bd8 qcacmn: Set num_user to 0 if peer id is invalid
Peer id field is set to HTT_INVALID_PEER when failed to
populate cdp rx indication structure.Set num_user to 0 in
such cases.This avoids out of bound access during rx stats
update.

Change-Id: I112713deee1ec3cb9c37ba3571aff05fb816c76d
CRs-Fixed: 2596779
2020-01-21 03:38:53 -08:00
Vevek Venkatesan
4a07e3949d qcacmn: cdp: Converge cdp_ctrl_ops
Currently cdp ops are given pdev/vdev 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/vdev_id which will be used to get the
respective handles, and hence avoiding unwanted
access of the handles if it has been deleted.
Also deleting few ops which stores and retrieves
such handles and adding ops to set/get pdev params.

- txrx_get_psoc_param
- wdi_event_sub
- wdi_event_unsub

Change-Id: Id089d9b6b4737d700d2436e2081291a3741affb5
CRs-Fixed: 2541658
2020-01-20 17:52:48 -08:00
Pavankumar Nandeshwar
0ce3870654 qcacmn: Modify set 2 of ctrl_ops in dp to for umac-dp decoupling
Change set 2 of ctrl_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: I3f180c9c360d564f0b229b447074ad23b7c0a737
2020-01-20 17:52:06 -08:00
Pavankumar Nandeshwar
e6f443f27a qcacmn: Add new parameters for dp handles set/gets
Add new parameters for converging multiple set/get
APIs into common psoc/pdev/vdev/peer set/get APIs.

Change-Id: I0802dea028c9e935ef899169cf7d86f2dc7632bc
2020-01-20 17:51:51 -08:00
Pavankumar Nandeshwar
6c83405439 qcacmn: Modify set 1 of ctrl_ops to acheive umac-dp decoupling
Change set 1 of the ctrl_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: Iedf6dea2215d3d04b2212c71c8ec8c7328c559e8
2020-01-20 17:51:36 -08:00
Pavankumar Nandeshwar
df2c759d94 qcacmn: Do not check delete in progress in peer teardown
Since delete in progress for peer is set in roaming cases
explicitly, do not return from peer teardown after checking
this flag.

Change-Id: Icc514d9500075409d907546a26b2725b5334cbce
2020-01-19 15:59:04 -08:00
Rakesh Pillai
e3c018c0c7 qcacmn: Datapath changes for QCA6750
Add the datapath changes for supporting
the newly added IPCI bus type for QCA6750

CRs-Fixed: 2597326
Change-Id: I27e3e9f746eb383e85c7345150bda03320d041b9
2020-01-18 04:45:01 -08:00
Sravan Goud
a4030a4261 qcacmn: Access initial ipa tx doorbell after enable pipes
Currently host writes to TX doorbell register after ipa connect
pipes to indicate number of free TX buffers. In case when IPA
clocks are off and host tries to access the register will leads
to invalid access. So access the tx doorbell register after ipa
enable pipes which makes sure IPA clocks are always on.

Change-Id: If11fdc9c408ebf7f22eef6a020b507bc39ee6a8e
CRs-Fixed: 2599029
2020-01-18 01:43:26 -08:00
Mainak Sen
03b82f7365 qcacmn: Support for dynamic mode chnge in NSS ofld
Update pdev id to lmac and target pdev id mapping in NSS

Change-Id: I111a975ad9ed3ef61753c8d9afe91083a8cca4aa
2020-01-18 00:19:28 -08:00