Seevalamuthu Mariappan <quic_seevalam@xxxxxxxxxxx> writes: > Advertise AP-VLAN interface type for vlan support in driver. > Metadata information in dp_tx is added to notify firmware > that multicast/broadcast packets are encrypted in software. > > Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01073-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Seevalamuthu Mariappan <quic_seevalam@xxxxxxxxxxx> [...] > --- a/drivers/net/wireless/ath/ath11k/dp_tx.c > +++ b/drivers/net/wireless/ath/ath11k/dp_tx.c > @@ -78,6 +78,44 @@ enum hal_encrypt_type ath11k_dp_tx_get_encrypt_type(u32 cipher) > } > } > > +#define HTT_META_DATA_ALIGNMENT 0x8 > + > +static int ath11k_dp_metadata_align_skb(struct sk_buff *skb, u8 align_len) > +{ > + if (unlikely(skb_cow_head(skb, align_len))) > + return -ENOMEM; > + > + skb_push(skb, align_len); > + memset(skb->data, 0, align_len); > + return 0; > +} [...] > @@ -211,15 +250,42 @@ int ath11k_dp_tx(struct ath11k *ar, struct ath11k_vif *arvif, > goto fail_remove_idr; > } > > + /* Add metadata for sw encrypted vlan group traffic */ > + if (!test_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ar->ab->dev_flags) && > + !(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) && > + !info->control.hw_key && > + ieee80211_has_protected(hdr->frame_control)) { > + /* HW requirement is that metadata should always point to a > + * 8-byte aligned address. So we add alignment pad to start of > + * buffer. HTT Metadata should be ensured to be multiple of 8-bytes > + * to get 8-byte aligned start address along with align_pad added > + */ > + align_pad = ((unsigned long)skb->data) & (HTT_META_DATA_ALIGNMENT - 1); > + ret = ath11k_dp_metadata_align_skb(skb, align_pad); > + if (unlikely(ret)) > + goto fail_remove_idr; If you push the skb like that shouldn't you also reserve the room for it in struct ieee80211_hw::extra_tx_headroom? -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches