The tx_mgmt_desc_ctxt member of struct htt_pdev_t has been unused
since the initial snapshot of the driver, so remove it along with the
unused underlying data structures.
Change-Id: Iebd73c0c9eb8f882ec6a0d01ad2979edb701cb80
CRs-Fixed: 3428241
Few of the CE descriptor related macros are moved from qdf to
ce_internal.h file. Hence rename the corresponding macros.
Change-Id: I64b74456fb3f349ab65b3c955461ef3693ca318d
CRs-Fixed: 3388380
Configure RX refill ring size based supported nss mode.
In 1x1 mode throughput supported will be less,
it does not require higher RX refill ring size so
in 1x1 mode use reduced refill ring configuration.
Change-Id: Iab1db3e99b1a30cf1dd3d584192363cbffa84ec1
CRs-Fixed: 3376948
Two different crashes are observed due to rtpm get/put count
mismatch for HIF_RTPM_ID_HTT dbgid.
1. During idle timeout shutdown: Missing rtpm related htc packet
tags for htt_h2t_ver_req_msg(), htt_h2t_frag_desc_bank_cfg_msg()
and htt_h2t_rx_ring_rfs_cfg_msg_ll() messages cause system crash.
2. During wlan connect: In ol_tx_completion_handler(), rtpm put is
called without rtpm get.
Fix given:
1. Add relevant HTC_TX_PACKET_TAG_RUNTIME_PUT and
HTC_TX_PACKET_TAG_RTPM_PUT_RC in the above functions to invoke
missing rtpm put calls and call htc_dec_return_htt_runtime_cnt()
to avoid calling rtpm put without rtpm get in htc_cleanup().
2. Remove extra htc_pm_runtime_put() from ol_tx_completion_handler().
Change-Id: Ia9163464af0fc0700046578633e9587c009841f5
CRs-Fixed: 3357909
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.
Change-Id: Ie320d97a2df018fb0ad1a39c3fb2683e564d1808
CRs-Fixed: 3217418
Make changes in packet logging to send QDF status
and type instead of packet log type and status.
Change-Id: I8c1d04a78272159f7d34d6034c41d52e1e44b61d
CRs-Fixed: 3224876
Host send HTT_H2T_MSG_TYPE_WDI_IPA_CFG cmd to fw, need update
high 32bit addr for non-smmu platform which alloc physical
address more than 4G.
If alloc address is 0x1 5000 0000, it will cut off
bit32 ~ bit63, the value fw get is 0x5000 0000, the address
may be used by peripheral. When fw write addr 0x5000 0000,
assert will happen.
When this change compile on 32bit platform, it will error, for
right shift must less than system width.
Change-Id: If1e84cfdcd15494be3f7327986ff0e91ec7b2b3f
CRs-Fixed: 3097240
Host send HTT_H2T_MSG_TYPE_WDI_IPA_CFG cmd to fw, need update
high 32bit addr for non-smmu platform which alloc physics
address more than 4G, like addr 0x1 5000 0000.It will cut
off bit32~bit63, fw get memory is 0x5000 0000, it's maybe
use for peripheral memory.when fw write addr 0x5000 0000,
it will meet some error.
Change-Id: Ic5c5c00c85bdf08e61c9ff0f539989d2e96bb153
CRs-Fixed: 3077016
While Rx buffers are getting umapped from net rx context and
if IPA pipes are enabled at same time from MC thread context,
this is leading to race condition and IPA SMMU map/unmap is
going out of sync, in adrestea targets.
To fix this introducing IPA SMMU map lock and sync map/unmap.
Change-Id: Ida4c321d94f9640135c67210c69edb355d827c86
CRs-Fixed: 3021027
Since it has memory limitation on sdx platform,
also it need different TX buffer configuration for
different case, which require the IPA tx buffer
numbers to be configurable but not only be power
of 2. So did such change for Genoa to meet different
IPA TX buffer config.
Change-Id: I4482e8f37957d3bfcd82645cf0dec0257ad80e80
CRs-Fixed: 2865851
Currently HTT frag descriptor address is trimmed to 32 bits,
but there is possibility of frag descriptor getting allocated
in range greater than 32 bits when smmu is disabled.
So set the full 37 bits frag address in msdu HTT TX descriptor.
Change-Id: I142d151f6042972eb4a23abdb10cc6ee28ca1613
CRs-Fixed: 2826567
cds_get_context() function already takes care of logging the
caller function name in case of any error.
Hence there is no need to add the error log again.
Getting rid of these unnecessary logs reduces driver memory footprint.
CRs-Fixed: 2816598
Change-Id: Ide7e1cacb3752f8e9e5797629549079bf4ab8557
Fix the error in smmu_enable condition check for IPA Tx buffer
and also add the flag to mark smmu map/unmap.
Change-Id: I1a9b768c6f17a76b7a857367f342ffbe82e48379
CRs-Fixed: 2793156
Add cdp ops for IPA Tx buf SMMU-S1 unmapping and
call unmap from ipa_uc_ol_deinit if IPA uc_loaded,
also assert if mapping/unmapping failed.
Change-Id: I79f293fcf5d6f02e3a01d6c8ff829f4ca87e76e8
CRs-Fixed: 2788811
Do ipa tx buffer map after registering IPA ready
callback with IPA driver. Otherwise ipa_is_ready
flag always is false while calling cds_smmu_map_unmap
from htt_tx_ipa_uc_wdi_tx_buf_alloc, and then
it will not really make tx buffer map take effect
Change-Id: Ib2fee8e5b68d5ba06c8079d39c0a5695087cbc2b
In ht monitor mode, mcs data rate is not correctly populated in
radiotap header, so if ht_flag is set, assign mcs value to ht_mcs
to fix it.
Change-Id: If428275671068b31ae1367244c62bc4cac25a2af
CRs-Fixed: 2772405
In order to improve the Genoa DBS KPI, need to
increase the IPA tx complete ring size from
1024 to 2048. And the tx buffer count also will
increase from 1023(1024-1) to 2047(2048-1) according.
But in fact, as for wlan fw, it just only reserve
1500(1100 for 5G, 400 for 2.4G) tx desc for packets
from IPA, so some tx buffer will not used here,
which will waste memory. So to save some memory,
export CONFIG_LIMIT_IPA_TX_BUFFER for platform
configuration to limit the max IPA tx buffer count
Change-Id: Id5d4c5a220b588747f3d1981627f6253d7c3305b
When rx data stall happens due to ring refill failure
check for refill debt count.
CRS-Fixed: 2740233
Change-Id: Ib88074f0e7ed9a64b522a64ff669af87626ce1da
Enable logging feature which helps to check rx ring refill failure.
Currently rx ring refill count is updated same time from multiple
places without protection, so use atomic variable for refill count.
CRS-Fixed: 2740225
Change-Id: Icd88d351cb15d0f18edf0b986e4de95dbe4e6989
In case of partial reorder, seq number is sent by FW
when first_msdu bit is set in msdu. For all other msdus host
maintain copy of cur_seq_num_hl in pdev.
cur_seq_num_hl gets updated when htt_rx_mpdu_desc_seq_num API
is called. Currently htt_rx_mpdu_desc_seq_num API is called
from multiple functions. Add update_seq_num flag to make sure that
cur_seq_num_hl updates only during store function.
Change-Id: Ie3178ee6d1642dbeaf0cea032dc80e0ecccc1dc2
CRs-Fixed: 2683869
Add support to parse the HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND
message. This target to host message is received when CFR feature
is enabled.
Change-Id: I592cd5ca663018f2958550e6e3e383bb796ee168
CRs-Fixed: 2680730
Currently, sizeof(qdf_dma_addr_t) is 4 bytes, but IPA driver
and WLAN FW always use 8 bytes, we should follow up with them,
otherwise, the numbers of rx complete ring entries will not be
same in both sides. Meanwhile, for tx complete ring, during the
first time initialization, we fill the buffer address with 4
bytes, while GSI FW read 8 bytes address content from tx complete
ring, which should cause the GSI FW get invalid address on the half
way and cause the smmu fault issue. So fill 8 bytes length buffer
address to the tx complete ring can avoid such issue.
Change-Id: I61021627b634d4b1525727cc944ee410ed3154db
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_set_safemode
- txrx_set_drop_unenc
- txrx_get_pdev_param
- txrx_set_pdev_param
- wdi_event_sub
- wdi_event_unsub
Change-Id: Ib3511cbdead75b30e899dbf00f936ffdae316b71
CRs-Fixed: 2541657
In case of nbuf map failure as part of htc_send_pkt for
tx credit flow disabled endpoints, htc pkt is not put
back in the freelist as return status is not checked
resulting in memory leak.
Fix is to put the htc pkt back in the freelist based on
status returned by htc_send_pkt.
Change-Id: I9173fa3684bc887a360b92d48b689c53a5ad5dbe
CRs-Fixed: 2593729
For vht bw, there is a transformation of rx_status->vht_flag_values2
in qdf_nbuf_update_radiotap_vht_flags(), so strictly copy
rx_status->vht_flag_values2 from rx_desc, do not transform twice which
leads to wrong vht bw.
For rssi, only show first mpdu rssi info in a ppdu, firmware reports
-86 rssi_comb for mpdus other than the first one, calculate
ANTSIGNAL by adding with noise floor will show a wrong rssi for those
mpdus.
Change-Id: I776d85cea2cf0f48beeed351ed0643699d805d54
CRs-Fixed: 2588768
Add credit tracking for HL Data Path in DPTRACE.
Also update proto_bitmap to dynamically enable/disable
credit tracking.
Change-Id: Idd9216b634586f3a81c2194ea4bd2122a472154a
CRs-Fixed: 2574053
In Monitor Mode, RSSI is always -96 for packets in TCPDUMP.
Populate the correct RSSI value in Monitor Mode.
Change-Id: Iba9fe7091043d27828f4742058ed3d389cde7e26
CRs-Fixed: 2568129
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: I678d7a7de7132417ff6051b0fd6da5d14426d21e
CRs-Fixed: 2540861
Host driver could not get correct timestamp of Rx AMPDU packet sometimes.
The reason is PTP timestamp is stored in PPDU_END info, only last msdu
description contain it.Rx indication which sent from target has limited
number of MSDU.If none of them is last msdu, Host driver will not get
the correct timestamp.
Add two parameters to record the last system time and timestamp. If
Host driver detect no last msdu in Rx indication, It will calculate the
timestamp according to the difference of two parameters and current
system time.
Change-Id: Iea94f5c0a681ec1d377cbed9dd5b00b100223cc7
CRs-Fixed: 2513659
If the firmware gets compromised, the values sent to
the driver could result in buffer overflows.
Validate HTT MSG "msg_word" to avoid buffer overflows.
Change-Id: I6073029f61a358da32bcc0dcfc339d9bb7ee8218
CRs-Fixed: 2213659
In Genoa SDIO ADMA implementation Host sends packets to FW in
multiples of SDIO Block size.
If the packet/bundle is not block aligned Host adds padding at the
end of Packet/Bundle.
If the TX packet plus padding exceeds one FW TX Buffer, Padding data
will occupy the next FW TX buffer. Same applies for bundle TX packet.
For above scenario, HTC_FLAGS_PADDING_CHECK of HTC header Flags is used
to notify the FW that - Padding data follows the currentHTC packet
Since the padding data will take one extra FW Tx Buffer, host need to
handle the extra Tx credit being used by the padding data/buffer
CRs-Fixed: 2516619
Change-Id: Ie2d2292fabb30e1a13eebe4d11b57f452e42afa8
Return number of msdus poped as return value for
htt_rx_frag_pop_hl to process fragmentation indication
correctly.
Change-Id: I104c04757aa8bfac5d6516b1455e1e0506b460a4
CRs-Fixed: 2419759
In HL data path, when HTT credits are used outside the HL scheduler,
credits are getting deducted form target_tx credit only.
When CONFIG_FEATURE_HL_GROUP_CREDIT_FLOW_CONTROL is enabled, credits
should be deducted from TXQ group also.
Change-Id: Ice4160043fc1d812686f8ce7ee310110299d2276
CRs-Fixed: 2485819
In case of high latency data path, addba/delba messages
needs to be handled to support partial reorder.
This reverts commit b8919e14c5
and fix below security isses in ol_tx_addba_handler.
1. handle memory allocation failure scenario.
2. Free array memory before assign new memory to avoid
memory leak.
Change-Id: I4f577c9e8bcb40f70ffb1b305659a059eac68d8d
CRs-Fixed: 2488966
Post rx mic error information to HDD via new HDD mic
error callback(hdd_rx_mic_error_ind) registered to
.rx_mic_error member in dp_ol_if_ops.
Change-Id: Ia1e2b78a94dddba48937995ecf62fb5a7ae4139d
CRs-Fixed: 2488452
Host need to fill netbuf with qtime instead of tsf. So host first
need to set enable_ppdu_end to 1, so that FW will pass ppdu_end
contents to host, and host can translate tsf64_time into qtime.
The tsf64_time is new added to fw struture, so host will need
add it accordingly to struct hdd_adapter, and keep it updated
in time synchronization function <hdd_update_timestamp>.
Change-Id: Ib19ac1411c4e17624c012f188297c9f2122642d2
CRs-Fixed: 2444456
Do not change bus/target delta for QCN7605. All the credits
received from FW will be released to the schheduler.
Change-Id: I17dbd1a4545d8b577ea521773c17506a0fc818cf
CRs-Fixed: 2423138