netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S
@ 2020-05-27 16:40 Vladimir Oltean
  2020-05-29  2:56 ` kbuild test robot
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Vladimir Oltean @ 2020-05-27 16:40 UTC (permalink / raw)
  To: davem; +Cc: andrew, f.fainelli, vivien.didelot, netdev

From: Vladimir Oltean <vladimir.oltean@nxp.com>

The dynamic configuration interface for the General Params and the L2
Lookup Params tables was copy-pasted between E/T devices and P/Q/R/S
devices. Nonetheless, these interfaces are bitwise different (and not to
mention, located at different SPI addresses).

The driver is using dynamic reconfiguration of the General Parameters
table for the port mirroring feature, which was therefore broken on
P/Q/R/S.

Note that I don't think this patch can be backported very far to stable
trees (since it conflicts with some other development done since the
introduction of the driver).

Fixes: 8aa9ebccae87 ("net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
---
 drivers/net/dsa/sja1105/sja1105.h             |  4 ++
 .../net/dsa/sja1105/sja1105_dynamic_config.c  | 50 +++++++++++++++----
 .../net/dsa/sja1105/sja1105_static_config.c   | 10 ++--
 3 files changed, 48 insertions(+), 16 deletions(-)

diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h
index 198d2a7d7f95..303b21470d77 100644
--- a/drivers/net/dsa/sja1105/sja1105.h
+++ b/drivers/net/dsa/sja1105/sja1105.h
@@ -322,6 +322,10 @@ int sja1105pqrs_fdb_del(struct dsa_switch *ds, int port,
 			const unsigned char *addr, u16 vid);
 
 /* Common implementations for the static and dynamic configs */
+size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
+						enum packing_op op);
+size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
+						  enum packing_op op);
 size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
 					   enum packing_op op);
 size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
diff --git a/drivers/net/dsa/sja1105/sja1105_dynamic_config.c b/drivers/net/dsa/sja1105/sja1105_dynamic_config.c
index 2a8fbd7fdedc..f98c98a063e7 100644
--- a/drivers/net/dsa/sja1105/sja1105_dynamic_config.c
+++ b/drivers/net/dsa/sja1105/sja1105_dynamic_config.c
@@ -127,9 +127,15 @@
 #define SJA1105ET_SIZE_L2_LOOKUP_PARAMS_DYN_CMD			\
 	SJA1105_SIZE_DYN_CMD
 
+#define SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_DYN_CMD		\
+	(SJA1105_SIZE_DYN_CMD + SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_ENTRY)
+
 #define SJA1105ET_SIZE_GENERAL_PARAMS_DYN_CMD			\
 	SJA1105_SIZE_DYN_CMD
 
+#define SJA1105PQRS_SIZE_GENERAL_PARAMS_DYN_CMD			\
+	(SJA1105_SIZE_DYN_CMD + SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY)
+
 #define SJA1105PQRS_SIZE_AVB_PARAMS_DYN_CMD			\
 	(SJA1105_SIZE_DYN_CMD + SJA1105PQRS_SIZE_AVB_PARAMS_ENTRY)
 
@@ -137,7 +143,7 @@
 	(SJA1105_SIZE_DYN_CMD + SJA1105_SIZE_RETAGGING_ENTRY)
 
 #define SJA1105_MAX_DYN_CMD_SIZE				\
-	SJA1105PQRS_SIZE_MAC_CONFIG_DYN_CMD
+	SJA1105PQRS_SIZE_GENERAL_PARAMS_DYN_CMD
 
 struct sja1105_dyn_cmd {
 	bool search;
@@ -494,6 +500,18 @@ sja1105et_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
 	return 0;
 }
 
+static void
+sja1105pqrs_l2_lookup_params_cmd_packing(void *buf,
+					 struct sja1105_dyn_cmd *cmd,
+					 enum packing_op op)
+{
+	u8 *p = buf + SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_ENTRY;
+	const int size = SJA1105_SIZE_DYN_CMD;
+
+	sja1105_packing(p, &cmd->valid,   31, 31, size, op);
+	sja1105_packing(p, &cmd->rdwrset, 30, 30, size, op);
+}
+
 static void
 sja1105et_general_params_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
 				     enum packing_op op)
@@ -516,6 +534,18 @@ sja1105et_general_params_entry_packing(void *buf, void *entry_ptr,
 	return 0;
 }
 
+static void
+sja1105pqrs_general_params_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
+				       enum packing_op op)
+{
+	u8 *p = buf + SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY;
+	const int size = SJA1105_SIZE_DYN_CMD;
+
+	sja1105_packing(p, &cmd->valid,   31, 31, size, op);
+	sja1105_packing(p, &cmd->errors,  30, 30, size, op);
+	sja1105_packing(p, &cmd->rdwrset, 28, 28, size, op);
+}
+
 static void
 sja1105pqrs_avb_params_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
 				   enum packing_op op)
@@ -693,12 +723,12 @@ struct sja1105_dynamic_table_ops sja1105pqrs_dyn_ops[BLK_IDX_MAX_DYN] = {
 	[BLK_IDX_SCHEDULE_ENTRY_POINTS_PARAMS] = {0},
 	[BLK_IDX_VL_FORWARDING_PARAMS] = {0},
 	[BLK_IDX_L2_LOOKUP_PARAMS] = {
-		.entry_packing = sja1105et_l2_lookup_params_entry_packing,
-		.cmd_packing = sja1105et_l2_lookup_params_cmd_packing,
+		.entry_packing = sja1105pqrs_l2_lookup_params_entry_packing,
+		.cmd_packing = sja1105pqrs_l2_lookup_params_cmd_packing,
 		.max_entry_count = SJA1105_MAX_L2_LOOKUP_PARAMS_COUNT,
 		.access = (OP_READ | OP_WRITE),
-		.packed_size = SJA1105ET_SIZE_L2_LOOKUP_PARAMS_DYN_CMD,
-		.addr = 0x38,
+		.packed_size = SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_DYN_CMD,
+		.addr = 0x54,
 	},
 	[BLK_IDX_L2_FORWARDING_PARAMS] = {0},
 	[BLK_IDX_AVB_PARAMS] = {
@@ -710,12 +740,12 @@ struct sja1105_dynamic_table_ops sja1105pqrs_dyn_ops[BLK_IDX_MAX_DYN] = {
 		.addr = 0x8003,
 	},
 	[BLK_IDX_GENERAL_PARAMS] = {
-		.entry_packing = sja1105et_general_params_entry_packing,
-		.cmd_packing = sja1105et_general_params_cmd_packing,
+		.entry_packing = sja1105pqrs_general_params_entry_packing,
+		.cmd_packing = sja1105pqrs_general_params_cmd_packing,
 		.max_entry_count = SJA1105_MAX_GENERAL_PARAMS_COUNT,
-		.access = OP_WRITE,
-		.packed_size = SJA1105ET_SIZE_GENERAL_PARAMS_DYN_CMD,
-		.addr = 0x34,
+		.access = (OP_READ | OP_WRITE),
+		.packed_size = SJA1105PQRS_SIZE_GENERAL_PARAMS_DYN_CMD,
+		.addr = 0x3B,
 	},
 	[BLK_IDX_RETAGGING] = {
 		.entry_packing = sja1105_retagging_entry_packing,
diff --git a/drivers/net/dsa/sja1105/sja1105_static_config.c b/drivers/net/dsa/sja1105/sja1105_static_config.c
index 780aca034cdc..ff3fe471efc2 100644
--- a/drivers/net/dsa/sja1105/sja1105_static_config.c
+++ b/drivers/net/dsa/sja1105/sja1105_static_config.c
@@ -146,9 +146,8 @@ static size_t sja1105et_general_params_entry_packing(void *buf, void *entry_ptr,
 /* 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)
+size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
+						enum packing_op op)
 {
 	const size_t size = SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY;
 	struct sja1105_general_params_entry *entry = entry_ptr;
@@ -228,9 +227,8 @@ sja1105et_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
 	return size;
 }
 
-static size_t
-sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
-					   enum packing_op op)
+size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
+						  enum packing_op op)
 {
 	const size_t size = SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_ENTRY;
 	struct sja1105_l2_lookup_params_entry *entry = entry_ptr;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S
  2020-05-27 16:40 [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S Vladimir Oltean
@ 2020-05-29  2:56 ` kbuild test robot
  2020-05-29 19:33 ` kbuild test robot
  2020-05-29 23:45 ` David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: kbuild test robot @ 2020-05-29  2:56 UTC (permalink / raw)
  To: Vladimir Oltean, davem
  Cc: kbuild-all, andrew, f.fainelli, vivien.didelot, netdev

[-- Attachment #1: Type: text/plain, Size: 11820 bytes --]

Hi Vladimir,

I love your patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]
[also build test WARNING on sparc-next/master linus/master v5.7-rc7 next-20200528]
[cannot apply to net/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Vladimir-Oltean/net-dsa-sja1105-fix-port-mirroring-for-P-Q-R-S/20200528-004418
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git dc0f3ed1973f101508957b59e529e03da1349e09
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

drivers/net/dsa/sja1105/sja1105_static_config.c:105:8: warning: no previous prototype for 'sja1105pqrs_avb_params_entry_packing' [-Wmissing-prototypes]
105 | size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:149:8: warning: no previous prototype for 'sja1105pqrs_general_params_entry_packing' [-Wmissing-prototypes]
149 | size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:198:8: warning: no previous prototype for 'sja1105_l2_forwarding_entry_packing' [-Wmissing-prototypes]
198 | size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/dsa/sja1105/sja1105_static_config.c:230:8: warning: no previous prototype for 'sja1105pqrs_l2_lookup_params_entry_packing' [-Wmissing-prototypes]
230 | size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:252:8: warning: no previous prototype for 'sja1105et_l2_lookup_entry_packing' [-Wmissing-prototypes]
252 | size_t sja1105et_l2_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:266:8: warning: no previous prototype for 'sja1105pqrs_l2_lookup_entry_packing' [-Wmissing-prototypes]
266 | size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:342:8: warning: no previous prototype for 'sja1105pqrs_mac_config_entry_packing' [-Wmissing-prototypes]
342 | size_t sja1105pqrs_mac_config_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:461:8: warning: no previous prototype for 'sja1105_vl_lookup_entry_packing' [-Wmissing-prototypes]
461 | size_t sja1105_vl_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:511:8: warning: no previous prototype for 'sja1105_vlan_lookup_entry_packing' [-Wmissing-prototypes]
511 | size_t sja1105_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:542:8: warning: no previous prototype for 'sja1105_retagging_entry_packing' [-Wmissing-prototypes]
542 | size_t sja1105_retagging_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/sja1105pqrs_l2_lookup_params_entry_packing +230 drivers/net/dsa/sja1105/sja1105_static_config.c

   104	
 > 105	size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
   106						    enum packing_op op)
   107	{
   108		const size_t size = SJA1105PQRS_SIZE_AVB_PARAMS_ENTRY;
   109		struct sja1105_avb_params_entry *entry = entry_ptr;
   110	
   111		sja1105_packing(buf, &entry->cas_master, 126, 126, size, op);
   112		sja1105_packing(buf, &entry->destmeta,   125,  78, size, op);
   113		sja1105_packing(buf, &entry->srcmeta,     77,  30, size, op);
   114		return size;
   115	}
   116	
   117	static size_t sja1105et_general_params_entry_packing(void *buf, void *entry_ptr,
   118							     enum packing_op op)
   119	{
   120		const size_t size = SJA1105ET_SIZE_GENERAL_PARAMS_ENTRY;
   121		struct sja1105_general_params_entry *entry = entry_ptr;
   122	
   123		sja1105_packing(buf, &entry->vllupformat, 319, 319, size, op);
   124		sja1105_packing(buf, &entry->mirr_ptacu,  318, 318, size, op);
   125		sja1105_packing(buf, &entry->switchid,    317, 315, size, op);
   126		sja1105_packing(buf, &entry->hostprio,    314, 312, size, op);
   127		sja1105_packing(buf, &entry->mac_fltres1, 311, 264, size, op);
   128		sja1105_packing(buf, &entry->mac_fltres0, 263, 216, size, op);
   129		sja1105_packing(buf, &entry->mac_flt1,    215, 168, size, op);
   130		sja1105_packing(buf, &entry->mac_flt0,    167, 120, size, op);
   131		sja1105_packing(buf, &entry->incl_srcpt1, 119, 119, size, op);
   132		sja1105_packing(buf, &entry->incl_srcpt0, 118, 118, size, op);
   133		sja1105_packing(buf, &entry->send_meta1,  117, 117, size, op);
   134		sja1105_packing(buf, &entry->send_meta0,  116, 116, size, op);
   135		sja1105_packing(buf, &entry->casc_port,   115, 113, size, op);
   136		sja1105_packing(buf, &entry->host_port,   112, 110, size, op);
   137		sja1105_packing(buf, &entry->mirr_port,   109, 107, size, op);
   138		sja1105_packing(buf, &entry->vlmarker,    106,  75, size, op);
   139		sja1105_packing(buf, &entry->vlmask,       74,  43, size, op);
   140		sja1105_packing(buf, &entry->tpid,         42,  27, size, op);
   141		sja1105_packing(buf, &entry->ignore2stf,   26,  26, size, op);
   142		sja1105_packing(buf, &entry->tpid2,        25,  10, size, op);
   143		return size;
   144	}
   145	
   146	/* TPID and TPID2 are intentionally reversed so that semantic
   147	 * compatibility with E/T is kept.
   148	 */
   149	size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
   150							enum packing_op op)
   151	{
   152		const size_t size = SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY;
   153		struct sja1105_general_params_entry *entry = entry_ptr;
   154	
   155		sja1105_packing(buf, &entry->vllupformat, 351, 351, size, op);
   156		sja1105_packing(buf, &entry->mirr_ptacu,  350, 350, size, op);
   157		sja1105_packing(buf, &entry->switchid,    349, 347, size, op);
   158		sja1105_packing(buf, &entry->hostprio,    346, 344, size, op);
   159		sja1105_packing(buf, &entry->mac_fltres1, 343, 296, size, op);
   160		sja1105_packing(buf, &entry->mac_fltres0, 295, 248, size, op);
   161		sja1105_packing(buf, &entry->mac_flt1,    247, 200, size, op);
   162		sja1105_packing(buf, &entry->mac_flt0,    199, 152, size, op);
   163		sja1105_packing(buf, &entry->incl_srcpt1, 151, 151, size, op);
   164		sja1105_packing(buf, &entry->incl_srcpt0, 150, 150, size, op);
   165		sja1105_packing(buf, &entry->send_meta1,  149, 149, size, op);
   166		sja1105_packing(buf, &entry->send_meta0,  148, 148, size, op);
   167		sja1105_packing(buf, &entry->casc_port,   147, 145, size, op);
   168		sja1105_packing(buf, &entry->host_port,   144, 142, size, op);
   169		sja1105_packing(buf, &entry->mirr_port,   141, 139, size, op);
   170		sja1105_packing(buf, &entry->vlmarker,    138, 107, size, op);
   171		sja1105_packing(buf, &entry->vlmask,      106,  75, size, op);
   172		sja1105_packing(buf, &entry->tpid2,        74,  59, size, op);
   173		sja1105_packing(buf, &entry->ignore2stf,   58,  58, size, op);
   174		sja1105_packing(buf, &entry->tpid,         57,  42, size, op);
   175		sja1105_packing(buf, &entry->queue_ts,     41,  41, size, op);
   176		sja1105_packing(buf, &entry->egrmirrvid,   40,  29, size, op);
   177		sja1105_packing(buf, &entry->egrmirrpcp,   28,  26, size, op);
   178		sja1105_packing(buf, &entry->egrmirrdei,   25,  25, size, op);
   179		sja1105_packing(buf, &entry->replay_port,  24,  22, size, op);
   180		return size;
   181	}
   182	
   183	static size_t
   184	sja1105_l2_forwarding_params_entry_packing(void *buf, void *entry_ptr,
   185						   enum packing_op op)
   186	{
   187		const size_t size = SJA1105_SIZE_L2_FORWARDING_PARAMS_ENTRY;
   188		struct sja1105_l2_forwarding_params_entry *entry = entry_ptr;
   189		int offset, i;
   190	
   191		sja1105_packing(buf, &entry->max_dynp, 95, 93, size, op);
   192		for (i = 0, offset = 13; i < 8; i++, offset += 10)
   193			sja1105_packing(buf, &entry->part_spc[i],
   194					offset + 9, offset + 0, size, op);
   195		return size;
   196	}
   197	
   198	size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
   199						   enum packing_op op)
   200	{
   201		const size_t size = SJA1105_SIZE_L2_FORWARDING_ENTRY;
   202		struct sja1105_l2_forwarding_entry *entry = entry_ptr;
   203		int offset, i;
   204	
   205		sja1105_packing(buf, &entry->bc_domain,  63, 59, size, op);
   206		sja1105_packing(buf, &entry->reach_port, 58, 54, size, op);
   207		sja1105_packing(buf, &entry->fl_domain,  53, 49, size, op);
   208		for (i = 0, offset = 25; i < 8; i++, offset += 3)
   209			sja1105_packing(buf, &entry->vlan_pmap[i],
   210					offset + 2, offset + 0, size, op);
   211		return size;
   212	}
   213	
   214	static size_t
   215	sja1105et_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
   216						 enum packing_op op)
   217	{
   218		const size_t size = SJA1105ET_SIZE_L2_LOOKUP_PARAMS_ENTRY;
   219		struct sja1105_l2_lookup_params_entry *entry = entry_ptr;
   220	
   221		sja1105_packing(buf, &entry->maxage,         31, 17, size, op);
   222		sja1105_packing(buf, &entry->dyn_tbsz,       16, 14, size, op);
   223		sja1105_packing(buf, &entry->poly,           13,  6, size, op);
   224		sja1105_packing(buf, &entry->shared_learn,    5,  5, size, op);
   225		sja1105_packing(buf, &entry->no_enf_hostprt,  4,  4, size, op);
   226		sja1105_packing(buf, &entry->no_mgmt_learn,   3,  3, size, op);
   227		return size;
   228	}
   229	
 > 230	size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
   231							  enum packing_op op)
   232	{
   233		const size_t size = SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_ENTRY;
   234		struct sja1105_l2_lookup_params_entry *entry = entry_ptr;
   235		int offset, i;
   236	
   237		for (i = 0, offset = 58; i < 5; i++, offset += 11)
   238			sja1105_packing(buf, &entry->maxaddrp[i],
   239					offset + 10, offset + 0, size, op);
   240		sja1105_packing(buf, &entry->maxage,         57,  43, size, op);
   241		sja1105_packing(buf, &entry->start_dynspc,   42,  33, size, op);
   242		sja1105_packing(buf, &entry->drpnolearn,     32,  28, size, op);
   243		sja1105_packing(buf, &entry->shared_learn,   27,  27, size, op);
   244		sja1105_packing(buf, &entry->no_enf_hostprt, 26,  26, size, op);
   245		sja1105_packing(buf, &entry->no_mgmt_learn,  25,  25, size, op);
   246		sja1105_packing(buf, &entry->use_static,     24,  24, size, op);
   247		sja1105_packing(buf, &entry->owr_dyn,        23,  23, size, op);
   248		sja1105_packing(buf, &entry->learn_once,     22,  22, size, op);
   249		return size;
   250	}
   251	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 54014 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S
  2020-05-27 16:40 [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S Vladimir Oltean
  2020-05-29  2:56 ` kbuild test robot
@ 2020-05-29 19:33 ` kbuild test robot
  2020-05-29 23:45 ` David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: kbuild test robot @ 2020-05-29 19:33 UTC (permalink / raw)
  To: Vladimir Oltean, davem
  Cc: kbuild-all, andrew, f.fainelli, vivien.didelot, netdev

[-- Attachment #1: Type: text/plain, Size: 6443 bytes --]

Hi Vladimir,

I love your patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]
[also build test WARNING on sparc-next/master linus/master v5.7-rc7 next-20200529]
[cannot apply to net/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Vladimir-Oltean/net-dsa-sja1105-fix-port-mirroring-for-P-Q-R-S/20200528-004418
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git dc0f3ed1973f101508957b59e529e03da1349e09
config: parisc-allyesconfig (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

drivers/net/dsa/sja1105/sja1105_static_config.c:105:8: warning: no previous prototype for 'sja1105pqrs_avb_params_entry_packing' [-Wmissing-prototypes]
105 | size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/dsa/sja1105/sja1105_static_config.c:149:8: warning: no previous prototype for 'sja1105pqrs_general_params_entry_packing' [-Wmissing-prototypes]
149 | size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:198:8: warning: no previous prototype for 'sja1105_l2_forwarding_entry_packing' [-Wmissing-prototypes]
198 | size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:230:8: warning: no previous prototype for 'sja1105pqrs_l2_lookup_params_entry_packing' [-Wmissing-prototypes]
230 | size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:252:8: warning: no previous prototype for 'sja1105et_l2_lookup_entry_packing' [-Wmissing-prototypes]
252 | size_t sja1105et_l2_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:266:8: warning: no previous prototype for 'sja1105pqrs_l2_lookup_entry_packing' [-Wmissing-prototypes]
266 | size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:342:8: warning: no previous prototype for 'sja1105pqrs_mac_config_entry_packing' [-Wmissing-prototypes]
342 | size_t sja1105pqrs_mac_config_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:461:8: warning: no previous prototype for 'sja1105_vl_lookup_entry_packing' [-Wmissing-prototypes]
461 | size_t sja1105_vl_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:511:8: warning: no previous prototype for 'sja1105_vlan_lookup_entry_packing' [-Wmissing-prototypes]
511 | size_t sja1105_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/dsa/sja1105/sja1105_static_config.c:542:8: warning: no previous prototype for 'sja1105_retagging_entry_packing' [-Wmissing-prototypes]
542 | size_t sja1105_retagging_entry_packing(void *buf, void *entry_ptr,
|        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/sja1105pqrs_general_params_entry_packing +149 drivers/net/dsa/sja1105/sja1105_static_config.c

   145	
   146	/* TPID and TPID2 are intentionally reversed so that semantic
   147	 * compatibility with E/T is kept.
   148	 */
 > 149	size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
   150							enum packing_op op)
   151	{
   152		const size_t size = SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY;
   153		struct sja1105_general_params_entry *entry = entry_ptr;
   154	
   155		sja1105_packing(buf, &entry->vllupformat, 351, 351, size, op);
   156		sja1105_packing(buf, &entry->mirr_ptacu,  350, 350, size, op);
   157		sja1105_packing(buf, &entry->switchid,    349, 347, size, op);
   158		sja1105_packing(buf, &entry->hostprio,    346, 344, size, op);
   159		sja1105_packing(buf, &entry->mac_fltres1, 343, 296, size, op);
   160		sja1105_packing(buf, &entry->mac_fltres0, 295, 248, size, op);
   161		sja1105_packing(buf, &entry->mac_flt1,    247, 200, size, op);
   162		sja1105_packing(buf, &entry->mac_flt0,    199, 152, size, op);
   163		sja1105_packing(buf, &entry->incl_srcpt1, 151, 151, size, op);
   164		sja1105_packing(buf, &entry->incl_srcpt0, 150, 150, size, op);
   165		sja1105_packing(buf, &entry->send_meta1,  149, 149, size, op);
   166		sja1105_packing(buf, &entry->send_meta0,  148, 148, size, op);
   167		sja1105_packing(buf, &entry->casc_port,   147, 145, size, op);
   168		sja1105_packing(buf, &entry->host_port,   144, 142, size, op);
   169		sja1105_packing(buf, &entry->mirr_port,   141, 139, size, op);
   170		sja1105_packing(buf, &entry->vlmarker,    138, 107, size, op);
   171		sja1105_packing(buf, &entry->vlmask,      106,  75, size, op);
   172		sja1105_packing(buf, &entry->tpid2,        74,  59, size, op);
   173		sja1105_packing(buf, &entry->ignore2stf,   58,  58, size, op);
   174		sja1105_packing(buf, &entry->tpid,         57,  42, size, op);
   175		sja1105_packing(buf, &entry->queue_ts,     41,  41, size, op);
   176		sja1105_packing(buf, &entry->egrmirrvid,   40,  29, size, op);
   177		sja1105_packing(buf, &entry->egrmirrpcp,   28,  26, size, op);
   178		sja1105_packing(buf, &entry->egrmirrdei,   25,  25, size, op);
   179		sja1105_packing(buf, &entry->replay_port,  24,  22, size, op);
   180		return size;
   181	}
   182	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 61666 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S
  2020-05-27 16:40 [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S Vladimir Oltean
  2020-05-29  2:56 ` kbuild test robot
  2020-05-29 19:33 ` kbuild test robot
@ 2020-05-29 23:45 ` David Miller
  2020-05-30 10:33   ` Vladimir Oltean
  2 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2020-05-29 23:45 UTC (permalink / raw)
  To: olteanv; +Cc: andrew, f.fainelli, vivien.didelot, netdev

From: Vladimir Oltean <olteanv@gmail.com>
Date: Wed, 27 May 2020 19:40:06 +0300

> From: Vladimir Oltean <vladimir.oltean@nxp.com>
> 
> The dynamic configuration interface for the General Params and the L2
> Lookup Params tables was copy-pasted between E/T devices and P/Q/R/S
> devices. Nonetheless, these interfaces are bitwise different (and not to
> mention, located at different SPI addresses).
> 
> The driver is using dynamic reconfiguration of the General Parameters
> table for the port mirroring feature, which was therefore broken on
> P/Q/R/S.
> 
> Note that I don't think this patch can be backported very far to stable
> trees (since it conflicts with some other development done since the
> introduction of the driver).
> 
> Fixes: 8aa9ebccae87 ("net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch")
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>

Please fix the build errors reported by the kbuild robot.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S
  2020-05-29 23:45 ` David Miller
@ 2020-05-30 10:33   ` Vladimir Oltean
  0 siblings, 0 replies; 5+ messages in thread
From: Vladimir Oltean @ 2020-05-30 10:33 UTC (permalink / raw)
  To: David Miller; +Cc: Andrew Lunn, Florian Fainelli, Vivien Didelot, netdev

On Sat, 30 May 2020 at 02:45, David Miller <davem@davemloft.net> wrote:
>
> From: Vladimir Oltean <olteanv@gmail.com>
> Date: Wed, 27 May 2020 19:40:06 +0300
>
> > From: Vladimir Oltean <vladimir.oltean@nxp.com>
> >
> > The dynamic configuration interface for the General Params and the L2
> > Lookup Params tables was copy-pasted between E/T devices and P/Q/R/S
> > devices. Nonetheless, these interfaces are bitwise different (and not to
> > mention, located at different SPI addresses).
> >
> > The driver is using dynamic reconfiguration of the General Parameters
> > table for the port mirroring feature, which was therefore broken on
> > P/Q/R/S.
> >
> > Note that I don't think this patch can be backported very far to stable
> > trees (since it conflicts with some other development done since the
> > introduction of the driver).
> >
> > Fixes: 8aa9ebccae87 ("net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch")
> > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
>
> Please fix the build errors reported by the kbuild robot.

So the kbuild robot said that it couldn't apply the patch on net, so
it tried on net-next and hit some further W=1 warnings.
So I've fixed the warnings and targeted the patch against net-next:
https://patchwork.ozlabs.org/project/netdev/cover/20200530102953.692780-1-olteanv@gmail.com/
(I don't think anybody should care enough that they should deal with
the resulting conflicts from targeting against net).

Thanks,
-Vladimir

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-05-30 10:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-27 16:40 [PATCH net] net: dsa: sja1105: fix port mirroring for P/Q/R/S Vladimir Oltean
2020-05-29  2:56 ` kbuild test robot
2020-05-29 19:33 ` kbuild test robot
2020-05-29 23:45 ` David Miller
2020-05-30 10:33   ` Vladimir Oltean

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).