qcacmn: add CDP interface support for pkt_log_exit
Add CDP interface API support for pkt_log_exit, to cleanup pkt_log_init on failure. Change-Id: Ib50efaed5997d341d3e76c2e1dbe42856df40191 CRs-Fixed: 3012201
This commit is contained in:

committed by
Madan Koyyalamudi

parent
627c3c7ec3
commit
6a3c9eaa85
@@ -567,6 +567,27 @@ static inline void cdp_pkt_log_con_service(ol_txrx_soc_handle soc,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cdp_pkt_log_exit() - API to cleanup packet log info
|
||||||
|
* @soc: data path soc handle
|
||||||
|
* @pdev_id: id of data path pdev handle
|
||||||
|
*
|
||||||
|
* Return: void
|
||||||
|
*/
|
||||||
|
static inline void cdp_pkt_log_exit(ol_txrx_soc_handle soc, uint8_t pdev_id)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops || !soc->ops->misc_ops) {
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||||
|
"%s invalid instance", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (soc->ops->misc_ops->pkt_log_exit)
|
||||||
|
return soc->ops->misc_ops->pkt_log_exit(soc, pdev_id);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cdp_get_num_rx_contexts() - API to get the number of RX contexts
|
* cdp_get_num_rx_contexts() - API to get the number of RX contexts
|
||||||
* @soc: soc handle
|
* @soc: soc handle
|
||||||
|
@@ -1312,6 +1312,7 @@ struct cdp_misc_ops {
|
|||||||
void *scn);
|
void *scn);
|
||||||
void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl,
|
void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl,
|
||||||
uint8_t pdev_id, void *scn);
|
uint8_t pdev_id, void *scn);
|
||||||
|
void (*pkt_log_exit)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id);
|
||||||
int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl);
|
int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl);
|
||||||
void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
||||||
ol_txrx_pktdump_cb tx_cb,
|
ol_txrx_pktdump_cb tx_cb,
|
||||||
|
@@ -4563,11 +4563,37 @@ static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl,
|
|||||||
dp_pkt_log_init(soc_hdl, pdev_id, scn);
|
dp_pkt_log_init(soc_hdl, pdev_id, scn);
|
||||||
pktlog_htc_attach();
|
pktlog_htc_attach();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dp_pkt_log_exit() - Wrapper API to cleanup pktlog info
|
||||||
|
* @soc_hdl: Datapath soc handle
|
||||||
|
* @pdev_id: id of data path pdev handle
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
||||||
|
{
|
||||||
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
||||||
|
struct dp_pdev *pdev =
|
||||||
|
dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
||||||
|
|
||||||
|
if (!pdev) {
|
||||||
|
dp_err("pdev handle is NULL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dp_pktlogmod_exit(pdev);
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl,
|
static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl,
|
||||||
uint8_t pdev_id, void *scn)
|
uint8_t pdev_id, void *scn)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -5689,6 +5715,7 @@ void dp_mon_cdp_ops_register(struct dp_soc *soc)
|
|||||||
#ifdef DP_PEER_EXTENDED_API
|
#ifdef DP_PEER_EXTENDED_API
|
||||||
ops->misc_ops->pkt_log_init = dp_pkt_log_init;
|
ops->misc_ops->pkt_log_init = dp_pkt_log_init;
|
||||||
ops->misc_ops->pkt_log_con_service = dp_pkt_log_con_service;
|
ops->misc_ops->pkt_log_con_service = dp_pkt_log_con_service;
|
||||||
|
ops->misc_ops->pkt_log_exit = dp_pkt_log_exit;
|
||||||
#endif
|
#endif
|
||||||
#ifdef ATH_SUPPORT_NAC_RSSI
|
#ifdef ATH_SUPPORT_NAC_RSSI
|
||||||
ops->ctrl_ops->txrx_vdev_config_for_nac_rssi = dp_config_for_nac_rssi;
|
ops->ctrl_ops->txrx_vdev_config_for_nac_rssi = dp_config_for_nac_rssi;
|
||||||
@@ -5738,6 +5765,7 @@ void dp_mon_cdp_ops_deregister(struct dp_soc *soc)
|
|||||||
#ifdef DP_PEER_EXTENDED_API
|
#ifdef DP_PEER_EXTENDED_API
|
||||||
ops->misc_ops->pkt_log_init = NULL;
|
ops->misc_ops->pkt_log_init = NULL;
|
||||||
ops->misc_ops->pkt_log_con_service = NULL;
|
ops->misc_ops->pkt_log_con_service = NULL;
|
||||||
|
ops->misc_ops->pkt_log_exit = NULL;
|
||||||
#endif
|
#endif
|
||||||
#ifdef ATH_SUPPORT_NAC_RSSI
|
#ifdef ATH_SUPPORT_NAC_RSSI
|
||||||
ops->ctrl_ops->txrx_vdev_config_for_nac_rssi = NULL;
|
ops->ctrl_ops->txrx_vdev_config_for_nac_rssi = NULL;
|
||||||
|
@@ -417,6 +417,7 @@ static int pktlog_attach(struct hif_opaque_softc *scn)
|
|||||||
char *proc_name;
|
char *proc_name;
|
||||||
struct proc_dir_entry *proc_entry;
|
struct proc_dir_entry *proc_entry;
|
||||||
|
|
||||||
|
qdf_info("attach pktlog resources");
|
||||||
/* Allocate pktlog dev for later use */
|
/* Allocate pktlog dev for later use */
|
||||||
pl_dev = get_pktlog_handle();
|
pl_dev = get_pktlog_handle();
|
||||||
|
|
||||||
@@ -441,6 +442,7 @@ static int pktlog_attach(struct hif_opaque_softc *scn)
|
|||||||
*/
|
*/
|
||||||
pl_dev->pl_funcs->pktlog_init(scn);
|
pl_dev->pl_funcs->pktlog_init(scn);
|
||||||
} else {
|
} else {
|
||||||
|
qdf_err("pl_dev is NULL");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -505,6 +507,7 @@ static void pktlog_detach(struct hif_opaque_softc *scn)
|
|||||||
struct ath_pktlog_info *pl_info;
|
struct ath_pktlog_info *pl_info;
|
||||||
struct pktlog_dev_t *pl_dev = get_pktlog_handle();
|
struct pktlog_dev_t *pl_dev = get_pktlog_handle();
|
||||||
|
|
||||||
|
qdf_info("detach pktlog resources");
|
||||||
if (!pl_dev) {
|
if (!pl_dev) {
|
||||||
qdf_info("Invalid pktlog context");
|
qdf_info("Invalid pktlog context");
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
@@ -1038,6 +1041,7 @@ int pktlogmod_init(void *context)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
qdf_info("Initialize pkt_log module");
|
||||||
/* create the proc directory entry */
|
/* create the proc directory entry */
|
||||||
g_pktlog_pde = proc_mkdir(PKTLOG_PROC_DIR, NULL);
|
g_pktlog_pde = proc_mkdir(PKTLOG_PROC_DIR, NULL);
|
||||||
|
|
||||||
@@ -1050,8 +1054,10 @@ int pktlogmod_init(void *context)
|
|||||||
ret = pktlog_attach((struct hif_opaque_softc *)context);
|
ret = pktlog_attach((struct hif_opaque_softc *)context);
|
||||||
|
|
||||||
/* If packet log init failed */
|
/* If packet log init failed */
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
qdf_err("pktlog_attach failed");
|
||||||
goto attach_fail;
|
goto attach_fail;
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@@ -1064,8 +1070,11 @@ attach_fail:
|
|||||||
|
|
||||||
void pktlogmod_exit(void *context)
|
void pktlogmod_exit(void *context)
|
||||||
{
|
{
|
||||||
if (!g_pktlog_pde)
|
qdf_info("pkt_log module cleanup");
|
||||||
|
if (!g_pktlog_pde) {
|
||||||
|
qdf_err("g_pktlog_pde is NULL");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
pktlog_detach((struct hif_opaque_softc *)context);
|
pktlog_detach((struct hif_opaque_softc *)context);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user