The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
@ 2026-07-28 15:12 Jiale Yao
  2026-07-29  9:15 ` Jiri Pirko
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Jiale Yao @ 2026-07-28 15:12 UTC (permalink / raw)
  To: Jiri Pirko, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, netdev, linux-kernel
  Cc: Jiale Yao

Enslaving a CAN or IEEE 802.15.4 device (e.g. vxcan, wpan0) to a
team master triggers a NULL pointer dereference because these
device types use different Layer 2 architectures from Ethernet and
the team driver never initializes their private mid-layer data
structures.

Reject ARPHRD_CAN, ARPHRD_IEEE802154, and ARPHRD_IEEE802154_MONITOR
devices in team_port_add(), mirroring the existing CAN check already
present in the bonding driver since commit 8ba68464e478 ("bonding:
refuse to enslave CAN devices").

Link: https://lore.kernel.org/all/b58d98e0-8fe3-4e4e-b8a5-c1c7e647ccca@hartkopp.net/
Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
Assisted-by: Claude:deepseek-v4-pro
Signed-off-by: Jiale Yao <yaojiale02@163.com>
---
V1 -> V2: Extended check to also reject ARPHRD_IEEE802154 and
  ARPHRD_IEEE802154_MONITOR devices per review feedback
---
 drivers/net/team/team_core.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/team/team_core.c b/drivers/net/team/team_core.c
index feaa75fbf8fc..d8c46105fc8b 100644
--- a/drivers/net/team/team_core.c
+++ b/drivers/net/team/team_core.c
@@ -1224,6 +1224,17 @@ static int team_port_add(struct team *team, struct net_device *port_dev,
 		return -EINVAL;
 	}
 
+		if (port_dev->type == ARPHRD_CAN ||
+		    port_dev->type == ARPHRD_IEEE802154 ||
+		    port_dev->type == ARPHRD_IEEE802154_MONITOR) {
+			NL_SET_ERR_MSG(extack,
+				       "CAN and IEEE 802.15.4 devices can't be added as a team port");
+			netdev_err(dev, "Device %s is CAN or IEEE 802.15.4. These device types can't be added as a team port\n",
+				   portname);
+			return -EINVAL;
+		}
+	}
+
 	if (netif_is_team_port(port_dev)) {
 		NL_SET_ERR_MSG(extack, "Device is already a port of a team device");
 		netdev_err(dev, "Device %s is already a port "
-- 
2.34.1


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

* Re: [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
  2026-07-28 15:12 [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add Jiale Yao
@ 2026-07-29  9:15 ` Jiri Pirko
  2026-07-29 12:11   ` jiale yao
  2026-08-05  5:00 ` kernel test robot
  2026-08-05 15:42 ` kernel test robot
  2 siblings, 1 reply; 5+ messages in thread
From: Jiri Pirko @ 2026-07-29  9:15 UTC (permalink / raw)
  To: Jiale Yao
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, netdev, linux-kernel

Tue, Jul 28, 2026 at 05:12:40PM +0200, yaojiale02@163.com wrote:
>Enslaving a CAN or IEEE 802.15.4 device (e.g. vxcan, wpan0) to a
>team master triggers a NULL pointer dereference because these
>device types use different Layer 2 architectures from Ethernet and
>the team driver never initializes their private mid-layer data
>structures.
>
>Reject ARPHRD_CAN, ARPHRD_IEEE802154, and ARPHRD_IEEE802154_MONITOR
>devices in team_port_add(), mirroring the existing CAN check already
>present in the bonding driver since commit 8ba68464e478 ("bonding:
>refuse to enslave CAN devices").

Can we perhaps have a unified helper for the check?


>
>Link: https://lore.kernel.org/all/b58d98e0-8fe3-4e4e-b8a5-c1c7e647ccca@hartkopp.net/
>Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
>Assisted-by: Claude:deepseek-v4-pro

Looks your ai gone a bit wild here...


>Signed-off-by: Jiale Yao <yaojiale02@163.com>
>---
>V1 -> V2: Extended check to also reject ARPHRD_IEEE802154 and
>  ARPHRD_IEEE802154_MONITOR devices per review feedback
>---
> drivers/net/team/team_core.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
>diff --git a/drivers/net/team/team_core.c b/drivers/net/team/team_core.c
>index feaa75fbf8fc..d8c46105fc8b 100644
>--- a/drivers/net/team/team_core.c
>+++ b/drivers/net/team/team_core.c
>@@ -1224,6 +1224,17 @@ static int team_port_add(struct team *team, struct net_device *port_dev,
> 		return -EINVAL;
> 	}
> 
>+		if (port_dev->type == ARPHRD_CAN ||
>+		    port_dev->type == ARPHRD_IEEE802154 ||
>+		    port_dev->type == ARPHRD_IEEE802154_MONITOR) {
>+			NL_SET_ERR_MSG(extack,
>+				       "CAN and IEEE 802.15.4 devices can't be added as a team port");
>+			netdev_err(dev, "Device %s is CAN or IEEE 802.15.4. These device types can't be added as a team port\n",
>+				   portname);
>+			return -EINVAL;
>+		}
>+	}
>+
> 	if (netif_is_team_port(port_dev)) {
> 		NL_SET_ERR_MSG(extack, "Device is already a port of a team device");
> 		netdev_err(dev, "Device %s is already a port "
>-- 
>2.34.1
>

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

* Re:Re: [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
  2026-07-29  9:15 ` Jiri Pirko
@ 2026-07-29 12:11   ` jiale yao
  0 siblings, 0 replies; 5+ messages in thread
From: jiale yao @ 2026-07-29 12:11 UTC (permalink / raw)
  To: Jiri Pirko
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, netdev, linux-kernel

How about adding a helper in include/linux/if_arp.h, similar to dev_is_mac_header_xmit()? Perhaps
something like dev_is_can_or_ieee802154()?


At 2026-07-29 17:15:06, "Jiri Pirko" <jiri@resnulli.us> wrote:
>Tue, Jul 28, 2026 at 05:12:40PM +0200, yaojiale02@163.com wrote:
>>Enslaving a CAN or IEEE 802.15.4 device (e.g. vxcan, wpan0) to a
>>team master triggers a NULL pointer dereference because these
>>device types use different Layer 2 architectures from Ethernet and
>>the team driver never initializes their private mid-layer data
>>structures.
>>
>>Reject ARPHRD_CAN, ARPHRD_IEEE802154, and ARPHRD_IEEE802154_MONITOR
>>devices in team_port_add(), mirroring the existing CAN check already
>>present in the bonding driver since commit 8ba68464e478 ("bonding:
>>refuse to enslave CAN devices").
>
>Can we perhaps have a unified helper for the check?
>
>
>>
>>Link: https://lore.kernel.org/all/b58d98e0-8fe3-4e4e-b8a5-c1c7e647ccca@hartkopp.net/
>>Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
>>Assisted-by: Claude:deepseek-v4-pro
>
>Looks your ai gone a bit wild here...
>
>
>>Signed-off-by: Jiale Yao <yaojiale02@163.com>
>>---
>>V1 -> V2: Extended check to also reject ARPHRD_IEEE802154 and
>>  ARPHRD_IEEE802154_MONITOR devices per review feedback
>>---
>> drivers/net/team/team_core.c | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>>diff --git a/drivers/net/team/team_core.c b/drivers/net/team/team_core.c
>>index feaa75fbf8fc..d8c46105fc8b 100644
>>--- a/drivers/net/team/team_core.c
>>+++ b/drivers/net/team/team_core.c
>>@@ -1224,6 +1224,17 @@ static int team_port_add(struct team *team, struct net_device *port_dev,
>> 		return -EINVAL;
>> 	}
>> 
>>+		if (port_dev->type == ARPHRD_CAN ||
>>+		    port_dev->type == ARPHRD_IEEE802154 ||
>>+		    port_dev->type == ARPHRD_IEEE802154_MONITOR) {
>>+			NL_SET_ERR_MSG(extack,
>>+				       "CAN and IEEE 802.15.4 devices can't be added as a team port");
>>+			netdev_err(dev, "Device %s is CAN or IEEE 802.15.4. These device types can't be added as a team port\n",
>>+				   portname);
>>+			return -EINVAL;
>>+		}
>>+	}
>>+
>> 	if (netif_is_team_port(port_dev)) {
>> 		NL_SET_ERR_MSG(extack, "Device is already a port of a team device");
>> 		netdev_err(dev, "Device %s is already a port "
>>-- 
>>2.34.1
>>

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

* Re: [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
  2026-07-28 15:12 [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add Jiale Yao
  2026-07-29  9:15 ` Jiri Pirko
@ 2026-08-05  5:00 ` kernel test robot
  2026-08-05 15:42 ` kernel test robot
  2 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-08-05  5:00 UTC (permalink / raw)
  To: Jiale Yao, Jiri Pirko, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, linux-kernel
  Cc: oe-kbuild-all, netdev, Jiale Yao

Hi Jiale,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v7.2-rc6 next-20260804]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Jiale-Yao/team-reject-CAN-and-IEEE-802-15-4-devices-in-team_port_add/20260805-104604
base:   linus/master
patch link:    https://lore.kernel.org/r/20260728151240.89434-1-yaojiale02%40163.com
patch subject: [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
config: powerpc-allmodconfig (https://download.01.org/0day-ci/archive/20260805/202608051230.16XSe01k-lkp@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260805/202608051230.16XSe01k-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608051230.16XSe01k-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   drivers/net/team/team_core.c: In function 'team_port_add':
>> drivers/net/team/team_core.c:1218:13: warning: unused variable 'err' [-Wunused-variable]
    1218 |         int err;
         |             ^~~
>> drivers/net/team/team_core.c:1216:27: warning: unused variable 'port' [-Wunused-variable]
    1216 |         struct team_port *port;
         |                           ^~~~
   drivers/net/team/team_core.c: At top level:
>> drivers/net/team/team_core.c:1238:9: error: expected identifier or '(' before 'if'
    1238 |         if (netif_is_team_port(port_dev)) {
         |         ^~
   drivers/net/team/team_core.c:1245:9: error: expected identifier or '(' before 'if'
    1245 |         if (dev == port_dev) {
         |         ^~
   drivers/net/team/team_core.c:1251:9: error: expected identifier or '(' before 'if'
    1251 |         if (netdev_has_upper_dev(dev, port_dev)) {
         |         ^~
   drivers/net/team/team_core.c:1258:9: error: expected identifier or '(' before 'if'
    1258 |         if (netdev_has_upper_dev(port_dev, dev)) {
         |         ^~
   drivers/net/team/team_core.c:1265:9: error: expected identifier or '(' before 'if'
    1265 |         if (port_dev->features & NETIF_F_VLAN_CHALLENGED &&
         |         ^~
   drivers/net/team/team_core.c:1273:9: error: expected identifier or '(' before 'if'
    1273 |         if (port_dev->flags & IFF_UP) {
         |         ^~
>> drivers/net/team/team_core.c:1280:9: warning: data definition has no type or storage class
    1280 |         port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
         |         ^~~~
>> drivers/net/team/team_core.c:1280:9: error: type defaults to 'int' in declaration of 'port' [-Wimplicit-int]
   In file included from include/linux/rhashtable-types.h:12,
                    from include/linux/ipc.h:7,
                    from include/uapi/linux/sem.h:5,
                    from include/linux/sem.h:5,
                    from include/linux/compat.h:14,
                    from include/linux/ethtool.h:17,
                    from drivers/net/team/team_core.c:7:
>> include/linux/alloc_tag.h:268:1: error: braced-group within expression allowed only inside a function
     268 | ({                                                                      \
         | ^
   include/linux/slab.h:1320:49: note: in expansion of macro 'alloc_hooks'
    1320 | #define kzalloc(size, flags)                    alloc_hooks(kzalloc_noprof(size, flags))
         |                                                 ^~~~~~~~~~~
   drivers/net/team/team_core.c:1280:16: note: in expansion of macro 'kzalloc'
    1280 |         port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
         |                ^~~~~~~
   drivers/net/team/team_core.c:1282:9: error: expected identifier or '(' before 'if'
    1282 |         if (!port)
         |         ^~
>> drivers/net/team/team_core.c:1285:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1285 |         port->dev = port_dev;
         |             ^~
   drivers/net/team/team_core.c:1286:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1286 |         port->team = team;
         |             ^~
>> drivers/net/team/team_core.c:1287:24: error: expected declaration specifiers or '...' before '&' token
    1287 |         INIT_LIST_HEAD(&port->qom_list);
         |                        ^
   drivers/net/team/team_core.c:1289:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1289 |         port->orig.mtu = port_dev->mtu;
         |             ^~
   drivers/net/team/team_core.c:1294:9: error: expected identifier or '(' before 'if'
    1294 |         if (dev->type == port_dev->type) {
         |         ^~
   In file included from include/linux/string.h:383,
                    from include/linux/bitmap.h:13,
                    from include/linux/ethtool.h:16:
>> include/linux/fortify-string.h:576:63: error: expected identifier or '(' before '{' token
     576 |                              p_size_field, q_size_field, op) ({         \
         |                                                               ^
   include/linux/fortify-string.h:640:26: note: in expansion of macro '__fortify_memcpy_chk'
     640 | #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
         |                          ^~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1302:9: note: in expansion of macro 'memcpy'
    1302 |         memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len);
         |         ^~~~~~
   drivers/net/team/team_core.c:1304:9: warning: data definition has no type or storage class
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1304:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
>> drivers/net/team/team_core.c:1304:31: error: 'team' undeclared here (not in a function)
    1304 |         err = team_port_enter(team, port);
         |                               ^~~~
>> drivers/net/team/team_core.c:1304:37: error: passing argument 2 of 'team_port_enter' makes pointer from integer without a cast [-Wint-conversion]
    1304 |         err = team_port_enter(team, port);
         |                                     ^~~~
         |                                     |
         |                                     int
   drivers/net/team/team_core.c:1109:65: note: expected 'struct team_port *' but argument is of type 'int'
    1109 | static int team_port_enter(struct team *team, struct team_port *port)
         |                                               ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1305:9: error: expected identifier or '(' before 'if'
    1305 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1311:9: warning: data definition has no type or storage class
    1311 |         err = dev_open(port_dev, extack);
         |         ^~~
   drivers/net/team/team_core.c:1311:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
>> drivers/net/team/team_core.c:1311:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1311:24: error: 'port_dev' undeclared here (not in a function)
    1311 |         err = dev_open(port_dev, extack);
         |                        ^~~~~~~~
>> drivers/net/team/team_core.c:1311:34: error: 'extack' undeclared here (not in a function)
    1311 |         err = dev_open(port_dev, extack);
         |                                  ^~~~~~
   drivers/net/team/team_core.c:1312:9: error: expected identifier or '(' before 'if'
    1312 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1318:9: warning: data definition has no type or storage class
    1318 |         err = vlan_vids_add_by_dev(port_dev, dev);
         |         ^~~
   drivers/net/team/team_core.c:1318:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   drivers/net/team/team_core.c:1318:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1318:46: error: 'dev' undeclared here (not in a function); did you mean 'cdev'?
    1318 |         err = vlan_vids_add_by_dev(port_dev, dev);
         |                                              ^~~
         |                                              cdev
   drivers/net/team/team_core.c:1319:9: error: expected identifier or '(' before 'if'
    1319 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1325:9: warning: data definition has no type or storage class
    1325 |         err = team_port_enable_netpoll(port);
         |         ^~~
   drivers/net/team/team_core.c:1325:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   drivers/net/team/team_core.c:1325:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1325:40: error: passing argument 1 of 'team_port_enable_netpoll' makes pointer from integer without a cast [-Wint-conversion]
    1325 |         err = team_port_enable_netpoll(port);
         |                                        ^~~~
         |                                        |
         |                                        int
   drivers/net/team/team_core.c:1158:55: note: expected 'struct team_port *' but argument is of type 'int'
    1158 | static int team_port_enable_netpoll(struct team_port *port)
         |                                     ~~~~~~~~~~~~~~~~~~^~~~
>> drivers/net/team/team_core.c:1325:15: error: initializer element is not constant
    1325 |         err = team_port_enable_netpoll(port);
         |               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1326:9: error: expected identifier or '(' before 'if'
    1326 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1332:9: error: expected identifier or '(' before 'if'
    1332 |         if (!(dev->features & NETIF_F_LRO))
         |         ^~
   drivers/net/team/team_core.c:1335:9: warning: data definition has no type or storage class
    1335 |         err = netdev_rx_handler_register(port_dev, team_handle_frame,
         |         ^~~
   drivers/net/team/team_core.c:1335:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   drivers/net/team/team_core.c:1335:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1336:42: error: passing argument 3 of 'netdev_rx_handler_register' makes pointer from integer without a cast [-Wint-conversion]
    1336 |                                          port);
         |                                          ^~~~
         |                                          |
         |                                          int
   In file included from drivers/net/team/team_core.c:17:
   include/linux/netdevice.h:4332:38: note: expected 'void *' but argument is of type 'int'
    4332 |                                void *rx_handler_data);
         |                                ~~~~~~^~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1337:9: error: expected identifier or '(' before 'if'
    1337 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1343:9: warning: data definition has no type or storage class
    1343 |         err = team_upper_dev_link(team, port, extack);
         |         ^~~
   drivers/net/team/team_core.c:1343:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   drivers/net/team/team_core.c:1343:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1343:41: error: passing argument 2 of 'team_upper_dev_link' makes pointer from integer without a cast [-Wint-conversion]
    1343 |         err = team_upper_dev_link(team, port, extack);
         |                                         ^~~~
         |                                         |
         |                                         int
   drivers/net/team/team_core.c:1186:69: note: expected 'struct team_port *' but argument is of type 'int'
    1186 | static int team_upper_dev_link(struct team *team, struct team_port *port,
         |                                                   ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1344:9: error: expected identifier or '(' before 'if'
    1344 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1350:9: warning: data definition has no type or storage class
    1350 |         err = __team_option_inst_add_port(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1350:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   drivers/net/team/team_core.c:1350:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1350:49: error: passing argument 2 of '__team_option_inst_add_port' makes pointer from integer without a cast [-Wint-conversion]
    1350 |         err = __team_option_inst_add_port(team, port);
         |                                                 ^~~~
         |                                                 |
         |                                                 int
   drivers/net/team/team_core.c:219:58: note: expected 'struct team_port *' but argument is of type 'int'
     219 |                                        struct team_port *port)
         |                                        ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1351:9: error: expected identifier or '(' before 'if'
    1351 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1358:9: error: expected identifier or '(' before 'if'
    1358 |         if (dev->flags & IFF_PROMISC) {
         |         ^~
   drivers/net/team/team_core.c:1365:9: error: expected identifier or '(' before 'if'
    1365 |         if (dev->flags & IFF_ALLMULTI) {
         |         ^~
   drivers/net/team/team_core.c:1374:9: warning: data definition has no type or storage class
    1374 |         err = team_dev_type_check_change(dev, port_dev);
         |         ^~~
   drivers/net/team/team_core.c:1374:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   drivers/net/team/team_core.c:1374:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1375:9: error: expected identifier or '(' before 'if'
    1375 |         if (err)
         |         ^~
   drivers/net/team/team_core.c:1378:9: error: expected identifier or '(' before 'if'
    1378 |         if (dev->flags & IFF_UP) {
         |         ^~
   In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:369,
                    from include/linux/build_bug.h:5,
                    from include/linux/bits.h:30,
                    from include/linux/bitops.h:6,
                    from include/linux/bitmap.h:8:
   include/asm-generic/rwonce.h:59:1: error: expected identifier or '(' before 'do'
      59 | do {                                                                    \
         | ^~
   drivers/net/team/team_core.c:1385:9: note: in expansion of macro 'WRITE_ONCE'
    1385 |         WRITE_ONCE(port->tx_index, -1);
         |         ^~~~~~~~~~
   include/asm-generic/rwonce.h:62:3: error: expected identifier or '(' before 'while'
      62 | } while (0)
         |   ^~~~~
   drivers/net/team/team_core.c:1385:9: note: in expansion of macro 'WRITE_ONCE'
    1385 |         WRITE_ONCE(port->tx_index, -1);
         |         ^~~~~~~~~~
   drivers/net/team/team_core.c:1386:27: error: expected declaration specifiers or '...' before '&' token
    1386 |         list_add_tail_rcu(&port->list, &team->port_list);
         |                           ^
   drivers/net/team/team_core.c:1386:40: error: expected declaration specifiers or '...' before '&' token
    1386 |         list_add_tail_rcu(&port->list, &team->port_list);
         |                                        ^
   drivers/net/team/team_core.c:1387:9: warning: data definition has no type or storage class
    1387 |         team_port_enable(team, port);
         |         ^~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1387:9: error: type defaults to 'int' in declaration of 'team_port_enable' [-Wimplicit-int]
   drivers/net/team/team_core.c:1387:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   drivers/net/team/team_core.c:1387:9: error: conflicting types for 'team_port_enable'; have 'int()'
   drivers/net/team/team_core.c:1060:13: note: previous definition of 'team_port_enable' with type 'void(struct team *, struct team_port *)'
    1060 | static void team_port_enable(struct team *team,
         |             ^~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1388:9: warning: data definition has no type or storage class
    1388 |         netdev_compute_master_upper_features(dev, true);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1388:9: error: type defaults to 'int' in declaration of 'netdev_compute_master_upper_features' [-Wimplicit-int]
   drivers/net/team/team_core.c:1388:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   drivers/net/team/team_core.c:1388:9: error: conflicting types for 'netdev_compute_master_upper_features'; have 'int()'
   include/linux/netdevice.h:5460:6: note: previous declaration of 'netdev_compute_master_upper_features' with type 'void(struct net_device *, bool)' {aka 'void(struct net_device *, _Bool)'}
    5460 | void netdev_compute_master_upper_features(struct net_device *dev, bool update_header);
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1389:9: warning: data definition has no type or storage class
    1389 |         netdev_lock_ops(port_dev);
         |         ^~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1389:9: error: type defaults to 'int' in declaration of 'netdev_lock_ops' [-Wimplicit-int]
   drivers/net/team/team_core.c:1389:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   drivers/net/team/team_core.c:1389:9: error: conflicting types for 'netdev_lock_ops'; have 'int()'
   In file included from drivers/net/team/team_core.c:26:
   include/net/netdev_lock.h:39:20: note: previous definition of 'netdev_lock_ops' with type 'void(struct net_device *)'
      39 | static inline void netdev_lock_ops(struct net_device *dev)
--
   team/team_core.c: In function 'team_port_add':
   team/team_core.c:1218:13: warning: unused variable 'err' [-Wunused-variable]
    1218 |         int err;
         |             ^~~
   team/team_core.c:1216:27: warning: unused variable 'port' [-Wunused-variable]
    1216 |         struct team_port *port;
         |                           ^~~~
   team/team_core.c: At top level:
   team/team_core.c:1238:9: error: expected identifier or '(' before 'if'
    1238 |         if (netif_is_team_port(port_dev)) {
         |         ^~
   team/team_core.c:1245:9: error: expected identifier or '(' before 'if'
    1245 |         if (dev == port_dev) {
         |         ^~
   team/team_core.c:1251:9: error: expected identifier or '(' before 'if'
    1251 |         if (netdev_has_upper_dev(dev, port_dev)) {
         |         ^~
   team/team_core.c:1258:9: error: expected identifier or '(' before 'if'
    1258 |         if (netdev_has_upper_dev(port_dev, dev)) {
         |         ^~
   team/team_core.c:1265:9: error: expected identifier or '(' before 'if'
    1265 |         if (port_dev->features & NETIF_F_VLAN_CHALLENGED &&
         |         ^~
   team/team_core.c:1273:9: error: expected identifier or '(' before 'if'
    1273 |         if (port_dev->flags & IFF_UP) {
         |         ^~
   team/team_core.c:1280:9: warning: data definition has no type or storage class
    1280 |         port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
         |         ^~~~
   team/team_core.c:1280:9: error: type defaults to 'int' in declaration of 'port' [-Wimplicit-int]
   In file included from include/linux/rhashtable-types.h:12,
                    from include/linux/ipc.h:7,
                    from include/uapi/linux/sem.h:5,
                    from include/linux/sem.h:5,
                    from include/linux/compat.h:14,
                    from include/linux/ethtool.h:17,
                    from team/team_core.c:7:
>> include/linux/alloc_tag.h:268:1: error: braced-group within expression allowed only inside a function
     268 | ({                                                                      \
         | ^
   include/linux/slab.h:1320:49: note: in expansion of macro 'alloc_hooks'
    1320 | #define kzalloc(size, flags)                    alloc_hooks(kzalloc_noprof(size, flags))
         |                                                 ^~~~~~~~~~~
   team/team_core.c:1280:16: note: in expansion of macro 'kzalloc'
    1280 |         port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
         |                ^~~~~~~
   team/team_core.c:1282:9: error: expected identifier or '(' before 'if'
    1282 |         if (!port)
         |         ^~
   team/team_core.c:1285:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1285 |         port->dev = port_dev;
         |             ^~
   team/team_core.c:1286:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1286 |         port->team = team;
         |             ^~
   team/team_core.c:1287:24: error: expected declaration specifiers or '...' before '&' token
    1287 |         INIT_LIST_HEAD(&port->qom_list);
         |                        ^
   team/team_core.c:1289:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1289 |         port->orig.mtu = port_dev->mtu;
         |             ^~
   team/team_core.c:1294:9: error: expected identifier or '(' before 'if'
    1294 |         if (dev->type == port_dev->type) {
         |         ^~
   In file included from include/linux/string.h:383,
                    from include/linux/bitmap.h:13,
                    from include/linux/ethtool.h:16:
>> include/linux/fortify-string.h:576:63: error: expected identifier or '(' before '{' token
     576 |                              p_size_field, q_size_field, op) ({         \
         |                                                               ^
   include/linux/fortify-string.h:640:26: note: in expansion of macro '__fortify_memcpy_chk'
     640 | #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
         |                          ^~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1302:9: note: in expansion of macro 'memcpy'
    1302 |         memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len);
         |         ^~~~~~
   team/team_core.c:1304:9: warning: data definition has no type or storage class
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1304:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1304:31: error: 'team' undeclared here (not in a function)
    1304 |         err = team_port_enter(team, port);
         |                               ^~~~
   team/team_core.c:1304:37: error: passing argument 2 of 'team_port_enter' makes pointer from integer without a cast [-Wint-conversion]
    1304 |         err = team_port_enter(team, port);
         |                                     ^~~~
         |                                     |
         |                                     int
   team/team_core.c:1109:65: note: expected 'struct team_port *' but argument is of type 'int'
    1109 | static int team_port_enter(struct team *team, struct team_port *port)
         |                                               ~~~~~~~~~~~~~~~~~~^~~~
   team/team_core.c:1305:9: error: expected identifier or '(' before 'if'
    1305 |         if (err) {
         |         ^~
   team/team_core.c:1311:9: warning: data definition has no type or storage class
    1311 |         err = dev_open(port_dev, extack);
         |         ^~~
   team/team_core.c:1311:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1311:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1311:24: error: 'port_dev' undeclared here (not in a function)
    1311 |         err = dev_open(port_dev, extack);
         |                        ^~~~~~~~
   team/team_core.c:1311:34: error: 'extack' undeclared here (not in a function)
    1311 |         err = dev_open(port_dev, extack);
         |                                  ^~~~~~
   team/team_core.c:1312:9: error: expected identifier or '(' before 'if'
    1312 |         if (err) {
         |         ^~
   team/team_core.c:1318:9: warning: data definition has no type or storage class
    1318 |         err = vlan_vids_add_by_dev(port_dev, dev);
         |         ^~~
   team/team_core.c:1318:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1318:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1318:46: error: 'dev' undeclared here (not in a function); did you mean 'cdev'?
    1318 |         err = vlan_vids_add_by_dev(port_dev, dev);
         |                                              ^~~
         |                                              cdev
   team/team_core.c:1319:9: error: expected identifier or '(' before 'if'
    1319 |         if (err) {
         |         ^~
   team/team_core.c:1325:9: warning: data definition has no type or storage class
    1325 |         err = team_port_enable_netpoll(port);
         |         ^~~
   team/team_core.c:1325:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1325:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1325:40: error: passing argument 1 of 'team_port_enable_netpoll' makes pointer from integer without a cast [-Wint-conversion]
    1325 |         err = team_port_enable_netpoll(port);
         |                                        ^~~~
         |                                        |
         |                                        int
   team/team_core.c:1158:55: note: expected 'struct team_port *' but argument is of type 'int'
    1158 | static int team_port_enable_netpoll(struct team_port *port)
         |                                     ~~~~~~~~~~~~~~~~~~^~~~
   team/team_core.c:1325:15: error: initializer element is not constant
    1325 |         err = team_port_enable_netpoll(port);
         |               ^~~~~~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1326:9: error: expected identifier or '(' before 'if'
    1326 |         if (err) {
         |         ^~
   team/team_core.c:1332:9: error: expected identifier or '(' before 'if'
    1332 |         if (!(dev->features & NETIF_F_LRO))
         |         ^~
   team/team_core.c:1335:9: warning: data definition has no type or storage class
    1335 |         err = netdev_rx_handler_register(port_dev, team_handle_frame,
         |         ^~~
   team/team_core.c:1335:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1335:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1336:42: error: passing argument 3 of 'netdev_rx_handler_register' makes pointer from integer without a cast [-Wint-conversion]
    1336 |                                          port);
         |                                          ^~~~
         |                                          |
         |                                          int
   In file included from team/team_core.c:17:
   include/linux/netdevice.h:4332:38: note: expected 'void *' but argument is of type 'int'
    4332 |                                void *rx_handler_data);
         |                                ~~~~~~^~~~~~~~~~~~~~~
   team/team_core.c:1337:9: error: expected identifier or '(' before 'if'
    1337 |         if (err) {
         |         ^~
   team/team_core.c:1343:9: warning: data definition has no type or storage class
    1343 |         err = team_upper_dev_link(team, port, extack);
         |         ^~~
   team/team_core.c:1343:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1343:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1343:41: error: passing argument 2 of 'team_upper_dev_link' makes pointer from integer without a cast [-Wint-conversion]
    1343 |         err = team_upper_dev_link(team, port, extack);
         |                                         ^~~~
         |                                         |
         |                                         int
   team/team_core.c:1186:69: note: expected 'struct team_port *' but argument is of type 'int'
    1186 | static int team_upper_dev_link(struct team *team, struct team_port *port,
         |                                                   ~~~~~~~~~~~~~~~~~~^~~~
   team/team_core.c:1344:9: error: expected identifier or '(' before 'if'
    1344 |         if (err) {
         |         ^~
   team/team_core.c:1350:9: warning: data definition has no type or storage class
    1350 |         err = __team_option_inst_add_port(team, port);
         |         ^~~
   team/team_core.c:1350:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1350:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1350:49: error: passing argument 2 of '__team_option_inst_add_port' makes pointer from integer without a cast [-Wint-conversion]
    1350 |         err = __team_option_inst_add_port(team, port);
         |                                                 ^~~~
         |                                                 |
         |                                                 int
   team/team_core.c:219:58: note: expected 'struct team_port *' but argument is of type 'int'
     219 |                                        struct team_port *port)
         |                                        ~~~~~~~~~~~~~~~~~~^~~~
   team/team_core.c:1351:9: error: expected identifier or '(' before 'if'
    1351 |         if (err) {
         |         ^~
   team/team_core.c:1358:9: error: expected identifier or '(' before 'if'
    1358 |         if (dev->flags & IFF_PROMISC) {
         |         ^~
   team/team_core.c:1365:9: error: expected identifier or '(' before 'if'
    1365 |         if (dev->flags & IFF_ALLMULTI) {
         |         ^~
   team/team_core.c:1374:9: warning: data definition has no type or storage class
    1374 |         err = team_dev_type_check_change(dev, port_dev);
         |         ^~~
   team/team_core.c:1374:9: error: type defaults to 'int' in declaration of 'err' [-Wimplicit-int]
   team/team_core.c:1374:9: error: redefinition of 'err'
   team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   team/team_core.c:1375:9: error: expected identifier or '(' before 'if'
    1375 |         if (err)
         |         ^~
   team/team_core.c:1378:9: error: expected identifier or '(' before 'if'
    1378 |         if (dev->flags & IFF_UP) {
         |         ^~
   In file included from arch/powerpc/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:369,
                    from include/linux/build_bug.h:5,
                    from include/linux/bits.h:30,
                    from include/linux/bitops.h:6,
                    from include/linux/bitmap.h:8:
>> include/asm-generic/rwonce.h:59:1: error: expected identifier or '(' before 'do'
      59 | do {                                                                    \
         | ^~
   team/team_core.c:1385:9: note: in expansion of macro 'WRITE_ONCE'
    1385 |         WRITE_ONCE(port->tx_index, -1);
         |         ^~~~~~~~~~
>> include/asm-generic/rwonce.h:62:3: error: expected identifier or '(' before 'while'
      62 | } while (0)
         |   ^~~~~
   team/team_core.c:1385:9: note: in expansion of macro 'WRITE_ONCE'
    1385 |         WRITE_ONCE(port->tx_index, -1);
         |         ^~~~~~~~~~
   team/team_core.c:1386:27: error: expected declaration specifiers or '...' before '&' token
    1386 |         list_add_tail_rcu(&port->list, &team->port_list);
         |                           ^
   team/team_core.c:1386:40: error: expected declaration specifiers or '...' before '&' token
    1386 |         list_add_tail_rcu(&port->list, &team->port_list);
         |                                        ^
   team/team_core.c:1387:9: warning: data definition has no type or storage class
    1387 |         team_port_enable(team, port);
         |         ^~~~~~~~~~~~~~~~
   team/team_core.c:1387:9: error: type defaults to 'int' in declaration of 'team_port_enable' [-Wimplicit-int]
   team/team_core.c:1387:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   team/team_core.c:1387:9: error: conflicting types for 'team_port_enable'; have 'int()'
   team/team_core.c:1060:13: note: previous definition of 'team_port_enable' with type 'void(struct team *, struct team_port *)'
    1060 | static void team_port_enable(struct team *team,
         |             ^~~~~~~~~~~~~~~~
   team/team_core.c:1388:9: warning: data definition has no type or storage class
    1388 |         netdev_compute_master_upper_features(dev, true);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1388:9: error: type defaults to 'int' in declaration of 'netdev_compute_master_upper_features' [-Wimplicit-int]
   team/team_core.c:1388:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   team/team_core.c:1388:9: error: conflicting types for 'netdev_compute_master_upper_features'; have 'int()'
   include/linux/netdevice.h:5460:6: note: previous declaration of 'netdev_compute_master_upper_features' with type 'void(struct net_device *, bool)' {aka 'void(struct net_device *, _Bool)'}
    5460 | void netdev_compute_master_upper_features(struct net_device *dev, bool update_header);
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1389:9: warning: data definition has no type or storage class
    1389 |         netdev_lock_ops(port_dev);
         |         ^~~~~~~~~~~~~~~
   team/team_core.c:1389:9: error: type defaults to 'int' in declaration of 'netdev_lock_ops' [-Wimplicit-int]
   team/team_core.c:1389:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   team/team_core.c:1389:9: error: conflicting types for 'netdev_lock_ops'; have 'int()'
   In file included from team/team_core.c:26:
   include/net/netdev_lock.h:39:20: note: previous definition of 'netdev_lock_ops' with type 'void(struct net_device *)'
      39 | static inline void netdev_lock_ops(struct net_device *dev)
         |                    ^~~~~~~~~~~~~~~
   team/team_core.c:1390:44: error: expected ')' before '!' token
    1390 |         __team_port_change_port_added(port, !!netif_oper_up(port_dev));
         |                                            ^~
         |                                            )
   team/team_core.c:1391:9: warning: data definition has no type or storage class
    1391 |         netdev_unlock_ops(port_dev);
         |         ^~~~~~~~~~~~~~~~~
   team/team_core.c:1391:9: error: type defaults to 'int' in declaration of 'netdev_unlock_ops' [-Wimplicit-int]
   team/team_core.c:1391:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   team/team_core.c:1391:9: error: conflicting types for 'netdev_unlock_ops'; have 'int()'
   include/net/netdev_lock.h:45:20: note: previous definition of 'netdev_unlock_ops' with type 'void(struct net_device *)'
      45 | static inline void netdev_unlock_ops(struct net_device *dev)
         |                    ^~~~~~~~~~~~~~~~~
   team/team_core.c:1392:9: warning: data definition has no type or storage class
    1392 |         __team_options_change_check(team);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1392:9: error: type defaults to 'int' in declaration of '__team_options_change_check' [-Wimplicit-int]
   team/team_core.c:1392:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   team/team_core.c:1392:9: error: conflicting types for '__team_options_change_check'; have 'int()'
   team/team_core.c:332:13: note: previous declaration of '__team_options_change_check' with type 'void(struct team *)'
     332 | static void __team_options_change_check(struct team *team);
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1394:25: error: expected ')' before string constant
    1394 |         netdev_info(dev, "Port device %s added\n", portname);
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
         |                         )
   team/team_core.c:1396:9: error: expected identifier or '(' before 'return'
    1396 |         return 0;
         |         ^~~~~~
   team/team_core.c:1398:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1398 | err_set_dev_type:
         |                 ^
   team/team_core.c:1403:20: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1403 | err_option_port_add:
         |                    ^
   team/team_core.c:1406:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1406 | err_set_upper_link:
         |                   ^
   team/team_core.c:1409:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1409 | err_handler_register:
         |                     ^
   team/team_core.c:1412:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1412 | err_enable_netpoll:
         |                   ^
   team/team_core.c:1415:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1415 | err_vids_add:
         |             ^
   team/team_core.c:1418:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1418 | err_dev_open:
         |             ^
   team/team_core.c:1420:9: warning: data definition has no type or storage class
    1420 |         team_port_set_orig_dev_addr(port);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   team/team_core.c:1420:9: error: type defaults to 'int' in declaration of 'team_port_set_orig_dev_addr' [-Wimplicit-int]
   team/team_core.c:1420:9: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   team/team_core.c:1422:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1422 | err_port_enter:
         |               ^
   team/team_core.c:1425:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1425 | err_set_mtu:
         |            ^


vim +1238 drivers/net/team/team_core.c

bb9215a9817950 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1056  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1057  /*
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1058   * Enable TX AND RX on the port.
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1059   */
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09 @1060  static void team_port_enable(struct team *team,
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1061  			     struct team_port *port)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1062  {
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1063  	bool rx_was_enabled;
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1064  	bool tx_was_enabled;
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1065  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1066  	if (team_port_enabled(port))
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1067  		return;
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1068  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1069  	rx_was_enabled = team_port_rx_enabled(port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1070  	tx_was_enabled = team_port_tx_enabled(port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1071  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1072  	if (!rx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1073  		__team_port_enable_rx(team, port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1074  	if (!tx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1075  		__team_port_enable_tx(team, port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1076  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1077  	team_adjust_ops(team);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1078  	if (!tx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1079  		team_queue_override_port_add(team, port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1080  	team_notify_peers(team);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1081  	if (!rx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1082  		team_mcast_rejoin(team);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1083  	if (!tx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1084  		team_lower_state_changed(port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1085  }
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1086  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1087  static void team_port_disable(struct team *team,
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1088  			      struct team_port *port)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1089  {
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1090  	bool rx_was_enabled = team_port_rx_enabled(port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1091  	bool tx_was_enabled = team_port_tx_enabled(port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1092  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1093  	if (!tx_was_enabled && !rx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1094  		return;
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1095  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1096  	if (tx_was_enabled) {
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1097  		__team_port_disable_tx(team, port);
735d381fa57c57 drivers/net/team/team.c      Jiri Pirko         2013-06-10  1098  		team_queue_override_port_del(team, port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1099  	}
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1100  	if (rx_was_enabled)
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1101  		__team_port_disable_rx(team, port);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1102  
735d381fa57c57 drivers/net/team/team.c      Jiri Pirko         2013-06-10  1103  	team_adjust_ops(team);
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1104  
68f0833f279ac2 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1105  	if (tx_was_enabled)
3a0d6c5af5e526 drivers/net/team/team.c      Jiri Pirko         2015-12-03  1106  		team_lower_state_changed(port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1107  }
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1108  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1109  static int team_port_enter(struct team *team, struct team_port *port)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1110  {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1111  	int err = 0;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1112  
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1113  	dev_hold(netdev_from_priv(team));
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1114  	if (team->ops.port_enter) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1115  		err = team->ops.port_enter(team, port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1116  		if (err) {
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1117  			netdev_err(netdev_from_priv(team),
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1118  				   "Device %s failed to enter team mode\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1119  				   port->dev->name);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1120  			goto err_port_enter;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1121  		}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1122  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1123  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1124  	return 0;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1125  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1126  err_port_enter:
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1127  	dev_put(netdev_from_priv(team));
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1128  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1129  	return err;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1130  }
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1131  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1132  static void team_port_leave(struct team *team, struct team_port *port)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1133  {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1134  	if (team->ops.port_leave)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1135  		team->ops.port_leave(team, port);
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1136  	dev_put(netdev_from_priv(team));
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1137  }
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1138  
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1139  #ifdef CONFIG_NET_POLL_CONTROLLER
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1140  static int __team_port_enable_netpoll(struct team_port *port)
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1141  {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1142  	struct netpoll *np;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1143  	int err;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1144  
bf4afc53b77aea drivers/net/team/team_core.c Linus Torvalds     2026-02-21  1145  	np = kzalloc_obj(*np);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1146  	if (!np)
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1147  		return -ENOMEM;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1148  
a8779ec1c5e605 drivers/net/team/team.c      Eric W. Biederman  2014-03-27  1149  	err = __netpoll_setup(np, port->dev);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1150  	if (err) {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1151  		kfree(np);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1152  		return err;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1153  	}
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1154  	port->np = np;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1155  	return err;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1156  }
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1157  
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1158  static int team_port_enable_netpoll(struct team_port *port)
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1159  {
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1160  	if (!netdev_from_priv(port->team)->npinfo)
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1161  		return 0;
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1162  
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1163  	return __team_port_enable_netpoll(port);
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1164  }
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1165  
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1166  static void team_port_disable_netpoll(struct team_port *port)
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1167  {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1168  	struct netpoll *np = port->np;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1169  
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1170  	if (!np)
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1171  		return;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1172  	port->np = NULL;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1173  
c9fbd71f730943 drivers/net/team/team.c      Debabrata Banerjee 2018-10-18  1174  	__netpoll_free(np);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1175  }
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1176  #else
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24  1177  static int team_port_enable_netpoll(struct team_port *port)
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1178  {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1179  	return 0;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1180  }
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1181  static void team_port_disable_netpoll(struct team_port *port)
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1182  {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1183  }
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1184  #endif
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1185  
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1186  static int team_upper_dev_link(struct team *team, struct team_port *port,
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1187  			       struct netlink_ext_ack *extack)
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1188  {
8fd728566a354f drivers/net/team/team.c      Jiri Pirko         2015-12-03  1189  	struct netdev_lag_upper_info lag_upper_info;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1190  	int err;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1191  
8fd728566a354f drivers/net/team/team.c      Jiri Pirko         2015-12-03  1192  	lag_upper_info.tx_type = team->mode->lag_tx_type;
f44aa9ef7950a5 drivers/net/team/team.c      John Hurley        2018-05-23  1193  	lag_upper_info.hash_type = NETDEV_LAG_HASH_UNKNOWN;
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1194  	err = netdev_master_upper_dev_link(port->dev, netdev_from_priv(team),
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1195  					   NULL, &lag_upper_info, extack);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1196  	if (err)
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1197  		return err;
8fd728566a354f drivers/net/team/team.c      Jiri Pirko         2015-12-03  1198  	port->dev->priv_flags |= IFF_TEAM_PORT;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1199  	return 0;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1200  }
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1201  
8fd728566a354f drivers/net/team/team.c      Jiri Pirko         2015-12-03  1202  static void team_upper_dev_unlink(struct team *team, struct team_port *port)
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1203  {
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1204  	netdev_upper_dev_unlink(port->dev, netdev_from_priv(team));
8fd728566a354f drivers/net/team/team.c      Jiri Pirko         2015-12-03  1205  	port->dev->priv_flags &= ~IFF_TEAM_PORT;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1206  }
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1207  
10f3f51d56648f drivers/net/team/team.c      Jiri Pirko         2012-09-21  1208  static void __team_port_change_port_added(struct team_port *port, bool linkup);
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko         2012-08-17  1209  static int team_dev_type_check_change(struct net_device *dev,
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko         2012-08-17  1210  				      struct net_device *port_dev);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1211  
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1212  static int team_port_add(struct team *team, struct net_device *port_dev,
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1213  			 struct netlink_ext_ack *extack)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1214  {
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20  1215  	struct net_device *dev = netdev_from_priv(team);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1216  	struct team_port *port;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1217  	char *portname = port_dev->name;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1218  	int err;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1219  
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko         2012-08-17  1220  	if (port_dev->flags & IFF_LOOPBACK) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1221  		NL_SET_ERR_MSG(extack, "Loopback device can't be added as a team port");
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko         2012-08-17  1222  		netdev_err(dev, "Device %s is loopback device. Loopback devices can't be added as a team port\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1223  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1224  		return -EINVAL;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1225  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1226  
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1227  		if (port_dev->type == ARPHRD_CAN ||
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1228  		    port_dev->type == ARPHRD_IEEE802154 ||
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1229  		    port_dev->type == ARPHRD_IEEE802154_MONITOR) {
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1230  			NL_SET_ERR_MSG(extack,
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1231  				       "CAN and IEEE 802.15.4 devices can't be added as a team port");
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1232  			netdev_err(dev, "Device %s is CAN or IEEE 802.15.4. These device types can't be added as a team port\n",
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1233  				   portname);
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1234  			return -EINVAL;
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1235  		}
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28 @1236  	}
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao          2026-07-28  1237  
acb10eac5100ba drivers/net/team/team.c      Julian Wiedmann    2019-03-29 @1238  	if (netif_is_team_port(port_dev)) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1239  		NL_SET_ERR_MSG(extack, "Device is already a port of a team device");
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1240  		netdev_err(dev, "Device %s is already a port "
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1241  				"of a team device\n", portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1242  		return -EBUSY;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1243  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1244  
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel       2018-10-01  1245  	if (dev == port_dev) {
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel       2018-10-01  1246  		NL_SET_ERR_MSG(extack, "Cannot enslave team device to itself");
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel       2018-10-01  1247  		netdev_err(dev, "Cannot enslave team device to itself\n");
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel       2018-10-01  1248  		return -EINVAL;
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel       2018-10-01  1249  	}
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel       2018-10-01  1250  
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1251  	if (netdev_has_upper_dev(dev, port_dev)) {
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1252  		NL_SET_ERR_MSG(extack, "Device is already an upper device of the team interface");
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1253  		netdev_err(dev, "Device %s is already an upper device of the team interface\n",
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1254  			   portname);
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1255  		return -EBUSY;
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1256  	}
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1257  
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1258  	if (netdev_has_upper_dev(port_dev, dev)) {
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1259  		NL_SET_ERR_MSG(extack, "Device is already a lower device of the team interface");
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila   2024-12-30  1260  		netdev_err(dev, "Device %s is already a lower device of the team interface\n",
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1261  			   portname);
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1262  		return -EBUSY;
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1263  	}
925b0c841e066b drivers/net/team/team.c      Hangbin Liu        2019-04-19  1264  
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1265  	if (port_dev->features & NETIF_F_VLAN_CHALLENGED &&
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1266  	    vlan_uses_dev(dev)) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1267  		NL_SET_ERR_MSG(extack, "Device is VLAN challenged and team device has VLAN set up");
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1268  		netdev_err(dev, "Device %s is VLAN challenged and team device has VLAN set up\n",
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1269  			   portname);
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1270  		return -EPERM;
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1271  	}
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko         2012-08-23  1272  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1273  	if (port_dev->flags & IFF_UP) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27  1274  		NL_SET_ERR_MSG(extack, "Device is up. Set it down before adding it as a team port");
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1275  		netdev_err(dev, "Device %s is up. Set it down before adding it as a team port\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1276  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1277  		return -EBUSY;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1278  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1279  
5149ee58385bdf drivers/net/team/team.c      Jiri Pirko         2012-06-19 @1280  	port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
5149ee58385bdf drivers/net/team/team.c      Jiri Pirko         2012-06-19  1281  		       GFP_KERNEL);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1282  	if (!port)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1283  		return -ENOMEM;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1284  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1285  	port->dev = port_dev;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1286  	port->team = team;
8ff5105a2b9dd0 drivers/net/team/team.c      Jiri Pirko         2012-07-27 @1287  	INIT_LIST_HEAD(&port->qom_list);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1288  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1289  	port->orig.mtu = port_dev->mtu;
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1290  	/*
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1291  	 * MTU assignment will be handled in team_dev_type_check_change
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1292  	 * if dev and port_dev are of different types
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1293  	 */
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1294  	if (dev->type == port_dev->type) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1295  		err = dev_set_mtu(port_dev, dev->mtu);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1296  		if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1297  			netdev_dbg(dev, "Error %d calling dev_set_mtu\n", err);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1298  			goto err_set_mtu;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1299  		}
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1300  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1301  
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko         2012-08-17  1302  	memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1303  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1304  	err = team_port_enter(team, port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1305  	if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1306  		netdev_err(dev, "Device %s failed to enter team mode\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1307  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1308  		goto err_port_enter;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1309  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1310  
00f54e68924eaf drivers/net/team/team.c      Petr Machata       2018-12-06 @1311  	err = dev_open(port_dev, extack);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1312  	if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1313  		netdev_dbg(dev, "Device %s opening failed\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1314  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1315  		goto err_dev_open;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1316  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1317  
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08 @1318  	err = vlan_vids_add_by_dev(port_dev, dev);
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1319  	if (err) {
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1320  		netdev_err(dev, "Failed to add vlan ids to device %s\n",
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1321  				portname);
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1322  		goto err_vids_add;
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1323  	}
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1324  
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long           2018-04-24 @1325  	err = team_port_enable_netpoll(port);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1326  	if (err) {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1327  		netdev_err(dev, "Failed to enable netpoll on device %s\n",
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1328  			   portname);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1329  		goto err_enable_netpoll;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1330  	}
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1331  
fbe168ba91f7c3 drivers/net/team/team.c      Michal Kubeček     2014-11-13  1332  	if (!(dev->features & NETIF_F_LRO))
fbe168ba91f7c3 drivers/net/team/team.c      Michal Kubeček     2014-11-13  1333  		dev_disable_lro(port_dev);
fbe168ba91f7c3 drivers/net/team/team.c      Michal Kubeček     2014-11-13  1334  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1335  	err = netdev_rx_handler_register(port_dev, team_handle_frame,
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1336  					 port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1337  	if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1338  		netdev_err(dev, "Device %s failed to register rx_handler\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1339  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1340  		goto err_handler_register;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1341  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1342  
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel       2018-02-27 @1343  	err = team_upper_dev_link(team, port, extack);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1344  	if (err) {
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1345  		netdev_err(dev, "Device %s failed to set upper link\n",
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1346  			   portname);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1347  		goto err_set_upper_link;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1348  	}
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1349  
35b384bd14f91c drivers/net/team/team.c      Jiri Pirko         2012-06-19 @1350  	err = __team_option_inst_add_port(team, port);
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1351  	if (err) {
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1352  		netdev_err(dev, "Device %s failed to add per-port options\n",
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1353  			   portname);
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1354  		goto err_option_port_add;
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1355  	}
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1356  
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1357  	/* set promiscuity level to new slave */
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1358  	if (dev->flags & IFF_PROMISC) {
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1359  		err = dev_set_promiscuity(port_dev, 1);
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1360  		if (err)
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1361  			goto err_set_slave_promisc;
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1362  	}
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1363  
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1364  	/* set allmulti level to new slave */
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1365  	if (dev->flags & IFF_ALLMULTI) {
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1366  		err = dev_set_allmulti(port_dev, 1);
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1367  		if (err) {
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1368  			if (dev->flags & IFF_PROMISC)
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1369  				dev_set_promiscuity(port_dev, -1);
aee0f01b4f1188 drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-28  1370  			goto err_set_slave_allmulti;
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1371  		}
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1372  	}
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1373  
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1374  	err = team_dev_type_check_change(dev, port_dev);
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1375  	if (err)
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1376  		goto err_set_dev_type;
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22  1377  
bd60234222b2fd drivers/net/team/team.c      Benjamin Poirier   2022-09-07  1378  	if (dev->flags & IFF_UP) {
982cf3b3999d39 drivers/net/team/team.c      Xin Long           2018-03-26  1379  		netif_addr_lock_bh(dev);
982cf3b3999d39 drivers/net/team/team.c      Xin Long           2018-03-26  1380  		dev_uc_sync_multiple(port_dev, dev);
982cf3b3999d39 drivers/net/team/team.c      Xin Long           2018-03-26  1381  		dev_mc_sync_multiple(port_dev, dev);
982cf3b3999d39 drivers/net/team/team.c      Xin Long           2018-03-26  1382  		netif_addr_unlock_bh(dev);
bd60234222b2fd drivers/net/team/team.c      Benjamin Poirier   2022-09-07  1383  	}
982cf3b3999d39 drivers/net/team/team.c      Xin Long           2018-03-26  1384  
fa6ed31dd913b0 drivers/net/team/team_core.c Marc Harvey        2026-04-09  1385  	WRITE_ONCE(port->tx_index, -1);
19a0b58e506b06 drivers/net/team/team.c      Jiri Pirko         2012-04-20  1386  	list_add_tail_rcu(&port->list, &team->port_list);
72df935d985c15 drivers/net/team/team.c      Jiri Pirko         2013-06-08 @1387  	team_port_enable(team, port);
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng      2026-03-20 @1388  	netdev_compute_master_upper_features(dev, true);
a6882c1583262d drivers/net/team/team_core.c Jakub Kicinski     2026-06-02 @1389  	netdev_lock_ops(port_dev);
8c7a77267eec81 drivers/net/team/team.c      George Wilkie      2019-02-20 @1390  	__team_port_change_port_added(port, !!netif_oper_up(port_dev));
a6882c1583262d drivers/net/team/team_core.c Jakub Kicinski     2026-06-02 @1391  	netdev_unlock_ops(port_dev);
35b384bd14f91c drivers/net/team/team.c      Jiri Pirko         2012-06-19 @1392  	__team_options_change_check(team);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1393  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1394  	netdev_info(dev, "Port device %s added\n", portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1395  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1396  	return 0;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1397  
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-22 @1398  err_set_dev_type:
aee0f01b4f1188 drivers/net/team/team_core.c Nikola Z. Ivanov   2025-11-28  1399  err_set_slave_allmulti:
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1400  err_set_slave_promisc:
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1401  	__team_option_inst_del_port(team, port);
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu        2019-04-08  1402  
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1403  err_option_port_add:
8fd728566a354f drivers/net/team/team.c      Jiri Pirko         2015-12-03  1404  	team_upper_dev_unlink(team, port);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1405  
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko         2014-08-25  1406  err_set_upper_link:
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1407  	netdev_rx_handler_unregister(port_dev);
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko         2012-04-10  1408  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1409  err_handler_register:
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1410  	team_port_disable_netpoll(port);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1411  
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko         2012-07-17  1412  err_enable_netpoll:
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1413  	vlan_vids_del_by_dev(port_dev, dev);
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1414  
57459185a19b02 drivers/net/team/team.c      Jiri Pirko         2011-12-08  1415  err_vids_add:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1416  	dev_close(port_dev);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1417  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1418  err_dev_open:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1419  	team_port_leave(team, port);
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko         2012-08-17 @1420  	team_port_set_orig_dev_addr(port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1421  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1422  err_port_enter:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1423  	dev_set_mtu(port_dev, port->orig.mtu);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1424  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1425  err_set_mtu:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1426  	kfree(port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1427  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1428  	return err;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11 @1429  }
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko         2011-11-11  1430  

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

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

* Re: [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
  2026-07-28 15:12 [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add Jiale Yao
  2026-07-29  9:15 ` Jiri Pirko
  2026-08-05  5:00 ` kernel test robot
@ 2026-08-05 15:42 ` kernel test robot
  2 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-08-05 15:42 UTC (permalink / raw)
  To: Jiale Yao, Jiri Pirko, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, linux-kernel
  Cc: oe-kbuild-all, netdev, Jiale Yao

Hi Jiale,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v7.2-rc6 next-20260804]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Jiale-Yao/team-reject-CAN-and-IEEE-802-15-4-devices-in-team_port_add/20260805-104604
base:   linus/master
patch link:    https://lore.kernel.org/r/20260728151240.89434-1-yaojiale02%40163.com
patch subject: [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260805/202608052344.ZHSUxKbS-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260805/202608052344.ZHSUxKbS-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608052344.ZHSUxKbS-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/net/team/team_core.c: In function 'team_port_add':
   drivers/net/team/team_core.c:1218:13: warning: unused variable 'err' [-Wunused-variable]
    1218 |         int err;
         |             ^~~
   drivers/net/team/team_core.c:1216:27: warning: unused variable 'port' [-Wunused-variable]
    1216 |         struct team_port *port;
         |                           ^~~~
   drivers/net/team/team_core.c: At top level:
   drivers/net/team/team_core.c:1238:9: error: expected identifier or '(' before 'if'
    1238 |         if (netif_is_team_port(port_dev)) {
         |         ^~
   drivers/net/team/team_core.c:1245:9: error: expected identifier or '(' before 'if'
    1245 |         if (dev == port_dev) {
         |         ^~
   drivers/net/team/team_core.c:1251:9: error: expected identifier or '(' before 'if'
    1251 |         if (netdev_has_upper_dev(dev, port_dev)) {
         |         ^~
   drivers/net/team/team_core.c:1258:9: error: expected identifier or '(' before 'if'
    1258 |         if (netdev_has_upper_dev(port_dev, dev)) {
         |         ^~
   drivers/net/team/team_core.c:1265:9: error: expected identifier or '(' before 'if'
    1265 |         if (port_dev->features & NETIF_F_VLAN_CHALLENGED &&
         |         ^~
   drivers/net/team/team_core.c:1273:9: error: expected identifier or '(' before 'if'
    1273 |         if (port_dev->flags & IFF_UP) {
         |         ^~
   drivers/net/team/team_core.c:1280:9: warning: data definition has no type or storage class
    1280 |         port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
         |         ^~~~
   drivers/net/team/team_core.c:1280:9: error: type defaults to 'int' in declaration of 'port' [-Werror=implicit-int]
   In file included from include/linux/rhashtable-types.h:12,
                    from include/linux/ipc.h:7,
                    from include/uapi/linux/sem.h:5,
                    from include/linux/sem.h:5,
                    from include/linux/compat.h:14,
                    from include/linux/ethtool.h:17,
                    from drivers/net/team/team_core.c:7:
   include/linux/alloc_tag.h:268:1: error: braced-group within expression allowed only inside a function
     268 | ({                                                                      \
         | ^
   include/linux/slab.h:1320:49: note: in expansion of macro 'alloc_hooks'
    1320 | #define kzalloc(size, flags)                    alloc_hooks(kzalloc_noprof(size, flags))
         |                                                 ^~~~~~~~~~~
   drivers/net/team/team_core.c:1280:16: note: in expansion of macro 'kzalloc'
    1280 |         port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
         |                ^~~~~~~
   drivers/net/team/team_core.c:1282:9: error: expected identifier or '(' before 'if'
    1282 |         if (!port)
         |         ^~
   drivers/net/team/team_core.c:1285:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1285 |         port->dev = port_dev;
         |             ^~
   drivers/net/team/team_core.c:1286:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1286 |         port->team = team;
         |             ^~
   drivers/net/team/team_core.c:1287:24: error: expected declaration specifiers or '...' before '&' token
    1287 |         INIT_LIST_HEAD(&port->qom_list);
         |                        ^
   drivers/net/team/team_core.c:1289:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
    1289 |         port->orig.mtu = port_dev->mtu;
         |             ^~
   drivers/net/team/team_core.c:1294:9: error: expected identifier or '(' before 'if'
    1294 |         if (dev->type == port_dev->type) {
         |         ^~
   drivers/net/team/team_core.c:1302:20: error: expected ')' before '->' token
    1302 |         memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len);
         |                    ^~
         |                    )
   drivers/net/team/team_core.c:1304:9: warning: data definition has no type or storage class
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1304:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1304:31: error: 'team' undeclared here (not in a function)
    1304 |         err = team_port_enter(team, port);
         |                               ^~~~
>> drivers/net/team/team_core.c:1304:37: warning: passing argument 2 of 'team_port_enter' makes pointer from integer without a cast [-Wint-conversion]
    1304 |         err = team_port_enter(team, port);
         |                                     ^~~~
         |                                     |
         |                                     int
   drivers/net/team/team_core.c:1109:65: note: expected 'struct team_port *' but argument is of type 'int'
    1109 | static int team_port_enter(struct team *team, struct team_port *port)
         |                                               ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1305:9: error: expected identifier or '(' before 'if'
    1305 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1311:9: warning: data definition has no type or storage class
    1311 |         err = dev_open(port_dev, extack);
         |         ^~~
   drivers/net/team/team_core.c:1311:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1311:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1311:24: error: 'port_dev' undeclared here (not in a function)
    1311 |         err = dev_open(port_dev, extack);
         |                        ^~~~~~~~
   drivers/net/team/team_core.c:1311:34: error: 'extack' undeclared here (not in a function)
    1311 |         err = dev_open(port_dev, extack);
         |                                  ^~~~~~
   drivers/net/team/team_core.c:1312:9: error: expected identifier or '(' before 'if'
    1312 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1318:9: warning: data definition has no type or storage class
    1318 |         err = vlan_vids_add_by_dev(port_dev, dev);
         |         ^~~
   drivers/net/team/team_core.c:1318:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1318:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1318:46: error: 'dev' undeclared here (not in a function); did you mean 'cdev'?
    1318 |         err = vlan_vids_add_by_dev(port_dev, dev);
         |                                              ^~~
         |                                              cdev
   drivers/net/team/team_core.c:1319:9: error: expected identifier or '(' before 'if'
    1319 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1325:9: warning: data definition has no type or storage class
    1325 |         err = team_port_enable_netpoll(port);
         |         ^~~
   drivers/net/team/team_core.c:1325:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1325:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1325:40: warning: passing argument 1 of 'team_port_enable_netpoll' makes pointer from integer without a cast [-Wint-conversion]
    1325 |         err = team_port_enable_netpoll(port);
         |                                        ^~~~
         |                                        |
         |                                        int
   drivers/net/team/team_core.c:1158:55: note: expected 'struct team_port *' but argument is of type 'int'
    1158 | static int team_port_enable_netpoll(struct team_port *port)
         |                                     ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1325:15: error: initializer element is not constant
    1325 |         err = team_port_enable_netpoll(port);
         |               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1326:9: error: expected identifier or '(' before 'if'
    1326 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1332:9: error: expected identifier or '(' before 'if'
    1332 |         if (!(dev->features & NETIF_F_LRO))
         |         ^~
   drivers/net/team/team_core.c:1335:9: warning: data definition has no type or storage class
    1335 |         err = netdev_rx_handler_register(port_dev, team_handle_frame,
         |         ^~~
   drivers/net/team/team_core.c:1335:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1335:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1336:42: warning: passing argument 3 of 'netdev_rx_handler_register' makes pointer from integer without a cast [-Wint-conversion]
    1336 |                                          port);
         |                                          ^~~~
         |                                          |
         |                                          int
   In file included from drivers/net/team/team_core.c:17:
   include/linux/netdevice.h:4332:38: note: expected 'void *' but argument is of type 'int'
    4332 |                                void *rx_handler_data);
         |                                ~~~~~~^~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1337:9: error: expected identifier or '(' before 'if'
    1337 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1343:9: warning: data definition has no type or storage class
    1343 |         err = team_upper_dev_link(team, port, extack);
         |         ^~~
   drivers/net/team/team_core.c:1343:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1343:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1343:41: warning: passing argument 2 of 'team_upper_dev_link' makes pointer from integer without a cast [-Wint-conversion]
    1343 |         err = team_upper_dev_link(team, port, extack);
         |                                         ^~~~
         |                                         |
         |                                         int
   drivers/net/team/team_core.c:1186:69: note: expected 'struct team_port *' but argument is of type 'int'
    1186 | static int team_upper_dev_link(struct team *team, struct team_port *port,
         |                                                   ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1344:9: error: expected identifier or '(' before 'if'
    1344 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1350:9: warning: data definition has no type or storage class
    1350 |         err = __team_option_inst_add_port(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1350:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1350:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
>> drivers/net/team/team_core.c:1350:49: warning: passing argument 2 of '__team_option_inst_add_port' makes pointer from integer without a cast [-Wint-conversion]
    1350 |         err = __team_option_inst_add_port(team, port);
         |                                                 ^~~~
         |                                                 |
         |                                                 int
   drivers/net/team/team_core.c:219:58: note: expected 'struct team_port *' but argument is of type 'int'
     219 |                                        struct team_port *port)
         |                                        ~~~~~~~~~~~~~~~~~~^~~~
   drivers/net/team/team_core.c:1351:9: error: expected identifier or '(' before 'if'
    1351 |         if (err) {
         |         ^~
   drivers/net/team/team_core.c:1358:9: error: expected identifier or '(' before 'if'
    1358 |         if (dev->flags & IFF_PROMISC) {
         |         ^~
   drivers/net/team/team_core.c:1365:9: error: expected identifier or '(' before 'if'
    1365 |         if (dev->flags & IFF_ALLMULTI) {
         |         ^~
   drivers/net/team/team_core.c:1374:9: warning: data definition has no type or storage class
    1374 |         err = team_dev_type_check_change(dev, port_dev);
         |         ^~~
   drivers/net/team/team_core.c:1374:9: error: type defaults to 'int' in declaration of 'err' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1374:9: error: redefinition of 'err'
   drivers/net/team/team_core.c:1304:9: note: previous definition of 'err' with type 'int'
    1304 |         err = team_port_enter(team, port);
         |         ^~~
   drivers/net/team/team_core.c:1375:9: error: expected identifier or '(' before 'if'
    1375 |         if (err)
         |         ^~
   drivers/net/team/team_core.c:1378:9: error: expected identifier or '(' before 'if'
    1378 |         if (dev->flags & IFF_UP) {
         |         ^~
   In file included from ./arch/nios2/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:369,
                    from include/linux/build_bug.h:5,
                    from include/linux/bits.h:30,
                    from include/linux/bitops.h:6,
                    from include/linux/bitmap.h:8,
                    from include/linux/ethtool.h:16,
                    from drivers/net/team/team_core.c:7:
   include/asm-generic/rwonce.h:59:1: error: expected identifier or '(' before 'do'
      59 | do {                                                                    \
         | ^~
   drivers/net/team/team_core.c:1385:9: note: in expansion of macro 'WRITE_ONCE'
    1385 |         WRITE_ONCE(port->tx_index, -1);
         |         ^~~~~~~~~~
   include/asm-generic/rwonce.h:62:3: error: expected identifier or '(' before 'while'
      62 | } while (0)
         |   ^~~~~
   drivers/net/team/team_core.c:1385:9: note: in expansion of macro 'WRITE_ONCE'
    1385 |         WRITE_ONCE(port->tx_index, -1);
         |         ^~~~~~~~~~
   drivers/net/team/team_core.c:1386:27: error: expected declaration specifiers or '...' before '&' token
    1386 |         list_add_tail_rcu(&port->list, &team->port_list);
         |                           ^
   drivers/net/team/team_core.c:1386:40: error: expected declaration specifiers or '...' before '&' token
    1386 |         list_add_tail_rcu(&port->list, &team->port_list);
         |                                        ^
   drivers/net/team/team_core.c:1387:9: warning: data definition has no type or storage class
    1387 |         team_port_enable(team, port);
         |         ^~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1387:9: error: type defaults to 'int' in declaration of 'team_port_enable' [-Werror=implicit-int]
>> drivers/net/team/team_core.c:1387:9: warning: parameter names (without types) in function declaration
   drivers/net/team/team_core.c:1387:9: error: conflicting types for 'team_port_enable'; have 'int()'
   drivers/net/team/team_core.c:1060:13: note: previous definition of 'team_port_enable' with type 'void(struct team *, struct team_port *)'
    1060 | static void team_port_enable(struct team *team,
         |             ^~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1388:9: warning: data definition has no type or storage class
    1388 |         netdev_compute_master_upper_features(dev, true);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1388:9: error: type defaults to 'int' in declaration of 'netdev_compute_master_upper_features' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1388:9: warning: parameter names (without types) in function declaration
   drivers/net/team/team_core.c:1388:9: error: conflicting types for 'netdev_compute_master_upper_features'; have 'int()'
   In file included from drivers/net/team/team_core.c:17:
   include/linux/netdevice.h:5460:6: note: previous declaration of 'netdev_compute_master_upper_features' with type 'void(struct net_device *, bool)' {aka 'void(struct net_device *, _Bool)'}
    5460 | void netdev_compute_master_upper_features(struct net_device *dev, bool update_header);
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1389:9: warning: data definition has no type or storage class
    1389 |         netdev_lock_ops(port_dev);
         |         ^~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1389:9: error: type defaults to 'int' in declaration of 'netdev_lock_ops' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1389:9: warning: parameter names (without types) in function declaration
   drivers/net/team/team_core.c:1389:9: error: conflicting types for 'netdev_lock_ops'; have 'int()'
   In file included from drivers/net/team/team_core.c:26:
   include/net/netdev_lock.h:39:20: note: previous definition of 'netdev_lock_ops' with type 'void(struct net_device *)'
      39 | static inline void netdev_lock_ops(struct net_device *dev)
         |                    ^~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1390:44: error: expected ')' before '!' token
    1390 |         __team_port_change_port_added(port, !!netif_oper_up(port_dev));
         |                                            ^~
         |                                            )
   drivers/net/team/team_core.c:1391:9: warning: data definition has no type or storage class
    1391 |         netdev_unlock_ops(port_dev);
         |         ^~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1391:9: error: type defaults to 'int' in declaration of 'netdev_unlock_ops' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1391:9: warning: parameter names (without types) in function declaration
   drivers/net/team/team_core.c:1391:9: error: conflicting types for 'netdev_unlock_ops'; have 'int()'
   In file included from drivers/net/team/team_core.c:26:
   include/net/netdev_lock.h:45:20: note: previous definition of 'netdev_unlock_ops' with type 'void(struct net_device *)'
      45 | static inline void netdev_unlock_ops(struct net_device *dev)
         |                    ^~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1392:9: warning: data definition has no type or storage class
    1392 |         __team_options_change_check(team);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1392:9: error: type defaults to 'int' in declaration of '__team_options_change_check' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1392:9: warning: parameter names (without types) in function declaration
   drivers/net/team/team_core.c:1392:9: error: conflicting types for '__team_options_change_check'; have 'int()'
   drivers/net/team/team_core.c:332:13: note: previous declaration of '__team_options_change_check' with type 'void(struct team *)'
     332 | static void __team_options_change_check(struct team *team);
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1394:25: error: expected ')' before string constant
    1394 |         netdev_info(dev, "Port device %s added\n", portname);
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
         |                         )
   drivers/net/team/team_core.c:1396:9: error: expected identifier or '(' before 'return'
    1396 |         return 0;
         |         ^~~~~~
   drivers/net/team/team_core.c:1398:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1398 | err_set_dev_type:
         |                 ^
   drivers/net/team/team_core.c:1403:20: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1403 | err_option_port_add:
         |                    ^
   drivers/net/team/team_core.c:1406:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1406 | err_set_upper_link:
         |                   ^
   drivers/net/team/team_core.c:1409:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1409 | err_handler_register:
         |                     ^
   drivers/net/team/team_core.c:1412:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1412 | err_enable_netpoll:
         |                   ^
   drivers/net/team/team_core.c:1415:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1415 | err_vids_add:
         |             ^
   drivers/net/team/team_core.c:1418:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1418 | err_dev_open:
         |             ^
   drivers/net/team/team_core.c:1420:9: warning: data definition has no type or storage class
    1420 |         team_port_set_orig_dev_addr(port);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1420:9: error: type defaults to 'int' in declaration of 'team_port_set_orig_dev_addr' [-Werror=implicit-int]
   drivers/net/team/team_core.c:1420:9: warning: parameter names (without types) in function declaration
   drivers/net/team/team_core.c:1422:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1422 | err_port_enter:
         |               ^
   drivers/net/team/team_core.c:1425:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
    1425 | err_set_mtu:
         |            ^
   drivers/net/team/team_core.c:1428:9: error: expected identifier or '(' before 'return'
    1428 |         return err;
         |         ^~~~~~
   drivers/net/team/team_core.c:1429:1: error: expected identifier or '(' before '}' token
    1429 | }
         | ^
   drivers/net/team/team_core.c:3077:13: warning: '__team_options_change_check' was used with no prototype before its definition [-Wmissing-prototypes]
    3077 | static void __team_options_change_check(struct team *team)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:3077:13: error: conflicting types for '__team_options_change_check'; have 'void(struct team *)'
   drivers/net/team/team_core.c:1392:9: note: previous declaration of '__team_options_change_check' with type 'int()'
    1392 |         __team_options_change_check(team);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/team/team_core.c:332:13: warning: '__team_options_change_check' used but never defined
     332 | static void __team_options_change_check(struct team *team);
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c: In function 'team_port_add':
   drivers/net/team/team_core.c:1236:9: warning: control reaches end of non-void function [-Wreturn-type]
    1236 |         }
         |         ^
   At top level:
   drivers/net/team/team_core.c:3154:13: warning: '__team_port_change_port_added' defined but not used [-Wunused-function]
    3154 | static void __team_port_change_port_added(struct team_port *port, bool linkup)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:3077:13: warning: '__team_options_change_check' defined but not used [-Wunused-function]
    3077 | static void __team_options_change_check(struct team *team)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/team/team_core.c:1060:13: warning: 'team_port_enable' defined but not used [-Wunused-function]
    1060 | static void team_port_enable(struct team *team,
         |             ^~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/team_port_enter +1304 drivers/net/team/team_core.c

d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1207  
10f3f51d56648f drivers/net/team/team.c      Jiri Pirko       2012-09-21  1208  static void __team_port_change_port_added(struct team_port *port, bool linkup);
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko       2012-08-17  1209  static int team_dev_type_check_change(struct net_device *dev,
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko       2012-08-17  1210  				      struct net_device *port_dev);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1211  
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27  1212  static int team_port_add(struct team *team, struct net_device *port_dev,
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27  1213  			 struct netlink_ext_ack *extack)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1214  {
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng    2026-03-20  1215  	struct net_device *dev = netdev_from_priv(team);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1216  	struct team_port *port;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1217  	char *portname = port_dev->name;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1218  	int err;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1219  
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko       2012-08-17  1220  	if (port_dev->flags & IFF_LOOPBACK) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27  1221  		NL_SET_ERR_MSG(extack, "Loopback device can't be added as a team port");
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko       2012-08-17  1222  		netdev_err(dev, "Device %s is loopback device. Loopback devices can't be added as a team port\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1223  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1224  		return -EINVAL;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1225  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1226  
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1227  		if (port_dev->type == ARPHRD_CAN ||
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1228  		    port_dev->type == ARPHRD_IEEE802154 ||
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1229  		    port_dev->type == ARPHRD_IEEE802154_MONITOR) {
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1230  			NL_SET_ERR_MSG(extack,
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1231  				       "CAN and IEEE 802.15.4 devices can't be added as a team port");
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1232  			netdev_err(dev, "Device %s is CAN or IEEE 802.15.4. These device types can't be added as a team port\n",
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1233  				   portname);
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1234  			return -EINVAL;
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1235  		}
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1236  	}
a97c4fcfc42bce drivers/net/team/team_core.c Jiale Yao        2026-07-28  1237  
acb10eac5100ba drivers/net/team/team.c      Julian Wiedmann  2019-03-29  1238  	if (netif_is_team_port(port_dev)) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27  1239  		NL_SET_ERR_MSG(extack, "Device is already a port of a team device");
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1240  		netdev_err(dev, "Device %s is already a port "
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1241  				"of a team device\n", portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1242  		return -EBUSY;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1243  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1244  
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel     2018-10-01  1245  	if (dev == port_dev) {
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel     2018-10-01  1246  		NL_SET_ERR_MSG(extack, "Cannot enslave team device to itself");
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel     2018-10-01  1247  		netdev_err(dev, "Cannot enslave team device to itself\n");
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel     2018-10-01  1248  		return -EINVAL;
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel     2018-10-01  1249  	}
471b83bd8bbe4e drivers/net/team/team.c      Ido Schimmel     2018-10-01  1250  
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1251  	if (netdev_has_upper_dev(dev, port_dev)) {
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1252  		NL_SET_ERR_MSG(extack, "Device is already an upper device of the team interface");
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1253  		netdev_err(dev, "Device %s is already an upper device of the team interface\n",
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1254  			   portname);
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1255  		return -EBUSY;
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1256  	}
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1257  
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1258  	if (netdev_has_upper_dev(port_dev, dev)) {
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1259  		NL_SET_ERR_MSG(extack, "Device is already a lower device of the team interface");
3fff5da4ca2164 drivers/net/team/team_core.c Octavian Purdila 2024-12-30  1260  		netdev_err(dev, "Device %s is already a lower device of the team interface\n",
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1261  			   portname);
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1262  		return -EBUSY;
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1263  	}
925b0c841e066b drivers/net/team/team.c      Hangbin Liu      2019-04-19  1264  
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1265  	if (port_dev->features & NETIF_F_VLAN_CHALLENGED &&
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1266  	    vlan_uses_dev(dev)) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27  1267  		NL_SET_ERR_MSG(extack, "Device is VLAN challenged and team device has VLAN set up");
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1268  		netdev_err(dev, "Device %s is VLAN challenged and team device has VLAN set up\n",
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1269  			   portname);
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1270  		return -EPERM;
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1271  	}
2c33bb37cb69dc drivers/net/team/team.c      Jiri Pirko       2012-08-23  1272  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1273  	if (port_dev->flags & IFF_UP) {
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27  1274  		NL_SET_ERR_MSG(extack, "Device is up. Set it down before adding it as a team port");
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1275  		netdev_err(dev, "Device %s is up. Set it down before adding it as a team port\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1276  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1277  		return -EBUSY;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1278  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1279  
5149ee58385bdf drivers/net/team/team.c      Jiri Pirko       2012-06-19  1280  	port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
5149ee58385bdf drivers/net/team/team.c      Jiri Pirko       2012-06-19  1281  		       GFP_KERNEL);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1282  	if (!port)
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1283  		return -ENOMEM;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1284  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1285  	port->dev = port_dev;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1286  	port->team = team;
8ff5105a2b9dd0 drivers/net/team/team.c      Jiri Pirko       2012-07-27  1287  	INIT_LIST_HEAD(&port->qom_list);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1288  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1289  	port->orig.mtu = port_dev->mtu;
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1290  	/*
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1291  	 * MTU assignment will be handled in team_dev_type_check_change
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1292  	 * if dev and port_dev are of different types
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1293  	 */
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1294  	if (dev->type == port_dev->type) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1295  		err = dev_set_mtu(port_dev, dev->mtu);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1296  		if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1297  			netdev_dbg(dev, "Error %d calling dev_set_mtu\n", err);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1298  			goto err_set_mtu;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1299  		}
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1300  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1301  
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko       2012-08-17  1302  	memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1303  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11 @1304  	err = team_port_enter(team, port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1305  	if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1306  		netdev_err(dev, "Device %s failed to enter team mode\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1307  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1308  		goto err_port_enter;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1309  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1310  
00f54e68924eaf drivers/net/team/team.c      Petr Machata     2018-12-06  1311  	err = dev_open(port_dev, extack);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1312  	if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1313  		netdev_dbg(dev, "Device %s opening failed\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1314  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1315  		goto err_dev_open;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1316  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1317  
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1318  	err = vlan_vids_add_by_dev(port_dev, dev);
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1319  	if (err) {
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1320  		netdev_err(dev, "Failed to add vlan ids to device %s\n",
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1321  				portname);
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1322  		goto err_vids_add;
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1323  	}
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1324  
9cf2f437ca5b39 drivers/net/team/team.c      Xin Long         2018-04-24 @1325  	err = team_port_enable_netpoll(port);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1326  	if (err) {
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1327  		netdev_err(dev, "Failed to enable netpoll on device %s\n",
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1328  			   portname);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1329  		goto err_enable_netpoll;
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1330  	}
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1331  
fbe168ba91f7c3 drivers/net/team/team.c      Michal Kubeček   2014-11-13  1332  	if (!(dev->features & NETIF_F_LRO))
fbe168ba91f7c3 drivers/net/team/team.c      Michal Kubeček   2014-11-13  1333  		dev_disable_lro(port_dev);
fbe168ba91f7c3 drivers/net/team/team.c      Michal Kubeček   2014-11-13  1334  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1335  	err = netdev_rx_handler_register(port_dev, team_handle_frame,
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11 @1336  					 port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1337  	if (err) {
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1338  		netdev_err(dev, "Device %s failed to register rx_handler\n",
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1339  			   portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1340  		goto err_handler_register;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1341  	}
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1342  
44d15d930bb846 drivers/net/team/team.c      Ido Schimmel     2018-02-27 @1343  	err = team_upper_dev_link(team, port, extack);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1344  	if (err) {
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1345  		netdev_err(dev, "Device %s failed to set upper link\n",
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1346  			   portname);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1347  		goto err_set_upper_link;
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1348  	}
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1349  
35b384bd14f91c drivers/net/team/team.c      Jiri Pirko       2012-06-19 @1350  	err = __team_option_inst_add_port(team, port);
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1351  	if (err) {
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1352  		netdev_err(dev, "Device %s failed to add per-port options\n",
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1353  			   portname);
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1354  		goto err_option_port_add;
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1355  	}
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1356  
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1357  	/* set promiscuity level to new slave */
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1358  	if (dev->flags & IFF_PROMISC) {
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1359  		err = dev_set_promiscuity(port_dev, 1);
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1360  		if (err)
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1361  			goto err_set_slave_promisc;
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1362  	}
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1363  
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1364  	/* set allmulti level to new slave */
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1365  	if (dev->flags & IFF_ALLMULTI) {
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1366  		err = dev_set_allmulti(port_dev, 1);
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1367  		if (err) {
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1368  			if (dev->flags & IFF_PROMISC)
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1369  				dev_set_promiscuity(port_dev, -1);
aee0f01b4f1188 drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-28  1370  			goto err_set_slave_allmulti;
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1371  		}
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1372  	}
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1373  
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1374  	err = team_dev_type_check_change(dev, port_dev);
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1375  	if (err)
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1376  		goto err_set_dev_type;
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1377  
bd60234222b2fd drivers/net/team/team.c      Benjamin Poirier 2022-09-07  1378  	if (dev->flags & IFF_UP) {
982cf3b3999d39 drivers/net/team/team.c      Xin Long         2018-03-26  1379  		netif_addr_lock_bh(dev);
982cf3b3999d39 drivers/net/team/team.c      Xin Long         2018-03-26  1380  		dev_uc_sync_multiple(port_dev, dev);
982cf3b3999d39 drivers/net/team/team.c      Xin Long         2018-03-26  1381  		dev_mc_sync_multiple(port_dev, dev);
982cf3b3999d39 drivers/net/team/team.c      Xin Long         2018-03-26  1382  		netif_addr_unlock_bh(dev);
bd60234222b2fd drivers/net/team/team.c      Benjamin Poirier 2022-09-07  1383  	}
982cf3b3999d39 drivers/net/team/team.c      Xin Long         2018-03-26  1384  
fa6ed31dd913b0 drivers/net/team/team_core.c Marc Harvey      2026-04-09  1385  	WRITE_ONCE(port->tx_index, -1);
19a0b58e506b06 drivers/net/team/team.c      Jiri Pirko       2012-04-20  1386  	list_add_tail_rcu(&port->list, &team->port_list);
72df935d985c15 drivers/net/team/team.c      Jiri Pirko       2013-06-08 @1387  	team_port_enable(team, port);
9027497a25e3c9 drivers/net/team/team_core.c Qingfang Deng    2026-03-20  1388  	netdev_compute_master_upper_features(dev, true);
a6882c1583262d drivers/net/team/team_core.c Jakub Kicinski   2026-06-02  1389  	netdev_lock_ops(port_dev);
8c7a77267eec81 drivers/net/team/team.c      George Wilkie    2019-02-20  1390  	__team_port_change_port_added(port, !!netif_oper_up(port_dev));
a6882c1583262d drivers/net/team/team_core.c Jakub Kicinski   2026-06-02  1391  	netdev_unlock_ops(port_dev);
35b384bd14f91c drivers/net/team/team.c      Jiri Pirko       2012-06-19  1392  	__team_options_change_check(team);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1393  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1394  	netdev_info(dev, "Port device %s added\n", portname);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1395  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1396  	return 0;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1397  
0ae9cfc454ea5e drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-22  1398  err_set_dev_type:
aee0f01b4f1188 drivers/net/team/team_core.c Nikola Z. Ivanov 2025-11-28  1399  err_set_slave_allmulti:
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1400  err_set_slave_promisc:
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1401  	__team_option_inst_del_port(team, port);
43c2adb9df7ddd drivers/net/team/team.c      Hangbin Liu      2019-04-08  1402  
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1403  err_option_port_add:
8fd728566a354f drivers/net/team/team.c      Jiri Pirko       2015-12-03  1404  	team_upper_dev_unlink(team, port);
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1405  
d7d3c05135f37d drivers/net/team/team.c      Jiri Pirko       2014-08-25  1406  err_set_upper_link:
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1407  	netdev_rx_handler_unregister(port_dev);
80f7c6683fe0e8 drivers/net/team/team.c      Jiri Pirko       2012-04-10  1408  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1409  err_handler_register:
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1410  	team_port_disable_netpoll(port);
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1411  
bd2d0837abc020 drivers/net/team/team.c      Jiri Pirko       2012-07-17  1412  err_enable_netpoll:
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1413  	vlan_vids_del_by_dev(port_dev, dev);
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1414  
57459185a19b02 drivers/net/team/team.c      Jiri Pirko       2011-12-08  1415  err_vids_add:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1416  	dev_close(port_dev);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1417  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1418  err_dev_open:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1419  	team_port_leave(team, port);
1d76efe1577b43 drivers/net/team/team.c      Jiri Pirko       2012-08-17  1420  	team_port_set_orig_dev_addr(port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1421  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1422  err_port_enter:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1423  	dev_set_mtu(port_dev, port->orig.mtu);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1424  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1425  err_set_mtu:
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1426  	kfree(port);
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1427  
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1428  	return err;
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1429  }
3d249d4ca7d0ed drivers/net/team/team.c      Jiri Pirko       2011-11-11  1430  

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

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

end of thread, other threads:[~2026-08-05 15:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 15:12 [PATCH v2] team: reject CAN and IEEE 802.15.4 devices in team_port_add Jiale Yao
2026-07-29  9:15 ` Jiri Pirko
2026-07-29 12:11   ` jiale yao
2026-08-05  5:00 ` kernel test robot
2026-08-05 15:42 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox