Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp17925761ybl; Thu, 2 Jan 2020 14:57:24 -0800 (PST) X-Google-Smtp-Source: APXvYqxT0DYBqnOj4DzgmDEP55aP56pIlXDGvg9q+WIkLUOqgqHwh28Zk+9jWl1KG48DpQtaFfoL X-Received: by 2002:a05:6830:159a:: with SMTP id i26mr95965801otr.3.1578005843955; Thu, 02 Jan 2020 14:57:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578005843; cv=none; d=google.com; s=arc-20160816; b=H0wLfcr65Dt62T/3vhPfhaJq+iu0p4wP5KIgxaxm8FWSLUdtv0W7NbR2hU7R4CGeny Q6UiuArWaZ/ZvnNcfwCkRvM42rsvO4NJ88t+AICX9VpMRY4WkE4la1aiacXguPyGMvfe upZCyBaWPx8E0Sq0vxDEm4KxyFQSr75sOcF7S0gP8tMIpKCngXkQ5NrjhyRsmdTOHpO+ jSevCKVUjWOd9WemvM9iGoMNZbttRPWcnWvHYDNZA4HxGqiUekBICJL95bKWjd9xpgTA BG7zGHQJPam8r5vKVT4KpF1Bl3If1PnAhDGQbbTH7Xu3n104TK3ExRlHUyJpyWBlPV5r j09Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Twkj5/oJuej5957BWMpWx6VwSvocXpLWaUOxwQ617rw=; b=x4cJawh+GrCbGG27RULB1sQdBwPpfqIU+kAtVo9iD7TXRlbdQIRtx0a0qD/rA2NTsd 7FujwGmqB49bkrbh7ZTGzE/D/CSpzZjRI25iNjdnfaESN/ZIsKK8cR753enQTaKNVlvI EoDrdyLbUT4pkA37krmnlgA0rHpATRogUa9s+wwOwF1IK74dMduYiRhQ57isouofduKG /2xIdIwz1AfmDbF2x6LBacIONcGIPdoOgRskxhHkFePZaCVn3zu7pLvSe4mlvucsyWTj mPA1z+E6Ne6oox4Bu9mQwoPa+CmJT/42BbJPT9loZHGKsu1JzADZFLZw5zSUvk83Bpp6 i89Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HyDAOvDa; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f15si22807762oib.61.2020.01.02.14.57.12; Thu, 02 Jan 2020 14:57:23 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HyDAOvDa; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726697AbgABWSn (ORCPT + 99 others); Thu, 2 Jan 2020 17:18:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:34094 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727904AbgABWSk (ORCPT ); Thu, 2 Jan 2020 17:18:40 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EF72D21582; Thu, 2 Jan 2020 22:18:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578003519; bh=GT98iZjKaCrHRL5l1UxVJ9CxZ/AVP+iKA7RnFMB2bIw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HyDAOvDar9bR3PwR6lvpChoL+GZgp8jrjznT30+BXLKjGMBhCVHz6hzLAA2zfJZAh /LJ6pHj9n6afZJxQwoT4cBZdpY6vb/XtjWEWYsXRwoWvF1tByljsLG4D2p5KYtcNAf z/c/0QJ7utcrQAxE0IM3y2wDpw80UV5vA9VcWUSs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vladimir Oltean , "David S. Miller" Subject: [PATCH 5.4 175/191] net: dsa: sja1105: Reconcile the meaning of TPID and TPID2 for E/T and P/Q/R/S Date: Thu, 2 Jan 2020 23:07:37 +0100 Message-Id: <20200102215848.054114222@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200102215829.911231638@linuxfoundation.org> References: <20200102215829.911231638@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vladimir Oltean [ Upstream commit 54fa49ee88138756df0fcf867cb1849904710a8c ] For first-generation switches (SJA1105E and SJA1105T): - TPID means C-Tag (typically 0x8100) - TPID2 means S-Tag (typically 0x88A8) While for the second generation switches (SJA1105P, SJA1105Q, SJA1105R, SJA1105S) it is the other way around: - TPID means S-Tag (typically 0x88A8) - TPID2 means C-Tag (typically 0x8100) In other words, E/T tags untagged traffic with TPID, and P/Q/R/S with TPID2. So the patch mentioned below fixed VLAN filtering for P/Q/R/S, but broke it for E/T. We strive for a common code path for all switches in the family, so just lie in the static config packing functions that TPID and TPID2 are at swapped bit offsets than they actually are, for P/Q/R/S. This will make both switches understand TPID to be ETH_P_8021Q and TPID2 to be ETH_P_8021AD. The meaning from the original E/T was chosen over P/Q/R/S because E/T is actually the one with public documentation available (UM10944.pdf). Fixes: f9a1a7646c0d ("net: dsa: sja1105: Reverse TPID and TPID2") Signed-off-by: Vladimir Oltean Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/dsa/sja1105/sja1105_main.c | 8 ++++---- drivers/net/dsa/sja1105/sja1105_static_config.c | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -1560,8 +1560,8 @@ static int sja1105_vlan_filtering(struct if (enabled) { /* Enable VLAN filtering. */ - tpid = ETH_P_8021AD; - tpid2 = ETH_P_8021Q; + tpid = ETH_P_8021Q; + tpid2 = ETH_P_8021AD; } else { /* Disable VLAN filtering. */ tpid = ETH_P_SJA1105; @@ -1570,9 +1570,9 @@ static int sja1105_vlan_filtering(struct table = &priv->static_config.tables[BLK_IDX_GENERAL_PARAMS]; general_params = table->entries; - /* EtherType used to identify outer tagged (S-tag) VLAN traffic */ - general_params->tpid = tpid; /* EtherType used to identify inner tagged (C-tag) VLAN traffic */ + general_params->tpid = tpid; + /* EtherType used to identify outer tagged (S-tag) VLAN traffic */ general_params->tpid2 = tpid2; /* When VLAN filtering is on, we need to at least be able to * decode management traffic through the "backup plan". --- a/drivers/net/dsa/sja1105/sja1105_static_config.c +++ b/drivers/net/dsa/sja1105/sja1105_static_config.c @@ -142,6 +142,9 @@ static size_t sja1105et_general_params_e return size; } +/* TPID and TPID2 are intentionally reversed so that semantic + * compatibility with E/T is kept. + */ static size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr, enum packing_op op) @@ -166,9 +169,9 @@ sja1105pqrs_general_params_entry_packing sja1105_packing(buf, &entry->mirr_port, 141, 139, size, op); sja1105_packing(buf, &entry->vlmarker, 138, 107, size, op); sja1105_packing(buf, &entry->vlmask, 106, 75, size, op); - sja1105_packing(buf, &entry->tpid, 74, 59, size, op); + sja1105_packing(buf, &entry->tpid2, 74, 59, size, op); sja1105_packing(buf, &entry->ignore2stf, 58, 58, size, op); - sja1105_packing(buf, &entry->tpid2, 57, 42, size, op); + sja1105_packing(buf, &entry->tpid, 57, 42, size, op); sja1105_packing(buf, &entry->queue_ts, 41, 41, size, op); sja1105_packing(buf, &entry->egrmirrvid, 40, 29, size, op); sja1105_packing(buf, &entry->egrmirrpcp, 28, 26, size, op);