diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 0a35856a79..8a324a1a03 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -6770,29 +6770,14 @@ uint8_t dp_tx_need_multipass_process(struct dp_soc *soc, struct dp_vdev *vdev, return DP_VLAN_UNTAGGED; } -bool dp_tx_multipass_process(struct dp_soc *soc, struct dp_vdev *vdev, - qdf_nbuf_t nbuf, - struct dp_tx_msdu_info_s *msdu_info) +#ifndef WLAN_REPEATER_NOT_SUPPORTED +static inline void +dp_tx_multipass_send_pkt_to_repeater(struct dp_soc *soc, struct dp_vdev *vdev, + qdf_nbuf_t nbuf, + struct dp_tx_msdu_info_s *msdu_info) { - uint16_t vlan_id = 0; - uint16_t group_key = 0; - uint8_t is_spcl_peer = DP_VLAN_UNTAGGED; qdf_nbuf_t nbuf_copy = NULL; - if (HTT_TX_MSDU_EXT2_DESC_FLAG_VALID_KEY_FLAGS_GET(msdu_info->meta_data[0])) - return true; - - is_spcl_peer = dp_tx_need_multipass_process(soc, vdev, nbuf, &vlan_id); - - if ((is_spcl_peer != DP_VLAN_TAGGED_MULTICAST) && - (is_spcl_peer != DP_VLAN_TAGGED_UNICAST)) - return true; - - if (is_spcl_peer == DP_VLAN_TAGGED_UNICAST) { - dp_tx_remove_vlan_tag(vdev, nbuf); - return true; - } - /* AP can have classic clients, special clients & * classic repeaters. * 1. Classic clients & special client: @@ -6822,10 +6807,35 @@ bool dp_tx_multipass_process(struct dp_soc *soc, struct dp_vdev *vdev, HTT_INVALID_PEER, NULL); if (nbuf_copy) { qdf_nbuf_free(nbuf_copy); - qdf_err("nbuf_copy send failed"); + dp_info_rl("nbuf_copy send failed"); } } +} +#endif +bool dp_tx_multipass_process(struct dp_soc *soc, struct dp_vdev *vdev, + qdf_nbuf_t nbuf, + struct dp_tx_msdu_info_s *msdu_info) +{ + uint16_t vlan_id = 0; + uint16_t group_key = 0; + uint8_t is_spcl_peer = DP_VLAN_UNTAGGED; + + if (HTT_TX_MSDU_EXT2_DESC_FLAG_VALID_KEY_FLAGS_GET(msdu_info->meta_data[0])) + return true; + + is_spcl_peer = dp_tx_need_multipass_process(soc, vdev, nbuf, &vlan_id); + + if ((is_spcl_peer != DP_VLAN_TAGGED_MULTICAST) && + (is_spcl_peer != DP_VLAN_TAGGED_UNICAST)) + return true; + + if (is_spcl_peer == DP_VLAN_TAGGED_UNICAST) { + dp_tx_remove_vlan_tag(vdev, nbuf); + return true; + } + + dp_tx_multipass_send_pkt_to_repeater(soc, vdev, nbuf, msdu_info); group_key = vdev->iv_vlan_map[vlan_id]; /*