Symbol: team
drivers/net/team/team_core.c
1000
static void team_port_enable_tx(struct team *team,
drivers/net/team/team_core.c
1006
__team_port_enable_tx(team, port);
drivers/net/team/team_core.c
1007
team_adjust_ops(team);
drivers/net/team/team_core.c
1008
team_queue_override_port_add(team, port);
drivers/net/team/team_core.c
1011
team_notify_peers(team);
drivers/net/team/team_core.c
1015
static void __reconstruct_port_hlist(struct team *team, int rm_index)
drivers/net/team/team_core.c
1021
for (i = rm_index + 1; i < team->tx_en_port_count; i++) {
drivers/net/team/team_core.c
1022
port = team_get_port_by_tx_index(team, i);
drivers/net/team/team_core.c
1025
tx_port_index_hash = team_tx_port_index_hash(team,
drivers/net/team/team_core.c
1031
static void __team_port_disable_tx(struct team *team,
drivers/net/team/team_core.c
1034
if (team->ops.port_tx_disabled)
drivers/net/team/team_core.c
1035
team->ops.port_tx_disabled(team, port);
drivers/net/team/team_core.c
1038
__reconstruct_port_hlist(team, port->tx_index);
drivers/net/team/team_core.c
1041
WRITE_ONCE(team->tx_en_port_count, team->tx_en_port_count - 1);
drivers/net/team/team_core.c
1044
static void team_port_disable_tx(struct team *team,
drivers/net/team/team_core.c
1050
__team_port_disable_tx(team, port);
drivers/net/team/team_core.c
1052
team_queue_override_port_del(team, port);
drivers/net/team/team_core.c
1053
team_adjust_ops(team);
drivers/net/team/team_core.c
1060
static void team_port_enable(struct team *team,
drivers/net/team/team_core.c
1073
__team_port_enable_rx(team, port);
drivers/net/team/team_core.c
1075
__team_port_enable_tx(team, port);
drivers/net/team/team_core.c
1077
team_adjust_ops(team);
drivers/net/team/team_core.c
1079
team_queue_override_port_add(team, port);
drivers/net/team/team_core.c
1080
team_notify_peers(team);
drivers/net/team/team_core.c
1082
team_mcast_rejoin(team);
drivers/net/team/team_core.c
1087
static void team_port_disable(struct team *team,
drivers/net/team/team_core.c
1097
__team_port_disable_tx(team, port);
drivers/net/team/team_core.c
1098
team_queue_override_port_del(team, port);
drivers/net/team/team_core.c
1101
__team_port_disable_rx(team, port);
drivers/net/team/team_core.c
1103
team_adjust_ops(team);
drivers/net/team/team_core.c
1109
static int team_port_enter(struct team *team, struct team_port *port)
drivers/net/team/team_core.c
1113
dev_hold(netdev_from_priv(team));
drivers/net/team/team_core.c
1114
if (team->ops.port_enter) {
drivers/net/team/team_core.c
1115
err = team->ops.port_enter(team, port);
drivers/net/team/team_core.c
1117
netdev_err(netdev_from_priv(team),
drivers/net/team/team_core.c
1127
dev_put(netdev_from_priv(team));
drivers/net/team/team_core.c
1132
static void team_port_leave(struct team *team, struct team_port *port)
drivers/net/team/team_core.c
1134
if (team->ops.port_leave)
drivers/net/team/team_core.c
1135
team->ops.port_leave(team, port);
drivers/net/team/team_core.c
1136
dev_put(netdev_from_priv(team));
drivers/net/team/team_core.c
1160
if (!netdev_from_priv(port->team)->npinfo)
drivers/net/team/team_core.c
1186
static int team_upper_dev_link(struct team *team, struct team_port *port,
drivers/net/team/team_core.c
119
static struct team_option *__team_find_option(struct team *team,
drivers/net/team/team_core.c
1192
lag_upper_info.tx_type = team->mode->lag_tx_type;
drivers/net/team/team_core.c
1194
err = netdev_master_upper_dev_link(port->dev, netdev_from_priv(team),
drivers/net/team/team_core.c
1202
static void team_upper_dev_unlink(struct team *team, struct team_port *port)
drivers/net/team/team_core.c
1204
netdev_upper_dev_unlink(port->dev, netdev_from_priv(team));
drivers/net/team/team_core.c
1212
static int team_port_add(struct team *team, struct net_device *port_dev,
drivers/net/team/team_core.c
1215
struct net_device *dev = netdev_from_priv(team);
drivers/net/team/team_core.c
124
list_for_each_entry(option, &team->option_list, list) {
drivers/net/team/team_core.c
1269
port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size,
drivers/net/team/team_core.c
1275
port->team = team;
drivers/net/team/team_core.c
1293
err = team_port_enter(team, port);
drivers/net/team/team_core.c
1332
err = team_upper_dev_link(team, port, extack);
drivers/net/team/team_core.c
1339
err = __team_option_inst_add_port(team, port);
drivers/net/team/team_core.c
137
static void __team_option_inst_del_option(struct team *team,
drivers/net/team/team_core.c
1375
list_add_tail_rcu(&port->list, &team->port_list);
drivers/net/team/team_core.c
1376
team_port_enable(team, port);
drivers/net/team/team_core.c
1381
__team_options_change_check(team);
drivers/net/team/team_core.c
1390
__team_option_inst_del_port(team, port);
drivers/net/team/team_core.c
1393
team_upper_dev_unlink(team, port);
drivers/net/team/team_core.c
1408
team_port_leave(team, port);
drivers/net/team/team_core.c
142
list_for_each_entry_safe(opt_inst, tmp, &team->option_inst_list, list) {
drivers/net/team/team_core.c
1422
static int team_port_del(struct team *team, struct net_device *port_dev, bool unregister)
drivers/net/team/team_core.c
1424
struct net_device *dev = netdev_from_priv(team);
drivers/net/team/team_core.c
1429
if (!port || !team_port_find(team, port)) {
drivers/net/team/team_core.c
1435
team_port_disable(team, port);
drivers/net/team/team_core.c
1443
team_upper_dev_unlink(team, port);
drivers/net/team/team_core.c
1452
team_port_leave(team, port);
drivers/net/team/team_core.c
1454
__team_option_inst_mark_removed_port(team, port);
drivers/net/team/team_core.c
1455
__team_options_change_check(team);
drivers/net/team/team_core.c
1456
__team_option_inst_del_port(team, port);
drivers/net/team/team_core.c
1479
static void team_mode_option_get(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_core.c
148
static int __team_option_inst_add(struct team *team, struct team_option *option,
drivers/net/team/team_core.c
1481
ctx->data.str_val = team->mode->kind;
drivers/net/team/team_core.c
1484
static int team_mode_option_set(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_core.c
1486
return team_change_mode(team, ctx->data.str_val);
drivers/net/team/team_core.c
1489
static void team_notify_peers_count_get(struct team *team,
drivers/net/team/team_core.c
1492
ctx->data.u32_val = team->notify_peers.count;
drivers/net/team/team_core.c
1495
static int team_notify_peers_count_set(struct team *team,
drivers/net/team/team_core.c
1498
team->notify_peers.count = ctx->data.u32_val;
drivers/net/team/team_core.c
1502
static void team_notify_peers_interval_get(struct team *team,
drivers/net/team/team_core.c
1505
ctx->data.u32_val = team->notify_peers.interval;
drivers/net/team/team_core.c
1508
static int team_notify_peers_interval_set(struct team *team,
drivers/net/team/team_core.c
1511
team->notify_peers.interval = ctx->data.u32_val;
drivers/net/team/team_core.c
1515
static void team_mcast_rejoin_count_get(struct team *team,
drivers/net/team/team_core.c
1518
ctx->data.u32_val = team->mcast_rejoin.count;
drivers/net/team/team_core.c
1521
static int team_mcast_rejoin_count_set(struct team *team,
drivers/net/team/team_core.c
1524
team->mcast_rejoin.count = ctx->data.u32_val;
drivers/net/team/team_core.c
1528
static void team_mcast_rejoin_interval_get(struct team *team,
drivers/net/team/team_core.c
1531
ctx->data.u32_val = team->mcast_rejoin.interval;
drivers/net/team/team_core.c
1534
static int team_mcast_rejoin_interval_set(struct team *team,
drivers/net/team/team_core.c
1537
team->mcast_rejoin.interval = ctx->data.u32_val;
drivers/net/team/team_core.c
1541
static void team_port_en_option_get(struct team *team,
drivers/net/team/team_core.c
1549
static int team_port_en_option_set(struct team *team,
drivers/net/team/team_core.c
1555
team_port_enable(team, port);
drivers/net/team/team_core.c
1557
team_port_disable(team, port);
drivers/net/team/team_core.c
1561
static void team_port_rx_en_option_get(struct team *team,
drivers/net/team/team_core.c
1569
static int team_port_rx_en_option_set(struct team *team,
drivers/net/team/team_core.c
1575
team_port_enable_rx(team, port);
drivers/net/team/team_core.c
1577
team_port_disable_rx(team, port);
drivers/net/team/team_core.c
1581
static void team_port_tx_en_option_get(struct team *team,
drivers/net/team/team_core.c
1589
static int team_port_tx_en_option_set(struct team *team,
drivers/net/team/team_core.c
1595
team_port_enable_tx(team, port);
drivers/net/team/team_core.c
1597
team_port_disable_tx(team, port);
drivers/net/team/team_core.c
1601
static void team_user_linkup_option_get(struct team *team,
drivers/net/team/team_core.c
1609
static void __team_carrier_check(struct team *team);
drivers/net/team/team_core.c
1611
static int team_user_linkup_option_set(struct team *team,
drivers/net/team/team_core.c
1618
__team_carrier_check(port->team);
drivers/net/team/team_core.c
1622
static void team_user_linkup_en_option_get(struct team *team,
drivers/net/team/team_core.c
1630
static int team_user_linkup_en_option_set(struct team *team,
drivers/net/team/team_core.c
1637
__team_carrier_check(port->team);
drivers/net/team/team_core.c
1641
static void team_priority_option_get(struct team *team,
drivers/net/team/team_core.c
1649
static int team_priority_option_set(struct team *team,
drivers/net/team/team_core.c
1658
team_queue_override_port_prio_changed(team, port);
drivers/net/team/team_core.c
1662
static void team_queue_id_option_get(struct team *team,
drivers/net/team/team_core.c
1670
static int team_queue_id_option_set(struct team *team,
drivers/net/team/team_core.c
1678
if (new_queue_id >= netdev_from_priv(team)->real_num_tx_queues)
drivers/net/team/team_core.c
168
list_add_tail(&opt_inst->list, &team->option_inst_list);
drivers/net/team/team_core.c
1680
team_queue_override_port_change_queue_id(team, port, new_queue_id);
drivers/net/team/team_core.c
170
option->init(team, &opt_inst->info);
drivers/net/team/team_core.c
176
static int __team_option_inst_add_option(struct team *team,
drivers/net/team/team_core.c
1769
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1773
team_set_no_mode(team);
drivers/net/team/team_core.c
1774
team->notifier_ctx = false;
drivers/net/team/team_core.c
1776
team->pcpu_stats = netdev_alloc_pcpu_stats(struct team_pcpu_stats);
drivers/net/team/team_core.c
1777
if (!team->pcpu_stats)
drivers/net/team/team_core.c
1781
INIT_HLIST_HEAD(&team->tx_en_port_hlist[i]);
drivers/net/team/team_core.c
1782
INIT_LIST_HEAD(&team->port_list);
drivers/net/team/team_core.c
1783
err = team_queue_override_init(team);
drivers/net/team/team_core.c
1787
team_adjust_ops(team);
drivers/net/team/team_core.c
1789
INIT_LIST_HEAD(&team->option_list);
drivers/net/team/team_core.c
1790
INIT_LIST_HEAD(&team->option_inst_list);
drivers/net/team/team_core.c
1792
team_notify_peers_init(team);
drivers/net/team/team_core.c
1793
team_mcast_rejoin_init(team);
drivers/net/team/team_core.c
1795
err = team_options_register(team, team_options, ARRAY_SIZE(team_options));
drivers/net/team/team_core.c
1805
team_mcast_rejoin_fini(team);
drivers/net/team/team_core.c
1806
team_notify_peers_fini(team);
drivers/net/team/team_core.c
1807
team_queue_override_fini(team);
drivers/net/team/team_core.c
1809
free_percpu(team->pcpu_stats);
drivers/net/team/team_core.c
1816
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
182
err = __team_option_inst_add(team, option, NULL);
drivers/net/team/team_core.c
1822
list_for_each_entry_safe(port, tmp, &team->port_list, list)
drivers/net/team/team_core.c
1823
team_port_del(team, port->dev, false);
drivers/net/team/team_core.c
1825
__team_change_mode(team, NULL); /* cleanup */
drivers/net/team/team_core.c
1826
__team_options_unregister(team, team_options, ARRAY_SIZE(team_options));
drivers/net/team/team_core.c
1827
team_mcast_rejoin_fini(team);
drivers/net/team/team_core.c
1828
team_notify_peers_fini(team);
drivers/net/team/team_core.c
1829
team_queue_override_fini(team);
drivers/net/team/team_core.c
1835
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1837
free_percpu(team->pcpu_stats);
drivers/net/team/team_core.c
1847
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1850
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
1863
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1867
tx_success = team_queue_override_transmit(team, skb);
drivers/net/team/team_core.c
1869
tx_success = READ_ONCE(team->ops.transmit)(team, skb);
drivers/net/team/team_core.c
1873
pcpu_stats = this_cpu_ptr(team->pcpu_stats);
drivers/net/team/team_core.c
1879
this_cpu_inc(team->pcpu_stats->tx_dropped);
drivers/net/team/team_core.c
189
__team_option_inst_del_option(team, option);
drivers/net/team/team_core.c
1911
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1917
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
193
static void __team_option_inst_mark_removed_option(struct team *team,
drivers/net/team/team_core.c
1931
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1935
list_for_each_entry_rcu(port, &team->port_list, list) {
drivers/net/team/team_core.c
1945
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1953
list_for_each_entry(port, &team->port_list, list)
drivers/net/team/team_core.c
1954
if (team->ops.port_change_dev_addr)
drivers/net/team/team_core.c
1955
team->ops.port_change_dev_addr(team, port);
drivers/net/team/team_core.c
1961
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
1967
team->port_mtu_change_allowed = true;
drivers/net/team/team_core.c
1968
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
1976
team->port_mtu_change_allowed = false;
drivers/net/team/team_core.c
198
list_for_each_entry(opt_inst, &team->option_inst_list, list) {
drivers/net/team/team_core.c
1983
list_for_each_entry_continue_reverse(port, &team->port_list, list)
drivers/net/team/team_core.c
1985
team->port_mtu_change_allowed = false;
drivers/net/team/team_core.c
1993
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2001
p = per_cpu_ptr(team->pcpu_stats, i);
drivers/net/team/team_core.c
2031
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2037
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
2046
list_for_each_entry_continue_reverse(port, &team->port_list, list)
drivers/net/team/team_core.c
2054
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2059
list_for_each_entry(port, &team->port_list, list)
drivers/net/team/team_core.c
206
static void __team_option_inst_del_port(struct team *team,
drivers/net/team/team_core.c
2070
static void __team_netpoll_cleanup(struct team *team)
drivers/net/team/team_core.c
2074
list_for_each_entry(port, &team->port_list, list)
drivers/net/team/team_core.c
2080
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2084
__team_netpoll_cleanup(team);
drivers/net/team/team_core.c
2089
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2095
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
2098
__team_netpoll_cleanup(team);
drivers/net/team/team_core.c
2109
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
211
list_for_each_entry_safe(opt_inst, tmp, &team->option_inst_list, list) {
drivers/net/team/team_core.c
2113
return team_port_add(team, port_dev, extack);
drivers/net/team/team_core.c
2118
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2122
return team_port_del(team, port_dev, false);
drivers/net/team/team_core.c
2127
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2131
return team_port_del(team, port_dev, true);
drivers/net/team/team_core.c
2138
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2145
list_for_each_entry_rcu(port, &team->port_list, list) {
drivers/net/team/team_core.c
2159
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2161
team->user_carrier_enabled = true;
drivers/net/team/team_core.c
218
static int __team_option_inst_add_port(struct team *team,
drivers/net/team/team_core.c
2209
struct team *team= netdev_priv(dev);
drivers/net/team/team_core.c
2217
list_for_each_entry_rcu(port, &team->port_list, list) {
drivers/net/team/team_core.c
224
list_for_each_entry(option, &team->option_list, list) {
drivers/net/team/team_core.c
2246
static struct team_port *team_header_port_get_rcu(struct team *team,
drivers/net/team/team_core.c
2251
list_for_each_entry_rcu(port, &team->port_list, list) {
drivers/net/team/team_core.c
2263
struct team *team = netdev_priv(team_dev);
drivers/net/team/team_core.c
2269
port = team_header_port_get_rcu(team, true);
drivers/net/team/team_core.c
227
err = __team_option_inst_add(team, option, port);
drivers/net/team/team_core.c
2284
struct team *team = netdev_priv(team_dev);
drivers/net/team/team_core.c
2290
port = team_header_port_get_rcu(team, false);
drivers/net/team/team_core.c
2308
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2311
dev->header_ops = team->header_ops_cache;
drivers/net/team/team_core.c
2336
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
234
__team_option_inst_del_port(team, port);
drivers/net/team/team_core.c
2342
if (!list_empty(&team->port_list)) {
drivers/net/team/team_core.c
2361
struct team *team = netdev_priv(dev);
drivers/net/team/team_core.c
2365
team->header_ops_cache = dev->header_ops;
drivers/net/team/team_core.c
238
static void __team_option_inst_mark_removed_port(struct team *team,
drivers/net/team/team_core.c
243
list_for_each_entry(opt_inst, &team->option_inst_list, list) {
drivers/net/team/team_core.c
2435
.priv_size = sizeof(struct team),
drivers/net/team/team_core.c
2481
static struct team *team_nl_team_get(struct genl_info *info)
drivers/net/team/team_core.c
2502
static void team_nl_team_put(struct team *team)
drivers/net/team/team_core.c
2504
dev_put(netdev_from_priv(team));
drivers/net/team/team_core.c
2508
struct team *team, u32 portid);
drivers/net/team/team_core.c
251
static int __team_options_register(struct team *team,
drivers/net/team/team_core.c
2510
static int team_nl_send_unicast(struct sk_buff *skb, struct team *team, u32 portid)
drivers/net/team/team_core.c
2512
return genlmsg_unicast(dev_net(netdev_from_priv(team)), skb, portid);
drivers/net/team/team_core.c
2515
static int team_nl_fill_one_option_get(struct sk_buff *skb, struct team *team,
drivers/net/team/team_core.c
2525
err = team_option_get(team, opt_inst, &ctx);
drivers/net/team/team_core.c
2597
struct team *team, u32 portid,
drivers/net/team/team_core.c
2603
err = send_func(*pskb, team, portid);
drivers/net/team/team_core.c
2613
static int team_nl_send_options_get(struct team *team, u32 portid, u32 seq,
drivers/net/team/team_core.c
263
if (__team_find_option(team, option->name)) {
drivers/net/team/team_core.c
2630
err = __send_and_alloc_skb(&skb, team, portid, send_func);
drivers/net/team/team_core.c
2642
netdev_from_priv(team)->ifindex))
drivers/net/team/team_core.c
2651
err = team_nl_fill_one_option_get(skb, team, opt_inst);
drivers/net/team/team_core.c
2672
err = __send_and_alloc_skb(&skb, team, portid, send_func);
drivers/net/team/team_core.c
2678
return send_func(skb, team, portid);
drivers/net/team/team_core.c
2689
struct team *team;
drivers/net/team/team_core.c
2696
team = team_nl_team_get(info);
drivers/net/team/team_core.c
2697
if (!team) {
drivers/net/team/team_core.c
2702
list_for_each_entry(opt_inst, &team->option_inst_list, list)
drivers/net/team/team_core.c
2704
err = team_nl_send_options_get(team, info->snd_portid, info->snd_seq,
drivers/net/team/team_core.c
2708
team_nl_team_put(team);
drivers/net/team/team_core.c
2716
static int team_nl_send_event_options_get(struct team *team,
drivers/net/team/team_core.c
2721
struct team *team;
drivers/net/team/team_core.c
2728
team = team_nl_team_get(info);
drivers/net/team/team_core.c
2729
if (!team) {
drivers/net/team/team_core.c
275
err = __team_option_inst_add_option(team, dst_opts[i]);
drivers/net/team/team_core.c
278
list_add_tail(&dst_opts[i]->list, &team->option_list);
drivers/net/team/team_core.c
2806
list_for_each_entry(opt_inst, &team->option_inst_list, list) {
drivers/net/team/team_core.c
2849
err = team_option_set(team, opt_inst, &ctx);
drivers/net/team/team_core.c
286
__team_option_inst_del_option(team, dst_opts[i]);
drivers/net/team/team_core.c
2860
err = team_nl_send_event_options_get(team, &opt_inst_list);
drivers/net/team/team_core.c
2866
team_nl_team_put(team);
drivers/net/team/team_core.c
2902
static int team_nl_send_port_list_get(struct team *team, u32 portid, u32 seq,
drivers/net/team/team_core.c
2915
port = list_first_entry_or_null(&team->port_list,
drivers/net/team/team_core.c
2919
err = __send_and_alloc_skb(&skb, team, portid, send_func);
drivers/net/team/team_core.c
2931
netdev_from_priv(team)->ifindex))
drivers/net/team/team_core.c
2948
list_for_each_entry_from(port, &team->port_list, list) {
drivers/net/team/team_core.c
2971
err = __send_and_alloc_skb(&skb, team, portid, send_func);
drivers/net/team/team_core.c
2977
return send_func(skb, team, portid);
drivers/net/team/team_core.c
2989
struct team *team;
drivers/net/team/team_core.c
299
static void __team_options_mark_removed(struct team *team,
drivers/net/team/team_core.c
2994
team = team_nl_team_get(info);
drivers/net/team/team_core.c
2995
if (!team) {
drivers/net/team/team_core.c
3000
err = team_nl_send_port_list_get(team, info->snd_portid, info->snd_seq,
drivers/net/team/team_core.c
3003
team_nl_team_put(team);
drivers/net/team/team_core.c
3030
struct team *team, u32 portid)
drivers/net/team/team_core.c
3033
dev_net(netdev_from_priv(team)),
drivers/net/team/team_core.c
3037
static int team_nl_send_event_options_get(struct team *team,
drivers/net/team/team_core.c
3040
return team_nl_send_options_get(team, 0, 0, 0, team_nl_send_multicast,
drivers/net/team/team_core.c
3044
static int team_nl_send_event_port_get(struct team *team,
drivers/net/team/team_core.c
3047
return team_nl_send_port_list_get(team, 0, 0, 0, team_nl_send_multicast,
drivers/net/team/team_core.c
3066
static void __team_options_change_check(struct team *team)
drivers/net/team/team_core.c
3072
list_for_each_entry(opt_inst, &team->option_inst_list, list) {
drivers/net/team/team_core.c
3076
err = team_nl_send_event_options_get(team, &sel_opt_inst_list);
drivers/net/team/team_core.c
3078
netdev_warn(netdev_from_priv(team),
drivers/net/team/team_core.c
308
del_opt = __team_find_option(team, option->name);
drivers/net/team/team_core.c
310
__team_option_inst_mark_removed_option(team, del_opt);
drivers/net/team/team_core.c
3106
err = team_nl_send_event_port_get(port->team, port);
drivers/net/team/team_core.c
3108
netdev_warn(netdev_from_priv(port->team),
drivers/net/team/team_core.c
3114
static void __team_carrier_check(struct team *team)
drivers/net/team/team_core.c
3119
if (team->user_carrier_enabled)
drivers/net/team/team_core.c
3123
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
3131
netif_carrier_on(netdev_from_priv(team));
drivers/net/team/team_core.c
3133
netif_carrier_off(netdev_from_priv(team));
drivers/net/team/team_core.c
314
static void __team_options_unregister(struct team *team,
drivers/net/team/team_core.c
3140
__team_carrier_check(port->team);
drivers/net/team/team_core.c
3146
__team_carrier_check(port->team);
drivers/net/team/team_core.c
3153
__team_carrier_check(port->team);
drivers/net/team/team_core.c
3192
team_del_slave_on_unregister(netdev_from_priv(port->team),
drivers/net/team/team_core.c
3196
if (!port->team->notifier_ctx) {
drivers/net/team/team_core.c
3197
port->team->notifier_ctx = true;
drivers/net/team/team_core.c
3198
netdev_compute_master_upper_features(netdev_from_priv(port->team),
drivers/net/team/team_core.c
3200
port->team->notifier_ctx = false;
drivers/net/team/team_core.c
3205
if (!port->team->port_mtu_change_allowed)
drivers/net/team/team_core.c
3213
call_netdevice_notifiers(event, netdev_from_priv(port->team));
drivers/net/team/team_core.c
323
del_opt = __team_find_option(team, option->name);
drivers/net/team/team_core.c
325
__team_option_inst_del_option(team, del_opt);
drivers/net/team/team_core.c
332
static void __team_options_change_check(struct team *team);
drivers/net/team/team_core.c
334
int team_options_register(struct team *team,
drivers/net/team/team_core.c
340
err = __team_options_register(team, option, option_count);
drivers/net/team/team_core.c
343
__team_options_change_check(team);
drivers/net/team/team_core.c
348
void team_options_unregister(struct team *team,
drivers/net/team/team_core.c
352
__team_options_mark_removed(team, option, option_count);
drivers/net/team/team_core.c
353
__team_options_change_check(team);
drivers/net/team/team_core.c
354
__team_options_unregister(team, option, option_count);
drivers/net/team/team_core.c
358
static int team_option_get(struct team *team,
drivers/net/team/team_core.c
365
opt_inst->option->getter(team, ctx);
drivers/net/team/team_core.c
369
static int team_option_set(struct team *team,
drivers/net/team/team_core.c
375
return opt_inst->option->setter(team, ctx);
drivers/net/team/team_core.c
387
void team_options_change_check(struct team *team)
drivers/net/team/team_core.c
389
__team_options_change_check(team);
drivers/net/team/team_core.c
500
static bool team_dummy_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_core.c
506
static rx_handler_result_t team_dummy_receive(struct team *team,
drivers/net/team/team_core.c
517
static bool team_is_mode_set(struct team *team)
drivers/net/team/team_core.c
519
return team->mode != &__team_no_mode;
drivers/net/team/team_core.c
522
static void team_set_no_mode(struct team *team)
drivers/net/team/team_core.c
524
team->user_carrier_enabled = false;
drivers/net/team/team_core.c
525
team->mode = &__team_no_mode;
drivers/net/team/team_core.c
528
static void team_adjust_ops(struct team *team)
drivers/net/team/team_core.c
535
if (!team->tx_en_port_count || !team_is_mode_set(team) ||
drivers/net/team/team_core.c
536
!team->mode->ops->transmit)
drivers/net/team/team_core.c
537
WRITE_ONCE(team->ops.transmit, team_dummy_transmit);
drivers/net/team/team_core.c
539
WRITE_ONCE(team->ops.transmit, team->mode->ops->transmit);
drivers/net/team/team_core.c
541
if (!team->rx_en_port_count || !team_is_mode_set(team) ||
drivers/net/team/team_core.c
542
!team->mode->ops->receive)
drivers/net/team/team_core.c
543
WRITE_ONCE(team->ops.receive, team_dummy_receive);
drivers/net/team/team_core.c
545
WRITE_ONCE(team->ops.receive, team->mode->ops->receive);
drivers/net/team/team_core.c
555
static int __team_change_mode(struct team *team,
drivers/net/team/team_core.c
559
if (team_is_mode_set(team)) {
drivers/net/team/team_core.c
560
void (*exit_op)(struct team *team) = team->ops.exit;
drivers/net/team/team_core.c
566
team->ops.init = NULL;
drivers/net/team/team_core.c
567
team->ops.exit = NULL;
drivers/net/team/team_core.c
568
team->ops.port_enter = NULL;
drivers/net/team/team_core.c
569
team->ops.port_leave = NULL;
drivers/net/team/team_core.c
570
team->ops.port_change_dev_addr = NULL;
drivers/net/team/team_core.c
571
team->ops.port_tx_disabled = NULL;
drivers/net/team/team_core.c
579
exit_op(team);
drivers/net/team/team_core.c
580
team_mode_put(team->mode);
drivers/net/team/team_core.c
581
team_set_no_mode(team);
drivers/net/team/team_core.c
583
memset(&team->mode_priv, 0,
drivers/net/team/team_core.c
584
sizeof(struct team) - offsetof(struct team, mode_priv));
drivers/net/team/team_core.c
593
err = new_mode->ops->init(team);
drivers/net/team/team_core.c
598
team->mode = new_mode;
drivers/net/team/team_core.c
599
team->ops.init = new_mode->ops->init;
drivers/net/team/team_core.c
600
team->ops.exit = new_mode->ops->exit;
drivers/net/team/team_core.c
601
team->ops.port_enter = new_mode->ops->port_enter;
drivers/net/team/team_core.c
602
team->ops.port_leave = new_mode->ops->port_leave;
drivers/net/team/team_core.c
603
team->ops.port_change_dev_addr = new_mode->ops->port_change_dev_addr;
drivers/net/team/team_core.c
604
team->ops.port_tx_disabled = new_mode->ops->port_tx_disabled;
drivers/net/team/team_core.c
605
team_adjust_ops(team);
drivers/net/team/team_core.c
610
static int team_change_mode(struct team *team, const char *kind)
drivers/net/team/team_core.c
613
struct net_device *dev = netdev_from_priv(team);
drivers/net/team/team_core.c
616
if (!list_empty(&team->port_list)) {
drivers/net/team/team_core.c
621
if (team_is_mode_set(team) && strcmp(team->mode->kind, kind) == 0) {
drivers/net/team/team_core.c
632
err = __team_change_mode(team, new_mode);
drivers/net/team/team_core.c
650
struct team *team;
drivers/net/team/team_core.c
653
team = container_of(work, struct team, notify_peers.dw.work);
drivers/net/team/team_core.c
656
schedule_delayed_work(&team->notify_peers.dw, 0);
drivers/net/team/team_core.c
659
val = atomic_dec_if_positive(&team->notify_peers.count_pending);
drivers/net/team/team_core.c
66
static int team_port_set_team_dev_addr(struct team *team,
drivers/net/team/team_core.c
664
call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, netdev_from_priv(team));
drivers/net/team/team_core.c
667
schedule_delayed_work(&team->notify_peers.dw,
drivers/net/team/team_core.c
668
msecs_to_jiffies(team->notify_peers.interval));
drivers/net/team/team_core.c
671
static void team_notify_peers(struct team *team)
drivers/net/team/team_core.c
673
if (!team->notify_peers.count || !netif_running(netdev_from_priv(team)))
drivers/net/team/team_core.c
675
atomic_add(team->notify_peers.count, &team->notify_peers.count_pending);
drivers/net/team/team_core.c
676
schedule_delayed_work(&team->notify_peers.dw, 0);
drivers/net/team/team_core.c
679
static void team_notify_peers_init(struct team *team)
drivers/net/team/team_core.c
681
INIT_DELAYED_WORK(&team->notify_peers.dw, team_notify_peers_work);
drivers/net/team/team_core.c
684
static void team_notify_peers_fini(struct team *team)
drivers/net/team/team_core.c
686
cancel_delayed_work_sync(&team->notify_peers.dw);
drivers/net/team/team_core.c
69
return __set_port_dev_addr(port->dev, netdev_from_priv(team)->dev_addr);
drivers/net/team/team_core.c
696
struct team *team;
drivers/net/team/team_core.c
699
team = container_of(work, struct team, mcast_rejoin.dw.work);
drivers/net/team/team_core.c
702
schedule_delayed_work(&team->mcast_rejoin.dw, 0);
drivers/net/team/team_core.c
705
val = atomic_dec_if_positive(&team->mcast_rejoin.count_pending);
drivers/net/team/team_core.c
710
call_netdevice_notifiers(NETDEV_RESEND_IGMP, netdev_from_priv(team));
drivers/net/team/team_core.c
713
schedule_delayed_work(&team->mcast_rejoin.dw,
drivers/net/team/team_core.c
714
msecs_to_jiffies(team->mcast_rejoin.interval));
drivers/net/team/team_core.c
717
static void team_mcast_rejoin(struct team *team)
drivers/net/team/team_core.c
719
if (!team->mcast_rejoin.count || !netif_running(netdev_from_priv(team)))
drivers/net/team/team_core.c
72
int team_modeop_port_enter(struct team *team, struct team_port *port)
drivers/net/team/team_core.c
721
atomic_add(team->mcast_rejoin.count, &team->mcast_rejoin.count_pending);
drivers/net/team/team_core.c
722
schedule_delayed_work(&team->mcast_rejoin.dw, 0);
drivers/net/team/team_core.c
725
static void team_mcast_rejoin_init(struct team *team)
drivers/net/team/team_core.c
727
INIT_DELAYED_WORK(&team->mcast_rejoin.dw, team_mcast_rejoin_work);
drivers/net/team/team_core.c
730
static void team_mcast_rejoin_fini(struct team *team)
drivers/net/team/team_core.c
732
cancel_delayed_work_sync(&team->mcast_rejoin.dw);
drivers/net/team/team_core.c
74
return team_port_set_team_dev_addr(team, port);
drivers/net/team/team_core.c
745
struct team *team;
drivers/net/team/team_core.c
755
team = port->team;
drivers/net/team/team_core.c
765
res = READ_ONCE(team->ops.receive)(team, port, skb);
drivers/net/team/team_core.c
770
pcpu_stats = this_cpu_ptr(team->pcpu_stats);
drivers/net/team/team_core.c
778
skb->dev = netdev_from_priv(team);
drivers/net/team/team_core.c
78
void team_modeop_port_change_dev_addr(struct team *team,
drivers/net/team/team_core.c
780
this_cpu_inc(team->pcpu_stats->rx_nohandler);
drivers/net/team/team_core.c
782
this_cpu_inc(team->pcpu_stats->rx_dropped);
drivers/net/team/team_core.c
793
static int team_queue_override_init(struct team *team)
drivers/net/team/team_core.c
796
unsigned int queue_cnt = netdev_from_priv(team)->num_tx_queues - 1;
drivers/net/team/team_core.c
804
team->qom_lists = listarr;
drivers/net/team/team_core.c
81
team_port_set_team_dev_addr(team, port);
drivers/net/team/team_core.c
810
static void team_queue_override_fini(struct team *team)
drivers/net/team/team_core.c
812
kfree(team->qom_lists);
drivers/net/team/team_core.c
815
static struct list_head *__team_get_qom_list(struct team *team, u16 queue_id)
drivers/net/team/team_core.c
817
return &team->qom_lists[queue_id - 1];
drivers/net/team/team_core.c
823
static bool team_queue_override_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_core.c
828
if (!team->queue_override_enabled || !skb->queue_mapping)
drivers/net/team/team_core.c
830
qom_list = __team_get_qom_list(team, skb->queue_mapping);
drivers/net/team/team_core.c
832
if (!team_dev_queue_xmit(team, port, skb))
drivers/net/team/team_core.c
838
static void __team_queue_override_port_del(struct team *team,
drivers/net/team/team_core.c
858
static void __team_queue_override_port_add(struct team *team,
drivers/net/team/team_core.c
867
qom_list = __team_get_qom_list(team, port->queue_id);
drivers/net/team/team_core.c
877
static void __team_queue_override_enabled_check(struct team *team)
drivers/net/team/team_core.c
882
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_core.c
888
if (enabled == team->queue_override_enabled)
drivers/net/team/team_core.c
890
netdev_dbg(netdev_from_priv(team), "%s queue override\n",
drivers/net/team/team_core.c
892
team->queue_override_enabled = enabled;
drivers/net/team/team_core.c
895
static void team_queue_override_port_prio_changed(struct team *team,
drivers/net/team/team_core.c
900
__team_queue_override_port_del(team, port);
drivers/net/team/team_core.c
901
__team_queue_override_port_add(team, port);
drivers/net/team/team_core.c
902
__team_queue_override_enabled_check(team);
drivers/net/team/team_core.c
905
static void team_queue_override_port_change_queue_id(struct team *team,
drivers/net/team/team_core.c
910
__team_queue_override_port_del(team, port);
drivers/net/team/team_core.c
912
__team_queue_override_port_add(team, port);
drivers/net/team/team_core.c
913
__team_queue_override_enabled_check(team);
drivers/net/team/team_core.c
919
static void team_queue_override_port_add(struct team *team,
drivers/net/team/team_core.c
922
__team_queue_override_port_add(team, port);
drivers/net/team/team_core.c
923
__team_queue_override_enabled_check(team);
drivers/net/team/team_core.c
926
static void team_queue_override_port_del(struct team *team,
drivers/net/team/team_core.c
929
__team_queue_override_port_del(team, port);
drivers/net/team/team_core.c
930
__team_queue_override_enabled_check(team);
drivers/net/team/team_core.c
938
static bool team_port_find(const struct team *team,
drivers/net/team/team_core.c
943
list_for_each_entry(cur, &team->port_list, list)
drivers/net/team/team_core.c
949
static void __team_port_enable_rx(struct team *team,
drivers/net/team/team_core.c
952
team->rx_en_port_count++;
drivers/net/team/team_core.c
956
static void __team_port_disable_rx(struct team *team,
drivers/net/team/team_core.c
959
team->rx_en_port_count--;
drivers/net/team/team_core.c
963
static void team_port_enable_rx(struct team *team,
drivers/net/team/team_core.c
969
__team_port_enable_rx(team, port);
drivers/net/team/team_core.c
970
team_adjust_ops(team);
drivers/net/team/team_core.c
971
team_notify_peers(team);
drivers/net/team/team_core.c
972
team_mcast_rejoin(team);
drivers/net/team/team_core.c
975
static void team_port_disable_rx(struct team *team,
drivers/net/team/team_core.c
981
__team_port_disable_rx(team, port);
drivers/net/team/team_core.c
982
team_adjust_ops(team);
drivers/net/team/team_core.c
991
static void __team_port_enable_tx(struct team *team,
drivers/net/team/team_core.c
994
WRITE_ONCE(port->tx_index, team->tx_en_port_count);
drivers/net/team/team_core.c
995
WRITE_ONCE(team->tx_en_port_count, team->tx_en_port_count + 1);
drivers/net/team/team_core.c
997
team_tx_port_index_hash(team, port->tx_index));
drivers/net/team/team_mode_activebackup.c
100
static int ab_init(struct team *team)
drivers/net/team/team_mode_activebackup.c
102
return team_options_register(team, ab_options, ARRAY_SIZE(ab_options));
drivers/net/team/team_mode_activebackup.c
105
static void ab_exit(struct team *team)
drivers/net/team/team_mode_activebackup.c
107
team_options_unregister(team, ab_options, ARRAY_SIZE(ab_options));
drivers/net/team/team_mode_activebackup.c
21
static struct ab_priv *ab_priv(struct team *team)
drivers/net/team/team_mode_activebackup.c
23
return (struct ab_priv *) &team->mode_priv;
drivers/net/team/team_mode_activebackup.c
26
static rx_handler_result_t ab_receive(struct team *team, struct team_port *port,
drivers/net/team/team_mode_activebackup.c
30
active_port = rcu_dereference(ab_priv(team)->active_port);
drivers/net/team/team_mode_activebackup.c
36
static bool ab_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_mode_activebackup.c
40
active_port = rcu_dereference_bh(ab_priv(team)->active_port);
drivers/net/team/team_mode_activebackup.c
43
if (team_dev_queue_xmit(team, active_port, skb))
drivers/net/team/team_mode_activebackup.c
52
static void ab_port_leave(struct team *team, struct team_port *port)
drivers/net/team/team_mode_activebackup.c
54
if (ab_priv(team)->active_port == port) {
drivers/net/team/team_mode_activebackup.c
55
RCU_INIT_POINTER(ab_priv(team)->active_port, NULL);
drivers/net/team/team_mode_activebackup.c
56
team_option_inst_set_change(ab_priv(team)->ap_opt_inst_info);
drivers/net/team/team_mode_activebackup.c
60
static void ab_active_port_init(struct team *team,
drivers/net/team/team_mode_activebackup.c
63
ab_priv(team)->ap_opt_inst_info = info;
drivers/net/team/team_mode_activebackup.c
66
static void ab_active_port_get(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_activebackup.c
70
active_port = rtnl_dereference(ab_priv(team)->active_port);
drivers/net/team/team_mode_activebackup.c
77
static int ab_active_port_set(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_activebackup.c
81
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_mode_activebackup.c
83
rcu_assign_pointer(ab_priv(team)->active_port, port);
drivers/net/team/team_mode_broadcast.c
14
static bool bc_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_mode_broadcast.c
22
list_for_each_entry_rcu(cur, &team->port_list, list) {
drivers/net/team/team_mode_broadcast.c
27
ret = !team_dev_queue_xmit(team, last,
drivers/net/team/team_mode_broadcast.c
37
ret = !team_dev_queue_xmit(team, last, skb);
drivers/net/team/team_mode_loadbalance.c
114
team_options_change_check(team);
drivers/net/team/team_mode_loadbalance.c
118
static struct team_port *lb_hash_select_tx_port(struct team *team,
drivers/net/team/team_mode_loadbalance.c
121
int port_index = team_num_to_port_index(team, hash);
drivers/net/team/team_mode_loadbalance.c
123
return team_get_port_by_tx_index_rcu(team, port_index);
drivers/net/team/team_mode_loadbalance.c
127
static struct team_port *lb_htpm_select_tx_port(struct team *team,
drivers/net/team/team_mode_loadbalance.c
130
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
137
return lb_hash_select_tx_port(team, hash);
drivers/net/team/team_mode_loadbalance.c
17
static rx_handler_result_t lb_receive(struct team *team, struct team_port *port,
drivers/net/team/team_mode_loadbalance.c
217
static bool lb_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_mode_loadbalance.c
219
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
227
port = select_tx_port_func(team, hash);
drivers/net/team/team_mode_loadbalance.c
230
if (team_dev_queue_xmit(team, port, skb))
drivers/net/team/team_mode_loadbalance.c
240
static void lb_bpf_func_get(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_loadbalance.c
242
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
281
static int lb_bpf_func_set(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_loadbalance.c
283
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
317
static void lb_bpf_func_free(struct team *team)
drivers/net/team/team_mode_loadbalance.c
319
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
330
static void lb_tx_method_get(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_loadbalance.c
332
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
342
static int lb_tx_method_set(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_loadbalance.c
344
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
354
static void lb_tx_hash_to_port_mapping_init(struct team *team,
drivers/net/team/team_mode_loadbalance.c
357
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
363
static void lb_tx_hash_to_port_mapping_get(struct team *team,
drivers/net/team/team_mode_loadbalance.c
366
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
374
static int lb_tx_hash_to_port_mapping_set(struct team *team,
drivers/net/team/team_mode_loadbalance.c
377
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
381
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_mode_loadbalance.c
392
static void lb_hash_stats_init(struct team *team,
drivers/net/team/team_mode_loadbalance.c
395
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
401
static void lb_hash_stats_get(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_loadbalance.c
403
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
410
static void lb_port_stats_init(struct team *team,
drivers/net/team/team_mode_loadbalance.c
419
static void lb_port_stats_get(struct team *team, struct team_gsetter_ctx *ctx)
drivers/net/team/team_mode_loadbalance.c
435
struct team *team)
drivers/net/team/team_mode_loadbalance.c
461
struct team *team;
drivers/net/team/team_mode_loadbalance.c
475
team = lb_priv_ex->team;
drivers/net/team/team_mode_loadbalance.c
476
lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
492
changed |= __lb_stats_info_refresh_check(s_info, team);
drivers/net/team/team_mode_loadbalance.c
495
list_for_each_entry(port, &team->port_list, list) {
drivers/net/team/team_mode_loadbalance.c
506
changed |= __lb_stats_info_refresh_check(s_info, team);
drivers/net/team/team_mode_loadbalance.c
510
team_options_change_check(team);
drivers/net/team/team_mode_loadbalance.c
518
static void lb_stats_refresh_interval_get(struct team *team,
drivers/net/team/team_mode_loadbalance.c
521
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
526
static int lb_stats_refresh_interval_set(struct team *team,
drivers/net/team/team_mode_loadbalance.c
529
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
58
struct team *team;
drivers/net/team/team_mode_loadbalance.c
586
static int lb_init(struct team *team)
drivers/net/team/team_mode_loadbalance.c
588
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
600
lb_priv->ex->team = team;
drivers/net/team/team_mode_loadbalance.c
617
err = team_options_register(team, lb_options, ARRAY_SIZE(lb_options));
drivers/net/team/team_mode_loadbalance.c
629
static void lb_exit(struct team *team)
drivers/net/team/team_mode_loadbalance.c
631
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_loadbalance.c
633
team_options_unregister(team, lb_options,
drivers/net/team/team_mode_loadbalance.c
635
lb_bpf_func_free(team);
drivers/net/team/team_mode_loadbalance.c
641
static int lb_port_enter(struct team *team, struct team_port *port)
drivers/net/team/team_mode_loadbalance.c
651
static void lb_port_leave(struct team *team, struct team_port *port)
drivers/net/team/team_mode_loadbalance.c
658
static void lb_port_tx_disabled(struct team *team, struct team_port *port)
drivers/net/team/team_mode_loadbalance.c
660
lb_tx_hash_to_port_mapping_null_port(team, port);
drivers/net/team/team_mode_loadbalance.c
75
static struct lb_priv *get_lb_priv(struct team *team)
drivers/net/team/team_mode_loadbalance.c
77
return (struct lb_priv *) &team->mode_priv;
drivers/net/team/team_mode_loadbalance.c
96
static void lb_tx_hash_to_port_mapping_null_port(struct team *team,
drivers/net/team/team_mode_loadbalance.c
99
struct lb_priv *lb_priv = get_lb_priv(team);
drivers/net/team/team_mode_random.c
14
static bool rnd_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_mode_random.c
19
port_index = get_random_u32_below(READ_ONCE(team->tx_en_port_count));
drivers/net/team/team_mode_random.c
20
port = team_get_port_by_tx_index_rcu(team, port_index);
drivers/net/team/team_mode_random.c
23
port = team_get_first_port_txable_rcu(team, port);
drivers/net/team/team_mode_random.c
26
if (team_dev_queue_xmit(team, port, skb))
drivers/net/team/team_mode_roundrobin.c
18
static struct rr_priv *rr_priv(struct team *team)
drivers/net/team/team_mode_roundrobin.c
20
return (struct rr_priv *) &team->mode_priv;
drivers/net/team/team_mode_roundrobin.c
23
static bool rr_transmit(struct team *team, struct sk_buff *skb)
drivers/net/team/team_mode_roundrobin.c
28
port_index = team_num_to_port_index(team,
drivers/net/team/team_mode_roundrobin.c
29
rr_priv(team)->sent_packets++);
drivers/net/team/team_mode_roundrobin.c
30
port = team_get_port_by_tx_index_rcu(team, port_index);
drivers/net/team/team_mode_roundrobin.c
33
port = team_get_first_port_txable_rcu(team, port);
drivers/net/team/team_mode_roundrobin.c
36
if (team_dev_queue_xmit(team, port, skb))
include/linux/if_team.h
126
int (*init)(struct team *team);
include/linux/if_team.h
127
void (*exit)(struct team *team);
include/linux/if_team.h
128
rx_handler_result_t (*receive)(struct team *team,
include/linux/if_team.h
131
bool (*transmit)(struct team *team, struct sk_buff *skb);
include/linux/if_team.h
132
int (*port_enter)(struct team *team, struct team_port *port);
include/linux/if_team.h
133
void (*port_leave)(struct team *team, struct team_port *port);
include/linux/if_team.h
134
void (*port_change_dev_addr)(struct team *team, struct team_port *port);
include/linux/if_team.h
135
void (*port_tx_disabled)(struct team *team, struct team_port *port);
include/linux/if_team.h
138
extern int team_modeop_port_enter(struct team *team, struct team_port *port);
include/linux/if_team.h
139
extern void team_modeop_port_change_dev_addr(struct team *team,
include/linux/if_team.h
175
void (*init)(struct team *team, struct team_option_inst_info *info);
include/linux/if_team.h
176
void (*getter)(struct team *team, struct team_gsetter_ctx *ctx);
include/linux/if_team.h
177
int (*setter)(struct team *team, struct team_gsetter_ctx *ctx);
include/linux/if_team.h
181
extern void team_options_change_check(struct team *team);
include/linux/if_team.h
237
static inline int team_dev_queue_xmit(struct team *team, struct team_port *port,
include/linux/if_team.h
245
if (unlikely(netpoll_tx_running(netdev_from_priv(team)))) {
include/linux/if_team.h
252
static inline struct hlist_head *team_tx_port_index_hash(struct team *team,
include/linux/if_team.h
257
return &team->tx_en_port_hlist[list_entry];
include/linux/if_team.h
26
struct team;
include/linux/if_team.h
260
static inline struct team_port *team_get_port_by_tx_index(struct team *team,
include/linux/if_team.h
263
struct hlist_head *head = team_tx_port_index_hash(team, tx_port_index);
include/linux/if_team.h
272
static inline int team_num_to_port_index(struct team *team, unsigned int num)
include/linux/if_team.h
274
int tx_en_port_count = READ_ONCE(team->tx_en_port_count);
include/linux/if_team.h
281
static inline struct team_port *team_get_port_by_tx_index_rcu(struct team *team,
include/linux/if_team.h
284
struct hlist_head *head = team_tx_port_index_hash(team, tx_port_index);
include/linux/if_team.h
294
team_get_first_port_txable_rcu(struct team *team, struct team_port *port)
include/linux/if_team.h
301
list_for_each_entry_continue_rcu(cur, &team->port_list, list)
include/linux/if_team.h
304
list_for_each_entry_rcu(cur, &team->port_list, list) {
include/linux/if_team.h
313
extern int team_options_register(struct team *team,
include/linux/if_team.h
316
extern void team_options_unregister(struct team *team,
include/linux/if_team.h
32
struct team *team;