qcacmn: Query HIF for FastPath support

Data Path bypasses transport layer for better throughput's.
Instead of dereferencing HIF structures, query HIF for fastpath
mode support

Change-Id: Icba897c9405084f1c14c7db4059527a96d841736
CRs-Fixed: 967765
This commit is contained in:
Komal Seelam
2016-02-22 20:43:52 +05:30
parent f8600687ad
commit c92a0cf52e
3 changed files with 64 additions and 6 deletions

View File

@@ -1071,17 +1071,43 @@ CDF_STATUS hif_start(struct ol_softc *scn)
#ifdef WLAN_FEATURE_FASTPATH
/**
* hif_enable_fastpath() Update that we have enabled fastpath mode
* @hif_device: HIF context
* @hif_ctx: HIF context
*
* For use in data path
*
* Retrun: void
*/
void
hif_enable_fastpath(struct ol_softc *hif_device)
void hif_enable_fastpath(struct ol_softc *hif_ctx)
{
HIF_INFO("Enabling fastpath mode\n");
hif_device->fastpath_mode_on = 1;
hif_ctx->fastpath_mode_on = 1;
}
/**
* hif_is_fastpath_mode_enabled - API to query if fasthpath mode is enabled
* @hif_ctx: HIF Context
*
* For use in data path to skip HTC
*
* Return: bool
*/
bool hif_is_fastpath_mode_enabled(struct ol_softc *hif_ctx)
{
return hif_ctx->fastpath_mode_on;
}
/**
* hif_get_ce_handle - API to get CE handle for FastPath mode
* @hif_ctx: HIF Context
* @id: CopyEngine Id
*
* API to return CE handle for fastpath mode
*
* Return: void
*/
void *hif_get_ce_handle(struct ol_softc *hif_ctx, int id)
{
return hif_ctx->ce_id_to_state[id];
}
#endif /* WLAN_FEATURE_FASTPATH */

View File

@@ -866,3 +866,30 @@ struct hif_target_info *hif_get_target_info_handle(struct ol_softc *scn)
{
return &scn->target_info;
}
#if defined(FEATURE_LRO)
/**
* hif_lro_flush_cb_register - API to register for LRO Flush Callback
* @scn: HIF Context
* @handler: Function pointer to be called by HIF
* @data: Private data to be used by the module registering to HIF
*
* Return: void
*/
void hif_lro_flush_cb_register(struct ol_softc *scn,
void (handler)(void *), void *data)
{
ce_lro_flush_cb_register(scn, handler, data);
}
/**
* hif_lro_flush_cb_deregister - API to deregister for LRO Flush Callbacks
* @scn: HIF Context
*
* Return: void
*/
void hif_lro_flush_cb_deregister(struct ol_softc *scn)
{
ce_lro_flush_cb_deregister(scn);
}
#endif