qcacmn: Set bandwidth, MPDU retry threshold at peer register
Currently, bandwidth and corresponding MPDU retry threshold was taken from tx packet status in per packet to update peer stats. With this change, set bandwidth and MPDU retry threshold during peer registration. Change-Id: Iffd06968246d0b86b26716ae6672e2cd23360c67 CRs-Fixed: 3225479
This commit is contained in:

committed by
Madan Koyyalamudi

parent
721afd10ab
commit
e52231c86e
@@ -241,16 +241,44 @@ enum peer_debug_id_type {
|
||||
PEER_DEBUG_ID_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* enum cdp_peer_bw - Bandwidth types
|
||||
* @CDP_20_MHZ: 20MHz BW
|
||||
* @CDP_40_MHZ: 40MHz BW
|
||||
* @CDP_80_MHZ: 80MHz BW
|
||||
* @CDP_160_MHZ: 160MHz BW
|
||||
* @CDP_80P80_MHZ: 80+80MHz BW
|
||||
* @CDP_5_MHZ: 5MHz BW
|
||||
* @CDP_10_MHZ: 10MHz BW
|
||||
* @CDP_320_MHZ: 320MHz BW
|
||||
* @CDP_BW_INVALID: Invalid BW
|
||||
* @CDP_BW_MAX: Max BW id
|
||||
*/
|
||||
enum cdp_peer_bw {
|
||||
CDP_20_MHZ,
|
||||
CDP_40_MHZ,
|
||||
CDP_80_MHZ,
|
||||
CDP_160_MHZ,
|
||||
CDP_80P80_MHZ,
|
||||
CDP_5_MHZ,
|
||||
CDP_10_MHZ,
|
||||
CDP_320_MHZ,
|
||||
CDP_BW_INVALID,
|
||||
CDP_BW_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ol_txrx_desc_type - txrx descriptor type
|
||||
* @is_qos_enabled: is station qos enabled
|
||||
* @is_wapi_supported: is station wapi supported
|
||||
* @peer_addr: peer mac address
|
||||
* @bw: bandwidth of peer connection
|
||||
*/
|
||||
struct ol_txrx_desc_type {
|
||||
uint8_t is_qos_enabled;
|
||||
uint8_t is_wapi_supported;
|
||||
struct qdf_mac_addr peer_addr;
|
||||
enum cdp_peer_bw bw;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -7102,12 +7102,6 @@ static QDF_STATUS dp_txrx_peer_attach(struct dp_soc *soc, struct dp_peer *peer)
|
||||
txrx_peer->vdev = peer->vdev;
|
||||
pdev = peer->vdev->pdev;
|
||||
|
||||
/* Initialize MPDU success count with retry update thresholds */
|
||||
txrx_peer->mpdu_retry_threshold_1 =
|
||||
soc->wlan_cfg_ctx->mpdu_retry_threshold_1;
|
||||
txrx_peer->mpdu_retry_threshold_2 =
|
||||
soc->wlan_cfg_ctx->mpdu_retry_threshold_2;
|
||||
|
||||
DP_STATS_INIT(txrx_peer);
|
||||
|
||||
dp_wds_ext_peer_init(txrx_peer);
|
||||
|
@@ -5097,6 +5097,42 @@ dp_rx_delba_ind_handler(void *soc_handle, uint16_t peer_id,
|
||||
}
|
||||
|
||||
#ifdef DP_PEER_EXTENDED_API
|
||||
/**
|
||||
* dp_peer_set_bw() - Set bandwidth and mpdu retry count threshold for peer
|
||||
* @soc: DP soc handle
|
||||
* @txrx_peer: Core txrx_peer handle
|
||||
* @set_bw: enum of bandwidth to be set for this peer connection
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void dp_peer_set_bw(struct dp_soc *soc, struct dp_txrx_peer *txrx_peer,
|
||||
enum cdp_peer_bw set_bw)
|
||||
{
|
||||
if (!txrx_peer)
|
||||
return;
|
||||
|
||||
txrx_peer->bw = set_bw;
|
||||
|
||||
switch (set_bw) {
|
||||
case CDP_160_MHZ:
|
||||
case CDP_320_MHZ:
|
||||
txrx_peer->mpdu_retry_threshold =
|
||||
soc->wlan_cfg_ctx->mpdu_retry_threshold_2;
|
||||
break;
|
||||
case CDP_20_MHZ:
|
||||
case CDP_40_MHZ:
|
||||
case CDP_80_MHZ:
|
||||
default:
|
||||
txrx_peer->mpdu_retry_threshold =
|
||||
soc->wlan_cfg_ctx->mpdu_retry_threshold_1;
|
||||
break;
|
||||
}
|
||||
|
||||
dp_info("Peer id: %u: BW: %u, mpdu retry threshold: %u",
|
||||
txrx_peer->peer_id, txrx_peer->bw,
|
||||
txrx_peer->mpdu_retry_threshold);
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
QDF_STATUS dp_register_peer(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
||||
struct ol_txrx_desc_type *sta_desc)
|
||||
@@ -5114,6 +5150,8 @@ QDF_STATUS dp_register_peer(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
||||
peer->state = OL_TXRX_PEER_STATE_CONN;
|
||||
qdf_spin_unlock_bh(&peer->peer_info_lock);
|
||||
|
||||
dp_peer_set_bw(soc, peer->txrx_peer, sta_desc->bw);
|
||||
|
||||
dp_rx_flush_rx_cached(peer, false);
|
||||
|
||||
if (IS_MLO_DP_LINK_PEER(peer) && peer->first_link) {
|
||||
@@ -5185,6 +5223,8 @@ QDF_STATUS dp_register_peer(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
||||
peer->state = OL_TXRX_PEER_STATE_CONN;
|
||||
qdf_spin_unlock_bh(&peer->peer_info_lock);
|
||||
|
||||
dp_peer_set_bw(soc, peer->txrx_peer, sta_desc->bw);
|
||||
|
||||
dp_rx_flush_rx_cached(peer, false);
|
||||
|
||||
dp_peer_unref_delete(peer, DP_MOD_ID_CDP);
|
||||
|
@@ -4037,7 +4037,8 @@ static inline void
|
||||
dp_tx_update_peer_extd_stats(struct hal_tx_completion_status *ts,
|
||||
struct dp_txrx_peer *txrx_peer)
|
||||
{
|
||||
uint8_t mcs, pkt_type, retry_threshold;
|
||||
uint8_t mcs, pkt_type;
|
||||
uint8_t retry_threshold = txrx_peer->mpdu_retry_threshold;
|
||||
|
||||
mcs = ts->mcs;
|
||||
pkt_type = ts->pkt_type;
|
||||
@@ -4084,19 +4085,9 @@ dp_tx_update_peer_extd_stats(struct hal_tx_completion_status *ts,
|
||||
if (ts->first_msdu) {
|
||||
DP_PEER_EXTD_STATS_INCC(txrx_peer, tx.retries_mpdu, 1,
|
||||
ts->transmit_cnt > 1);
|
||||
switch (ts->bw) {
|
||||
case 0: /* 20Mhz */
|
||||
case 1: /* 40Mhz */
|
||||
case 2: /* 80Mhz */
|
||||
retry_threshold = txrx_peer->mpdu_retry_threshold_1;
|
||||
break;
|
||||
default: /* 160Mhz */
|
||||
retry_threshold = txrx_peer->mpdu_retry_threshold_2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!retry_threshold)
|
||||
return;
|
||||
|
||||
DP_PEER_EXTD_STATS_INCC(txrx_peer, tx.mpdu_success_with_retries,
|
||||
qdf_do_div(ts->transmit_cnt,
|
||||
retry_threshold),
|
||||
|
@@ -3840,9 +3840,8 @@ struct dp_peer_stats {
|
||||
* @stats: Peer stats
|
||||
* @delay_stats: Peer delay stats
|
||||
* @jitter_stats: Peer jitter stats
|
||||
* @mpdu_retry_threshold_1: MPDU retry threshold 1 to increment tx bad count
|
||||
* @mpdu_retry_threshold_1: MPDU retry threshold 2 to increment tx bad count
|
||||
|
||||
* @bw: bandwidth of peer connection
|
||||
* @mpdu_retry_threshold: MPDU retry threshold to increment tx bad count
|
||||
*/
|
||||
struct dp_txrx_peer {
|
||||
/* Core TxRx Peer */
|
||||
@@ -3898,8 +3897,10 @@ struct dp_txrx_peer {
|
||||
#ifdef CONFIG_SAWF
|
||||
struct dp_peer_sawf_stats *sawf_stats;
|
||||
#endif
|
||||
uint8_t mpdu_retry_threshold_1;
|
||||
uint8_t mpdu_retry_threshold_2;
|
||||
#ifdef DP_PEER_EXTENDED_API
|
||||
enum cdp_peer_bw bw;
|
||||
uint8_t mpdu_retry_threshold;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Peer structure for data path state */
|
||||
|
Reference in New Issue
Block a user