qcacmn: Add change to get link ID from peer event

Add change to get link ID from peer event

Change-Id: Iab066f702d232d3682729b57c5a3d4c7da2672ba
CRs-Fixed: 3442914
This commit is contained in:
Amit Mehta
2023-04-19 23:01:12 -07:00
committed by Rahul Choudhary
parent 99ec9ce725
commit 1ba9e267e0
4 changed files with 94 additions and 0 deletions

View File

@@ -3654,6 +3654,36 @@ static void dp_ipa_rx_cce_super_rule_setup_done_handler(struct htt_soc *soc,
{
}
#endif
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
static inline void
dp_htt_peer_ext_evt(struct htt_soc *soc, uint32_t *msg_word)
{
struct dp_peer_ext_evt_info info;
uint8_t mac_addr_deswizzle_buf[QDF_MAC_ADDR_SIZE];
info.peer_id = HTT_RX_PEER_EXTENDED_PEER_ID_GET(*msg_word);
info.vdev_id = HTT_RX_PEER_EXTENDED_VDEV_ID_GET(*msg_word);
info.link_id =
HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_GET(*(msg_word + 2));
info.link_id_valid =
HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_GET(*(msg_word + 2));
info.peer_mac_addr =
htt_t2h_mac_addr_deswizzle((u_int8_t *)(msg_word + 1),
&mac_addr_deswizzle_buf[0]);
dp_htt_info("peer id %u, vdev id %u, link id %u, valid %u,peer_mac " QDF_MAC_ADDR_FMT,
info.peer_id, info.vdev_id, info.link_id,
info.link_id_valid, QDF_MAC_ADDR_REF(info.peer_mac_addr));
dp_rx_peer_ext_evt(soc->dp_soc, &info);
}
#else
static inline void
dp_htt_peer_ext_evt(struct htt_soc *soc, uint32_t *msg_word)
{
}
#endif
void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt)
{
@@ -4109,6 +4139,11 @@ void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt)
dp_ipa_rx_cce_super_rule_setup_done_handler(soc, msg_word);
break;
}
case HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT:
{
dp_htt_peer_ext_evt(soc, msg_word);
break;
}
default:
break;
};

View File

@@ -3021,6 +3021,34 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
dp_peer_unref_delete(peer, DP_MOD_ID_CONFIG);
}
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
QDF_STATUS
dp_rx_peer_ext_evt(struct dp_soc *soc, struct dp_peer_ext_evt_info *info)
{
struct dp_peer *peer = NULL;
struct cdp_peer_info peer_info = { 0 };
QDF_ASSERT(info->peer_id <= soc->max_peer_id);
DP_PEER_INFO_PARAMS_INIT(&peer_info, info->vdev_id, info->peer_mac_addr,
false, CDP_LINK_PEER_TYPE);
peer = dp_peer_hash_find_wrapper(soc, &peer_info, DP_MOD_ID_CONFIG);
if (!peer) {
dp_err("peer NULL, id %u, MAC " QDF_MAC_ADDR_FMT ", vdev_id %u",
info->peer_id, QDF_MAC_ADDR_REF(info->peer_mac_addr),
info->vdev_id);
return QDF_STATUS_E_FAILURE;
}
peer->link_id = info->link_id;
peer->link_id_valid = info->link_id_valid;
dp_peer_unref_delete(peer, DP_MOD_ID_CONFIG);
return QDF_STATUS_SUCCESS;
}
#endif
#ifdef WLAN_FEATURE_11BE_MLO
void dp_rx_mlo_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id)
{

View File

@@ -713,6 +713,19 @@ void dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
uint8_t vdev_id, uint8_t *peer_mac_addr,
uint8_t is_wds, uint32_t free_wds_count);
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
/**
* dp_rx_peer_ext_evt() - handle peer extended event from firmware
* @soc: DP soc handle
* @info: extended evt info
*
*
* Return: QDF_STATUS
*/
QDF_STATUS
dp_rx_peer_ext_evt(struct dp_soc *soc, struct dp_peer_ext_evt_info *info);
#endif
#ifdef DP_RX_UDP_OVER_PEER_ROAM
/**
* dp_rx_reset_roaming_peer() - Reset the roamed peer in vdev

View File

@@ -4165,6 +4165,24 @@ struct dp_ast_flow_override_info {
uint8_t tid_valid_hi_pri_mask;
};
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
/**
* struct dp_peer_ext_evt_info - peer extended event info
* @peer_id: peer_id from firmware
* @vdev_id: vdev ID
* @link_id: Link ID
* @link_id_valid: link_id_valid
* @peer_mac_addr: mac address of the peer
*/
struct dp_peer_ext_evt_info {
uint16_t peer_id;
uint8_t vdev_id;
uint8_t link_id;
bool link_id_valid;
uint8_t *peer_mac_addr;
};
#endif
/**
* struct dp_peer_ast_params - ast parameters for a msdu flow-queue
* @ast_idx: ast index populated by FW