qcacld-3.0: Add support for QCA_WLAN_TWT_SET_PARAM command

Add support for QCA_WLAN_TWT_SET_PARAM command to configure
QCA_WLAN_VENDOR_ATTR_TWT_SET_PARAM_AP_AC_VALUE attribute.
This attribute provides access category value for
WMI_PDEV_PARAM_TWT_AC_CONFIG. This is used by firmware to
configure access category for TWT HW queue in TWT Responder
mode(SAP).

Change-Id: I5131967ff2061bf6afad7bc5f091a7eb5ee01b8a
CRs-Fixed: 3168197
This commit is contained in:
Vishal Miskin
2022-04-05 00:34:01 +05:30
committed by Madan Koyyalamudi
parent ad770886cb
commit d75a1c786c
10 changed files with 245 additions and 5 deletions

View File

@@ -22,11 +22,11 @@
#include <wlan_utility.h>
#include <wlan_mlme_api.h>
#include <wlan_mlme_main.h>
#include "wlan_twt_main.h"
#include "twt/core/src/wlan_twt_priv.h"
#include "twt/core/src/wlan_twt_common.h"
#include <wlan_twt_tgt_if_ext_tx_api.h>
#include <wlan_serialization_api.h>
#include "wlan_twt_main.h"
/**
* wlan_twt_add_session() - Add TWT session entry in the TWT context
@@ -1363,6 +1363,18 @@ QDF_STATUS wlan_twt_nudge_req(struct wlan_objmgr_psoc *psoc,
return status;
}
QDF_STATUS wlan_twt_ac_pdev_param_send(struct wlan_objmgr_psoc *psoc,
enum twt_traffic_ac twt_ac)
{
QDF_STATUS status;
status = tgt_twt_ac_pdev_param_send(psoc, twt_ac);
if (QDF_IS_STATUS_ERROR(status))
twt_err("failed (status=%d)", status);
return status;
}
/**
* wlan_twt_sap_teardown_req() - sap TWT teardown request
* @psoc: Pointer to psoc object

View File

@@ -116,6 +116,16 @@ wlan_twt_nudge_req(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_cmd_param *req,
void *context);
/**
* wlan_twt_ac_pdev_param_send() - pdev TWT param send
* @psoc: Pointer to psoc object
* @twt_ac: TWT access category
*
* Return: QDF Status
*/
QDF_STATUS wlan_twt_ac_pdev_param_send(struct wlan_objmgr_psoc *psoc,
enum twt_traffic_ac twt_ac);
/**
* wlan_twt_is_setup_in_progress() - Get if TWT setup command is in progress
* for given dialog id

View File

@@ -78,4 +78,14 @@ QDF_STATUS
tgt_twt_nudge_req_send(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_cmd_param *req);
/**
* tgt_twt_ac_pdev_param_send() - pdev TWT param send
* @psoc: Pointer to psoc object
* @twt_ac: TWT access category
*
* Return: QDF Status
*/
QDF_STATUS
tgt_twt_ac_pdev_param_send(struct wlan_objmgr_psoc *psoc,
enum twt_traffic_ac twt_ac);
#endif

View File

@@ -126,6 +126,17 @@ QDF_STATUS ucfg_twt_nudge_req(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_cmd_param *params,
void *context);
/**
* ucfg_twt_ac_pdev_param_send() - pdev TWT param send
* @psoc: Pointer to psoc object
* @twt_ac: TWT access category
*
* Return: QDF Status
*/
QDF_STATUS
ucfg_twt_ac_pdev_param_send(struct wlan_objmgr_psoc *psoc,
enum twt_traffic_ac twt_ac);
/**
* ucfg_twt_is_max_sessions_reached() - Check if the maximum number of
* TWT sessions reached or not excluding the given dialog_id

View File

@@ -173,3 +173,27 @@ tgt_twt_nudge_req_send(struct wlan_objmgr_psoc *psoc,
return status;
}
QDF_STATUS
tgt_twt_ac_pdev_param_send(struct wlan_objmgr_psoc *psoc,
enum twt_traffic_ac twt_ac)
{
struct wlan_lmac_if_twt_tx_ops *tx_ops;
QDF_STATUS status;
if (!psoc) {
twt_err("psoc is null");
return QDF_STATUS_E_INVAL;
}
tx_ops = wlan_twt_get_tx_ops(psoc);
if (!tx_ops || !tx_ops->set_ac_param) {
twt_err("set_ac_param is null");
status = QDF_STATUS_E_NULL_VALUE;
return status;
}
status = tx_ops->set_ac_param(psoc, twt_ac, 0);
return status;
}

View File

@@ -86,6 +86,13 @@ ucfg_twt_nudge_req(struct wlan_objmgr_psoc *psoc,
return wlan_twt_nudge_req(psoc, params, context);
}
QDF_STATUS
ucfg_twt_ac_pdev_param_send(struct wlan_objmgr_psoc *psoc,
enum twt_traffic_ac twt_ac)
{
return wlan_twt_ac_pdev_param_send(psoc, twt_ac);
}
bool ucfg_twt_is_max_sessions_reached(struct wlan_objmgr_psoc *psoc,
struct qdf_mac_addr *peer_mac,
uint8_t dialog_id)