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> > --- > drivers/net/wireless/ath/ath11k/core.c | 6 +++ > drivers/net/wireless/ath/ath11k/dp_tx.c | 74 ++++++++++++++++++++++++++++++++- > drivers/net/wireless/ath/ath11k/dp_tx.h | 14 +++++++ > drivers/net/wireless/ath/ath11k/hw.h | 1 + > drivers/net/wireless/ath/ath11k/mac.c | 5 +++ > 5 files changed, 98 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c > index 293563b..0b2407e 100644 > --- a/drivers/net/wireless/ath/ath11k/core.c > +++ b/drivers/net/wireless/ath/ath11k/core.c > @@ -86,6 +86,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { > .num_vdevs = 16 + 1, > .num_peers = 512, > .supports_suspend = false, > + .supports_ap_vlan = true, > .hal_desc_sz = sizeof(struct hal_rx_desc_ipq8074), > .supports_regdb = false, > .fix_l1ss = true, > @@ -150,6 +151,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { > .num_vdevs = 16 + 1, > .num_peers = 512, > .supports_suspend = false, > + .supports_ap_vlan = true, > .hal_desc_sz = sizeof(struct hal_rx_desc_ipq8074), > .supports_regdb = false, > .fix_l1ss = true, > @@ -213,6 +215,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { > .num_vdevs = 16 + 1, > .num_peers = 512, > .supports_suspend = true, > + .supports_ap_vlan = false, > .hal_desc_sz = sizeof(struct hal_rx_desc_ipq8074), > .supports_regdb = true, > .fix_l1ss = true, > @@ -276,6 +279,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { > .num_vdevs = 8, > .num_peers = 128, > .supports_suspend = false, > + .supports_ap_vlan = true, > .hal_desc_sz = sizeof(struct hal_rx_desc_qcn9074), > .supports_regdb = false, > .fix_l1ss = true, > @@ -339,6 +343,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { > .num_vdevs = 16 + 1, > .num_peers = 512, > .supports_suspend = true, > + .supports_ap_vlan = false, > .hal_desc_sz = sizeof(struct hal_rx_desc_wcn6855), > .supports_regdb = true, > .fix_l1ss = false, > @@ -401,6 +406,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { > .num_vdevs = 16 + 1, > .num_peers = 512, > .supports_suspend = true, > + .supports_ap_vlan = false, > .hal_desc_sz = sizeof(struct hal_rx_desc_wcn6855), > .supports_regdb = true, > .fix_l1ss = false, As this is an old patch, please make sure all entries in hw_params have supports_ap_vlan. > +static int ath11k_dp_metadata_align_skb(struct sk_buff *skb, u8 align_len) > +{ > + if (unlikely(skb_cow_head(skb, align_len))) > + return -ENOMEM; The preferred style in ath11k is: ret = skb_cow_head(skb, align_len); if (unlikely(ret)) return ret; But is the unlikely() really necessary here? I doubt this applies anymore so please rebase and submit v2. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches