qcacld-3.0: 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: 2516619 Change-Id: Ie2d2292fabb30e1a13eebe4d11b57f452e42afa8
This commit is contained in:

کامیت شده توسط
nshrivas

والد
82415b1dcf
کامیت
2e839e540c
@@ -794,6 +794,8 @@ int htt_htc_attach(struct htt_pdev_t *pdev, uint16_t service_id)
|
||||
connect.EpCallbacks.EpTxCompleteMultiple = NULL;
|
||||
connect.EpCallbacks.EpRecv = htt_t2h_msg_handler;
|
||||
connect.EpCallbacks.ep_resume_tx_queue = htt_tx_resume_handler;
|
||||
connect.EpCallbacks.ep_padding_credit_update =
|
||||
htt_tx_padding_credit_update_handler;
|
||||
|
||||
/* rx buffers currently are provided by HIF, not by EpRecvRefill */
|
||||
connect.EpCallbacks.EpRecvRefill = NULL;
|
||||
|
@@ -582,6 +582,8 @@ void htt_h2t_send_complete(void *context, HTC_PACKET *pkt);
|
||||
|
||||
QDF_STATUS htt_h2t_ver_req_msg(struct htt_pdev_t *pdev);
|
||||
|
||||
int htt_tx_padding_credit_update_handler(void *context, int pad_credit);
|
||||
|
||||
#if defined(HELIUMPLUS)
|
||||
QDF_STATUS
|
||||
htt_h2t_frag_desc_bank_cfg_msg(struct htt_pdev_t *pdev);
|
||||
|
@@ -865,8 +865,43 @@ htt_tx_send_nonstd(htt_pdev_handle pdev,
|
||||
return htt_tx_send_std(pdev, msdu, msdu_id);
|
||||
}
|
||||
|
||||
#ifndef QCA_TX_PADDING_CREDIT_SUPPORT
|
||||
int htt_tx_padding_credit_update_handler(void *context, int pad_credit)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#else /*ATH_11AC_TXCOMPACT */
|
||||
|
||||
#ifdef QCA_TX_PADDING_CREDIT_SUPPORT
|
||||
static int htt_tx_padding_credit_update(htt_pdev_handle htt_pdev,
|
||||
int pad_credit)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (pad_credit)
|
||||
qdf_atomic_add(pad_credit,
|
||||
&htt_pdev->txrx_pdev->pad_reserve_tx_credit);
|
||||
|
||||
ret = qdf_atomic_read(&htt_pdev->txrx_pdev->pad_reserve_tx_credit);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int htt_tx_padding_credit_update_handler(void *context, int pad_credit)
|
||||
{
|
||||
struct htt_pdev_t *htt_pdev = (struct htt_pdev_t *)context;
|
||||
|
||||
return htt_tx_padding_credit_update(htt_pdev, pad_credit);
|
||||
}
|
||||
#else
|
||||
int htt_tx_padding_credit_update_handler(void *context, int pad_credit)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_TX_HTT2_SUPPORT
|
||||
static inline HTC_ENDPOINT_ID
|
||||
htt_tx_htt2_get_ep_id(htt_pdev_handle pdev, qdf_nbuf_t msdu)
|
||||
|
مرجع در شماره جدید
Block a user