team 63 drivers/net/team/team.c static int team_port_set_team_dev_addr(struct team *team, team 66 drivers/net/team/team.c return __set_port_dev_addr(port->dev, team->dev->dev_addr); team 69 drivers/net/team/team.c int team_modeop_port_enter(struct team *team, struct team_port *port) team 71 drivers/net/team/team.c return team_port_set_team_dev_addr(team, port); team 75 drivers/net/team/team.c void team_modeop_port_change_dev_addr(struct team *team, team 78 drivers/net/team/team.c team_port_set_team_dev_addr(team, port); team 116 drivers/net/team/team.c static struct team_option *__team_find_option(struct team *team, team 121 drivers/net/team/team.c list_for_each_entry(option, &team->option_list, list) { team 134 drivers/net/team/team.c static void __team_option_inst_del_option(struct team *team, team 139 drivers/net/team/team.c list_for_each_entry_safe(opt_inst, tmp, &team->option_inst_list, list) { team 145 drivers/net/team/team.c static int __team_option_inst_add(struct team *team, struct team_option *option, team 166 drivers/net/team/team.c list_add_tail(&opt_inst->list, &team->option_inst_list); team 168 drivers/net/team/team.c err = option->init(team, &opt_inst->info); team 177 drivers/net/team/team.c static int __team_option_inst_add_option(struct team *team, team 183 drivers/net/team/team.c err = __team_option_inst_add(team, option, NULL); team 190 drivers/net/team/team.c __team_option_inst_del_option(team, option); team 194 drivers/net/team/team.c static void __team_option_inst_mark_removed_option(struct team *team, team 199 drivers/net/team/team.c list_for_each_entry(opt_inst, &team->option_inst_list, list) { team 207 drivers/net/team/team.c static void __team_option_inst_del_port(struct team *team, team 212 drivers/net/team/team.c list_for_each_entry_safe(opt_inst, tmp, &team->option_inst_list, list) { team 219 drivers/net/team/team.c static int __team_option_inst_add_port(struct team *team, team 225 drivers/net/team/team.c list_for_each_entry(option, &team->option_list, list) { team 228 drivers/net/team/team.c err = __team_option_inst_add(team, option, port); team 235 drivers/net/team/team.c __team_option_inst_del_port(team, port); team 239 drivers/net/team/team.c static void __team_option_inst_mark_removed_port(struct team *team, team 244 drivers/net/team/team.c list_for_each_entry(opt_inst, &team->option_inst_list, list) { team 252 drivers/net/team/team.c static int __team_options_register(struct team *team, team 265 drivers/net/team/team.c if (__team_find_option(team, option->name)) { team 277 drivers/net/team/team.c err = __team_option_inst_add_option(team, dst_opts[i]); team 280 drivers/net/team/team.c list_add_tail(&dst_opts[i]->list, &team->option_list); team 288 drivers/net/team/team.c __team_option_inst_del_option(team, dst_opts[i]); team 299 drivers/net/team/team.c static void __team_options_mark_removed(struct team *team, team 308 drivers/net/team/team.c del_opt = __team_find_option(team, option->name); team 310 drivers/net/team/team.c __team_option_inst_mark_removed_option(team, del_opt); team 314 drivers/net/team/team.c static void __team_options_unregister(struct team *team, team 323 drivers/net/team/team.c del_opt = __team_find_option(team, option->name); team 325 drivers/net/team/team.c __team_option_inst_del_option(team, del_opt); team 332 drivers/net/team/team.c static void __team_options_change_check(struct team *team); team 334 drivers/net/team/team.c int team_options_register(struct team *team, team 340 drivers/net/team/team.c err = __team_options_register(team, option, option_count); team 343 drivers/net/team/team.c __team_options_change_check(team); team 348 drivers/net/team/team.c void team_options_unregister(struct team *team, team 352 drivers/net/team/team.c __team_options_mark_removed(team, option, option_count); team 353 drivers/net/team/team.c __team_options_change_check(team); team 354 drivers/net/team/team.c __team_options_unregister(team, option, option_count); team 358 drivers/net/team/team.c static int team_option_get(struct team *team, team 364 drivers/net/team/team.c return opt_inst->option->getter(team, ctx); team 367 drivers/net/team/team.c static int team_option_set(struct team *team, team 373 drivers/net/team/team.c return opt_inst->option->setter(team, ctx); team 385 drivers/net/team/team.c void team_options_change_check(struct team *team) team 387 drivers/net/team/team.c __team_options_change_check(team); team 498 drivers/net/team/team.c static bool team_dummy_transmit(struct team *team, struct sk_buff *skb) team 504 drivers/net/team/team.c static rx_handler_result_t team_dummy_receive(struct team *team, team 515 drivers/net/team/team.c static bool team_is_mode_set(struct team *team) team 517 drivers/net/team/team.c return team->mode != &__team_no_mode; team 520 drivers/net/team/team.c static void team_set_no_mode(struct team *team) team 522 drivers/net/team/team.c team->user_carrier_enabled = false; team 523 drivers/net/team/team.c team->mode = &__team_no_mode; team 526 drivers/net/team/team.c static void team_adjust_ops(struct team *team) team 533 drivers/net/team/team.c if (!team->en_port_count || !team_is_mode_set(team) || team 534 drivers/net/team/team.c !team->mode->ops->transmit) team 535 drivers/net/team/team.c team->ops.transmit = team_dummy_transmit; team 537 drivers/net/team/team.c team->ops.transmit = team->mode->ops->transmit; team 539 drivers/net/team/team.c if (!team->en_port_count || !team_is_mode_set(team) || team 540 drivers/net/team/team.c !team->mode->ops->receive) team 541 drivers/net/team/team.c team->ops.receive = team_dummy_receive; team 543 drivers/net/team/team.c team->ops.receive = team->mode->ops->receive; team 551 drivers/net/team/team.c static int __team_change_mode(struct team *team, team 555 drivers/net/team/team.c if (team_is_mode_set(team)) { team 556 drivers/net/team/team.c void (*exit_op)(struct team *team) = team->ops.exit; team 559 drivers/net/team/team.c memset(&team->ops, 0, sizeof(struct team_mode_ops)); team 560 drivers/net/team/team.c team_adjust_ops(team); team 563 drivers/net/team/team.c exit_op(team); team 564 drivers/net/team/team.c team_mode_put(team->mode); team 565 drivers/net/team/team.c team_set_no_mode(team); team 567 drivers/net/team/team.c memset(&team->mode_priv, 0, team 568 drivers/net/team/team.c sizeof(struct team) - offsetof(struct team, mode_priv)); team 577 drivers/net/team/team.c err = new_mode->ops->init(team); team 582 drivers/net/team/team.c team->mode = new_mode; team 583 drivers/net/team/team.c memcpy(&team->ops, new_mode->ops, sizeof(struct team_mode_ops)); team 584 drivers/net/team/team.c team_adjust_ops(team); team 589 drivers/net/team/team.c static int team_change_mode(struct team *team, const char *kind) team 592 drivers/net/team/team.c struct net_device *dev = team->dev; team 595 drivers/net/team/team.c if (!list_empty(&team->port_list)) { team 600 drivers/net/team/team.c if (team_is_mode_set(team) && strcmp(team->mode->kind, kind) == 0) { team 611 drivers/net/team/team.c err = __team_change_mode(team, new_mode); team 629 drivers/net/team/team.c struct team *team; team 632 drivers/net/team/team.c team = container_of(work, struct team, notify_peers.dw.work); team 635 drivers/net/team/team.c schedule_delayed_work(&team->notify_peers.dw, 0); team 638 drivers/net/team/team.c val = atomic_dec_if_positive(&team->notify_peers.count_pending); team 643 drivers/net/team/team.c call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, team->dev); team 646 drivers/net/team/team.c schedule_delayed_work(&team->notify_peers.dw, team 647 drivers/net/team/team.c msecs_to_jiffies(team->notify_peers.interval)); team 650 drivers/net/team/team.c static void team_notify_peers(struct team *team) team 652 drivers/net/team/team.c if (!team->notify_peers.count || !netif_running(team->dev)) team 654 drivers/net/team/team.c atomic_add(team->notify_peers.count, &team->notify_peers.count_pending); team 655 drivers/net/team/team.c schedule_delayed_work(&team->notify_peers.dw, 0); team 658 drivers/net/team/team.c static void team_notify_peers_init(struct team *team) team 660 drivers/net/team/team.c INIT_DELAYED_WORK(&team->notify_peers.dw, team_notify_peers_work); team 663 drivers/net/team/team.c static void team_notify_peers_fini(struct team *team) team 665 drivers/net/team/team.c cancel_delayed_work_sync(&team->notify_peers.dw); team 675 drivers/net/team/team.c struct team *team; team 678 drivers/net/team/team.c team = container_of(work, struct team, mcast_rejoin.dw.work); team 681 drivers/net/team/team.c schedule_delayed_work(&team->mcast_rejoin.dw, 0); team 684 drivers/net/team/team.c val = atomic_dec_if_positive(&team->mcast_rejoin.count_pending); team 689 drivers/net/team/team.c call_netdevice_notifiers(NETDEV_RESEND_IGMP, team->dev); team 692 drivers/net/team/team.c schedule_delayed_work(&team->mcast_rejoin.dw, team 693 drivers/net/team/team.c msecs_to_jiffies(team->mcast_rejoin.interval)); team 696 drivers/net/team/team.c static void team_mcast_rejoin(struct team *team) team 698 drivers/net/team/team.c if (!team->mcast_rejoin.count || !netif_running(team->dev)) team 700 drivers/net/team/team.c atomic_add(team->mcast_rejoin.count, &team->mcast_rejoin.count_pending); team 701 drivers/net/team/team.c schedule_delayed_work(&team->mcast_rejoin.dw, 0); team 704 drivers/net/team/team.c static void team_mcast_rejoin_init(struct team *team) team 706 drivers/net/team/team.c INIT_DELAYED_WORK(&team->mcast_rejoin.dw, team_mcast_rejoin_work); team 709 drivers/net/team/team.c static void team_mcast_rejoin_fini(struct team *team) team 711 drivers/net/team/team.c cancel_delayed_work_sync(&team->mcast_rejoin.dw); team 724 drivers/net/team/team.c struct team *team; team 734 drivers/net/team/team.c team = port->team; team 739 drivers/net/team/team.c res = team->ops.receive(team, port, skb); team 744 drivers/net/team/team.c pcpu_stats = this_cpu_ptr(team->pcpu_stats); team 752 drivers/net/team/team.c skb->dev = team->dev; team 754 drivers/net/team/team.c this_cpu_inc(team->pcpu_stats->rx_nohandler); team 756 drivers/net/team/team.c this_cpu_inc(team->pcpu_stats->rx_dropped); team 767 drivers/net/team/team.c static int team_queue_override_init(struct team *team) team 770 drivers/net/team/team.c unsigned int queue_cnt = team->dev->num_tx_queues - 1; team 779 drivers/net/team/team.c team->qom_lists = listarr; team 785 drivers/net/team/team.c static void team_queue_override_fini(struct team *team) team 787 drivers/net/team/team.c kfree(team->qom_lists); team 790 drivers/net/team/team.c static struct list_head *__team_get_qom_list(struct team *team, u16 queue_id) team 792 drivers/net/team/team.c return &team->qom_lists[queue_id - 1]; team 798 drivers/net/team/team.c static bool team_queue_override_transmit(struct team *team, struct sk_buff *skb) team 803 drivers/net/team/team.c if (!team->queue_override_enabled || !skb->queue_mapping) team 805 drivers/net/team/team.c qom_list = __team_get_qom_list(team, skb->queue_mapping); team 807 drivers/net/team/team.c if (!team_dev_queue_xmit(team, port, skb)) team 813 drivers/net/team/team.c static void __team_queue_override_port_del(struct team *team, team 833 drivers/net/team/team.c static void __team_queue_override_port_add(struct team *team, team 842 drivers/net/team/team.c qom_list = __team_get_qom_list(team, port->queue_id); team 852 drivers/net/team/team.c static void __team_queue_override_enabled_check(struct team *team) team 857 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) { team 863 drivers/net/team/team.c if (enabled == team->queue_override_enabled) team 865 drivers/net/team/team.c netdev_dbg(team->dev, "%s queue override\n", team 867 drivers/net/team/team.c team->queue_override_enabled = enabled; team 870 drivers/net/team/team.c static void team_queue_override_port_prio_changed(struct team *team, team 875 drivers/net/team/team.c __team_queue_override_port_del(team, port); team 876 drivers/net/team/team.c __team_queue_override_port_add(team, port); team 877 drivers/net/team/team.c __team_queue_override_enabled_check(team); team 880 drivers/net/team/team.c static void team_queue_override_port_change_queue_id(struct team *team, team 885 drivers/net/team/team.c __team_queue_override_port_del(team, port); team 887 drivers/net/team/team.c __team_queue_override_port_add(team, port); team 888 drivers/net/team/team.c __team_queue_override_enabled_check(team); team 894 drivers/net/team/team.c static void team_queue_override_port_add(struct team *team, team 897 drivers/net/team/team.c __team_queue_override_port_add(team, port); team 898 drivers/net/team/team.c __team_queue_override_enabled_check(team); team 901 drivers/net/team/team.c static void team_queue_override_port_del(struct team *team, team 904 drivers/net/team/team.c __team_queue_override_port_del(team, port); team 905 drivers/net/team/team.c __team_queue_override_enabled_check(team); team 913 drivers/net/team/team.c static bool team_port_find(const struct team *team, team 918 drivers/net/team/team.c list_for_each_entry(cur, &team->port_list, list) team 930 drivers/net/team/team.c static void team_port_enable(struct team *team, team 935 drivers/net/team/team.c port->index = team->en_port_count++; team 937 drivers/net/team/team.c team_port_index_hash(team, port->index)); team 938 drivers/net/team/team.c team_adjust_ops(team); team 939 drivers/net/team/team.c team_queue_override_port_add(team, port); team 940 drivers/net/team/team.c if (team->ops.port_enabled) team 941 drivers/net/team/team.c team->ops.port_enabled(team, port); team 942 drivers/net/team/team.c team_notify_peers(team); team 943 drivers/net/team/team.c team_mcast_rejoin(team); team 947 drivers/net/team/team.c static void __reconstruct_port_hlist(struct team *team, int rm_index) team 952 drivers/net/team/team.c for (i = rm_index + 1; i < team->en_port_count; i++) { team 953 drivers/net/team/team.c port = team_get_port_by_index(team, i); team 957 drivers/net/team/team.c team_port_index_hash(team, port->index)); team 961 drivers/net/team/team.c static void team_port_disable(struct team *team, team 966 drivers/net/team/team.c if (team->ops.port_disabled) team 967 drivers/net/team/team.c team->ops.port_disabled(team, port); team 969 drivers/net/team/team.c __reconstruct_port_hlist(team, port->index); team 971 drivers/net/team/team.c team->en_port_count--; team 972 drivers/net/team/team.c team_queue_override_port_del(team, port); team 973 drivers/net/team/team.c team_adjust_ops(team); team 984 drivers/net/team/team.c static void __team_compute_features(struct team *team) team 994 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) { team 1009 drivers/net/team/team.c team->dev->vlan_features = vlan_features; team 1010 drivers/net/team/team.c team->dev->hw_enc_features = enc_features | NETIF_F_GSO_ENCAP_ALL | team 1014 drivers/net/team/team.c team->dev->hard_header_len = max_hard_header_len; team 1016 drivers/net/team/team.c team->dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; team 1018 drivers/net/team/team.c team->dev->priv_flags |= IFF_XMIT_DST_RELEASE; team 1021 drivers/net/team/team.c static void team_compute_features(struct team *team) team 1023 drivers/net/team/team.c mutex_lock(&team->lock); team 1024 drivers/net/team/team.c __team_compute_features(team); team 1025 drivers/net/team/team.c mutex_unlock(&team->lock); team 1026 drivers/net/team/team.c netdev_change_features(team->dev); team 1029 drivers/net/team/team.c static int team_port_enter(struct team *team, struct team_port *port) team 1033 drivers/net/team/team.c dev_hold(team->dev); team 1034 drivers/net/team/team.c if (team->ops.port_enter) { team 1035 drivers/net/team/team.c err = team->ops.port_enter(team, port); team 1037 drivers/net/team/team.c netdev_err(team->dev, "Device %s failed to enter team mode\n", team 1046 drivers/net/team/team.c dev_put(team->dev); team 1051 drivers/net/team/team.c static void team_port_leave(struct team *team, struct team_port *port) team 1053 drivers/net/team/team.c if (team->ops.port_leave) team 1054 drivers/net/team/team.c team->ops.port_leave(team, port); team 1055 drivers/net/team/team.c dev_put(team->dev); team 1079 drivers/net/team/team.c if (!port->team->dev->npinfo) team 1105 drivers/net/team/team.c static int team_upper_dev_link(struct team *team, struct team_port *port, team 1111 drivers/net/team/team.c lag_upper_info.tx_type = team->mode->lag_tx_type; team 1113 drivers/net/team/team.c err = netdev_master_upper_dev_link(port->dev, team->dev, NULL, team 1121 drivers/net/team/team.c static void team_upper_dev_unlink(struct team *team, struct team_port *port) team 1123 drivers/net/team/team.c netdev_upper_dev_unlink(port->dev, team->dev); team 1131 drivers/net/team/team.c static int team_port_add(struct team *team, struct net_device *port_dev, team 1134 drivers/net/team/team.c struct net_device *dev = team->dev; team 1185 drivers/net/team/team.c port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size, team 1191 drivers/net/team/team.c port->team = team; team 1203 drivers/net/team/team.c err = team_port_enter(team, port); team 1242 drivers/net/team/team.c err = team_upper_dev_link(team, port, extack); team 1249 drivers/net/team/team.c err = __team_option_inst_add_port(team, port); team 1279 drivers/net/team/team.c list_add_tail_rcu(&port->list, &team->port_list); team 1280 drivers/net/team/team.c team_port_enable(team, port); team 1281 drivers/net/team/team.c __team_compute_features(team); team 1283 drivers/net/team/team.c __team_options_change_check(team); team 1290 drivers/net/team/team.c __team_option_inst_del_port(team, port); team 1293 drivers/net/team/team.c team_upper_dev_unlink(team, port); team 1308 drivers/net/team/team.c team_port_leave(team, port); team 1322 drivers/net/team/team.c static int team_port_del(struct team *team, struct net_device *port_dev) team 1324 drivers/net/team/team.c struct net_device *dev = team->dev; team 1329 drivers/net/team/team.c if (!port || !team_port_find(team, port)) { team 1335 drivers/net/team/team.c team_port_disable(team, port); team 1343 drivers/net/team/team.c team_upper_dev_unlink(team, port); team 1350 drivers/net/team/team.c team_port_leave(team, port); team 1352 drivers/net/team/team.c __team_option_inst_mark_removed_port(team, port); team 1353 drivers/net/team/team.c __team_options_change_check(team); team 1354 drivers/net/team/team.c __team_option_inst_del_port(team, port); team 1361 drivers/net/team/team.c __team_compute_features(team); team 1371 drivers/net/team/team.c static int team_mode_option_get(struct team *team, struct team_gsetter_ctx *ctx) team 1373 drivers/net/team/team.c ctx->data.str_val = team->mode->kind; team 1377 drivers/net/team/team.c static int team_mode_option_set(struct team *team, struct team_gsetter_ctx *ctx) team 1379 drivers/net/team/team.c return team_change_mode(team, ctx->data.str_val); team 1382 drivers/net/team/team.c static int team_notify_peers_count_get(struct team *team, team 1385 drivers/net/team/team.c ctx->data.u32_val = team->notify_peers.count; team 1389 drivers/net/team/team.c static int team_notify_peers_count_set(struct team *team, team 1392 drivers/net/team/team.c team->notify_peers.count = ctx->data.u32_val; team 1396 drivers/net/team/team.c static int team_notify_peers_interval_get(struct team *team, team 1399 drivers/net/team/team.c ctx->data.u32_val = team->notify_peers.interval; team 1403 drivers/net/team/team.c static int team_notify_peers_interval_set(struct team *team, team 1406 drivers/net/team/team.c team->notify_peers.interval = ctx->data.u32_val; team 1410 drivers/net/team/team.c static int team_mcast_rejoin_count_get(struct team *team, team 1413 drivers/net/team/team.c ctx->data.u32_val = team->mcast_rejoin.count; team 1417 drivers/net/team/team.c static int team_mcast_rejoin_count_set(struct team *team, team 1420 drivers/net/team/team.c team->mcast_rejoin.count = ctx->data.u32_val; team 1424 drivers/net/team/team.c static int team_mcast_rejoin_interval_get(struct team *team, team 1427 drivers/net/team/team.c ctx->data.u32_val = team->mcast_rejoin.interval; team 1431 drivers/net/team/team.c static int team_mcast_rejoin_interval_set(struct team *team, team 1434 drivers/net/team/team.c team->mcast_rejoin.interval = ctx->data.u32_val; team 1438 drivers/net/team/team.c static int team_port_en_option_get(struct team *team, team 1447 drivers/net/team/team.c static int team_port_en_option_set(struct team *team, team 1453 drivers/net/team/team.c team_port_enable(team, port); team 1455 drivers/net/team/team.c team_port_disable(team, port); team 1459 drivers/net/team/team.c static int team_user_linkup_option_get(struct team *team, team 1468 drivers/net/team/team.c static void __team_carrier_check(struct team *team); team 1470 drivers/net/team/team.c static int team_user_linkup_option_set(struct team *team, team 1477 drivers/net/team/team.c __team_carrier_check(port->team); team 1481 drivers/net/team/team.c static int team_user_linkup_en_option_get(struct team *team, team 1490 drivers/net/team/team.c static int team_user_linkup_en_option_set(struct team *team, team 1497 drivers/net/team/team.c __team_carrier_check(port->team); team 1501 drivers/net/team/team.c static int team_priority_option_get(struct team *team, team 1510 drivers/net/team/team.c static int team_priority_option_set(struct team *team, team 1519 drivers/net/team/team.c team_queue_override_port_prio_changed(team, port); team 1523 drivers/net/team/team.c static int team_queue_id_option_get(struct team *team, team 1532 drivers/net/team/team.c static int team_queue_id_option_set(struct team *team, team 1540 drivers/net/team/team.c if (new_queue_id >= team->dev->real_num_tx_queues) team 1542 drivers/net/team/team.c team_queue_override_port_change_queue_id(team, port, new_queue_id); team 1617 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1621 drivers/net/team/team.c team->dev = dev; team 1622 drivers/net/team/team.c team_set_no_mode(team); team 1624 drivers/net/team/team.c team->pcpu_stats = netdev_alloc_pcpu_stats(struct team_pcpu_stats); team 1625 drivers/net/team/team.c if (!team->pcpu_stats) team 1629 drivers/net/team/team.c INIT_HLIST_HEAD(&team->en_port_hlist[i]); team 1630 drivers/net/team/team.c INIT_LIST_HEAD(&team->port_list); team 1631 drivers/net/team/team.c err = team_queue_override_init(team); team 1635 drivers/net/team/team.c team_adjust_ops(team); team 1637 drivers/net/team/team.c INIT_LIST_HEAD(&team->option_list); team 1638 drivers/net/team/team.c INIT_LIST_HEAD(&team->option_inst_list); team 1640 drivers/net/team/team.c team_notify_peers_init(team); team 1641 drivers/net/team/team.c team_mcast_rejoin_init(team); team 1643 drivers/net/team/team.c err = team_options_register(team, team_options, ARRAY_SIZE(team_options)); team 1648 drivers/net/team/team.c lockdep_register_key(&team->team_lock_key); team 1649 drivers/net/team/team.c __mutex_init(&team->lock, "team->team_lock_key", &team->team_lock_key); team 1654 drivers/net/team/team.c team_mcast_rejoin_fini(team); team 1655 drivers/net/team/team.c team_notify_peers_fini(team); team 1656 drivers/net/team/team.c team_queue_override_fini(team); team 1658 drivers/net/team/team.c free_percpu(team->pcpu_stats); team 1665 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1669 drivers/net/team/team.c mutex_lock(&team->lock); team 1670 drivers/net/team/team.c list_for_each_entry_safe(port, tmp, &team->port_list, list) team 1671 drivers/net/team/team.c team_port_del(team, port->dev); team 1673 drivers/net/team/team.c __team_change_mode(team, NULL); /* cleanup */ team 1674 drivers/net/team/team.c __team_options_unregister(team, team_options, ARRAY_SIZE(team_options)); team 1675 drivers/net/team/team.c team_mcast_rejoin_fini(team); team 1676 drivers/net/team/team.c team_notify_peers_fini(team); team 1677 drivers/net/team/team.c team_queue_override_fini(team); team 1678 drivers/net/team/team.c mutex_unlock(&team->lock); team 1680 drivers/net/team/team.c lockdep_unregister_key(&team->team_lock_key); team 1685 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1687 drivers/net/team/team.c free_percpu(team->pcpu_stats); team 1705 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1709 drivers/net/team/team.c tx_success = team_queue_override_transmit(team, skb); team 1711 drivers/net/team/team.c tx_success = team->ops.transmit(team, skb); team 1715 drivers/net/team/team.c pcpu_stats = this_cpu_ptr(team->pcpu_stats); team 1721 drivers/net/team/team.c this_cpu_inc(team->pcpu_stats->tx_dropped); team 1753 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1758 drivers/net/team/team.c list_for_each_entry_rcu(port, &team->port_list, list) { team 1773 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1777 drivers/net/team/team.c list_for_each_entry_rcu(port, &team->port_list, list) { team 1787 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1793 drivers/net/team/team.c mutex_lock(&team->lock); team 1794 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) team 1795 drivers/net/team/team.c if (team->ops.port_change_dev_addr) team 1796 drivers/net/team/team.c team->ops.port_change_dev_addr(team, port); team 1797 drivers/net/team/team.c mutex_unlock(&team->lock); team 1803 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1811 drivers/net/team/team.c mutex_lock(&team->lock); team 1812 drivers/net/team/team.c team->port_mtu_change_allowed = true; team 1813 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) { team 1821 drivers/net/team/team.c team->port_mtu_change_allowed = false; team 1822 drivers/net/team/team.c mutex_unlock(&team->lock); team 1829 drivers/net/team/team.c list_for_each_entry_continue_reverse(port, &team->port_list, list) team 1831 drivers/net/team/team.c team->port_mtu_change_allowed = false; team 1832 drivers/net/team/team.c mutex_unlock(&team->lock); team 1840 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1848 drivers/net/team/team.c p = per_cpu_ptr(team->pcpu_stats, i); team 1878 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1886 drivers/net/team/team.c mutex_lock(&team->lock); team 1887 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) { team 1892 drivers/net/team/team.c mutex_unlock(&team->lock); team 1897 drivers/net/team/team.c list_for_each_entry_continue_reverse(port, &team->port_list, list) team 1899 drivers/net/team/team.c mutex_unlock(&team->lock); team 1906 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1909 drivers/net/team/team.c mutex_lock(&team->lock); team 1910 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) team 1912 drivers/net/team/team.c mutex_unlock(&team->lock); team 1922 drivers/net/team/team.c static void __team_netpoll_cleanup(struct team *team) team 1926 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) team 1932 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1934 drivers/net/team/team.c mutex_lock(&team->lock); team 1935 drivers/net/team/team.c __team_netpoll_cleanup(team); team 1936 drivers/net/team/team.c mutex_unlock(&team->lock); team 1942 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1946 drivers/net/team/team.c mutex_lock(&team->lock); team 1947 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) { team 1950 drivers/net/team/team.c __team_netpoll_cleanup(team); team 1954 drivers/net/team/team.c mutex_unlock(&team->lock); team 1962 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1965 drivers/net/team/team.c mutex_lock(&team->lock); team 1966 drivers/net/team/team.c err = team_port_add(team, port_dev, extack); team 1967 drivers/net/team/team.c mutex_unlock(&team->lock); team 1977 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 1980 drivers/net/team/team.c mutex_lock(&team->lock); team 1981 drivers/net/team/team.c err = team_port_del(team, port_dev); team 1982 drivers/net/team/team.c mutex_unlock(&team->lock); team 1988 drivers/net/team/team.c lockdep_unregister_key(&team->team_lock_key); team 1989 drivers/net/team/team.c lockdep_register_key(&team->team_lock_key); team 1990 drivers/net/team/team.c lockdep_set_class(&team->lock, &team->team_lock_key); team 2001 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 2009 drivers/net/team/team.c list_for_each_entry_rcu(port, &team->port_list, list) { team 2023 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 2025 drivers/net/team/team.c team->user_carrier_enabled = true; team 2074 drivers/net/team/team.c struct team *team= netdev_priv(dev); team 2082 drivers/net/team/team.c list_for_each_entry_rcu(port, &team->port_list, list) { team 2123 drivers/net/team/team.c struct team *team = netdev_priv(dev); team 2129 drivers/net/team/team.c if (!list_empty(&team->port_list)) { team 2215 drivers/net/team/team.c .priv_size = sizeof(struct team), team 2282 drivers/net/team/team.c static struct team *team_nl_team_get(struct genl_info *info) team 2287 drivers/net/team/team.c struct team *team; team 2300 drivers/net/team/team.c team = netdev_priv(dev); team 2301 drivers/net/team/team.c mutex_lock(&team->lock); team 2302 drivers/net/team/team.c return team; team 2305 drivers/net/team/team.c static void team_nl_team_put(struct team *team) team 2307 drivers/net/team/team.c mutex_unlock(&team->lock); team 2308 drivers/net/team/team.c dev_put(team->dev); team 2312 drivers/net/team/team.c struct team *team, u32 portid); team 2314 drivers/net/team/team.c static int team_nl_send_unicast(struct sk_buff *skb, struct team *team, u32 portid) team 2316 drivers/net/team/team.c return genlmsg_unicast(dev_net(team->dev), skb, portid); team 2319 drivers/net/team/team.c static int team_nl_fill_one_option_get(struct sk_buff *skb, struct team *team, team 2329 drivers/net/team/team.c err = team_option_get(team, opt_inst, &ctx); team 2401 drivers/net/team/team.c struct team *team, u32 portid, team 2407 drivers/net/team/team.c err = send_func(*pskb, team, portid); team 2417 drivers/net/team/team.c static int team_nl_send_options_get(struct team *team, u32 portid, u32 seq, team 2434 drivers/net/team/team.c err = __send_and_alloc_skb(&skb, team, portid, send_func); team 2445 drivers/net/team/team.c if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex)) team 2454 drivers/net/team/team.c err = team_nl_fill_one_option_get(skb, team, opt_inst); team 2475 drivers/net/team/team.c err = __send_and_alloc_skb(&skb, team, portid, send_func); team 2481 drivers/net/team/team.c return send_func(skb, team, portid); team 2492 drivers/net/team/team.c struct team *team; team 2497 drivers/net/team/team.c team = team_nl_team_get(info); team 2498 drivers/net/team/team.c if (!team) team 2501 drivers/net/team/team.c list_for_each_entry(opt_inst, &team->option_inst_list, list) team 2503 drivers/net/team/team.c err = team_nl_send_options_get(team, info->snd_portid, info->snd_seq, team 2507 drivers/net/team/team.c team_nl_team_put(team); team 2512 drivers/net/team/team.c static int team_nl_send_event_options_get(struct team *team, team 2517 drivers/net/team/team.c struct team *team; team 2524 drivers/net/team/team.c team = team_nl_team_get(info); team 2525 drivers/net/team/team.c if (!team) { team 2602 drivers/net/team/team.c list_for_each_entry(opt_inst, &team->option_inst_list, list) { team 2643 drivers/net/team/team.c err = team_option_set(team, opt_inst, &ctx); team 2654 drivers/net/team/team.c err = team_nl_send_event_options_get(team, &opt_inst_list); team 2660 drivers/net/team/team.c team_nl_team_put(team); team 2696 drivers/net/team/team.c static int team_nl_send_port_list_get(struct team *team, u32 portid, u32 seq, team 2709 drivers/net/team/team.c port = list_first_entry_or_null(&team->port_list, team 2713 drivers/net/team/team.c err = __send_and_alloc_skb(&skb, team, portid, send_func); team 2724 drivers/net/team/team.c if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex)) team 2741 drivers/net/team/team.c list_for_each_entry_from(port, &team->port_list, list) { team 2764 drivers/net/team/team.c err = __send_and_alloc_skb(&skb, team, portid, send_func); team 2770 drivers/net/team/team.c return send_func(skb, team, portid); team 2782 drivers/net/team/team.c struct team *team; team 2785 drivers/net/team/team.c team = team_nl_team_get(info); team 2786 drivers/net/team/team.c if (!team) team 2789 drivers/net/team/team.c err = team_nl_send_port_list_get(team, info->snd_portid, info->snd_seq, team 2792 drivers/net/team/team.c team_nl_team_put(team); team 2841 drivers/net/team/team.c struct team *team, u32 portid) team 2843 drivers/net/team/team.c return genlmsg_multicast_netns(&team_nl_family, dev_net(team->dev), team 2847 drivers/net/team/team.c static int team_nl_send_event_options_get(struct team *team, team 2850 drivers/net/team/team.c return team_nl_send_options_get(team, 0, 0, 0, team_nl_send_multicast, team 2854 drivers/net/team/team.c static int team_nl_send_event_port_get(struct team *team, team 2857 drivers/net/team/team.c return team_nl_send_port_list_get(team, 0, 0, 0, team_nl_send_multicast, team 2876 drivers/net/team/team.c static void __team_options_change_check(struct team *team) team 2882 drivers/net/team/team.c list_for_each_entry(opt_inst, &team->option_inst_list, list) { team 2886 drivers/net/team/team.c err = team_nl_send_event_options_get(team, &sel_opt_inst_list); team 2888 drivers/net/team/team.c netdev_warn(team->dev, "Failed to send options change via netlink (err %d)\n", team 2915 drivers/net/team/team.c err = team_nl_send_event_port_get(port->team, port); team 2917 drivers/net/team/team.c netdev_warn(port->team->dev, "Failed to send port change of device %s via netlink (err %d)\n", team 2922 drivers/net/team/team.c static void __team_carrier_check(struct team *team) team 2927 drivers/net/team/team.c if (team->user_carrier_enabled) team 2931 drivers/net/team/team.c list_for_each_entry(port, &team->port_list, list) { team 2939 drivers/net/team/team.c netif_carrier_on(team->dev); team 2941 drivers/net/team/team.c netif_carrier_off(team->dev); team 2948 drivers/net/team/team.c __team_carrier_check(port->team); team 2954 drivers/net/team/team.c __team_carrier_check(port->team); team 2961 drivers/net/team/team.c __team_carrier_check(port->team); team 2966 drivers/net/team/team.c struct team *team = port->team; team 2968 drivers/net/team/team.c mutex_lock(&team->lock); team 2970 drivers/net/team/team.c mutex_unlock(&team->lock); team 3002 drivers/net/team/team.c team_del_slave(port->team->dev, dev); team 3005 drivers/net/team/team.c team_compute_features(port->team); team 3009 drivers/net/team/team.c if (!port->team->port_mtu_change_allowed) team 3017 drivers/net/team/team.c call_netdevice_notifiers(event, port->team->dev); team 21 drivers/net/team/team_mode_activebackup.c static struct ab_priv *ab_priv(struct team *team) team 23 drivers/net/team/team_mode_activebackup.c return (struct ab_priv *) &team->mode_priv; team 26 drivers/net/team/team_mode_activebackup.c static rx_handler_result_t ab_receive(struct team *team, struct team_port *port, team 30 drivers/net/team/team_mode_activebackup.c active_port = rcu_dereference(ab_priv(team)->active_port); team 36 drivers/net/team/team_mode_activebackup.c static bool ab_transmit(struct team *team, struct sk_buff *skb) team 40 drivers/net/team/team_mode_activebackup.c active_port = rcu_dereference_bh(ab_priv(team)->active_port); team 43 drivers/net/team/team_mode_activebackup.c if (team_dev_queue_xmit(team, active_port, skb)) team 52 drivers/net/team/team_mode_activebackup.c static void ab_port_leave(struct team *team, struct team_port *port) team 54 drivers/net/team/team_mode_activebackup.c if (ab_priv(team)->active_port == port) { team 55 drivers/net/team/team_mode_activebackup.c RCU_INIT_POINTER(ab_priv(team)->active_port, NULL); team 56 drivers/net/team/team_mode_activebackup.c team_option_inst_set_change(ab_priv(team)->ap_opt_inst_info); team 60 drivers/net/team/team_mode_activebackup.c static int ab_active_port_init(struct team *team, team 63 drivers/net/team/team_mode_activebackup.c ab_priv(team)->ap_opt_inst_info = info; team 67 drivers/net/team/team_mode_activebackup.c static int ab_active_port_get(struct team *team, struct team_gsetter_ctx *ctx) team 71 drivers/net/team/team_mode_activebackup.c active_port = rcu_dereference_protected(ab_priv(team)->active_port, team 72 drivers/net/team/team_mode_activebackup.c lockdep_is_held(&team->lock)); team 80 drivers/net/team/team_mode_activebackup.c static int ab_active_port_set(struct team *team, struct team_gsetter_ctx *ctx) team 84 drivers/net/team/team_mode_activebackup.c list_for_each_entry(port, &team->port_list, list) { team 86 drivers/net/team/team_mode_activebackup.c rcu_assign_pointer(ab_priv(team)->active_port, port); team 103 drivers/net/team/team_mode_activebackup.c static int ab_init(struct team *team) team 105 drivers/net/team/team_mode_activebackup.c return team_options_register(team, ab_options, ARRAY_SIZE(ab_options)); team 108 drivers/net/team/team_mode_activebackup.c static void ab_exit(struct team *team) team 110 drivers/net/team/team_mode_activebackup.c team_options_unregister(team, ab_options, ARRAY_SIZE(ab_options)); team 15 drivers/net/team/team_mode_broadcast.c static bool bc_transmit(struct team *team, struct sk_buff *skb) team 23 drivers/net/team/team_mode_broadcast.c list_for_each_entry_rcu(cur, &team->port_list, list) { team 28 drivers/net/team/team_mode_broadcast.c ret = !team_dev_queue_xmit(team, last, team 38 drivers/net/team/team_mode_broadcast.c ret = !team_dev_queue_xmit(team, last, skb); team 17 drivers/net/team/team_mode_loadbalance.c static rx_handler_result_t lb_receive(struct team *team, struct team_port *port, team 60 drivers/net/team/team_mode_loadbalance.c struct team *team; team 77 drivers/net/team/team_mode_loadbalance.c static struct lb_priv *get_lb_priv(struct team *team) team 79 drivers/net/team/team_mode_loadbalance.c return (struct lb_priv *) &team->mode_priv; team 98 drivers/net/team/team_mode_loadbalance.c static void lb_tx_hash_to_port_mapping_null_port(struct team *team, team 101 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 116 drivers/net/team/team_mode_loadbalance.c team_options_change_check(team); team 120 drivers/net/team/team_mode_loadbalance.c static struct team_port *lb_hash_select_tx_port(struct team *team, team 125 drivers/net/team/team_mode_loadbalance.c int port_index = team_num_to_port_index(team, hash); team 127 drivers/net/team/team_mode_loadbalance.c return team_get_port_by_index_rcu(team, port_index); team 131 drivers/net/team/team_mode_loadbalance.c static struct team_port *lb_htpm_select_tx_port(struct team *team, team 142 drivers/net/team/team_mode_loadbalance.c return lb_hash_select_tx_port(team, lb_priv, skb, hash); team 222 drivers/net/team/team_mode_loadbalance.c static bool lb_transmit(struct team *team, struct sk_buff *skb) team 224 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 232 drivers/net/team/team_mode_loadbalance.c port = select_tx_port_func(team, lb_priv, skb, hash); team 235 drivers/net/team/team_mode_loadbalance.c if (team_dev_queue_xmit(team, port, skb)) team 245 drivers/net/team/team_mode_loadbalance.c static int lb_bpf_func_get(struct team *team, struct team_gsetter_ctx *ctx) team 247 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 287 drivers/net/team/team_mode_loadbalance.c static int lb_bpf_func_set(struct team *team, struct team_gsetter_ctx *ctx) team 289 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 311 drivers/net/team/team_mode_loadbalance.c lockdep_is_held(&team->lock)); team 324 drivers/net/team/team_mode_loadbalance.c static void lb_bpf_func_free(struct team *team) team 326 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 334 drivers/net/team/team_mode_loadbalance.c lockdep_is_held(&team->lock)); team 338 drivers/net/team/team_mode_loadbalance.c static int lb_tx_method_get(struct team *team, struct team_gsetter_ctx *ctx) team 340 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 345 drivers/net/team/team_mode_loadbalance.c lockdep_is_held(&team->lock)); team 352 drivers/net/team/team_mode_loadbalance.c static int lb_tx_method_set(struct team *team, struct team_gsetter_ctx *ctx) team 354 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 364 drivers/net/team/team_mode_loadbalance.c static int lb_tx_hash_to_port_mapping_init(struct team *team, team 367 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 374 drivers/net/team/team_mode_loadbalance.c static int lb_tx_hash_to_port_mapping_get(struct team *team, team 377 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 386 drivers/net/team/team_mode_loadbalance.c static int lb_tx_hash_to_port_mapping_set(struct team *team, team 389 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 393 drivers/net/team/team_mode_loadbalance.c list_for_each_entry(port, &team->port_list, list) { team 404 drivers/net/team/team_mode_loadbalance.c static int lb_hash_stats_init(struct team *team, team 407 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 414 drivers/net/team/team_mode_loadbalance.c static int lb_hash_stats_get(struct team *team, struct team_gsetter_ctx *ctx) team 416 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 424 drivers/net/team/team_mode_loadbalance.c static int lb_port_stats_init(struct team *team, team 434 drivers/net/team/team_mode_loadbalance.c static int lb_port_stats_get(struct team *team, struct team_gsetter_ctx *ctx) team 451 drivers/net/team/team_mode_loadbalance.c struct team *team) team 477 drivers/net/team/team_mode_loadbalance.c struct team *team; team 491 drivers/net/team/team_mode_loadbalance.c team = lb_priv_ex->team; team 492 drivers/net/team/team_mode_loadbalance.c lb_priv = get_lb_priv(team); team 494 drivers/net/team/team_mode_loadbalance.c if (!mutex_trylock(&team->lock)) { team 508 drivers/net/team/team_mode_loadbalance.c changed |= __lb_stats_info_refresh_check(s_info, team); team 511 drivers/net/team/team_mode_loadbalance.c list_for_each_entry(port, &team->port_list, list) { team 522 drivers/net/team/team_mode_loadbalance.c changed |= __lb_stats_info_refresh_check(s_info, team); team 526 drivers/net/team/team_mode_loadbalance.c team_options_change_check(team); team 531 drivers/net/team/team_mode_loadbalance.c mutex_unlock(&team->lock); team 534 drivers/net/team/team_mode_loadbalance.c static int lb_stats_refresh_interval_get(struct team *team, team 537 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 543 drivers/net/team/team_mode_loadbalance.c static int lb_stats_refresh_interval_set(struct team *team, team 546 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 603 drivers/net/team/team_mode_loadbalance.c static int lb_init(struct team *team) team 605 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 617 drivers/net/team/team_mode_loadbalance.c lb_priv->ex->team = team; team 634 drivers/net/team/team_mode_loadbalance.c err = team_options_register(team, lb_options, ARRAY_SIZE(lb_options)); team 646 drivers/net/team/team_mode_loadbalance.c static void lb_exit(struct team *team) team 648 drivers/net/team/team_mode_loadbalance.c struct lb_priv *lb_priv = get_lb_priv(team); team 650 drivers/net/team/team_mode_loadbalance.c team_options_unregister(team, lb_options, team 652 drivers/net/team/team_mode_loadbalance.c lb_bpf_func_free(team); team 658 drivers/net/team/team_mode_loadbalance.c static int lb_port_enter(struct team *team, struct team_port *port) team 668 drivers/net/team/team_mode_loadbalance.c static void lb_port_leave(struct team *team, struct team_port *port) team 675 drivers/net/team/team_mode_loadbalance.c static void lb_port_disabled(struct team *team, struct team_port *port) team 677 drivers/net/team/team_mode_loadbalance.c lb_tx_hash_to_port_mapping_null_port(team, port); team 14 drivers/net/team/team_mode_random.c static bool rnd_transmit(struct team *team, struct sk_buff *skb) team 19 drivers/net/team/team_mode_random.c port_index = prandom_u32_max(team->en_port_count); team 20 drivers/net/team/team_mode_random.c port = team_get_port_by_index_rcu(team, port_index); team 23 drivers/net/team/team_mode_random.c port = team_get_first_port_txable_rcu(team, port); team 26 drivers/net/team/team_mode_random.c if (team_dev_queue_xmit(team, port, skb)) team 19 drivers/net/team/team_mode_roundrobin.c static struct rr_priv *rr_priv(struct team *team) team 21 drivers/net/team/team_mode_roundrobin.c return (struct rr_priv *) &team->mode_priv; team 24 drivers/net/team/team_mode_roundrobin.c static bool rr_transmit(struct team *team, struct sk_buff *skb) team 29 drivers/net/team/team_mode_roundrobin.c port_index = team_num_to_port_index(team, team 30 drivers/net/team/team_mode_roundrobin.c rr_priv(team)->sent_packets++); team 31 drivers/net/team/team_mode_roundrobin.c port = team_get_port_by_index_rcu(team, port_index); team 34 drivers/net/team/team_mode_roundrobin.c port = team_get_first_port_txable_rcu(team, port); team 37 drivers/net/team/team_mode_roundrobin.c if (team_dev_queue_xmit(team, port, skb)) team 26 include/linux/if_team.h struct team; team 32 include/linux/if_team.h struct team *team; team 118 include/linux/if_team.h int (*init)(struct team *team); team 119 include/linux/if_team.h void (*exit)(struct team *team); team 120 include/linux/if_team.h rx_handler_result_t (*receive)(struct team *team, team 123 include/linux/if_team.h bool (*transmit)(struct team *team, struct sk_buff *skb); team 124 include/linux/if_team.h int (*port_enter)(struct team *team, struct team_port *port); team 125 include/linux/if_team.h void (*port_leave)(struct team *team, struct team_port *port); team 126 include/linux/if_team.h void (*port_change_dev_addr)(struct team *team, struct team_port *port); team 127 include/linux/if_team.h void (*port_enabled)(struct team *team, struct team_port *port); team 128 include/linux/if_team.h void (*port_disabled)(struct team *team, struct team_port *port); team 131 include/linux/if_team.h extern int team_modeop_port_enter(struct team *team, struct team_port *port); team 132 include/linux/if_team.h extern void team_modeop_port_change_dev_addr(struct team *team, team 168 include/linux/if_team.h int (*init)(struct team *team, struct team_option_inst_info *info); team 169 include/linux/if_team.h int (*getter)(struct team *team, struct team_gsetter_ctx *ctx); team 170 include/linux/if_team.h int (*setter)(struct team *team, struct team_gsetter_ctx *ctx); team 174 include/linux/if_team.h extern void team_options_change_check(struct team *team); team 230 include/linux/if_team.h static inline int team_dev_queue_xmit(struct team *team, struct team_port *port, team 238 include/linux/if_team.h if (unlikely(netpoll_tx_running(team->dev))) { team 245 include/linux/if_team.h static inline struct hlist_head *team_port_index_hash(struct team *team, team 248 include/linux/if_team.h return &team->en_port_hlist[port_index & (TEAM_PORT_HASHENTRIES - 1)]; team 251 include/linux/if_team.h static inline struct team_port *team_get_port_by_index(struct team *team, team 255 include/linux/if_team.h struct hlist_head *head = team_port_index_hash(team, port_index); team 263 include/linux/if_team.h static inline int team_num_to_port_index(struct team *team, unsigned int num) team 265 include/linux/if_team.h int en_port_count = READ_ONCE(team->en_port_count); team 272 include/linux/if_team.h static inline struct team_port *team_get_port_by_index_rcu(struct team *team, team 276 include/linux/if_team.h struct hlist_head *head = team_port_index_hash(team, port_index); team 285 include/linux/if_team.h team_get_first_port_txable_rcu(struct team *team, struct team_port *port) team 292 include/linux/if_team.h list_for_each_entry_continue_rcu(cur, &team->port_list, list) team 295 include/linux/if_team.h list_for_each_entry_rcu(cur, &team->port_list, list) { team 304 include/linux/if_team.h extern int team_options_register(struct team *team, team 307 include/linux/if_team.h extern void team_options_unregister(struct team *team,