Search Linux Wireless

RE: [PATCH] ath11k: Add support for dynamic vlan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Seevalamuthu M (QUIC) <quic_seevalam@xxxxxxxxxxx>
> Sent: Tuesday, February 8, 2022 11:00 AM
> To: Kalle Valo <kvalo@xxxxxxxxxx>; Seevalamuthu M (QUIC)
> <quic_seevalam@xxxxxxxxxxx>
> Cc: ath11k@xxxxxxxxxxxxxxxxxxx; linux-wireless@xxxxxxxxxxxxxxx
> Subject: RE: [PATCH] ath11k: Add support for dynamic vlan
> 
> Hi Kalle,
> 
> > -----Original Message-----
> > From: Kalle Valo <kvalo@xxxxxxxxxx>
> > Sent: Monday, January 17, 2022 6:03 PM
> > To: Seevalamuthu M (QUIC) <quic_seevalam@xxxxxxxxxxx>
> > Cc: ath11k@xxxxxxxxxxxxxxxxxxx; linux-wireless@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH] ath11k: Add support for dynamic vlan
> >
> > 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?
> 
> [seevalam] : already this is handled using skb_cow_head() in
> ath11k_dp_metadata_align_skb(). Please correct me if I misunderstood your
> point.

Hi Kalle, 

Do you have any comments on this? 

Regards,
Seevalamuthu M





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux