qcacmn: Add unregister API for direct buf ring

Add Unregister API to de-register and free resources in direct buf
module. Existing logic of freeing all resources as part of pdev destroy
does not take care of soc_start and soc_stop scenarios. Add this API to
enable modules to de-register as part of soc_stop and register during
start.

CRs-Fixed: 2385313
Change-Id: Ibe6f6bc5f4bd2acc5a9fe71eee09c151853073bc
This commit is contained in:
Edayilliam Jayadev
2019-01-24 19:38:45 +05:30
committed by nshrivas
szülő eb26aa78ae
commit 2bee1aa8ad
8 fájl változott, egészen pontosan 144 új sor hozzáadva és 10 régi sor törölve

Fájl megtekintése

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
*
*
* Permission to use, copy, modify, and/or distribute this software for
@@ -232,7 +232,7 @@ tgt_spectral_process_report(struct wlan_objmgr_pdev *pdev,
void *payload);
/**
* tgt_spectral_register_to_dbr() - Register to direct dma
* tgt_spectral_register_to_dbr() - Register to direct DMA
* @pdev: Pointer to pdev object
*
* Return: QDF_STATUS
@@ -240,6 +240,15 @@ tgt_spectral_process_report(struct wlan_objmgr_pdev *pdev,
QDF_STATUS
tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev);
/**
* tgt_spectral_unregister_to_dbr() - Register to direct DMA
* @pdev: Pointer to pdev object
*
* Return: QDF_STATUS
*/
QDF_STATUS
tgt_spectral_unregister_to_dbr(struct wlan_objmgr_pdev *pdev);
/**
* tgt_spectral_get_target_type() - Get target type
* @psoc: Pointer to psoc object

Fájl megtekintése

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
*
*
* Permission to use, copy, modify, and/or distribute this software for
@@ -154,6 +154,29 @@ spectral_vdev_get_ch_width(struct wlan_objmgr_vdev *vdev);
*/
QDF_STATUS spectral_pdev_open(struct wlan_objmgr_pdev *pdev);
/**
* spectral_register_dbr() - register Spectral event handler with DDMA
* @pdev: pointer to pdev object
*
* API to register event handler with Direct DMA
*
* Return: QDF_STATUS_SUCCESS upon successful registration,
* QDF_STATUS_E_FAILURE upon failure
*/
QDF_STATUS spectral_register_dbr(struct wlan_objmgr_pdev *pdev);
/**
* spectral_unregister_dbr() - unregister Spectral event handler with DDMA
* @pdev: pointer to pdev object
*
* API to unregister event handler with Direct DMA
*
* Return: QDF_STATUS_SUCCESS upon successful unregistration,
* QDF_STATUS_E_FAILURE upon failure
*/
QDF_STATUS spectral_unregister_dbr(struct wlan_objmgr_pdev *pdev);
#ifdef DIRECT_BUF_RX_ENABLE
/**
* spectral_dbr_event_handler() - Spectral dbr event handler

Fájl megtekintése

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011,2017-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2011,2017-2019 The Linux Foundation. All rights reserved.
*
*
* Permission to use, copy, modify, and/or distribute this software for
@@ -296,10 +296,33 @@ tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev)
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
tgt_spectral_unregister_to_dbr(struct wlan_objmgr_pdev *pdev)
{
struct wlan_objmgr_psoc *psoc;
struct wlan_lmac_if_direct_buf_rx_tx_ops *dbr_tx_ops = NULL;
psoc = wlan_pdev_get_psoc(pdev);
dbr_tx_ops = &psoc->soc_cb.tx_ops.dbr_tx_ops;
if (tgt_spectral_get_target_type(psoc) == TARGET_TYPE_QCA8074)
if (dbr_tx_ops->direct_buf_rx_module_unregister)
return dbr_tx_ops->direct_buf_rx_module_unregister
(pdev, 0);
return QDF_STATUS_E_FAILURE;
}
#else
QDF_STATUS
tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
tgt_spectral_unregister_to_dbr(struct wlan_objmgr_pdev *pdev)
{
return QDF_STATUS_SUCCESS;
}
#endif

Fájl megtekintése

@@ -239,3 +239,21 @@ QDF_STATUS spectral_pdev_open(struct wlan_objmgr_pdev *pdev)
status = tgt_spectral_register_to_dbr(pdev);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS spectral_register_dbr(struct wlan_objmgr_pdev *pdev)
{
return tgt_spectral_register_to_dbr(pdev);
}
qdf_export_symbol(spectral_register_dbr);
QDF_STATUS spectral_unregister_dbr(struct wlan_objmgr_pdev *pdev)
{
QDF_STATUS status;
status = tgt_spectral_unregister_to_dbr(pdev);
return status;
}
qdf_export_symbol(spectral_unregister_dbr);