qcacmn: Find peer using mld_addr for MLO case
For MLO, try to find peer by comparing the MLD MAC addresses. Change-Id: Ib109da957d5c330385688a4e91e04cda91a51f30 CRs-Fixed: 3140866
此提交包含在:
@@ -2941,6 +2941,10 @@ static void dp_htt_mlo_peer_map_handler(struct htt_soc *soc,
|
||||
uint16_t mlo_peer_id;
|
||||
uint8_t num_links;
|
||||
struct dp_mlo_flow_override_info mlo_flow_info[DP_MLO_FLOW_INFO_MAX];
|
||||
struct dp_mlo_link_info mlo_link_info[DP_MAX_MLO_LINKS];
|
||||
MLO_PEER_MAP_TLV_TAG_ID tlv_type = 0xff;
|
||||
uint32_t tlv_len = 0;
|
||||
int i = 0;
|
||||
|
||||
mlo_peer_id = HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_GET(*msg_word);
|
||||
num_links =
|
||||
@@ -2982,9 +2986,34 @@ static void dp_htt_mlo_peer_map_handler(struct htt_soc *soc,
|
||||
mlo_flow_info[2].cache_set_num =
|
||||
HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_GET(*(msg_word + 3));
|
||||
|
||||
msg_word = msg_word + 8;
|
||||
while (msg_word && (i < DP_MAX_MLO_LINKS)) {
|
||||
mlo_link_info[i].peer_chip_id = 0xFF;
|
||||
mlo_link_info[i].vdev_id = 0xFF;
|
||||
|
||||
tlv_type = HTT_RX_MLO_PEER_MAP_TLV_TAG_GET(*msg_word);
|
||||
tlv_len = HTT_RX_MLO_PEER_MAP_TLV_LENGTH_GET(*msg_word);
|
||||
|
||||
if (tlv_len == 0) {
|
||||
dp_err("TLV Length is 0");
|
||||
break;
|
||||
}
|
||||
|
||||
if (tlv_type == MLO_PEER_MAP_TLV_STRUCT_SOC_VDEV_PEER_IDS) {
|
||||
mlo_link_info[i].peer_chip_id =
|
||||
HTT_RX_MLO_PEER_MAP_CHIP_ID_GET(
|
||||
*(msg_word + 1));
|
||||
mlo_link_info[i].vdev_id =
|
||||
HTT_RX_MLO_PEER_MAP_VDEV_ID_GET(
|
||||
*(msg_word + 1));
|
||||
}
|
||||
msg_word = (uint32_t *)(((uint8_t *)msg_word) + tlv_len);
|
||||
i++;
|
||||
}
|
||||
|
||||
dp_rx_mlo_peer_map_handler(soc->dp_soc, mlo_peer_id,
|
||||
mlo_peer_mac_addr,
|
||||
mlo_flow_info);
|
||||
mlo_flow_info, mlo_link_info);
|
||||
}
|
||||
|
||||
static void dp_htt_mlo_peer_unmap_handler(struct htt_soc *soc,
|
||||
|
新增問題並參考
封鎖使用者