Implement hal_rx_msdu_end_l3_hdr_padding_get API
based on the chipset as the macro to retrieve
sa_idx value is chipset dependent.
Change-Id: Ice1fc2d70e339dc1d80fa6f34f37c5a7aa074be5
CRs-Fixed: 2522133
Implement hal_rx_desc_is_first_msdu API
based on the chipset as the macro to
retrieve first_msdu bit value is chipset
dependent.
Change-Id: I8e8a3aceb225b591b96e6f8453ffbebf1f78e529
CRs-Fixed: 2522133
Implement hal_rx_msdu_end_sa_idx API
based on the chipset as the macro to
retrieve sa_idx value is chipset
dependent.
Change-Id: Ib874520be9e7ad778c2a9a3c415e5c3047450b31
CRs-Fixed: 2522133
Implement hal_rx_msdu_end_sa_is_valid_get API
based on the chipset as the macro to retrieve
sa_idx valid bit is chipset dependent.
Change-Id: I8bcb7030554331922ed12ea9da3ef51cd64b5c40
CRs-Fixed: 2522133
Implement hal_rx_msdu_end_da_is_mcbc_get based
on the chipset as the macro to retrieve
mcbc value is chipset dependent.
Change-Id: I860d259515c31345501080577d7a34beb97e5f60
CRs-Fixed: 2522133
rem_stats keeps counter of remaining stats to be processed.
At present this counter is of type uint8_t and hence can
accumulate till 256 counter but num_stats is of type uint32_t.
Hence if remainting stats to be precessed is 256 then rem_stats
value will be 0 as it will only consider LSB 8 BITS and it will
result in stats mismatch and hence memory leak.
Increasing size to uint64_t to accumulate more counter size.
Change-Id: Ifa86c7e4a73a5a700e9033c8756e986d86025cf9
Rx defrag waitlist was not getting cleared during dp_peer_rx_cleanup in
the case of STA mode even though the tid was getting deleted. This
created a scenario where the next time dp_rx_defrag_waitlist_remove was
called, it was trying to access now invalid memory. If a vdev was
disconnected in the middle of receiving traffic, then the tid would be
deleted but the rx frag waitlist would not. Upon reconnecting, the
reception of the next frag would cause a crash due to the now invalid
memory in the waitlist.
Change-Id: I5bb1a31f38fa45128d0f35fafaddaf729c99489d
CRs-Fixed: 2538879
Currently the interrupt mode is set as a part of
interrupt attach. The interrupt mode is needed for
pdev attach and hence it is decoupled from the interrupt
attach, setting the interrupt mode during soc attach.
Set the correct interrupt mode during soc attach.
CRs-Fixed: 2500015
Change-Id: I68496bed68cac5a2a2bd19adf2377bae7eb8783c
Currently after runtime resume all SW2TCL data and reo cmd
srng rings hp and tp value are flushed. In case of IPA
offload case SW2TCL3 righ hp value will be updated by IPA
and not by host. In case of runtime pm enable host is
setting the value to zero as part of runtime resume which
results in incorrect hp value of SW2TCL3. As part of this
change set flush event for rings which are accessed by host
during link down state and after runtime resume flush the
rings for which flush event is set.
Change-Id: I5c9afa708277cf3a6e6d5ef99447bc21f88cfdcf
CRs-Fixed: 2514621
In cases where one of the interfaces is a P2P-GO and
IPA has been enabled, the P2P connection establishment
fails.
When IPA is enabled, the REO destination is changed to REO4
which can be reaped only by IPA module. But in case of P2P-GO
interface in operation, this change in configuration causes
all the RX packets to be stalled due to incorrect REO configuration.
Hence, to avoid this case, do not change the REO dest config
when the interface subtype is P2P.
CRs-Fixed: 2498315
Change-Id: Ie9f01c3b353c7c0503e1541d6c79c2f47c9782f3
Refine dp_vdev_flush_peers,
a. wrap ast entry flushing into dp_peer_flush_ast_entry()
b. if unmap_only is true, logic keep same.
c. if unmap_only is false, also use __dp_peer_find_by_id
instead of dp_peer_find_by_id to get peer object.
only if peer flag valid is true, then call dp_peer_delete_wifi3
to avoid peer member invalid accessing.
Change-Id: I7a6d53e124ff369305b91050731901ff0a43d6af
CRs-Fixed: 2534274
Sequence number should be obtained from user_compln_ack_ba_stats_tlv
in HTT PPDU stats messages since enq_bitmap TLVs are not sent for
non-QOS frames.
Change-Id: I2d5ddb8c7397953081df94f77f0bd8a30a581b11
WAR for IPA_OFFLOAD case. In IPA_OFFLOAD case, host provides buffers in
the WBM2SW release ring designated for IPA for TX. So this ring is used
to release TX completions into, by WBM, and also by IPA to pick up
buffers from, for TX.
In some cases, its observed that when WBM tries to release a buffer
into this ring, however the ring is full. This causes back pressure,
resulting in a FW crash.
By leaving some entries with no buffers attached, WBM will be able to
write to the ring, and from dumps we can figure out the buffer which is
causing this issue.
Change-Id: Ia0450d36dec643f2631fea13cb0b8facba7425b8
CRs-Fixed: 2535170
Currently if tx flow control is enabled allocated tx desc pools
are deleted only in tx flow pool unmap handler from control path.
So cases in which control path unable to handle pool unmap handler
leads to tx desc pool resources memory leak. To handle this free
allocated all tx desc pool resources as part of dp flow control
deinit which is done as part of soc tx detach.
Change-Id: Ib750c2ce39baf7fc5aae5f0c8cb62bc848d2f864
CRs-Fixed: 2511515
Currently as part of rx frag packets handling, nbuf is unmapped,
but the corresponding rx desc unmapped bit is not set. The fragment
is stored until all the frags are received. Only after all the frags
are received defrag packet is reinjected back to reo. While in between
if driver is unloaded, as part of unload rx desc buffer pool is freed.
During buffer free corresponding rx desc unmapped bit is checked and
if the bit is not set buffer is unampped and then freed. This leads
of double unmap in case of the stored frag list buffers. As part of
this change set the unmapped bit during nbuf unmap.
Change-Id: I24cf1e88f3102bc985f95d2dc325509308a7bef9
CRs-Fixed: 2532302
Do not log when we succeed to find the vdev for vdev_id.
Instead log only on failure.
Change-Id: I292839af763a77c2c5e75124b24accbee222d58f
CRs-Fixed: 2501696
Add runtime pm apis to record last busy mark set by data path
during dp rx process.
Currently for mcl in some scenerios runtime sync suspend is issued
which puts the link in low power state with out waiting for link
inactivity timeout. This leads to throughput degradation in case of
rx direction as in rx processing data path extends the timer by marking
last busy to avoid immediate runtime suspend. But runtime sync suspend
does not take in to account of the link idle timeout value before
suspending the link. So using this apis, before issuing runtime sync
suspend check the duration since last busy mark by data path rx process.
If the duration is less than run time delay just do runtime put.
Change-Id: I694ef6ddec8f11fed44bf3b9e5ae18ad93b6ec24
CRs-Fixed: 2512326
added stats counter to check invalid release reason other than
FW and TQM in tx completion path.
added assert to make sure host is not releasing descriptors with NULL
address.
Change-Id: I3a30bd0f0c3954ed6435489d9b21f16201d1b840
Fix to avoid race conditions between two locks
a) soc->peer_ref_mutex
b) soc->ast_lock
Right order to for these two locks is to first
acquire a) and then b)
But in ast create path these locks are acquired in
reverse order leading to deadlock.
This change helps in fixing deadlock
Change-Id: I02f802fa12d5f4e4ae3f584cdffe36c9bf717f84
During special vap channel change, we see "monitor vap already created"
print on the console. This is the expected print, because
pdev->monitor_configured is set during wifi up. Therefore, change the
debug level of this print from ERROR to DEBUG.
Change-Id: Ia290b74d9be20691eac3ebc50f6cc3fff3e94953
CRs-Fixed: 2529580
When NO_RX_PKT_HDR_TLV is disabled, host gets the 802.11 header from the
RX packet header TLV (rx_pkt_hdr_tlv). When this macro is enabled, host
gets the 802.11 header from the raw data frame.
In case of MIC failure, host receives the decaped frame. This decaped
buffer does not have 802.11 header. Upper layer uses receiver and
transmitter address to process MIC failure. Therefore, get the RA and TA
address from rx_mpdu_start_tlv and passed it to upper layer.
Change-Id: Id5631051892d2e1b38b7833a0599fdc49ca2f6b7
CRs-Fixed: 2525613
VLAN LLC frames were dropped, instead these frames
are now given to stack for further processing.
Change-Id: Icaffc2e4755036fca0e2f606e29b41c58364e329
CRs-Fixed: 2508086
Add parameter to know if MBSS feature is enabled or disabled.
During 'wifi detect', the wireless config file is changed and
there's no way to figure out status of MBSS feature.
Change-Id: Ie56244097fd15efc71213f23e5afcb57188c9386
CRs-fixed: 2531506
During SSR in dp_vdev_flush_peers function, the else condition finds peers
to delete by calling dp_peer_find_by_id. If the delete_in_progress_ flag
has already been set to TRUE, then dp_peer_find_by_id will return NULL
and not delete the vdev object. Calling __dp_peer_find_by_id will always
return peer id so all peers are sure to be deleted.
Change-Id: I86bf2bdda7ebc5a9c2f4bbc877392ebff9cbaf59
CRs-Fixed: 2513104
Degrade log level from INFO to INFO_HIGH in function dp_get_vdevid,
this is to prevent console log output which may impact spinlock lock
/unlock time.
Change-Id: Ic1ecb2f0e2c5fcf5d15766921326a8cd80e67103
CRs-Fixed: 2522041
Peer rssi is updated with the rssi measured on primary 20 and
not on the entire bandwidth.
Scale the peer rssi value by packet bandwidth offset.
Packet bandwidth offset for packet bandwidth of 20/40/80/160 is
0/3/6/9 dB.
Change-Id: I13eb8c17ec9828c0025d6b3a92a8b26b971268a1
CRs-Fixed: 2518598
With current implementation in_use bit for last descriptor is not
getting set as 0. Removing redundant code and setting in_use bit
for last descriptor as 0.
Change-Id: Ia1945fcb814136128d18a8aec473ed1b4786dd9e
While draining the pending reo cmd's during wifi down,
the tid array from the peer structure is used in debug
statement.However,the peer is freed much before
the drain operation.This leads to use-after-free access.
Change-Id: Idf92ccd0fe4eba3eed8a97ac83485de8fccb0f24
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 references to peer_local_id from the
following APIs:
1) dp_rx_process
2) dp_rx_process_rxdma_err
Change-Id: Ia1c8bd091759132367718e6c6d5f67cf5a98e507
CRs-Fixed: 2512706
Pass pdev to dp_peer_stats_notify API instead of de-referencing
this from peer structure.
Change-Id: I5dc679283f5822f44b4140aefb3aee44a826c720
CRs-Fixed: 2500647
Adds new INI variable for threshold control.
Host sends message to target with new threshold info.
If buffer reaches threshold then MAC drops incoming monitor frames.
Change-Id: Id659d7df68a5ec0b22fb571dc1ffa4990f8fcc4f
In the sdx platform, WLAN monitor mode is disabed,
in other words, CONFIG_FEATURE_MONITOR_MODE_SUPPORT
will be set to n, but dp_mon_buf_delayed_replenish
hasn't be defineded if it set to n, which can cause the
runtime unknown symbol issue. So add the definition
for it.
Change-Id: Iec50f7cc5ed6f94e2f5a40fbc6594c2830d1359f