Message ID | 20250310230105.3534334-1-muna.sinada@oss.qualcomm.com |
---|---|
State | Superseded |
Headers | show |
Series | [ath-next] wifi: ath12k: Prevent multicast duplication for dynamic VLAN | expand |
On 3/10/2025 4:01 PM, Muna Sinada wrote: > Since dynamic VLAN traffic is software encrypted and encapsulated, > mac80211 handles the duplication on each link for MLO dynamic VLAN > multicast. > > Currently in mac Tx op, all multicast frames are duplicated and are Let's s/mac Tx op/ath12k_mac_op_tx()/ to be very specific where this is happening. > assigned a mcbc_gsn. This is causing dynamic VLAN multicast traffic > to be dropped in HW. preference is to s/HW/hardware/ > > Prevent dynamic VLAN multicast traffic from being duplicated again in > the driver. Check if incoming packet is a dynamic VLAN packet and > avoid defaulting to multicast conditional. > > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 > Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 > > Signed-off-by: Muna Sinada <muna.sinada@oss.qualcomm.com> Don't spin a new version just to address those comments. I can make them when I put the patch in the 'pending' branch if there are no further review comments. /jeff
On 4/24/2025 7:08 AM, Jeff Johnson wrote: > On 3/10/2025 4:01 PM, Muna Sinada wrote: >> >> Signed-off-by: Muna Sinada <muna.sinada@oss.qualcomm.com> > > Don't spin a new version just to address those comments. > > I can make them when I put the patch in the 'pending' branch if there are no > further review comments. > > /jeff > I went ahead and sent a new version since the patch needed to be rebased. Muna
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c index dfa05f0ee6c9..a7b8a7d2637a 100644 --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c @@ -7337,6 +7337,7 @@ static void ath12k_mac_op_tx(struct ieee80211_hw *hw, struct ath12k_peer *peer; unsigned long links_map; bool is_mcast = false; + bool is_dvlan = false; struct ethhdr *eth; bool is_prb_rsp; u16 mcbc_gsn; @@ -7397,7 +7398,14 @@ static void ath12k_mac_op_tx(struct ieee80211_hw *hw, if (vif->type == NL80211_IFTYPE_AP && vif->p2p) ath12k_mac_add_p2p_noa_ie(ar, vif, skb, is_prb_rsp); - if (!vif->valid_links || !is_mcast || + /* Checking if it is a DVLAN frame */ + if (!test_bit(ATH12K_FLAG_HW_CRYPTO_DISABLED, &ar->ab->dev_flags) && + !(skb_cb->flags & ATH12K_SKB_HW_80211_ENCAP) && + !(skb_cb->flags & ATH12K_SKB_CIPHER_SET) && + ieee80211_has_protected(hdr->frame_control)) + is_dvlan = true; + + if (!vif->valid_links || !is_mcast || is_dvlan || test_bit(ATH12K_FLAG_RAW_MODE, &ar->ab->dev_flags)) { ret = ath12k_dp_tx(ar, arvif, skb, false, 0); if (unlikely(ret)) {
Since dynamic VLAN traffic is software encrypted and encapsulated, mac80211 handles the duplication on each link for MLO dynamic VLAN multicast. Currently in mac Tx op, all multicast frames are duplicated and are assigned a mcbc_gsn. This is causing dynamic VLAN multicast traffic to be dropped in HW. Prevent dynamic VLAN multicast traffic from being duplicated again in the driver. Check if incoming packet is a dynamic VLAN packet and avoid defaulting to multicast conditional. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 Signed-off-by: Muna Sinada <muna.sinada@oss.qualcomm.com> --- drivers/net/wireless/ath/ath12k/mac.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) base-commit: 0e28ee106c46c95eb322833c17c33e3c231ccd0d