qcacmn: Add CDP interface for attach/detach of extended DP

Add APIs to be used by extended DP modules to attach/detach
their respective handles with Core DP module.

Change-Id: I63cf0883f7462a11b49666bda697c7e872d7b925
This commit is contained in:
Pamidipati, Vijay
2018-02-06 23:52:29 +05:30
committed by snandini
parent 52c506d034
commit d3478efb89
6 changed files with 124 additions and 3 deletions

View File

@@ -1240,4 +1240,80 @@ cdp_pdev_set_dp_txrx_handle(ol_txrx_soc_handle soc, void *pdev, void *dp_hdl)
soc->ops->cmn_drv_ops->set_dp_txrx_handle(pdev, dp_hdl);
}
/**
* cdp_soc_get_dp_txrx_handle() - get extended dp handle from soc
* @soc: opaque soc handle
*
* Return: opaque extended dp handle
*/
static inline void *
cdp_soc_get_dp_txrx_handle(ol_txrx_soc_handle soc)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return NULL;
}
if (soc->ops->cmn_drv_ops->get_soc_dp_txrx_handle)
return soc->ops->cmn_drv_ops->get_soc_dp_txrx_handle(
(struct cdp_soc *) soc);
return NULL;
}
/**
* cdp_soc_set_dp_txrx_handle() - set advanced dp handle in soc
* @soc: opaque soc handle
* @dp_hdl: opaque pointer for dp_txrx_handle
*
* Return: void
*/
static inline void
cdp_soc_set_dp_txrx_handle(ol_txrx_soc_handle soc, void *dp_handle)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->set_soc_dp_txrx_handle)
return;
soc->ops->cmn_drv_ops->set_soc_dp_txrx_handle((struct cdp_soc *)soc,
dp_handle);
}
/**
* cdp_tx_send() - enqueue frame for transmission
* @soc: soc opaque handle
* @vdev: VAP device
* @nbuf: nbuf to be enqueued
*
* This API is used by Extended Datapath modules to enqueue frame for
* transmission
*
* Return: void
*/
static inline void
cdp_tx_send(ol_txrx_soc_handle soc, struct cdp_vdev *vdev, qdf_nbuf_t nbuf)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->tx_send)
return;
soc->ops->cmn_drv_ops->tx_send(vdev, nbuf);
}
#endif /* _CDP_TXRX_CMN_H_ */