lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 7 Oct 2020 06:18:51 +0800
From:   kernel test robot <lkp@...el.com>
To:     Linus Walleij <linus.walleij@...aro.org>,
        Andrew Lunn <andrew@...n.ch>,
        Vivien Didelot <vivien.didelot@...il.com>,
        Florian Fainelli <f.fainelli@...il.com>,
        netdev@...r.kernel.org, "David S . Miller" <davem@...emloft.net>
Cc:     kbuild-all@...ts.01.org, Linus Walleij <linus.walleij@...aro.org>
Subject: Re: [net-next PATCH v2] net: dsa: rtl8366rb: Roof MTU for switch

Hi Linus,

I love your patch! Yet something to improve:

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Linus-Walleij/net-dsa-rtl8366rb-Roof-MTU-for-switch/20201007-033703
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 9faebeb2d80065926dfbc09cb73b1bb7779a89cd
config: mips-randconfig-s031-20201005 (attached as .config)
compiler: mips64-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-201-g24bdaac6-dirty
        # https://github.com/0day-ci/linux/commit/5b302d7e6a5f04e402853d40f77a457a9ad48198
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Linus-Walleij/net-dsa-rtl8366rb-Roof-MTU-for-switch/20201007-033703
        git checkout 5b302d7e6a5f04e402853d40f77a457a9ad48198
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips 

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

All errors (new ones prefixed by >>):

   drivers/net/dsa/rtl8366rb.c: In function 'rtl8366rb_setup':
>> drivers/net/dsa/rtl8366rb.c:720:25: error: 'smi' undeclared (first use in this function)
     720 |  struct rtl8366rb *rb = smi->chip_data;
         |                         ^~~
   drivers/net/dsa/rtl8366rb.c:720:25: note: each undeclared identifier is reported only once for each function it appears in

vim +/smi +720 drivers/net/dsa/rtl8366rb.c

   717	
   718	static int rtl8366rb_setup(struct dsa_switch *ds)
   719	{
 > 720		struct rtl8366rb *rb = smi->chip_data;
   721		struct realtek_smi *smi = ds->priv;
   722		const u16 *jam_table;
   723		u32 chip_ver = 0;
   724		u32 chip_id = 0;
   725		int jam_size;
   726		u32 val;
   727		int ret;
   728		int i;
   729	
   730		ret = regmap_read(smi->map, RTL8366RB_CHIP_ID_REG, &chip_id);
   731		if (ret) {
   732			dev_err(smi->dev, "unable to read chip id\n");
   733			return ret;
   734		}
   735	
   736		switch (chip_id) {
   737		case RTL8366RB_CHIP_ID_8366:
   738			break;
   739		default:
   740			dev_err(smi->dev, "unknown chip id (%04x)\n", chip_id);
   741			return -ENODEV;
   742		}
   743	
   744		ret = regmap_read(smi->map, RTL8366RB_CHIP_VERSION_CTRL_REG,
   745				  &chip_ver);
   746		if (ret) {
   747			dev_err(smi->dev, "unable to read chip version\n");
   748			return ret;
   749		}
   750	
   751		dev_info(smi->dev, "RTL%04x ver %u chip found\n",
   752			 chip_id, chip_ver & RTL8366RB_CHIP_VERSION_MASK);
   753	
   754		/* Do the init dance using the right jam table */
   755		switch (chip_ver) {
   756		case 0:
   757			jam_table = rtl8366rb_init_jam_ver_0;
   758			jam_size = ARRAY_SIZE(rtl8366rb_init_jam_ver_0);
   759			break;
   760		case 1:
   761			jam_table = rtl8366rb_init_jam_ver_1;
   762			jam_size = ARRAY_SIZE(rtl8366rb_init_jam_ver_1);
   763			break;
   764		case 2:
   765			jam_table = rtl8366rb_init_jam_ver_2;
   766			jam_size = ARRAY_SIZE(rtl8366rb_init_jam_ver_2);
   767			break;
   768		default:
   769			jam_table = rtl8366rb_init_jam_ver_3;
   770			jam_size = ARRAY_SIZE(rtl8366rb_init_jam_ver_3);
   771			break;
   772		}
   773	
   774		/* Special jam tables for special routers
   775		 * TODO: are these necessary? Maintainers, please test
   776		 * without them, using just the off-the-shelf tables.
   777		 */
   778		if (of_machine_is_compatible("belkin,f5d8235-v1")) {
   779			jam_table = rtl8366rb_init_jam_f5d8235;
   780			jam_size = ARRAY_SIZE(rtl8366rb_init_jam_f5d8235);
   781		}
   782		if (of_machine_is_compatible("netgear,dgn3500") ||
   783		    of_machine_is_compatible("netgear,dgn3500b")) {
   784			jam_table = rtl8366rb_init_jam_dgn3500;
   785			jam_size = ARRAY_SIZE(rtl8366rb_init_jam_dgn3500);
   786		}
   787	
   788		i = 0;
   789		while (i < jam_size) {
   790			if ((jam_table[i] & 0xBE00) == 0xBE00) {
   791				ret = regmap_read(smi->map,
   792						  RTL8366RB_PHY_ACCESS_BUSY_REG,
   793						  &val);
   794				if (ret)
   795					return ret;
   796				if (!(val & RTL8366RB_PHY_INT_BUSY)) {
   797					ret = regmap_write(smi->map,
   798							RTL8366RB_PHY_ACCESS_CTRL_REG,
   799							RTL8366RB_PHY_CTRL_WRITE);
   800					if (ret)
   801						return ret;
   802				}
   803			}
   804			dev_dbg(smi->dev, "jam %04x into register %04x\n",
   805				jam_table[i + 1],
   806				jam_table[i]);
   807			ret = regmap_write(smi->map,
   808					   jam_table[i],
   809					   jam_table[i + 1]);
   810			if (ret)
   811				return ret;
   812			i += 2;
   813		}
   814	
   815		/* Set up the "green ethernet" feature */
   816		i = 0;
   817		while (i < ARRAY_SIZE(rtl8366rb_green_jam)) {
   818			ret = regmap_read(smi->map, RTL8366RB_PHY_ACCESS_BUSY_REG,
   819					  &val);
   820			if (ret)
   821				return ret;
   822			if (!(val & RTL8366RB_PHY_INT_BUSY)) {
   823				ret = regmap_write(smi->map,
   824						   RTL8366RB_PHY_ACCESS_CTRL_REG,
   825						   RTL8366RB_PHY_CTRL_WRITE);
   826				if (ret)
   827					return ret;
   828				ret = regmap_write(smi->map,
   829						   rtl8366rb_green_jam[i][0],
   830						   rtl8366rb_green_jam[i][1]);
   831				if (ret)
   832					return ret;
   833				i++;
   834			}
   835		}
   836		ret = regmap_write(smi->map,
   837				   RTL8366RB_GREEN_FEATURE_REG,
   838				   (chip_ver == 1) ? 0x0007 : 0x0003);
   839		if (ret)
   840			return ret;
   841	
   842		/* Vendor driver sets 0x240 in registers 0xc and 0xd (undocumented) */
   843		ret = regmap_write(smi->map, 0x0c, 0x240);
   844		if (ret)
   845			return ret;
   846		ret = regmap_write(smi->map, 0x0d, 0x240);
   847		if (ret)
   848			return ret;
   849	
   850		/* Set some random MAC address */
   851		ret = rtl8366rb_set_addr(smi);
   852		if (ret)
   853			return ret;
   854	
   855		/* Enable CPU port with custom DSA tag 8899.
   856		 *
   857		 * If you set RTL8368RB_CPU_NO_TAG (bit 15) in this registers
   858		 * the custom tag is turned off.
   859		 */
   860		ret = regmap_update_bits(smi->map, RTL8368RB_CPU_CTRL_REG,
   861					 0xFFFF,
   862					 BIT(smi->cpu_port));
   863		if (ret)
   864			return ret;
   865	
   866		/* Make sure we default-enable the fixed CPU port */
   867		ret = regmap_update_bits(smi->map, RTL8366RB_PECR,
   868					 BIT(smi->cpu_port),
   869					 0);
   870		if (ret)
   871			return ret;
   872	
   873		/* Set maximum packet length to 1536 bytes */
   874		ret = regmap_update_bits(smi->map, RTL8366RB_SGCR,
   875					 RTL8366RB_SGCR_MAX_LENGTH_MASK,
   876					 RTL8366RB_SGCR_MAX_LENGTH_1536);
   877		if (ret)
   878			return ret;
   879		for (i = 0; i < RTL8366RB_NUM_PORTS; i++)
   880			/* layer 2 size, see rtl8366rb_change_mtu() */
   881			rb->max_mtu[i] = 1532;
   882	
   883		/* Enable learning for all ports */
   884		ret = regmap_write(smi->map, RTL8366RB_SSCR0, 0);
   885		if (ret)
   886			return ret;
   887	
   888		/* Enable auto ageing for all ports */
   889		ret = regmap_write(smi->map, RTL8366RB_SSCR1, 0);
   890		if (ret)
   891			return ret;
   892	
   893		/* Port 4 setup: this enables Port 4, usually the WAN port,
   894		 * common PHY IO mode is apparently mode 0, and this is not what
   895		 * the port is initialized to. There is no explanation of the
   896		 * IO modes in the Realtek source code, if your WAN port is
   897		 * connected to something exotic such as fiber, then this might
   898		 * be worth experimenting with.
   899		 */
   900		ret = regmap_update_bits(smi->map, RTL8366RB_PMC0,
   901					 RTL8366RB_PMC0_P4_IOMODE_MASK,
   902					 0 << RTL8366RB_PMC0_P4_IOMODE_SHIFT);
   903		if (ret)
   904			return ret;
   905	
   906		/* Discard VLAN tagged packets if the port is not a member of
   907		 * the VLAN with which the packets is associated.
   908		 */
   909		ret = regmap_write(smi->map, RTL8366RB_VLAN_INGRESS_CTRL2_REG,
   910				   RTL8366RB_PORT_ALL);
   911		if (ret)
   912			return ret;
   913	
   914		/* Don't drop packets whose DA has not been learned */
   915		ret = regmap_update_bits(smi->map, RTL8366RB_SSCR2,
   916					 RTL8366RB_SSCR2_DROP_UNKNOWN_DA, 0);
   917		if (ret)
   918			return ret;
   919	
   920		/* Set blinking, TODO: make this configurable */
   921		ret = regmap_update_bits(smi->map, RTL8366RB_LED_BLINKRATE_REG,
   922					 RTL8366RB_LED_BLINKRATE_MASK,
   923					 RTL8366RB_LED_BLINKRATE_56MS);
   924		if (ret)
   925			return ret;
   926	
   927		/* Set up LED activity:
   928		 * Each port has 4 LEDs, we configure all ports to the same
   929		 * behaviour (no individual config) but we can set up each
   930		 * LED separately.
   931		 */
   932		if (smi->leds_disabled) {
   933			/* Turn everything off */
   934			regmap_update_bits(smi->map,
   935					   RTL8366RB_LED_0_1_CTRL_REG,
   936					   0x0FFF, 0);
   937			regmap_update_bits(smi->map,
   938					   RTL8366RB_LED_2_3_CTRL_REG,
   939					   0x0FFF, 0);
   940			regmap_update_bits(smi->map,
   941					   RTL8366RB_INTERRUPT_CONTROL_REG,
   942					   RTL8366RB_P4_RGMII_LED,
   943					   0);
   944			val = RTL8366RB_LED_OFF;
   945		} else {
   946			/* TODO: make this configurable per LED */
   947			val = RTL8366RB_LED_FORCE;
   948		}
   949		for (i = 0; i < 4; i++) {
   950			ret = regmap_update_bits(smi->map,
   951						 RTL8366RB_LED_CTRL_REG,
   952						 0xf << (i * 4),
   953						 val << (i * 4));
   954			if (ret)
   955				return ret;
   956		}
   957	
   958		ret = rtl8366_init_vlan(smi);
   959		if (ret)
   960			return ret;
   961	
   962		ret = rtl8366rb_setup_cascaded_irq(smi);
   963		if (ret)
   964			dev_info(smi->dev, "no interrupt support\n");
   965	
   966		ret = realtek_smi_setup_mdio(smi);
   967		if (ret) {
   968			dev_info(smi->dev, "could not set up MDIO bus\n");
   969			return -ENODEV;
   970		}
   971	
   972		return 0;
   973	}
   974	

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

Download attachment ".config.gz" of type "application/gzip" (36098 bytes)

Powered by blists - more mailing lists