Enable multiqueue on VAP with 4 Tx and Rx queues in lithium.
In Rx path set the rx queue of skb based on the reo ring id on which it
is received.
In Tx path use the queue_mapping of skb to map to the hardware Tx ring
on which it has to be transmitted.
Change-Id: I103a21e91d1ed5c0e1d8441863d4fcd273b7bed9
Return buffer manager for error packets has been changed
from HAL_RX_BUF_RBM_SW3_BM to HAL_RX_BUF_RBM_SW1_BM.
Fix is to use DP_WBM2SW_RBM to check correct rbm.
Change-Id: Ib5ffe7161f85fe6a374f16a06a1f6f4f701abe0b
CRs-Fixed: 2231571
Remove NAWDS Rx Drop Count as it is not required,
drop packets in rx where length is not
available.
Change-Id: Ib4b41eefe88410137c3845090783ee43adb9147c
CRs-Fixed: 2191474
nbufs received on wbm_release ring were chained based on
first_msdu and last_msdu bits if the peer is invalid for these
frames, but these fields in the rx tlv header were in-correct as
hardware does not decap these msdu's.
Based on inputs from firmware we now changed this logic to
using phy_ppdu_id field from the rx_mpdu_start tlv & rx_attention tlv.
Change-Id: Ifc7faa2d1b0585bcc226e5cb2045fcb29d152273
Change the buffer manager from HAL_RX_BUF_RBM_SW3_BM to
HAL_RX_BUF_RBM_SW1_BM to handle regular and error packets.
Change-Id: I696d41f6cf0be1d5045ab27841ccc3ee2afea7de
CRs-Fixed: 2189452
Initialize MAC1 along with MAC0. 2.4GHz monitor mode operates on
MAC1 so initialize MAC1 and reap both MAC0 and MAC1.
Change-Id: Id281def37d460b224f5f571893266f193846fd0c
CRs-Fixed: 2176848
Donot perform mcast echo check in case of qwrap isolation mode.
In qwrap isolation mode, packets from wired station reaches the wireless
station via the rootap. Thus we need to allow loopback packets in qwrap
isolation mode.
Also add a configuration to set isolation mode.
Change-Id: If4a63abd477596f6b48c6cf9b6e7e5bd84ec95c0
CRs-fixed: 2204033
We need to free the chain of nbufs associated to
an a-msdu if its last msdu is not received and the one
received belongs to a new a-amsdu
Change-Id: Id90e58306650ad885caa79271e81de3bf81ee5bd
Add APIs to be used by extended DP modules to attach/detach
their respective handles with Core DP module.
Change-Id: I63cf0883f7462a11b49666bda697c7e872d7b925
The buffer was not being freed after invalid peer handler.
Error are handled and returned but buffer free was not taken care.
Change-Id: I100cdc27e6ca1af3dde7ce6561f5dfb83b87127f
Added CDP callback APIs so the DBDC repeater module
outside of cmn_dev can add, delete and update the AST
entries. Also with this change the sending of wds cmds
to fw is tied to adding AST, deleteing AST and updating
the AST entries.
Change-Id: I48d31962236860f50e16b771abaf3b8825b798df
Add API to return the msdu link descriptor from obtained from NSS back to
host link descriptor pool.
CRs-Fixed: 2178692
Change-Id: Ib4f967ea887e013d6461ba760a45dbda6fd92baa
Add tid to the defrag waitlist & timeout if further fragments are not
received.
Change-Id: Iff2d2c23fe796cf70bcc6aa43ab02a308a33ee9f
CRs-Fixed: 2174750
The nbuf is not freed for all possible branches in rx_wbm_error_pr
cess function. Add fix to ensure the nbuf free for all conditions.
CRs-Fixed: 2171899
Change-Id: I8e40fc7dc5afb0be0257244e1e704a0200ffacc0
In dp_rx_null_q_desc_handle, if peer is invaild and no need to
deliver to the upper layer, the nbuf must be freed before recycle
the rx descriptor.
CRs-Fixed: 2153932
Change-Id: I1b373d1b5b50da42b896f0b2fd7bbd13b0e2466d
Added a check in RX path to detect multicast loopback packets in
qwrap mode. In qwrap mode, there are multiple station vaps and
multicast loopback packet from one station vap should not come into
the other station vap. Added a check for this by iterating through
the vap list and checking if any of the vdev mac address matches
with the source address of the packet.
Also added a new vdev parameter to check if qwrap isolation mode is
enabled. In qwrap isolation mode, loopback packets should not be
dropped.
Change-Id: I7d35bf657a87337871156e4caec9038432e23a87
CRs-fixed: 2149190
In wbm_err_process function we are releaseing the sw rx
descriptors at the end and we are calling replenish after
we processed all the pkts in wbm_release ring. FW team said
that the re-fill ring is empty for high throughput scenarios.
To avoid re-fill ring being empty replenish buffers
first and then process the nbufs later. Also free any invalid
peer MSDUs during pdev detach.
Change-Id: I3e1088a3df3658965ffb31e0e0420a37203ba70e
Add WDS tx/rx policy checks in Tx and Rx datapaths.
In Rx path, check packets against rx policy configured
In Tx Reinject path, checks are to process or drop 4-addr/3-addr packets
to peers decisively
Change-Id: I0a6c01b7555fa5d369ab2c9baf454d49808857fc
In tkip mic error handler, addr1 (RA) is used to find vdev.
This is fine for unicast tkip mic error. But for group tkip
mic error, addr1 will be group address thus vdev will not
be correctly returned.
Fix is to use sw_peer_id in rx_mpdu_start tlv to find peer.
And use peer to find corresponding vdev and pdev.
Change-Id: I1e9e461318e25184ef7113132adaa7fe7853924d
CRs-Fixed: 2157532
We need to save the first msdu and last msdu flags in nbuf cb
so we can do WDS source port learning only for the first msdu
even in the null_q_handler. Without this fix we observed traffic
stops when WMM is disabled.
Change-Id: Ic7870354519ebebb8a5025b3e6c9741064686199
The current tx & rx member of skb->cb structure has lot of common members
duplicated across win & mcl sub structures.
The common members are now moved out
and new members are added as per the requirement.
Also the members are organized to avoid additional padding
and fit within the 48 byte boundary for both 32bit & 64 bit platforms.
Change-Id: I27abc95d51127513cf2e7e9657a4ee84324b2cc9
CRs-Fixed: 2120295
Multicast frames in NAWDS mode causing flood of packets between the
nawds enabled AP's due to continuous sending of mutlicast frames received
from another AP and vicevera.Resolved the issues by droppping the 3
address Multicast frames and 4 address multicast frames with sa_peer
same as tx_peer.
Change-Id: I5edbcb060720510eb6ea5f5ffd46402535ba6748
CRs-Fixed: 2130039
check if the received reo exception ring descriptor has
valid information by checking for sw cookie magic number
and check for rbm validity within the msdus of the msdu
link descriptor.
Change-Id: I44a0f47e43a334f26cfdb4d41d3eed39483d8604
Due to a HW issue, msdu count received in REO entrance descriptor
could be wrong in case of some error packets received on RXDMA2SW
ring. Instead we should rely on Rx MSDU link descriptor entries
being non-null to pop MSDUs.
Change-Id: I1f4344752bdca13e9502aab79ee648b9b075d2e9
Replenish buffers in RXDMA refill ring based on low threshold
interrupts in addition to regular Rx processing. Also increased
RXDMA refill ring size to 4096.
Change-Id: If1f4592c815fe2404c4952a96b721cb6d4fdfcd0
In the DMA descriptor reap code, the check for NAPI quota is after
Tail pointer is updated. This is causing a descriptor leak in high load
conditions when loop is exited without processing the reaped descriptor.
This change moves the quota check to end of while loop.
Change-Id: I2f3432bf257947f85abc2216a0f2dfc44813c44c
CRs-Fixed: 2137017
add support to return msdu link descriptors received on rxDMA error ring
to wbm release ring without freeing the nbufs (msdus).
Change-Id: Ic12c3f0531a639b61d3d77cee6266ce595e4d1c9
Addded stats and filtering support in delivering of unencrypted frames
in mesh mode.
Change-Id: I2fd72f766660e500affeccda9aad03a0313d0659
CRs-Fixed: 2004658
Add a check to ensure MEC happens only for multicast
and broadcast pkts only. Also added additional check to
drop the mcbc pkt whose src MAC addr matches to the rx vdev.
This is in addition to the other MEC checks already in place.
CRs-Fixed: 2097918
Change-Id: Ie41fce0368cd6147c2a3678f8f4b31eb400f933c
Send peer create to NSS only when peer map comes for connected peers.
When peer map comes for WDS peers only update WDS peer specific entries.
Change-Id: I32d785180bcd1dae2703d40b55f4536685f10439
There is a case when the multicast/broadcast frame gets loop backed
even before a MEC WDS entry gets added, in this case
the MEC check based on sa_is_valid will fail, hence added
another ast lookup check.
Also fix the ast entry iterator to use _safe option, since
we are deleting ast entries in the same iterations
Change-Id: I0567893783649d991c3623a61c60fbc63d1a24ef
Read the ppdu id from MPDU start TLV instead of
ATTENTION TLV. The MPDU could extend to multiple
SKB buffer. The ATTENTION TLV will be in the TLV
of last SKB buffer. MPDU start will be in the
first SKB buffer in MPDU. Read ppdu id from MPDU
start TLV guarentee the correct reading
The msdu count in MPDU from REO entrance ring is for
msdu count for decap frame or MPDU count for not decap
frame. msdu length in msdu desc info is for msdu
length for decap frame or MPDU length for not decap
frame. The MPDU could extend to multiple SKB.
The continous bit in msdu desc info indicate if
the MPDU/MSDU extend to next SKB. code is modified
accordingly.
Change-Id: If9aeb278f84a57d64651e1f877b5185f6db63cd2
Extract rx status to add correct values in radiotap header
before sending to stack.
Change-Id: If7adf523dc61cd52c984ad0a97da82fccc608bbc
CRs-Fixed: 2017269
In mesh mode, it is possible to receive unencrypted frames while security
is enabled. Deliver such frames to OS stack.
Change-Id: Id148b6ecc1432b419ae97c92f2340155f3d851bf
CRs-Fixed: 2004658