All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [net-next RFC v3 4/6] net: marvell: prestera: Add ethtool interface support
Date: Thu, 28 May 2020 13:12:02 +0800	[thread overview]
Message-ID: <202005281327.lAS3b2uC%lkp@intel.com> (raw)
In-Reply-To: <20200526171302.28649-5-vadym.kochan@plvision.eu>

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

Hi Vadym,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on net-next/master]
[also build test WARNING on net/master sparc-next/master linus/master v5.7-rc7 next-20200526]
[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/Vadym-Kochan/net-marvell-prestera-Add-Switchdev-driver-for-Prestera-family-ASIC-device-98DX326x-AC3x/20200527-014008
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git d52caf0404e625bcda352ebea53be25e91f9de02
config: riscv-allyesconfig (attached as .config)
compiler: riscv64-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=riscv 

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/ethernet/marvell/prestera/prestera_ethtool.c:296:6: warning: no previous prototype for 'prestera_ethtool_get_drvinfo' [-Wmissing-prototypes]
296 | void prestera_ethtool_get_drvinfo(struct net_device *dev,
|      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:473:5: warning: no previous prototype for 'prestera_ethtool_get_link_ksettings' [-Wmissing-prototypes]
473 | int prestera_ethtool_get_link_ksettings(struct net_device *dev,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:598:5: warning: no previous prototype for 'prestera_ethtool_set_link_ksettings' [-Wmissing-prototypes]
598 | int prestera_ethtool_set_link_ksettings(struct net_device *dev,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:634:5: warning: no previous prototype for 'prestera_ethtool_get_fecparam' [-Wmissing-prototypes]
634 | int prestera_ethtool_get_fecparam(struct net_device *dev,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:661:5: warning: no previous prototype for 'prestera_ethtool_set_fecparam' [-Wmissing-prototypes]
661 | int prestera_ethtool_set_fecparam(struct net_device *dev,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:696:5: warning: no previous prototype for 'prestera_ethtool_get_sset_count' [-Wmissing-prototypes]
696 | int prestera_ethtool_get_sset_count(struct net_device *dev, int sset)
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:706:6: warning: no previous prototype for 'prestera_ethtool_get_strings' [-Wmissing-prototypes]
706 | void prestera_ethtool_get_strings(struct net_device *dev,
|      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:715:6: warning: no previous prototype for 'prestera_ethtool_get_stats' [-Wmissing-prototypes]
715 | void prestera_ethtool_get_stats(struct net_device *dev,
|      ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_ethtool.c:726:5: warning: no previous prototype for 'prestera_ethtool_nway_reset' [-Wmissing-prototypes]
726 | int prestera_ethtool_nway_reset(struct net_device *dev)
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/prestera_ethtool_get_drvinfo +296 drivers/net/ethernet/marvell/prestera/prestera_ethtool.c

   295	
 > 296	void prestera_ethtool_get_drvinfo(struct net_device *dev,
   297					  struct ethtool_drvinfo *drvinfo)
   298	{
   299		struct prestera_port *port = netdev_priv(dev);
   300		struct prestera_switch *sw = port->sw;
   301	
   302		strlcpy(drvinfo->driver, driver_kind, sizeof(drvinfo->driver));
   303		strlcpy(drvinfo->bus_info, dev_name(prestera_dev(sw)),
   304			sizeof(drvinfo->bus_info));
   305		snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
   306			 "%d.%d.%d",
   307			 sw->dev->fw_rev.maj,
   308			 sw->dev->fw_rev.min,
   309			 sw->dev->fw_rev.sub);
   310	}
   311	
   312	static u8 prestera_port_type_get(struct prestera_port *port)
   313	{
   314		if (port->caps.type < PRESTERA_PORT_TYPE_MAX)
   315			return port_types[port->caps.type].eth_type;
   316		return PORT_OTHER;
   317	}
   318	
   319	static int prestera_port_type_set(const struct ethtool_link_ksettings *ecmd,
   320					  struct prestera_port *port)
   321	{
   322		u32 new_mode = PRESTERA_LINK_MODE_MAX;
   323		u32 type, mode;
   324		int err;
   325	
   326		for (type = 0; type < PRESTERA_PORT_TYPE_MAX; type++) {
   327			if (port_types[type].eth_type == ecmd->base.port &&
   328			    test_bit(port_types[type].eth_mode,
   329				     ecmd->link_modes.supported)) {
   330				break;
   331			}
   332		}
   333	
   334		if (type == port->caps.type)
   335			return 0;
   336		if (type != port->caps.type && ecmd->base.autoneg == AUTONEG_ENABLE)
   337			return -EINVAL;
   338		if (type == PRESTERA_PORT_TYPE_MAX)
   339			return -EOPNOTSUPP;
   340	
   341		for (mode = 0; mode < PRESTERA_LINK_MODE_MAX; mode++) {
   342			if ((port_link_modes[mode].pr_mask &
   343			    port->caps.supp_link_modes) &&
   344			    type == port_link_modes[mode].port_type) {
   345				new_mode = mode;
   346			}
   347		}
   348	
   349		if (new_mode < PRESTERA_LINK_MODE_MAX)
   350			err = prestera_hw_port_link_mode_set(port, new_mode);
   351		else
   352			err = -EINVAL;
   353	
   354		if (!err) {
   355			port->caps.type = type;
   356			port->autoneg = false;
   357		}
   358	
   359		return err;
   360	}
   361	
   362	static void prestera_modes_to_eth(unsigned long *eth_modes, u64 link_modes,
   363					  u8 fec, u8 type)
   364	{
   365		u32 mode;
   366	
   367		for (mode = 0; mode < PRESTERA_LINK_MODE_MAX; mode++) {
   368			if ((port_link_modes[mode].pr_mask & link_modes) == 0)
   369				continue;
   370			if (type != PRESTERA_PORT_TYPE_NONE &&
   371			    port_link_modes[mode].port_type != type)
   372				continue;
   373			__set_bit(port_link_modes[mode].eth_mode, eth_modes);
   374		}
   375	
   376		for (mode = 0; mode < PRESTERA_PORT_FEC_MAX; mode++) {
   377			if ((port_fec_caps[mode].pr_fec & fec) == 0)
   378				continue;
   379			__set_bit(port_fec_caps[mode].eth_mode, eth_modes);
   380		}
   381	}
   382	
   383	static void prestera_modes_from_eth(const unsigned long *eth_modes,
   384					    u64 *link_modes, u8 *fec, u8 type)
   385	{
   386		u32 mode;
   387	
   388		for (mode = 0; mode < PRESTERA_LINK_MODE_MAX; mode++) {
   389			if (!test_bit(port_link_modes[mode].eth_mode, eth_modes))
   390				continue;
   391			if (port_link_modes[mode].port_type != type)
   392				continue;
   393			*link_modes |= port_link_modes[mode].pr_mask;
   394		}
   395	
   396		for (mode = 0; mode < PRESTERA_PORT_FEC_MAX; mode++) {
   397			if (!test_bit(port_fec_caps[mode].eth_mode, eth_modes))
   398				continue;
   399			*fec |= port_fec_caps[mode].pr_fec;
   400		}
   401	}
   402	
   403	static void prestera_port_supp_types_get(struct ethtool_link_ksettings *ecmd,
   404						 struct prestera_port *port)
   405	{
   406		u32 mode;
   407		u8 ptype;
   408	
   409		for (mode = 0; mode < PRESTERA_LINK_MODE_MAX; mode++) {
   410			if ((port_link_modes[mode].pr_mask &
   411			    port->caps.supp_link_modes) == 0)
   412				continue;
   413			ptype = port_link_modes[mode].port_type;
   414			__set_bit(port_types[ptype].eth_mode,
   415				  ecmd->link_modes.supported);
   416		}
   417	}
   418	
   419	static void prestera_port_remote_cap_get(struct ethtool_link_ksettings *ecmd,
   420						 struct prestera_port *port)
   421	{
   422		bool asym_pause;
   423		bool pause;
   424		u64 bitmap;
   425	
   426		if (!prestera_hw_port_remote_cap_get(port, &bitmap)) {
   427			prestera_modes_to_eth(ecmd->link_modes.lp_advertising,
   428					      bitmap, 0, PRESTERA_PORT_TYPE_NONE);
   429	
   430			if (!bitmap_empty(ecmd->link_modes.lp_advertising,
   431					  __ETHTOOL_LINK_MODE_MASK_NBITS)) {
   432				ethtool_link_ksettings_add_link_mode(ecmd,
   433								     lp_advertising,
   434								     Autoneg);
   435			}
   436		}
   437	
   438		if (prestera_hw_port_remote_fc_get(port, &pause, &asym_pause))
   439			return;
   440		if (pause)
   441			ethtool_link_ksettings_add_link_mode(ecmd,
   442							     lp_advertising,
   443							     Pause);
   444		if (asym_pause)
   445			ethtool_link_ksettings_add_link_mode(ecmd,
   446							     lp_advertising,
   447							     Asym_Pause);
   448	}
   449	
   450	static void prestera_port_speed_get(struct ethtool_link_ksettings *ecmd,
   451					    struct prestera_port *port)
   452	{
   453		u32 speed;
   454		int err;
   455	
   456		err = prestera_hw_port_speed_get(port, &speed);
   457		ecmd->base.speed = !err ? speed : SPEED_UNKNOWN;
   458	}
   459	
   460	static void prestera_port_duplex_get(struct ethtool_link_ksettings *ecmd,
   461					     struct prestera_port *port)
   462	{
   463		u8 duplex;
   464	
   465		if (!prestera_hw_port_duplex_get(port, &duplex)) {
   466			ecmd->base.duplex = duplex == PRESTERA_PORT_DUPLEX_FULL ?
   467					    DUPLEX_FULL : DUPLEX_HALF;
   468		} else {
   469			ecmd->base.duplex = DUPLEX_UNKNOWN;
   470		}
   471	}
   472	
 > 473	int prestera_ethtool_get_link_ksettings(struct net_device *dev,
   474						struct ethtool_link_ksettings *ecmd)
   475	{
   476		struct prestera_port *port = netdev_priv(dev);
   477	
   478		ethtool_link_ksettings_zero_link_mode(ecmd, supported);
   479		ethtool_link_ksettings_zero_link_mode(ecmd, advertising);
   480		ethtool_link_ksettings_zero_link_mode(ecmd, lp_advertising);
   481	
   482		ecmd->base.autoneg = port->autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE;
   483	
   484		if (port->caps.type == PRESTERA_PORT_TYPE_TP) {
   485			ethtool_link_ksettings_add_link_mode(ecmd, supported, Autoneg);
   486	
   487			if (netif_running(dev) &&
   488			    (port->autoneg ||
   489			     port->caps.transceiver == PRESTERA_PORT_TCVR_COPPER))
   490				ethtool_link_ksettings_add_link_mode(ecmd, advertising,
   491								     Autoneg);
   492		}
   493	
   494		prestera_modes_to_eth(ecmd->link_modes.supported,
   495				      port->caps.supp_link_modes,
   496				      port->caps.supp_fec,
   497				      port->caps.type);
   498	
   499		prestera_port_supp_types_get(ecmd, port);
   500	
   501		if (netif_carrier_ok(dev)) {
   502			prestera_port_speed_get(ecmd, port);
   503			prestera_port_duplex_get(ecmd, port);
   504		} else {
   505			ecmd->base.speed = SPEED_UNKNOWN;
   506			ecmd->base.duplex = DUPLEX_UNKNOWN;
   507		}
   508	
   509		ecmd->base.port = prestera_port_type_get(port);
   510	
   511		if (port->autoneg) {
   512			if (netif_running(dev))
   513				prestera_modes_to_eth(ecmd->link_modes.advertising,
   514						      port->adver_link_modes,
   515						      port->adver_fec,
   516						      port->caps.type);
   517	
   518			if (netif_carrier_ok(dev) &&
   519			    port->caps.transceiver == PRESTERA_PORT_TCVR_COPPER)
   520				prestera_port_remote_cap_get(ecmd, port);
   521		}
   522	
   523		if (port->caps.type == PRESTERA_PORT_TYPE_TP &&
   524		    port->caps.transceiver == PRESTERA_PORT_TCVR_COPPER)
   525			prestera_hw_port_mdix_get(port, &ecmd->base.eth_tp_mdix,
   526						  &ecmd->base.eth_tp_mdix_ctrl);
   527	
   528		return 0;
   529	}
   530	

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

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

  reply	other threads:[~2020-05-28  5:12 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-26 17:12 [net-next RFC v3 0/6] net: marvell: prestera: Add Switchdev driver for Prestera family ASIC device 98DX326x (AC3x) Vadym Kochan
2020-05-26 17:12 ` [net-next RFC v3 1/6] net: marvell: prestera: Add driver for Prestera family ASIC devices Vadym Kochan
2020-05-27 17:57   ` kbuild test robot
2020-05-26 17:12 ` [net-next RFC v3 2/6] net: marvell: prestera: Add PCI interface support Vadym Kochan
2020-05-26 18:33   ` Jakub Kicinski
2020-05-27 21:26   ` kbuild test robot
2020-05-26 17:12 ` [net-next RFC v3 3/6] net: marvell: prestera: Add basic devlink support Vadym Kochan
2020-05-28  1:11   ` kbuild test robot
2020-05-26 17:13 ` [net-next RFC v3 4/6] net: marvell: prestera: Add ethtool interface support Vadym Kochan
2020-05-28  5:12   ` kbuild test robot [this message]
2020-05-26 17:13 ` [net-next RFC v3 5/6] net: marvell: prestera: Add Switchdev driver implementation Vadym Kochan
2020-05-26 17:13 ` [net-next RFC v3 6/6] dt-bindings: marvell,prestera: Add description for device-tree bindings Vadym Kochan
2020-05-26 18:35 ` [net-next RFC v3 0/6] net: marvell: prestera: Add Switchdev driver for Prestera family ASIC device 98DX326x (AC3x) Jakub Kicinski
2020-05-26 20:33   ` Vadym Kochan

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=202005281327.lAS3b2uC%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.