netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Tristram.Ha@microchip.com,
	"David S. Miller" <davem@davemloft.net>,
	Andrew Lunn <andrew@lunn.ch>,
	Florian Fainelli <f.fainelli@gmail.com>
Cc: oe-kbuild-all@lists.linux.dev, netdev@vger.kernel.org,
	UNGLinuxDriver@microchip.com,
	Tristram Ha <Tristram.Ha@microchip.com>
Subject: Re: [PATCH net-next] net: phy: smsc: add WoL support to LAN8740/LAN8742 PHYs.
Date: Sun, 28 May 2023 12:50:55 +0800	[thread overview]
Message-ID: <202305281254.hziqmfSD-lkp@intel.com> (raw)
In-Reply-To: <1685151574-2752-1-git-send-email-Tristram.Ha@microchip.com>

Hi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Tristram-Ha-microchip-com/net-phy-smsc-add-WoL-support-to-LAN8740-LAN8742-PHYs/20230527-094102
base:   net-next/main
patch link:    https://lore.kernel.org/r/1685151574-2752-1-git-send-email-Tristram.Ha%40microchip.com
patch subject: [PATCH net-next] net: phy: smsc: add WoL support to LAN8740/LAN8742 PHYs.
config: i386-randconfig-s002-20230528 (https://download.01.org/0day-ci/archive/20230528/202305281254.hziqmfSD-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-39-gce1a6720-dirty
        # https://github.com/intel-lab-lkp/linux/commit/a1e40c5a7a32445d5ae4541d4e57bbc4b5065057
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Tristram-Ha-microchip-com/net-phy-smsc-add-WoL-support-to-LAN8740-LAN8742-PHYs/20230527-094102
        git checkout a1e40c5a7a32445d5ae4541d4e57bbc4b5065057
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 olddefconfig
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/net/phy/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305281254.hziqmfSD-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/net/phy/smsc.c:449:27: sparse: sparse: cast removes address space '__rcu' of expression
>> drivers/net/phy/smsc.c:485:38: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct list_head *addr_list @@     got struct list_head [noderef] __rcu * @@
   drivers/net/phy/smsc.c:485:38: sparse:     expected struct list_head *addr_list
   drivers/net/phy/smsc.c:485:38: sparse:     got struct list_head [noderef] __rcu *
>> drivers/net/phy/smsc.c:449:45: sparse: sparse: dereference of noderef expression

vim +/__rcu +449 drivers/net/phy/smsc.c

   398	
   399	static int lan874x_set_wol(struct phy_device *phydev,
   400				   struct ethtool_wolinfo *wol)
   401	{
   402		struct net_device *ndev = phydev->attached_dev;
   403		struct smsc_phy_priv *priv = phydev->priv;
   404		u16 val, val_wucsr;
   405		u8 data[128];
   406		u8 datalen;
   407		int rc;
   408	
   409		if (wol->wolopts & WAKE_PHY)
   410			return -EOPNOTSUPP;
   411	
   412		/* lan874x has only one WoL filter pattern */
   413		if ((wol->wolopts & (WAKE_ARP | WAKE_MCAST)) ==
   414		    (WAKE_ARP | WAKE_MCAST)) {
   415			phydev_info(phydev,
   416				    "lan874x WoL supports one of ARP|MCAST at a time\n");
   417			return -EOPNOTSUPP;
   418		}
   419	
   420		rc = phy_read_mmd(phydev, MDIO_MMD_PCS, MII_LAN874X_PHY_MMD_WOL_WUCSR);
   421		if (rc < 0)
   422			return rc;
   423	
   424		val_wucsr = rc;
   425	
   426		if (wol->wolopts & WAKE_UCAST)
   427			val_wucsr |= MII_LAN874X_PHY_WOL_PFDAEN;
   428		else
   429			val_wucsr &= ~MII_LAN874X_PHY_WOL_PFDAEN;
   430	
   431		if (wol->wolopts & WAKE_BCAST)
   432			val_wucsr |= MII_LAN874X_PHY_WOL_BCSTEN;
   433		else
   434			val_wucsr &= ~MII_LAN874X_PHY_WOL_BCSTEN;
   435	
   436		if (wol->wolopts & WAKE_MAGIC)
   437			val_wucsr |= MII_LAN874X_PHY_WOL_MPEN;
   438		else
   439			val_wucsr &= ~MII_LAN874X_PHY_WOL_MPEN;
   440	
   441		/* Need to use pattern matching */
   442		if (wol->wolopts & (WAKE_ARP | WAKE_MCAST))
   443			val_wucsr |= MII_LAN874X_PHY_WOL_WUEN;
   444		else
   445			val_wucsr &= ~MII_LAN874X_PHY_WOL_WUEN;
   446	
   447		if (wol->wolopts & WAKE_ARP) {
   448			const u8 *ip_addr =
 > 449				((const u8 *)&((ndev->ip_ptr)->ifa_list)->ifa_address);
   450			const u16 mask[3] = { 0xF03F, 0x003F, 0x03C0 };
   451			u8 pattern[42] = {
   452				0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
   453				0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   454				0x08, 0x06,
   455				0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01,
   456				0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   457				0x00, 0x00, 0x00, 0x00,
   458				0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   459				0x00, 0x00, 0x00, 0x00 };
   460			u8 len = 42;
   461	
   462			memcpy(&pattern[38], ip_addr, 4);
   463			rc = lan874x_chk_wol_pattern(pattern, mask, len,
   464						     data, &datalen);
   465			if (rc)
   466				phydev_dbg(phydev, "pattern not valid at %d\n", rc);
   467	
   468			/* Need to match broadcast destination address. */
   469			val = MII_LAN874X_PHY_WOL_FILTER_BCSTEN;
   470			rc = lan874x_set_wol_pattern(phydev, val, data, datalen, mask,
   471						     len);
   472			if (rc < 0)
   473				return rc;
   474			priv->wol_arp = true;
   475		}
   476	
   477		if (wol->wolopts & WAKE_MCAST) {
   478			u8 pattern[6] = { 0x33, 0x33, 0xFF, 0x00, 0x00, 0x00 };
   479			u16 mask[1] = { 0x0007 };
   480			u8 len = 3;
   481	
   482			/* Try to match IPv6 Neighbor Solicitation. */
   483			if (ndev->ip6_ptr) {
   484				struct list_head *addr_list =
 > 485					&ndev->ip6_ptr->addr_list;
   486				struct inet6_ifaddr *ifa;
   487	
   488				list_for_each_entry(ifa, addr_list, if_list) {
   489					if (ifa->scope == IFA_LINK) {
   490						memcpy(&pattern[3],
   491						       &ifa->addr.in6_u.u6_addr8[13],
   492						       3);
   493						mask[0] = 0x003F;
   494						len = 6;
   495						break;
   496					}
   497				}
   498			}
   499			rc = lan874x_chk_wol_pattern(pattern, mask, len,
   500						     data, &datalen);
   501			if (rc)
   502				phydev_dbg(phydev, "pattern not valid at %d\n", rc);
   503	
   504			/* Need to match multicast destination address. */
   505			val = MII_LAN874X_PHY_WOL_FILTER_MCASTTEN;
   506			rc = lan874x_set_wol_pattern(phydev, val, data, datalen, mask,
   507						     len);
   508			if (rc < 0)
   509				return rc;
   510			priv->wol_arp = false;
   511		}
   512	
   513		if (wol->wolopts & (WAKE_MAGIC | WAKE_UCAST)) {
   514			const u8 *mac = (const u8 *)ndev->dev_addr;
   515	
   516			if (!is_valid_ether_addr(mac))
   517				return -EINVAL;
   518	
   519			rc = phy_write_mmd(phydev, MDIO_MMD_PCS,
   520					   MII_LAN874X_PHY_MMD_WOL_RX_ADDRC,
   521					   ((mac[1] << 8) | mac[0]));
   522			if (rc < 0)
   523				return rc;
   524	
   525			rc = phy_write_mmd(phydev, MDIO_MMD_PCS,
   526					   MII_LAN874X_PHY_MMD_WOL_RX_ADDRB,
   527					   ((mac[3] << 8) | mac[2]));
   528			if (rc < 0)
   529				return rc;
   530	
   531			rc = phy_write_mmd(phydev, MDIO_MMD_PCS,
   532					   MII_LAN874X_PHY_MMD_WOL_RX_ADDRA,
   533					   ((mac[5] << 8) | mac[4]));
   534			if (rc < 0)
   535				return rc;
   536		}
   537	
   538		rc = phy_write_mmd(phydev, MDIO_MMD_PCS, MII_LAN874X_PHY_MMD_WOL_WUCSR,
   539				   val_wucsr);
   540		if (rc < 0)
   541			return rc;
   542	
   543		return 0;
   544	}
   545	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  parent reply	other threads:[~2023-05-28  4:52 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-27  1:39 [PATCH net-next] net: phy: smsc: add WoL support to LAN8740/LAN8742 PHYs Tristram.Ha
2023-05-27 13:56 ` Simon Horman
2023-05-31 22:52   ` Tristram.Ha
2023-06-01  8:46     ` Simon Horman
2023-05-27 17:04 ` kernel test robot
2023-05-28  4:50 ` kernel test robot [this message]
2023-05-29 14:48 ` Andrew Lunn
2023-05-31 22:43   ` Tristram.Ha
2023-05-31 23:10     ` Andrew Lunn
2023-05-31 23:07 ` Florian Fainelli
2023-06-01 22:53   ` Tristram.Ha

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=202305281254.hziqmfSD-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Tristram.Ha@microchip.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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;
as well as URLs for NNTP newsgroup(s).