mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
qcacld-3.0: Do not reserve mgmt descriptors
Do not reserve tx descriptors for management packets if management over WMI is enabled. Change-Id: Iafe758d91d11f4875e3152d92538055784490a14 CRs-Fixed: 949917
This commit is contained in:
parent
2881312e10
commit
600a296834
5 changed files with 47 additions and 2 deletions
|
|
@ -1261,6 +1261,9 @@ void ol_txrx_set_ocb_peer(struct ol_txrx_pdev_t *pdev,
|
|||
bool ol_txrx_get_ocb_peer(struct ol_txrx_pdev_t *pdev,
|
||||
struct ol_txrx_peer_t **peer);
|
||||
|
||||
void ol_tx_set_is_mgmt_over_wmi_enabled(uint8_t value);
|
||||
uint8_t ol_tx_get_is_mgmt_over_wmi_enabled(void);
|
||||
|
||||
/* TX FLOW Control related functions */
|
||||
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
||||
#define TX_FLOW_MGMT_POOL_ID 0xEF
|
||||
|
|
|
|||
|
|
@ -76,6 +76,40 @@
|
|||
|
||||
/*=== function definitions ===*/
|
||||
|
||||
/**
|
||||
* ol_tx_set_is_mgmt_over_wmi_enabled() - set flag to indicate that mgmt over
|
||||
* wmi is enabled or not.
|
||||
* @value: 1 for enabled/ 0 for disable
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void ol_tx_set_is_mgmt_over_wmi_enabled(uint8_t value)
|
||||
{
|
||||
struct ol_txrx_pdev_t *pdev = cds_get_context(CDF_MODULE_ID_TXRX);
|
||||
if (!pdev) {
|
||||
cdf_print("%s: pdev is NULL\n", __func__);
|
||||
return;
|
||||
}
|
||||
pdev->is_mgmt_over_wmi_enabled = value;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* ol_tx_get_is_mgmt_over_wmi_enabled() - get value of is_mgmt_over_wmi_enabled
|
||||
*
|
||||
* Return: is_mgmt_over_wmi_enabled
|
||||
*/
|
||||
uint8_t ol_tx_get_is_mgmt_over_wmi_enabled(void)
|
||||
{
|
||||
struct ol_txrx_pdev_t *pdev = cds_get_context(CDF_MODULE_ID_TXRX);
|
||||
if (!pdev) {
|
||||
cdf_print("%s: pdev is NULL\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
return pdev->is_mgmt_over_wmi_enabled;
|
||||
}
|
||||
|
||||
|
||||
#ifdef QCA_SUPPORT_TXRX_LOCAL_PEER_ID
|
||||
ol_txrx_peer_handle
|
||||
ol_txrx_find_peer_by_addr_and_vdev(ol_txrx_pdev_handle pdev,
|
||||
|
|
|
|||
|
|
@ -112,7 +112,8 @@ void ol_tx_register_flow_control(struct ol_txrx_pdev_t *pdev)
|
|||
cdf_spinlock_init(&pdev->tx_desc.flow_pool_list_lock);
|
||||
TAILQ_INIT(&pdev->tx_desc.flow_pool_list);
|
||||
|
||||
ol_tx_register_global_mgmt_pool(pdev);
|
||||
if (!ol_tx_get_is_mgmt_over_wmi_enabled())
|
||||
ol_tx_register_global_mgmt_pool(pdev);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -123,7 +124,8 @@ void ol_tx_register_flow_control(struct ol_txrx_pdev_t *pdev)
|
|||
*/
|
||||
void ol_tx_deregister_flow_control(struct ol_txrx_pdev_t *pdev)
|
||||
{
|
||||
ol_tx_deregister_global_mgmt_pool(pdev);
|
||||
if (!ol_tx_get_is_mgmt_over_wmi_enabled())
|
||||
ol_tx_deregister_global_mgmt_pool(pdev);
|
||||
|
||||
cdf_spinlock_destroy(&pdev->tx_desc.flow_pool_list_lock);
|
||||
if (!TAILQ_EMPTY(&pdev->tx_desc.flow_pool_list)) {
|
||||
|
|
|
|||
|
|
@ -571,6 +571,7 @@ struct ol_txrx_pdev_t {
|
|||
struct cdf_mem_multi_page_t desc_pages;
|
||||
} tx_desc;
|
||||
|
||||
uint8_t is_mgmt_over_wmi_enabled;
|
||||
#if defined(QCA_LL_TX_FLOW_CONTROL_V2)
|
||||
struct ol_txrx_pool_stats pool_stats;
|
||||
uint32_t num_msdu_desc;
|
||||
|
|
|
|||
|
|
@ -3806,6 +3806,11 @@ void wma_rx_service_ready_event(WMA_HANDLE handle, void *cmd_param_info)
|
|||
cdf_mem_copy(wma_handle->wmi_service_bitmap,
|
||||
param_buf->wmi_service_bitmap,
|
||||
sizeof(wma_handle->wmi_service_bitmap));
|
||||
|
||||
ol_tx_set_is_mgmt_over_wmi_enabled(
|
||||
WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap,
|
||||
WMI_SERVICE_MGMT_TX_WMI));
|
||||
|
||||
/* SWBA event handler for beacon transmission */
|
||||
status = wmi_unified_register_event_handler(wma_handle->wmi_handle,
|
||||
WMI_HOST_SWBA_EVENTID,
|
||||
|
|
|
|||
Loading…
Reference in a new issue