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
This commit is contained in:
Visweswara Tanuku
2019-06-11 10:30:59 +05:30
committed by nshrivas
parent 68f186311d
commit 957b63aec6
2 changed files with 224 additions and 2 deletions

View File

@@ -69,6 +69,8 @@ struct ol_ath_htc_stats {
/* To resume HTT Tx queue during runtime resume */
typedef void (*HTC_EP_RESUME_TX_QUEUE)(void *);
typedef int (*HTC_EP_PADDING_CREDIT_UPDATE) (void *, int);
/* per service connection send completion */
typedef void (*HTC_EP_SEND_PKT_COMPLETE)(void *, HTC_PACKET *);
/* per service connection callback when a plurality of packets have been sent
@@ -175,6 +177,8 @@ struct htc_ep_callbacks {
HTC_EP_SEND_PKT_COMP_MULTIPLE EpTxCompleteMultiple;
HTC_EP_RESUME_TX_QUEUE ep_resume_tx_queue;
HTC_EP_PADDING_CREDIT_UPDATE ep_padding_credit_update;
/* if EpRecvAllocThresh is non-NULL, HTC will compare the
* threshold value to the current recv packet length and invoke
* the EpRecvAllocThresh callback to acquire a packet buffer