提交線圖

103 次程式碼提交

作者 SHA1 備註 日期
Edayilliam Jayadev
10fe6982eb qcacmn: Add HTC APIs to schedule/cancel custom callbacks
Add HTC layer APIs to schedule/cancel custom callbacks.

CRs-Fixed: 3408693
Change-Id: I1316685707b7abc6c8d86ec4d237dc920f9f78eb
2023-03-14 08:46:06 -07:00
Jeff Johnson
22f89679c1 qcacmn: Fix HTC documentation
The kernel-doc script identified some kernel-doc issues in the htc
folder, so fix them.

Change-Id: I6523448836f4a0cdd1ff174634fce287b2d85d6a
CRs-Fixed: 3377576
2023-01-14 19:59:53 -08:00
Amit Mehta
ea172ef154 qcacmn: Do RTPM put during cleanup in case of WMI Tx completion failure
For WMI messages RTPM get is done during HTC message send and the
corresponding put is done in Tx failure or in Tx completion handler
for Tx success case. In the case where Tx completion is not received
for WMI messages RTPM put is not done as part of the cleanup which
results in RTPM Get and PUT call out of sync issues.

To fix the issue as part of HTC cleanup do RTPM put for WMI messages
for which tx completion is not received.

Change-Id: If92f4bd8a6c104d7ccef1e33b31aa765ea6100bd
CRs-Fixed: 3315404
2022-10-26 07:29:49 -07:00
Jeff Johnson
664b1762ea qcacmn: htc: Fix misspellings
Fix misspellings in htc/...

Change-Id: Id533c5659a137bfe8e2b6ce9380e65d432ba5ad5
CRs-Fixed: 3304687
2022-10-10 16:22:04 -07:00
Nandha Kishore Easwaran
93bf7e1fb1 qcacmn: Schedule CE tasklet when resource runs out
If there is no resourse to send packet via HTC, then check if interrupts
are not processed from that CE for last 3 seconds. If so, schedule a
tasklet to reap available entries. Also if Queue has reached 1024 entries
within 3 seconds, then also schedule tasklet.

This change is added because there is a case where intermittently
completion interrupts are not received from CE3 and hence adding
this WAR in host to come out of this issue scenario.

Change-Id: I126cd5e678517127659237308f8f6b1313f8f422
CRs-Fixed: 3234943
2022-07-14 01:02:11 -07:00
David Oladunjoye
4cfc54cf60 qcacmn: htc: Replace fallthrough comment with attribute
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.

Change-Id: I7ed1baaad93aea2cd2551dd3b5f9a93953154188
CRs-Fixed: 3218240
2022-07-07 02:38:39 -07:00
Ananya Gupta
8565e7029f qcacmn: Register DP, HTC, HAL modules with Runtime PM module
With restructuring in HIF runtime PM module, modules are
required to register with the HIF runtime PM module. Also,
changes are done in functions of allowing and preventing
runtime PM suspend as part of restructuring.
This change registers DP, HTC and HAL internal modules
with runtime PM module and update HIF runtime PM function
calls with the restructured code of HIF runtime PM module.

Change-Id: I8899a1d3b92a90a05c5eaf4df7609f4008f739f8
CRs-Fixed: 3169372
2022-06-18 23:11:24 -07:00
Amit Mehta
70a8e8a708 qcacmn: Track HTT nbuf map and unmap count
Add logs to track nbuf map and unmap count for HTT messages.

Change-Id: Ib2fdcdb03b2a8d5e574f34e3eef30601d3976664
CRs-Fixed: 3184850
2022-05-11 01:03:15 -07:00
Manikanta Pubbisetty
fe0463deb8 qcacmn: additional runtime PM stats for HTC layer
Add few more stats to the existing runtime PM stats for
HTC layer.

Change-Id: I1610acc534997b14ae070c48da03b4e07a00d9ef
CRs-Fixed: 2949969
2021-05-20 07:58:46 -07:00
Manikanta Pubbisetty
536d86610b qcacmn: fix runtime PM get/put out of sync
Currently, in get_htc_send_packets() when the
hif_system_pm_state_check() fails, we are not doing a
runtime PM put operation for the corresponding get operation.
This imbalance will never make the system enter runtime suspend
state and also we do a BUG() when such imbalance is encountered
during runtime PM deinit. This change also fixes a potential
memory leak.

Change-Id: I3e5916005d583de42a49dd2dc0632bfcca1251e4
CRs-Fixed: 2947247
2021-05-20 05:56:55 -07:00
sandhu
9dc81d7965 qcacmn: Add HTT HTC tx completion based packet free
Add CE4 tx completion for htt htc packets. current logic
uses htt htc misc list to free packets.

Change-Id: Iea15d0dba544d3cc7581b11aa7ab7e5c0024133a
CRs-Fixed: 2630768
2021-05-17 18:56:02 -07:00
Manikanta Pubbisetty
42c4fca998 qcacmn: add runtime PM stats for HTC layer
Runtime PM for HTC layer has multiple cases of GET/PUT operations.
Adding runtime PM stats for HTC layer, this helps in debugging
RTPM GET/PUT out of sync issues.

Change-Id: Ib27efd73dce0bb5bd3ff030bd7ae1bc833f29610
CRs-Fixed: 2923250
2021-04-21 04:23:30 -07:00
Yeshwanth Sriram Guntuka
6611374cf4 qcacmn: Trigger sys wakeup for WMI command when WOW is enabled
DHCP packet is received in the IPA exception path when
system is suspending. As part of DHCP packet processing,
WMI_PEER_SET_PARAM_CMDID is sent to FW after WOW is
enabled resulting in self recovery getting triggered by
host.

Fix is to do an explicit system wakeup if a WMI command
has to be sent post WOW enablement.

Change-Id: If1904a4fe5c861deed1b35071be10cb8cc8d6407
CRs-Fixed: 2890913
2021-03-31 01:04:01 -07:00
Jingxiang Ge
2c6d25c0ad qcacmn: Add detection for tasklet delay
This feature is used to detect CE tasklet scheduling delay
and credit response delay issues.

Change-Id: I9a8fcb425edd5cf96fae5f6cd3bfc7f51172c814
CRs-Fixed: 2874874
2021-03-16 00:45:23 -07:00
Aditya Kodukula
c8963655ef qcacmn: Rename the flag QCA_QIFI_NAPIER_EMULATION
To make it generic, rename the flag QCA_WIFI_NAPIER_EMULATION
as QCA_WIFI_EMULATION.

Change-Id: I21b34475ce550b6875c5f19cf1fbba342862ecee
CRs-Fixed: 2871345
2021-02-06 14:51:18 -08:00
Rakesh Pillai
6ee7aeb0bd qcacmn: Avoid logging in packet transmission path
Currently if the driver is in runtime suspend/suspending
state, any packet transmission will request for resume
via hif_pm_runtime_get.

Unfortunately there is a logging in the above API which
will lead to more time consumption in the NET_TX softirq
context. This can lead to other delay in processing other
softirqs in the system.

Fix this by skipping the logging in the packet transmission
path.

Change-Id: Icc9f5b67794f7666243eb059f2e07a06a987002e
CRs-Fixed: 2844126
2021-01-12 14:34:40 -08:00
Manikanta Pubbisetty
ade01cf0de qcacmn: fix use after unmap case for HTT packets
When the number of HTT packets in the endpoint TxQueue is more
than MaxTxQueueDepth, we hit the overflow condition. If the
overflow condition is hit, in htc_try_send(), when EpSendFull()
returns HTC_SEND_FULL_KEEP, we try to send all the excess packets.

As part of this logic, we are calling restore_tx_packet(); the
intention of calling resotre_tx_packet() is to just perform
skb_pull_head(), but restore_tx_packet() will also unmap the
HTT packet. Later, when we try to send the excess packets, these
would be already unmapped and when the HW/FW try to access this
unmapped location, it would lead to SMMU fault.

Change-Id: Ie60a302d6a2736f7aa12944b7016d2bdb9ffb10d
CRs-Fixed: 2836444
2020-12-17 13:40:03 -08:00
Yeshwanth Sriram Guntuka
b2fa2a1dbd qcacmn: Increment htc runtime cnt prior to hif_send_head
HTC runtime count is incremented after posting the HTT
ver req message to CE4. There could be possibility of
processing the ver response message from FW even before
htc_runtime_cnt is incremented. This can casue RTPM put
to not happen causing imbalance in get/put count.

Fix is to increment htc_runtime_cnt before enqueuing
the HTT message to CE.

Change-Id: Ib9b69910cd14193c41ecfee804b390f8a6cdef49
CRs-Fixed: 2794451
2020-10-12 15:06:33 -07:00
hqu
ba45fe7e2c qcacmn: Fix implicit-fallthrough compile error casued by gcc 9.3
Compiling with gcc 9.3 will cause many implicit-fallthrough
compile errors.

Fix is to add keyword fallthrough to resolve such compile error.

Change-Id: I2e7dd1525861d951e3be44f6665e149499f0f5d6
CRs-Fixed: 2785178
2020-10-08 12:24:02 -07:00
Yeshwanth Sriram Guntuka
478749a365 qcacmn: Do RTPM put during cleanup when HTT ver resp is not received
For HTT h2t message which has a response from FW, runtime
get is done in HTC layer and the corresponding runtime_put
is done as part of the HTT response processing. In a scenario
where the HTT response is not received from FW or not processed
by host, runtime_put is not done as part of cleanup and panic
is triggered due to get/put imbalance.

Fix is to do RTPM put as part of htc cleanup when the HTT
response from FW is not received or processed.

Change-Id: I17ccb7c3e2293c95f5f233d36c6ef38a75733cce
CRs-Fixed: 2779113
2020-10-02 10:37:14 -07:00
Yeshwanth Sriram Guntuka
86084af159 qcacmn: Do runtime_get_sync in htc_kick_queues
Interface down is received when wlan is in runtime
suspend state. The wmi commands that have to be sent
as part of this cause a runtime resume and the htc tx
queues are processed within runtime_resume callback.
The work that is scheduled for this tries to do a
runtime_get as part of htc_try_send but the runtime_status
is still in resuming state causing EINPROGRESS return
value. This will result in the wmi commands to be not sent
to firmware and eventually resulting wmi command timeout.

Fix is to do runtime_get_sync in htc_kick_queues.

Change-Id: I1f4ba1c3dad32f7c407c4416529424be6d4bf18d
CRs-Fixed: 2711998
2020-06-25 18:14:01 -07:00
Neha Bisht
f224d5dc91 qcacmn: Introduce counters per endpoint to improve HTC debuggability
To introduce counters htc_send_cnt and htc_comp_cnt per endpoint to
enhance pdev level debugging in HTC path.

Change-Id: I8d31e3a533e0f8de4c89d3609b20c148aef3a4ff
2020-06-25 15:08:09 -07:00
Ke Huang
b404458d20 qcacmn: Add NULL pointer check for KW issues
Add NULL pointer check in function hif_send_single() and
htc_dump_counter_info() for KW issues.

Change-Id: I4b020c566b14b28a825c13752dccf67b5f8bb837
CRs-Fixed: 2675205
2020-05-29 03:13:53 -07:00
Jingxiang Ge
b75ec972c4 qcacmn: Fix regression issue for EAPOL fail
This is regression issue.
regression cause I24cddb9d10e4cb675c8375cbd0f589c7718bd680.

Issue happens in get_htc_send_packets, and it is possible
htc_packet_dequeue but hif_pm_runtime_get failed as suspend
state.

Revise to original logical before regression change.

Change-Id: I74c309d7a3decdd6fe905e9f1e61916905876aec
CRs-Fixed: 2663338
2020-04-19 01:14:01 -07:00
Jingxiang Ge
e7d41574f3 qcacmn: Add dbgid for each runtime put/get
This is to enhance statics for runtime put/get, which is
to detect if there is mismatch for usage_count.

Change-Id: I24cddb9d10e4cb675c8375cbd0f589c7718bd680
CRs-Fixed: 2647972
2020-04-07 01:20:41 -07:00
Manoj Ekbote
1c1ef8c2bd qcacmn: Print re-queue message based on threshold
When packet tx fails at transport layer, packet is re-queued and given to
HIF layer again. In this change, print the warning message about re-queue
only when tx fails for 5 consecutive attempts due to no resources
available at HIF layer.
Since re-queuing is not fatal, it need not be printed on every attempt.

Change-Id: I00082470420e29dfe4fb7a745ac709a682ba032e
CRs-Fixed: 2621763
2020-03-26 20:18:56 -07:00
Yeshwanth Sriram Guntuka
e71aeae1bd qcacmn: Set FIXUP_NBUF flag only on successful nbuf map
In the scenario where nbuf_map fails during packet
send in htc_issue_packets, restore_tx_packet done
as part of cleanup, does nbuf unmap even though map
failed.

Fix is to set the fixup_netbuf flag only if nbuf map
is successful.

Change-Id: I642eff15792a7e374434e5a7a05ad546af376b3a
CRs-Fixed: 2625765
2020-02-26 13:31:07 -08:00
Alok Kumar
9cc180ec26 qcacmn: Avoid NULL pointer dereference in send_packet_completion
If cds_dp_open fails during driver load time, cds_close is
called in clean up path. During cds_close, HTC cleanup happens
which makes target->hif_dev = NULL and in send_packet_completion
target->hif_dev is dereferenced without NULL check.

Add NULL check before dereferencing target->hif_dev during
send_packet_completion.

Change-Id: I236a083e194bf1f16d261e6334ac512c4f6bcd94
CRs-Fixed: 2625690
2020-02-25 06:23:56 -08:00
Rakesh Pillai
4863352e53 qcacmn: Unmap the htc connect buffer after connect failure
The htc connect message buffer is not unmapped,
if the firmware does not send wmi ready event to the
host.

Scenario:
- Host sends htc init command.
- The command is queued into the src ring.
- The firmware has crashed before the Copy Engine
  could copy the message to the destination ring
- Due to the above point, no copy completion
  interrupt is received.
- The host times out during its wait for the wmi
  ready event.
- Hence the htc init command buffer stays unmapped
  and unfreed.

As a part of the wma ready event missing cleanup,
the htc connect buffer is not unmapped. Fix this
to avoid missing to unmap the buffer.

To avoid a side effect of sending a completion for
HTC connect command, all the commands are freed in
the htc completion handler in case of SSR.

CRs-Fixed: 2512344
Change-Id: I05026b3cbb764197e6df85c41634002d271a50e5
2019-12-25 22:11:36 -08:00
Nirav Shah
eb26831637 qcacmn: Update tx/rx bundle statistics for USB interface
Update tx/rx bundle statistics for USB interface.

Change-Id: Ia7951f9feb88ca28e055d9f32f0dfee65c7f0bf9
CRs-Fixed: 2571550
2019-12-06 08:40:56 -08:00
Visweswara Tanuku
b3518aff5c qcacmn: Genoa: SDIO: Revert WAR - Do not use HTC_FLAGS_SEND_BUNDLE
Remove the WAR, which doesnot use HTC_FLAGS_SEND_BUNDLE

This reverts commit 68f186311d

Change-Id: I7d350faca8645a5d65af708cb3fb231895a3fe37
CRs-Fixed: 2522724
2019-10-31 10:08:21 -07:00
Visweswara Tanuku
957b63aec6 qcacmn: Genoa: SDIO: Handle Tx Padding & Credits
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: 2516617
Change-Id: I1eb394859689b281653bfd6d681804eb016a14cf
2019-09-08 07:37:36 -07:00
Visweswara Tanuku
68f186311d qcacmn: Genoa: SDIO: Tx - Do not use HTC_FLAGS_SEND_BUNDLE
Genoa SDIO FW doesn't use the HTC_FLAGS_SEND_BUNDLE
in send direction, host to fw

Do not set this flag during Tx bundling for HTC Packets
This is a WAR to avoid FW crash, until fix available from FW

Crs-Fixed: 2511297
Change-Id: Iaf178f9e1a9c07ca25a8b801c667fb0d16fac85c
2019-09-08 07:37:33 -07:00
Nirav Shah
31435bbef5 qcacmn: Fix DHCP indication to FW feature in SAP for HL
In case of HL, send tx completion bit in HTT tx descriptor
to receive tx completion from FW and disable DHCP indication
to FW properly.

Change-Id: I2540a125c84c322507acdc0647ee8839d21067ce
CRs-Fixed: 2506020
2019-08-20 14:38:41 -07:00
Yue Ma
4986b2588b qcacmn: Log runtime PM resume source
It is very critical to know the source of who requests runtime
PM resume to debug all kinds of runtime PM related issues. Hence
log them accordingly.

Change-Id: I9551830b1cb567fd29e9d9bbec18705f9cc5e9ec
CRs-fixed: 2496481
2019-07-27 02:49:10 -07:00
Himanshu Batra
032d352263 qcacmn: Replace void * Host Target Communications handle with abstract type
Replace void * Host Target Communications handle with abstract type handles
provided by Host Target Communications component

Change-Id: I16ca87e4f9716791d340da2fda0a8a640fa2ec34
CRs-Fixed: 2487151
2019-07-25 00:25:49 -07:00
Ajit Pal Singh
5c3ba8908f qcacmn: dp: hl: Read tx resources after single thread check
Bus TX resources are being read before the single thread check.
If the thread is pre-empted, the tx_resource variable may not
match with actual TX resources.

Change-Id: I7e8af58a5702172a4cfbea9175f333aad4a57238
CRs-Fixed: 2459253
2019-07-02 08:39:20 -07:00
Alok Kumar
5d4c6f2f17 qcacmn: Avoid NULL pointer dereference of pointer 'pPacket'
Pointer 'pPacket' returned from call to the function
'htc_packet_dequeue' may be NULL.

Add a NULL check for pPacket before dereferencing it.

Change-Id: I1ecb82cce0fc00877b3ec2de2676027dde261186
CRs-Fixed: 2478206
2019-06-28 11:08:59 -07:00
Nirav Shah
03c409d4a2 qcacmn: Add error handling in case of hif_send_head failure
In case of SDIO/USB TX bundling if there is hif_send_head failure
packets are not added back to Endpoint tx queue and resulting in
packet drop.

Add packet back to tx queue if hif_send_head send failure
for bundled packet.

Change-Id: Id613a414f0caa71a33c79186ae726550cb710c4a
CRs-Fixed: 2468882
2019-06-24 14:26:27 -07:00
Nirav Shah
0811d82877 qcacmn: Fix multiple unmap of same netbuf
Clear HTC_TX_PACKET_FLAG_FIXUP_NETBUF flag in
hif_send_head failure scenario to avoid
multiple unamap of same netbuf.

Change-Id: Id7f6aeba1eff0d23b76927fcbb03643409fc7859
CRs-Fixed: 2437034
2019-05-14 23:57:59 -07:00
Jeff Johnson
5a6cc79b9e qcacmn: htc: Replace explicit comparison to NULL
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within htc replace any such comparisons with logical
operations performed on the pointer itself.

Change-Id: Ibb6d24aff9824d7e7cf253c1fe3081443cbfb63b
CRs-Fixed: 2418252
2019-03-27 06:09:57 -07:00
Ajit Pal Singh
3fcc082eac qcacmn: Do not call get_htc_send_packets if no TX resource
For USB, do not call get_htc_send_packets() in htc_send_data_pkt()
if no TX resource is available.

Change-Id: I17a3dd54c2582620ab2be1e0f6c156904dc52d30
CRs-Fixed: 2412376
2019-03-26 12:02:29 -07:00
Frank Liu
d2cc13ede9 qcacmn: Restore the correct credit for EP
qcacld-2.0 to qcacmn propagation

Restore the correct credit for the flow control endpoint, add back
all the credits consumed by the queue, if fail to send packet by
HIFSend_head.

Change-Id: I480f7aba5ce8c8d1e57caaae5b2bfcd77209091c
CRs-Fixed: 2360669
2019-03-01 09:24:06 -08:00
Vivek Natarajan
ed3bf79dd4 qcacmn: Use htc_lock while accessing TxLookupQueue
There are other places where txLookupQueue is protected
with htc_lock instead of lookup_queue_lock.

Change-Id: I91497ce4593a14033871d3e8c3a97deab222d365
2019-01-14 08:38:17 -08:00
Rakshith Suresh Patkar
5aeabd612d qcacmn: Add support to handle new htt format
If FW supports new htt format include only payload length in
the header length.

Change-Id: Ia5ec9a474bc5fe68de28273e6f9615d36de94a7c
CRs-Fixed: 2359253
2018-12-06 08:39:32 -08:00
Debasis Das
5e2539c087 qcacmn: Protect TxLookupqueue while flushing
The htc TxLookupQueue needs to be protected with
relevant lock while flushing.

Change-Id: Ib6c8878c024ef623dfb63ca0745d41b140f2b1c3
2018-11-23 02:00:17 -08:00
Aditya Sathish
648ce114ab qcacmn: Clean up hif and htc component prints
Clean up hif and htc component prints by correcting trace levels
for regularly occurring prints and removing newlines from converged
print APIs since qdf_trace_msg appends them by default.

Change-Id: I45b1bbe7b16ab7fb8e229b59a094c7382561d658
CRs-Fixed: 2243843
2018-08-10 18:11:24 -07:00
Yun Park
c353d6b87c qcacmn: Fix null pointer dereferenc in __htc_send_pkt
In __htc_send_pkt, pointer is checked against null but then
dereferenced later.
Fix it by checking null before dereference it.

Change-Id: I8a0dcfccbe458f5b85b8c930eb9685a75b64829b
CRs-Fixed: 2232835
2018-08-01 20:37:39 -07:00
Zhang Qian
edaa38708e qcacmn: Flush TxLookupQueue for WMI_CONTROL_SVC during htc_stop
TX comletion for WMI_FORCE_FW_HANG_CMDID would come after
TARGET_STATUS_RESET is set. In such a senario, there would
be memory leak.

Flush TxLookupQueue for WMI_CONTROL_SVC during htc_stop.
Since netbuf is freed in ISR, just free HTC frame here.

Change-Id: I5fab3effda1db70fa9b1208c854231a88b48309b
CRs-Fixed: 2242862
2018-07-13 08:27:21 -07:00
Dustin Brown
942f939848 qcacmn: Conditionally unmap nbuf in htc_issue_packets
htc_issue_packets currently unmaps all nbufs during error handling.
However, htc_issue_packets only maps nbufs under some situations. Make
the criteria for unmapping match the criteria for mapping.

Change-Id: Ia77cffb30edbdb4d1378af38368f860c6f8c0b18
CRs-Fixed: 2266437
2018-06-27 17:41:17 -07:00