mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Ovidiu Panait <ovidiu.panait.rb@renesas.com>,
	recv.jo@gmail.com, andrew+netdev@lunn.ch, davem@davemloft.net,
	edumazet@kernel.org, kuba@kernel.org, pabeni@redhat.com,
	mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com,
	joabreu@synopsys.com, jun.ann.lai@intel.com,
	yi.fang.gan@intel.com
Cc: netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH net v6 3/5] net: stmmac: Rename double VLAN references to svlan
Date: Wed, 30 Sep 2026 23:41:10 +0200	[thread overview]
Message-ID: <7355f4d7-5f52-49a8-9f81-f9ee722deacb@bootlin.com> (raw)
In-Reply-To: <20260928203441.34876-4-ovidiu.panait.rb@renesas.com>

Hi,

On 9/28/26 22:34, Ovidiu Panait wrote:
> The ESVL and DOVLTC bits control S-VLAN tag processing and have
> nothing to do with the double VLAN feature, which only provides a way
> to process an additional inner VLAN tag. However, the driver code
> that handles them always refers to "double VLAN", which is unrelated
> and makes the implementation confusing. The driver does not use any
> of the inner VLAN tag features, and the networking core does not
> support offloads for the inner tag anyway.
> 
> To reduce the confusion regarding S-Tag vs double VLAN handling,
> rename double -> svlan.
> 
> No functional change intended.
> 
> Suggested-by: Joseph Steel <recv.jo@gmail.com>
> Signed-off-by: Ovidiu Panait <ovidiu.panait.rb@renesas.com>

Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>

Maxime

> ---
> v6 changes:
> - Rebased on top of latest net.
> 
> v5 changes: New patch.
> 
>  drivers/net/ethernet/stmicro/stmmac/hwif.h    |  2 +-
>  drivers/net/ethernet/stmicro/stmmac/stmmac.h  |  2 +-
>  .../net/ethernet/stmicro/stmmac/stmmac_main.c | 34 +++++++++----------
>  .../stmicro/stmmac/stmmac_selftests.c         | 30 ++++++++--------
>  .../net/ethernet/stmicro/stmmac/stmmac_vlan.c |  8 ++---
>  5 files changed, 38 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ethernet/stmicro/stmmac/hwif.h
> index df2126d71c2f..5e2654c91b41 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/hwif.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h
> @@ -633,7 +633,7 @@ struct stmmac_est_ops {
>  struct stmmac_vlan_ops {
>  	/* VLAN */
>  	void (*update_vlan_hash)(struct mac_device_info *hw, u32 hash,
> -				 bool is_double);
> +				 bool is_svlan);
>  	void (*enable_vlan)(struct mac_device_info *hw, u32 type);
>  	void (*rx_hw_vlan)(struct mac_device_info *hw, struct dma_desc *rx_desc,
>  			   struct sk_buff *skb);
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> index 7582fca63741..d2d387f45c10 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> @@ -344,7 +344,7 @@ struct stmmac_priv {
>  	void __iomem *ptpaddr;
>  	void __iomem *estaddr;
>  	unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
> -	unsigned int num_double_vlans;
> +	unsigned int num_svlans;
>  	int sfty_irq;
>  	struct stmmac_msi *msi;
>  
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 14183f92663a..0d70eb452af7 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -6835,7 +6835,7 @@ static u32 stmmac_vid_crc32_le(__le16 vid_le)
>  	return crc;
>  }
>  
> -static int stmmac_vlan_update(struct stmmac_priv *priv, bool is_double)
> +static int stmmac_vlan_update(struct stmmac_priv *priv, bool is_svlan)
>  {
>  	u32 crc, hash = 0;
>  	u16 vid = 0;
> @@ -6849,7 +6849,7 @@ static int stmmac_vlan_update(struct stmmac_priv *priv, bool is_double)
>  	if (!netif_running(priv->dev))
>  		return 0;
>  
> -	return stmmac_update_vlan_hash(priv, priv->hw, hash, is_double);
> +	return stmmac_update_vlan_hash(priv, priv->hw, hash, is_svlan);
>  }
>  
>  /* FIXME: This may need RXC to be running, but it may be called with BH
> @@ -6858,8 +6858,8 @@ static int stmmac_vlan_update(struct stmmac_priv *priv, bool is_double)
>  static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid)
>  {
>  	struct stmmac_priv *priv = netdev_priv(ndev);
> -	unsigned int num_double_vlans;
> -	bool is_double = false;
> +	unsigned int num_svlans;
> +	bool is_svlan = false;
>  	int ret;
>  
>  	ret = pm_runtime_resume_and_get(priv->device);
> @@ -6867,11 +6867,11 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
>  		return ret;
>  
>  	if (be16_to_cpu(proto) == ETH_P_8021AD)
> -		is_double = true;
> +		is_svlan = true;
>  
>  	set_bit(vid, priv->active_vlans);
> -	num_double_vlans = priv->num_double_vlans + is_double;
> -	ret = stmmac_vlan_update(priv, num_double_vlans);
> +	num_svlans = priv->num_svlans + is_svlan;
> +	ret = stmmac_vlan_update(priv, num_svlans);
>  	if (ret) {
>  		clear_bit(vid, priv->active_vlans);
>  		goto err_pm_put;
> @@ -6881,12 +6881,12 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
>  		ret = stmmac_add_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
>  		if (ret) {
>  			clear_bit(vid, priv->active_vlans);
> -			stmmac_vlan_update(priv, priv->num_double_vlans);
> +			stmmac_vlan_update(priv, priv->num_svlans);
>  			goto err_pm_put;
>  		}
>  	}
>  
> -	priv->num_double_vlans = num_double_vlans;
> +	priv->num_svlans = num_svlans;
>  
>  err_pm_put:
>  	pm_runtime_put(priv->device);
> @@ -6900,8 +6900,8 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
>  static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
>  {
>  	struct stmmac_priv *priv = netdev_priv(ndev);
> -	unsigned int num_double_vlans;
> -	bool is_double = false;
> +	unsigned int num_svlans;
> +	bool is_svlan = false;
>  	int ret;
>  
>  	ret = pm_runtime_resume_and_get(priv->device);
> @@ -6909,11 +6909,11 @@ static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vi
>  		return ret;
>  
>  	if (be16_to_cpu(proto) == ETH_P_8021AD)
> -		is_double = true;
> +		is_svlan = true;
>  
>  	clear_bit(vid, priv->active_vlans);
> -	num_double_vlans = priv->num_double_vlans - is_double;
> -	ret = stmmac_vlan_update(priv, num_double_vlans);
> +	num_svlans = priv->num_svlans - is_svlan;
> +	ret = stmmac_vlan_update(priv, num_svlans);
>  	if (ret) {
>  		set_bit(vid, priv->active_vlans);
>  		goto del_vlan_error;
> @@ -6923,12 +6923,12 @@ static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vi
>  		ret = stmmac_del_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
>  		if (ret) {
>  			set_bit(vid, priv->active_vlans);
> -			stmmac_vlan_update(priv, priv->num_double_vlans);
> +			stmmac_vlan_update(priv, priv->num_svlans);
>  			goto del_vlan_error;
>  		}
>  	}
>  
> -	priv->num_double_vlans = num_double_vlans;
> +	priv->num_svlans = num_svlans;
>  
>  del_vlan_error:
>  	pm_runtime_put(priv->device);
> @@ -6944,7 +6944,7 @@ static void stmmac_vlan_restore(struct stmmac_priv *priv)
>  	if (priv->hw->num_vlan)
>  		stmmac_restore_hw_vlan_rx_fltr(priv, priv->dev, priv->hw);
>  
> -	stmmac_vlan_update(priv, priv->num_double_vlans);
> +	stmmac_vlan_update(priv, priv->num_svlans);
>  }
>  
>  static int stmmac_bpf(struct net_device *dev, struct netdev_bpf *bpf)
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
> index c25dc9f89270..c485217ba880 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
> @@ -243,7 +243,7 @@ struct stmmac_test_priv {
>  	int (*func)(struct sk_buff *skb, struct net_device *ndev,
>  		    struct packet_type *pt, struct net_device *orig_ndev);
>  	bool capture_all;
> -	int double_vlan;
> +	int svlan;
>  	int vlan_id;
>  	int ok;
>  };
> @@ -285,7 +285,7 @@ static int stmmac_test_loopback_validate(struct sk_buff *skb,
>  	}
>  
>  	ihdr = ip_hdr(skb);
> -	if (tpriv->double_vlan)
> +	if (tpriv->svlan)
>  		ihdr = (struct iphdr *)(skb_network_header(skb) + 4);
>  
>  	if (tpriv->packet->tcp) {
> @@ -936,7 +936,7 @@ static int stmmac_test_vlan_validate(struct sk_buff *skb,
>  	struct iphdr *ihdr;
>  	u16 proto;
>  
> -	proto = tpriv->double_vlan ? ETH_P_8021AD : ETH_P_8021Q;
> +	proto = tpriv->svlan ? ETH_P_8021AD : ETH_P_8021Q;
>  
>  	skb = skb_unshare(skb, GFP_ATOMIC);
>  	if (!skb)
> @@ -963,7 +963,7 @@ static int stmmac_test_vlan_validate(struct sk_buff *skb,
>  	}
>  
>  	ihdr = ip_hdr(skb);
> -	if (tpriv->double_vlan)
> +	if (tpriv->svlan)
>  		ihdr = (struct iphdr *)(skb_network_header(skb) + 4);
>  	if (ihdr->protocol != IPPROTO_UDP)
>  		goto out;
> @@ -1080,7 +1080,7 @@ static int stmmac_test_vlanfilt_perfect(struct stmmac_priv *priv)
>  	return ret;
>  }
>  
> -static int __stmmac_test_dvlanfilt(struct stmmac_priv *priv)
> +static int __stmmac_test_svlanfilt(struct stmmac_priv *priv)
>  {
>  	struct stmmac_packet_attrs attr = { };
>  	struct stmmac_test_priv *tpriv;
> @@ -1092,7 +1092,7 @@ static int __stmmac_test_dvlanfilt(struct stmmac_priv *priv)
>  		return -ENOMEM;
>  
>  	tpriv->ok = false;
> -	tpriv->double_vlan = true;
> +	tpriv->svlan = true;
>  	init_completion(&tpriv->comp);
>  
>  	tpriv->pt.type = htons(ETH_P_8021Q);
> @@ -1155,15 +1155,15 @@ static int __stmmac_test_dvlanfilt(struct stmmac_priv *priv)
>  	return ret;
>  }
>  
> -static int stmmac_test_dvlanfilt(struct stmmac_priv *priv)
> +static int stmmac_test_svlanfilt(struct stmmac_priv *priv)
>  {
>  	if (!priv->dma_cap.vlhash)
>  		return -EOPNOTSUPP;
>  
> -	return __stmmac_test_dvlanfilt(priv);
> +	return __stmmac_test_svlanfilt(priv);
>  }
>  
> -static int stmmac_test_dvlanfilt_perfect(struct stmmac_priv *priv)
> +static int stmmac_test_svlanfilt_perfect(struct stmmac_priv *priv)
>  {
>  	int ret, prev_cap = priv->dma_cap.vlhash;
>  
> @@ -1171,7 +1171,7 @@ static int stmmac_test_dvlanfilt_perfect(struct stmmac_priv *priv)
>  		return -EOPNOTSUPP;
>  
>  	priv->dma_cap.vlhash = 0;
> -	ret = __stmmac_test_dvlanfilt(priv);
> +	ret = __stmmac_test_svlanfilt(priv);
>  	priv->dma_cap.vlhash = prev_cap;
>  
>  	return ret;
> @@ -1372,7 +1372,7 @@ static int stmmac_test_vlanoff_common(struct stmmac_priv *priv, bool svlan)
>  	proto = svlan ? ETH_P_8021AD : ETH_P_8021Q;
>  
>  	tpriv->ok = false;
> -	tpriv->double_vlan = svlan;
> +	tpriv->svlan = svlan;
>  	init_completion(&tpriv->comp);
>  
>  	tpriv->pt.type = svlan ? htons(ETH_P_8021Q) : htons(ETH_P_IP);
> @@ -1960,11 +1960,11 @@ static const struct stmmac_test {
>  		.name = "VLAN Filtering (perf)      ",
>  		.fn = stmmac_test_vlanfilt_perfect,
>  	}, {
> -		.name = "Double VLAN Filter         ",
> -		.fn = stmmac_test_dvlanfilt,
> +		.name = "SVLAN Filtering            ",
> +		.fn = stmmac_test_svlanfilt,
>  	}, {
> -		.name = "Double VLAN Filter (perf)  ",
> -		.fn = stmmac_test_dvlanfilt_perfect,
> +		.name = "SVLAN Filtering (perf)     ",
> +		.fn = stmmac_test_svlanfilt_perfect,
>  	}, {
>  		.name = "Flexible RX Parser         ",
>  		.fn = stmmac_test_rxp,
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c
> index 200b34588c7f..fb9aad748cb3 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c
> @@ -162,7 +162,7 @@ static void vlan_restore_hw_rx_fltr(struct net_device *dev,
>  }
>  
>  static void vlan_update_hash(struct mac_device_info *hw, u32 hash,
> -			     bool is_double)
> +			     bool is_svlan)
>  {
>  	void __iomem *ioaddr = hw->pcsr;
>  	u32 value;
> @@ -173,7 +173,7 @@ static void vlan_update_hash(struct mac_device_info *hw, u32 hash,
>  
>  	if (hash) {
>  		value |= VLAN_VTHM | VLAN_ETV;
> -		if (is_double) {
> +		if (is_svlan) {
>  			value |= VLAN_ESVL;
>  			value |= VLAN_DOVLTC;
>  		} else {
> @@ -235,7 +235,7 @@ static void vlan_set_hw_mode(struct mac_device_info *hw)
>  }
>  
>  static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash,
> -				      bool is_double)
> +				      bool is_svlan)
>  {
>  	void __iomem *ioaddr = hw->pcsr;
>  
> @@ -251,7 +251,7 @@ static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash,
>  		value = readl(ioaddr + VLAN_TAG);
>  
>  		value |= VLAN_VTHM | VLAN_ETV;
> -		if (is_double) {
> +		if (is_svlan) {
>  			value |= VLAN_ESVL;
>  			value |= VLAN_DOVLTC;
>  		} else {


  reply	other threads:[~2026-09-30 21:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-28 20:34 [PATCH net v6 0/5] net: stmmac: Fix double VLAN 802.1ad tag handling Ovidiu Panait
2026-09-28 20:34 ` [PATCH net v6 1/5] net: stmmac: Remove VLAN perfect matching dead code Ovidiu Panait
2026-09-28 20:34 ` [PATCH net v6 2/5] net: stmmac: Stop toggling the EDVLP bit Ovidiu Panait
2026-09-28 20:34 ` [PATCH net v6 3/5] net: stmmac: Rename double VLAN references to svlan Ovidiu Panait
2026-09-30 21:41   ` Maxime Chevallier [this message]
2026-09-28 20:34 ` [PATCH net v6 4/5] net: stmmac: Do not advertise S-VLAN stripping when it is disabled Ovidiu Panait
2026-09-30 21:42   ` Maxime Chevallier
2026-09-28 20:34 ` [PATCH net v6 5/5] net: stmmac: Disable S-Tag processing on dwmac4 Ovidiu Panait
2026-09-30 21:51   ` Maxime Chevallier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7355f4d7-5f52-49a8-9f81-f9ee722deacb@bootlin.com \
    --to=maxime.chevallier@bootlin.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@kernel.org \
    --cc=joabreu@synopsys.com \
    --cc=jun.ann.lai@intel.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=ovidiu.panait.rb@renesas.com \
    --cc=pabeni@redhat.com \
    --cc=recv.jo@gmail.com \
    --cc=yi.fang.gan@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®