diff --git a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h index 04add1a2fe..0633754228 100644 --- a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h +++ b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h @@ -234,7 +234,7 @@ struct wlan_lmac_if_p2p_tx_ops { /** * struct wlan_lmac_if_atf_tx_ops - ATF specific tx function pointers - * @atf_update_peer_txtoken: Update peer Tx token + * @atf_node_unblock: Resume node * @atf_set_enable_disable: Set atf enable/disable * @atf_tokens_used: Get used atf tokens * @atf_get_unused_txtoken: Get unused atf tokens @@ -247,6 +247,7 @@ struct wlan_lmac_if_p2p_tx_ops { * @atf_ssid_sched_policy: Set ssid schedule policy * @atf_set: Set atf * @atf_set_grouping: Set atf grouping + * @atf_set_group_ac: Set atf Group AC * @atf_send_peer_request: Send peer requests * @atf_set_bwf: Set bandwidth fairness * @atf_peer_buf_held: Get buffer held @@ -257,9 +258,8 @@ struct wlan_lmac_if_p2p_tx_ops { * @atf_unregister_event_handler ATF unregister wmi event handlers */ struct wlan_lmac_if_atf_tx_ops { - void (*atf_update_peer_txtoken)(struct wlan_objmgr_pdev *pdev, - struct wlan_objmgr_peer *peer, - struct atf_stats *stats); + void (*atf_node_unblock)(struct wlan_objmgr_pdev *pdev, + struct wlan_objmgr_peer *peer); void (*atf_set_enable_disable)(struct wlan_objmgr_pdev *pdev, uint8_t value); uint8_t (*atf_tokens_used)(struct wlan_objmgr_pdev *pdev, @@ -279,8 +279,8 @@ struct wlan_lmac_if_atf_tx_ops { uint32_t tput, uint32_t *possible_tput); uint32_t (*atf_debug_peerstate)(struct wlan_objmgr_pdev *pdev, - struct wlan_objmgr_peer *peer); - + struct wlan_objmgr_peer *peer, + struct atf_peerstate *peerstate); int32_t (*atf_enable_disable)(struct wlan_objmgr_vdev *vdev, uint8_t value); int32_t (*atf_ssid_sched_policy)(struct wlan_objmgr_vdev *vdev, @@ -291,6 +291,9 @@ struct wlan_lmac_if_atf_tx_ops { int32_t (*atf_set_grouping)(struct wlan_objmgr_pdev *pdev, struct pdev_atf_ssid_group_req *atf_grp_req, uint8_t atf_tput_based); + int32_t (*atf_set_group_ac)(struct wlan_objmgr_pdev *pdev, + struct pdev_atf_group_wmm_ac_req *atf_acreq, + uint8_t atf_tput_based); int32_t (*atf_send_peer_request)(struct wlan_objmgr_pdev *pdev, struct pdev_atf_peer_ext_request *atfr, uint8_t atf_tput_based); @@ -845,19 +848,22 @@ struct wlan_lmac_if_p2p_rx_ops { * @atf_get_peers: Get number of peers for a radio * @atf_get_tput_based: Get throughput based enabled/disabled * @atf_get_logging: Get logging enabled/disabled - * @atf_get_txbuf_share: Get TxBuff share state - * @atf_get_txbuf_max: Get TxBuff MAX number - * @atf_get_txbuf_min: Get TxBuff MIN number + * @atf_update_buf_held: Set Num buf held by subgroup * @atf_get_ssidgroup: Get ssid group state * @atf_get_tx_block_count: Get tx block count * @atf_get_peer_blk_txtraffic: Get peer tx traffic block state * @atf_get_vdev_blk_txtraffic: Get vdev tx traffic block state * @atf_get_sched: Get ATF scheduled policy * @atf_get_tx_tokens: Get Tx tokens - * @atf_get_shadow_tx_tokens: Get shadow tx tokens + * @atf_buf_distribute: Distribute Buffers * @atf_get_tx_tokens_common: Get common tx tokens * @atf_get_shadow_alloted_tx_tokens: Get shadow alloted tx tokens * @atf_get_peer_stats: Get atf peer stats + * @atf_adjust_subgroup_txtokens: Adjust tokens based on actual duration + * @atf_account_subgroup_txtokens: Estimate tx time & update subgroup tokens + * @atf_subgroup_free_buf: On tx completion, update num buf held + * @atf_update_subgroup_tidstate: TID state (Paused/unpaused) of node + * @atf_get_subgroup_airtime: Get subgroup airtime * @atf_get_token_allocated: Get atf token allocated * @atf_get_token_utilized: Get atf token utilized * @atf_set_sched: Set ATF schedule policy @@ -883,21 +889,37 @@ struct wlan_lmac_if_atf_rx_ops { uint32_t (*atf_get_peers)(struct wlan_objmgr_psoc *psoc); uint32_t (*atf_get_tput_based)(struct wlan_objmgr_pdev *pdev); uint32_t (*atf_get_logging)(struct wlan_objmgr_pdev *pdev); - uint8_t (*atf_get_txbuf_share)(struct wlan_objmgr_pdev *pdev); - uint16_t (*atf_get_txbuf_max)(struct wlan_objmgr_pdev *pdev); - uint16_t (*atf_get_txbuf_min)(struct wlan_objmgr_pdev *pdev); + void* (*atf_update_buf_held)(struct wlan_objmgr_peer *peer, + int8_t ac); uint32_t (*atf_get_ssidgroup)(struct wlan_objmgr_pdev *pdev); uint32_t (*atf_get_tx_block_count)(struct wlan_objmgr_vdev *vdev); uint8_t (*atf_get_peer_blk_txtraffic)(struct wlan_objmgr_peer *peer); uint8_t (*atf_get_vdev_blk_txtraffic)(struct wlan_objmgr_vdev *vdev); uint32_t (*atf_get_sched)(struct wlan_objmgr_pdev *pdev); uint32_t (*atf_get_tx_tokens)(struct wlan_objmgr_peer *peer); - uint32_t (*atf_get_shadow_tx_tokens)(struct wlan_objmgr_peer *peer); + uint32_t (*atf_buf_distribute)(struct wlan_objmgr_pdev *pdev, + struct wlan_objmgr_peer *peer, + int8_t ac); uint32_t (*atf_get_txtokens_common)(struct wlan_objmgr_pdev *pdev); uint32_t (*atf_get_shadow_alloted_tx_tokens)( struct wlan_objmgr_pdev *pdev); void (*atf_get_peer_stats)(struct wlan_objmgr_peer *peer, struct atf_stats *stats); + QDF_STATUS + (*atf_adjust_subgroup_txtokens)(struct wlan_objmgr_peer *pr, + uint8_t ac, uint32_t actual_duration, + uint32_t est_duration); + QDF_STATUS + (*atf_account_subgroup_txtokens)(struct wlan_objmgr_peer *pr, + uint8_t ac, + uint32_t duration); + QDF_STATUS + (*atf_subgroup_free_buf)(uint16_t buf_acc_size, void *bf_atf_sg); + QDF_STATUS + (*atf_update_subgroup_tidstate)(struct wlan_objmgr_peer *peer, + uint8_t atf_nodepaused); + uint8_t (*atf_get_subgroup_airtime)(struct wlan_objmgr_peer *peer, + uint8_t ac); uint16_t (*atf_get_token_allocated)(struct wlan_objmgr_peer *peer); uint16_t (*atf_get_token_utilized)(struct wlan_objmgr_peer *peer); diff --git a/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c b/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c index 5ff0fbe7fd..441a4e3765 100644 --- a/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c +++ b/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c @@ -114,16 +114,22 @@ wlan_lmac_if_atf_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops) atf_rx_ops->atf_get_peers = tgt_atf_get_peers; atf_rx_ops->atf_get_tput_based = tgt_atf_get_tput_based; atf_rx_ops->atf_get_logging = tgt_atf_get_logging; - atf_rx_ops->atf_get_txbuf_share = tgt_atf_get_txbuf_share; - atf_rx_ops->atf_get_txbuf_max = tgt_atf_get_txbuf_max; - atf_rx_ops->atf_get_txbuf_min = tgt_atf_get_txbuf_min; + atf_rx_ops->atf_update_buf_held = tgt_atf_update_buf_held; atf_rx_ops->atf_get_ssidgroup = tgt_atf_get_ssidgroup; atf_rx_ops->atf_get_tx_block_count = tgt_atf_get_tx_block_count; atf_rx_ops->atf_get_peer_blk_txtraffic = tgt_atf_get_peer_blk_txtraffic; atf_rx_ops->atf_get_vdev_blk_txtraffic = tgt_atf_get_vdev_blk_txtraffic; atf_rx_ops->atf_get_sched = tgt_atf_get_sched; atf_rx_ops->atf_get_tx_tokens = tgt_atf_get_tx_tokens; - atf_rx_ops->atf_get_shadow_tx_tokens = tgt_atf_get_shadow_tx_tokens; + atf_rx_ops->atf_account_subgroup_txtokens = + tgt_atf_account_subgroup_txtokens; + atf_rx_ops->atf_adjust_subgroup_txtokens = + tgt_atf_adjust_subgroup_txtokens; + atf_rx_ops->atf_get_subgroup_airtime = tgt_atf_get_subgroup_airtime; + atf_rx_ops->atf_subgroup_free_buf = tgt_atf_subgroup_free_buf; + atf_rx_ops->atf_update_subgroup_tidstate = + tgt_atf_update_subgroup_tidstate; + atf_rx_ops->atf_buf_distribute = tgt_atf_buf_distribute; atf_rx_ops->atf_get_shadow_alloted_tx_tokens = tgt_atf_get_shadow_alloted_tx_tokens; atf_rx_ops->atf_get_txtokens_common = tgt_atf_get_txtokens_common; diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index efc76a0610..4b4d130823 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -98,7 +98,7 @@ (WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES/32) #define LTEU_MAX_BINS 10 #define ATF_ACTIVED_MAX_CLIENTS 50 -#define ATF_ACTIVED_MAX_ATFGROUPS 8 +#define ATF_ACTIVED_MAX_ATFGROUPS 16 #define CTL_5G_SIZE 1536 #define CTL_2G_SIZE 684 #define MAX_CTL_SIZE (CTL_5G_SIZE > CTL_2G_SIZE ? CTL_5G_SIZE : CTL_2G_SIZE)