Subject: Re: [PATCH] ath11k: Add support for dynamic vlan

From: Kalle Valo <[email-masked]>
Date: Fri, 03 Jun 2022 11:34:17 +0300

Seevalamuthu Mariappan <[email-masked]> 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 <[email-masked]>
> ---
>  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