* 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