Lines Matching refs:port

51 	struct team_port *port = rtnl_dereference(dev->rx_handler_data);  in team_port_get_rtnl()  local
53 return team_port_exists(dev) ? port : NULL; in team_port_get_rtnl()
70 static int team_port_set_orig_dev_addr(struct team_port *port) in team_port_set_orig_dev_addr() argument
72 return __set_port_dev_addr(port->dev, port->orig.dev_addr); in team_port_set_orig_dev_addr()
76 struct team_port *port) in team_port_set_team_dev_addr() argument
78 return __set_port_dev_addr(port->dev, team->dev->dev_addr); in team_port_set_team_dev_addr()
81 int team_modeop_port_enter(struct team *team, struct team_port *port) in team_modeop_port_enter() argument
83 return team_port_set_team_dev_addr(team, port); in team_modeop_port_enter()
88 struct team_port *port) in team_modeop_port_change_dev_addr() argument
90 team_port_set_team_dev_addr(team, port); in team_modeop_port_change_dev_addr()
94 static void team_refresh_port_linkup(struct team_port *port) in team_refresh_port_linkup() argument
96 port->linkup = port->user.linkup_enabled ? port->user.linkup : in team_refresh_port_linkup()
97 port->state.linkup; in team_refresh_port_linkup()
144 struct team_port *port) in __team_option_inst_add() argument
160 opt_inst->info.port = port; in __team_option_inst_add()
206 struct team_port *port) in __team_option_inst_del_port() argument
212 opt_inst->info.port == port) in __team_option_inst_del_port()
218 struct team_port *port) in __team_option_inst_add_port() argument
226 err = __team_option_inst_add(team, option, port); in __team_option_inst_add_port()
233 __team_option_inst_del_port(team, port); in __team_option_inst_add_port()
238 struct team_port *port) in __team_option_inst_mark_removed_port() argument
243 if (opt_inst->info.port == port) { in __team_option_inst_mark_removed_port()
499 struct team_port *port, in team_dummy_receive() argument
717 struct team_port *port; in team_handle_frame() local
727 port = team_port_get_rcu(skb->dev); in team_handle_frame()
728 team = port->team; in team_handle_frame()
729 if (!team_port_enabled(port)) { in team_handle_frame()
733 res = team->ops.receive(team, port, skb); in team_handle_frame()
792 struct team_port *port; in team_queue_override_transmit() local
797 list_for_each_entry_rcu(port, qom_list, qom_list) { in team_queue_override_transmit()
798 if (!team_dev_queue_xmit(team, port, skb)) in team_queue_override_transmit()
805 struct team_port *port) in __team_queue_override_port_del() argument
807 if (!port->queue_id) in __team_queue_override_port_del()
809 list_del_rcu(&port->qom_list); in __team_queue_override_port_del()
812 static bool team_queue_override_port_has_gt_prio_than(struct team_port *port, in team_queue_override_port_has_gt_prio_than() argument
815 if (port->priority < cur->priority) in team_queue_override_port_has_gt_prio_than()
817 if (port->priority > cur->priority) in team_queue_override_port_has_gt_prio_than()
819 if (port->index < cur->index) in team_queue_override_port_has_gt_prio_than()
825 struct team_port *port) in __team_queue_override_port_add() argument
831 if (!port->queue_id) in __team_queue_override_port_add()
833 qom_list = __team_get_qom_list(team, port->queue_id); in __team_queue_override_port_add()
836 if (team_queue_override_port_has_gt_prio_than(port, cur)) in __team_queue_override_port_add()
840 list_add_tail_rcu(&port->qom_list, node); in __team_queue_override_port_add()
845 struct team_port *port; in __team_queue_override_enabled_check() local
848 list_for_each_entry(port, &team->port_list, list) { in __team_queue_override_enabled_check()
849 if (port->queue_id) { in __team_queue_override_enabled_check()
862 struct team_port *port) in team_queue_override_port_prio_changed() argument
864 if (!port->queue_id || team_port_enabled(port)) in team_queue_override_port_prio_changed()
866 __team_queue_override_port_del(team, port); in team_queue_override_port_prio_changed()
867 __team_queue_override_port_add(team, port); in team_queue_override_port_prio_changed()
872 struct team_port *port, in team_queue_override_port_change_queue_id() argument
875 if (team_port_enabled(port)) { in team_queue_override_port_change_queue_id()
876 __team_queue_override_port_del(team, port); in team_queue_override_port_change_queue_id()
877 port->queue_id = new_queue_id; in team_queue_override_port_change_queue_id()
878 __team_queue_override_port_add(team, port); in team_queue_override_port_change_queue_id()
881 port->queue_id = new_queue_id; in team_queue_override_port_change_queue_id()
886 struct team_port *port) in team_queue_override_port_add() argument
888 __team_queue_override_port_add(team, port); in team_queue_override_port_add()
893 struct team_port *port) in team_queue_override_port_del() argument
895 __team_queue_override_port_del(team, port); in team_queue_override_port_del()
905 const struct team_port *port) in team_port_find() argument
910 if (cur == port) in team_port_find()
922 struct team_port *port) in team_port_enable() argument
924 if (team_port_enabled(port)) in team_port_enable()
926 port->index = team->en_port_count++; in team_port_enable()
927 hlist_add_head_rcu(&port->hlist, in team_port_enable()
928 team_port_index_hash(team, port->index)); in team_port_enable()
930 team_queue_override_port_add(team, port); in team_port_enable()
932 team->ops.port_enabled(team, port); in team_port_enable()
940 struct team_port *port; in __reconstruct_port_hlist() local
943 port = team_get_port_by_index(team, i); in __reconstruct_port_hlist()
944 hlist_del_rcu(&port->hlist); in __reconstruct_port_hlist()
945 port->index--; in __reconstruct_port_hlist()
946 hlist_add_head_rcu(&port->hlist, in __reconstruct_port_hlist()
947 team_port_index_hash(team, port->index)); in __reconstruct_port_hlist()
952 struct team_port *port) in team_port_disable() argument
954 if (!team_port_enabled(port)) in team_port_disable()
957 team->ops.port_disabled(team, port); in team_port_disable()
958 hlist_del_rcu(&port->hlist); in team_port_disable()
959 __reconstruct_port_hlist(team, port->index); in team_port_disable()
960 port->index = -1; in team_port_disable()
962 team_queue_override_port_del(team, port); in team_port_disable()
974 struct team_port *port; in ___team_compute_features() local
980 list_for_each_entry(port, &team->port_list, list) { in ___team_compute_features()
982 port->dev->vlan_features, in ___team_compute_features()
985 dst_release_flag &= port->dev->priv_flags; in ___team_compute_features()
986 if (port->dev->hard_header_len > max_hard_header_len) in ___team_compute_features()
987 max_hard_header_len = port->dev->hard_header_len; in ___team_compute_features()
1012 static int team_port_enter(struct team *team, struct team_port *port) in team_port_enter() argument
1018 err = team->ops.port_enter(team, port); in team_port_enter()
1021 port->dev->name); in team_port_enter()
1034 static void team_port_leave(struct team *team, struct team_port *port) in team_port_leave() argument
1037 team->ops.port_leave(team, port); in team_port_leave()
1042 static int team_port_enable_netpoll(struct team *team, struct team_port *port) in team_port_enable_netpoll() argument
1054 err = __netpoll_setup(np, port->dev); in team_port_enable_netpoll()
1059 port->np = np; in team_port_enable_netpoll()
1063 static void team_port_disable_netpoll(struct team_port *port) in team_port_disable_netpoll() argument
1065 struct netpoll *np = port->np; in team_port_disable_netpoll()
1069 port->np = NULL; in team_port_disable_netpoll()
1077 static int team_port_enable_netpoll(struct team *team, struct team_port *port) in team_port_enable_netpoll() argument
1081 static void team_port_disable_netpoll(struct team_port *port) in team_port_disable_netpoll() argument
1105 static void __team_port_change_port_added(struct team_port *port, bool linkup);
1112 struct team_port *port; in team_port_add() local
1145 port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size, in team_port_add()
1147 if (!port) in team_port_add()
1150 port->dev = port_dev; in team_port_add()
1151 port->team = team; in team_port_add()
1152 INIT_LIST_HEAD(&port->qom_list); in team_port_add()
1154 port->orig.mtu = port_dev->mtu; in team_port_add()
1161 memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len); in team_port_add()
1163 err = team_port_enter(team, port); in team_port_add()
1184 err = team_port_enable_netpoll(team, port); in team_port_add()
1195 port); in team_port_add()
1209 err = __team_option_inst_add_port(team, port); in team_port_add()
1216 port->index = -1; in team_port_add()
1217 list_add_tail_rcu(&port->list, &team->port_list); in team_port_add()
1218 team_port_enable(team, port); in team_port_add()
1220 __team_port_change_port_added(port, !!netif_carrier_ok(port_dev)); in team_port_add()
1234 team_port_disable_netpoll(port); in team_port_add()
1243 team_port_leave(team, port); in team_port_add()
1244 team_port_set_orig_dev_addr(port); in team_port_add()
1247 dev_set_mtu(port_dev, port->orig.mtu); in team_port_add()
1250 kfree(port); in team_port_add()
1255 static void __team_port_change_port_removed(struct team_port *port);
1260 struct team_port *port; in team_port_del() local
1263 port = team_port_get_rtnl(port_dev); in team_port_del()
1264 if (!port || !team_port_find(team, port)) { in team_port_del()
1270 team_port_disable(team, port); in team_port_del()
1271 list_del_rcu(&port->list); in team_port_del()
1274 team_port_disable_netpoll(port); in team_port_del()
1279 team_port_leave(team, port); in team_port_del()
1281 __team_option_inst_mark_removed_port(team, port); in team_port_del()
1283 __team_option_inst_del_port(team, port); in team_port_del()
1284 __team_port_change_port_removed(port); in team_port_del()
1286 team_port_set_orig_dev_addr(port); in team_port_del()
1287 dev_set_mtu(port_dev, port->orig.mtu); in team_port_del()
1288 kfree_rcu(port, rcu); in team_port_del()
1370 struct team_port *port = ctx->info->port; in team_port_en_option_get() local
1372 ctx->data.bool_val = team_port_enabled(port); in team_port_en_option_get()
1379 struct team_port *port = ctx->info->port; in team_port_en_option_set() local
1382 team_port_enable(team, port); in team_port_en_option_set()
1384 team_port_disable(team, port); in team_port_en_option_set()
1391 struct team_port *port = ctx->info->port; in team_user_linkup_option_get() local
1393 ctx->data.bool_val = port->user.linkup; in team_user_linkup_option_get()
1402 struct team_port *port = ctx->info->port; in team_user_linkup_option_set() local
1404 port->user.linkup = ctx->data.bool_val; in team_user_linkup_option_set()
1405 team_refresh_port_linkup(port); in team_user_linkup_option_set()
1406 __team_carrier_check(port->team); in team_user_linkup_option_set()
1413 struct team_port *port = ctx->info->port; in team_user_linkup_en_option_get() local
1415 ctx->data.bool_val = port->user.linkup_enabled; in team_user_linkup_en_option_get()
1422 struct team_port *port = ctx->info->port; in team_user_linkup_en_option_set() local
1424 port->user.linkup_enabled = ctx->data.bool_val; in team_user_linkup_en_option_set()
1425 team_refresh_port_linkup(port); in team_user_linkup_en_option_set()
1426 __team_carrier_check(port->team); in team_user_linkup_en_option_set()
1433 struct team_port *port = ctx->info->port; in team_priority_option_get() local
1435 ctx->data.s32_val = port->priority; in team_priority_option_get()
1442 struct team_port *port = ctx->info->port; in team_priority_option_set() local
1445 if (port->priority == priority) in team_priority_option_set()
1447 port->priority = priority; in team_priority_option_set()
1448 team_queue_override_port_prio_changed(team, port); in team_priority_option_set()
1455 struct team_port *port = ctx->info->port; in team_queue_id_option_get() local
1457 ctx->data.u32_val = port->queue_id; in team_queue_id_option_get()
1464 struct team_port *port = ctx->info->port; in team_queue_id_option_set() local
1467 if (port->queue_id == new_queue_id) in team_queue_id_option_set()
1471 team_queue_override_port_change_queue_id(team, port, new_queue_id); in team_queue_id_option_set()
1612 struct team_port *port; in team_uninit() local
1616 list_for_each_entry_safe(port, tmp, &team->port_list, list) in team_uninit()
1617 team_port_del(team, port->dev); in team_uninit()
1699 struct team_port *port; in team_change_rx_flags() local
1703 list_for_each_entry_rcu(port, &team->port_list, list) { in team_change_rx_flags()
1706 dev_set_promiscuity(port->dev, inc); in team_change_rx_flags()
1710 dev_set_allmulti(port->dev, inc); in team_change_rx_flags()
1719 struct team_port *port; in team_set_rx_mode() local
1722 list_for_each_entry_rcu(port, &team->port_list, list) { in team_set_rx_mode()
1723 dev_uc_sync_multiple(port->dev, dev); in team_set_rx_mode()
1724 dev_mc_sync_multiple(port->dev, dev); in team_set_rx_mode()
1733 struct team_port *port; in team_set_mac_address() local
1739 list_for_each_entry(port, &team->port_list, list) in team_set_mac_address()
1741 team->ops.port_change_dev_addr(team, port); in team_set_mac_address()
1749 struct team_port *port; in team_change_mtu() local
1758 list_for_each_entry(port, &team->port_list, list) { in team_change_mtu()
1759 err = dev_set_mtu(port->dev, new_mtu); in team_change_mtu()
1762 port->dev->name); in team_change_mtu()
1774 list_for_each_entry_continue_reverse(port, &team->port_list, list) in team_change_mtu()
1775 dev_set_mtu(port->dev, dev->mtu); in team_change_mtu()
1823 struct team_port *port; in team_vlan_rx_add_vid() local
1831 list_for_each_entry(port, &team->port_list, list) { in team_vlan_rx_add_vid()
1832 err = vlan_vid_add(port->dev, proto, vid); in team_vlan_rx_add_vid()
1841 list_for_each_entry_continue_reverse(port, &team->port_list, list) in team_vlan_rx_add_vid()
1842 vlan_vid_del(port->dev, proto, vid); in team_vlan_rx_add_vid()
1851 struct team_port *port; in team_vlan_rx_kill_vid() local
1854 list_for_each_entry(port, &team->port_list, list) in team_vlan_rx_kill_vid()
1855 vlan_vid_del(port->dev, proto, vid); in team_vlan_rx_kill_vid()
1868 struct team_port *port; in __team_netpoll_cleanup() local
1870 list_for_each_entry(port, &team->port_list, list) in __team_netpoll_cleanup()
1871 team_port_disable_netpoll(port); in __team_netpoll_cleanup()
1887 struct team_port *port; in team_netpoll_setup() local
1891 list_for_each_entry(port, &team->port_list, list) { in team_netpoll_setup()
1892 err = team_port_enable_netpoll(team, port); in team_netpoll_setup()
1928 struct team_port *port; in team_fix_features() local
1937 list_for_each_entry_rcu(port, &team->port_list, list) { in team_fix_features()
1939 port->dev->features, in team_fix_features()
2245 if (opt_inst_info->port && in team_nl_fill_one_option_get()
2247 opt_inst_info->port->dev->ifindex)) in team_nl_fill_one_option_get()
2507 tmp_ifindex = opt_inst_info->port ? in team_nl_cmd_options_set()
2508 opt_inst_info->port->dev->ifindex : 0; in team_nl_cmd_options_set()
2562 struct team_port *port) in team_nl_fill_one_port_get() argument
2569 if (nla_put_u32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex)) in team_nl_fill_one_port_get()
2571 if (port->changed) { in team_nl_fill_one_port_get()
2574 port->changed = false; in team_nl_fill_one_port_get()
2576 if ((port->removed && in team_nl_fill_one_port_get()
2578 (port->state.linkup && in team_nl_fill_one_port_get()
2580 nla_put_u32(skb, TEAM_ATTR_PORT_SPEED, port->state.speed) || in team_nl_fill_one_port_get()
2581 nla_put_u8(skb, TEAM_ATTR_PORT_DUPLEX, port->state.duplex)) in team_nl_fill_one_port_get()
2598 struct team_port *port; in team_nl_send_port_list_get() local
2604 port = list_first_entry_or_null(&team->port_list, in team_nl_send_port_list_get()
2633 } else if (port) { in team_nl_send_port_list_get()
2634 list_for_each_entry_from(port, &team->port_list, list) { in team_nl_send_port_list_get()
2635 err = team_nl_fill_one_port_get(skb, port); in team_nl_send_port_list_get()
2736 struct team_port *port) in team_nl_send_event_port_get() argument
2739 port); in team_nl_send_event_port_get()
2776 static void __team_port_change_send(struct team_port *port, bool linkup) in __team_port_change_send() argument
2780 port->changed = true; in __team_port_change_send()
2781 port->state.linkup = linkup; in __team_port_change_send()
2782 team_refresh_port_linkup(port); in __team_port_change_send()
2786 err = __ethtool_get_settings(port->dev, &ecmd); in __team_port_change_send()
2788 port->state.speed = ethtool_cmd_speed(&ecmd); in __team_port_change_send()
2789 port->state.duplex = ecmd.duplex; in __team_port_change_send()
2793 port->state.speed = 0; in __team_port_change_send()
2794 port->state.duplex = 0; in __team_port_change_send()
2797 err = team_nl_send_event_port_get(port->team, port); in __team_port_change_send()
2799 netdev_warn(port->team->dev, "Failed to send port change of device %s via netlink (err %d)\n", in __team_port_change_send()
2800 port->dev->name, err); in __team_port_change_send()
2806 struct team_port *port; in __team_carrier_check() local
2813 list_for_each_entry(port, &team->port_list, list) { in __team_carrier_check()
2814 if (port->linkup) { in __team_carrier_check()
2826 static void __team_port_change_check(struct team_port *port, bool linkup) in __team_port_change_check() argument
2828 if (port->state.linkup != linkup) in __team_port_change_check()
2829 __team_port_change_send(port, linkup); in __team_port_change_check()
2830 __team_carrier_check(port->team); in __team_port_change_check()
2833 static void __team_port_change_port_added(struct team_port *port, bool linkup) in __team_port_change_port_added() argument
2835 __team_port_change_send(port, linkup); in __team_port_change_port_added()
2836 __team_carrier_check(port->team); in __team_port_change_port_added()
2839 static void __team_port_change_port_removed(struct team_port *port) in __team_port_change_port_removed() argument
2841 port->removed = true; in __team_port_change_port_removed()
2842 __team_port_change_send(port, false); in __team_port_change_port_removed()
2843 __team_carrier_check(port->team); in __team_port_change_port_removed()
2846 static void team_port_change_check(struct team_port *port, bool linkup) in team_port_change_check() argument
2848 struct team *team = port->team; in team_port_change_check()
2851 __team_port_change_check(port, linkup); in team_port_change_check()
2864 struct team_port *port; in team_device_event() local
2866 port = team_port_get_rtnl(dev); in team_device_event()
2867 if (!port) in team_device_event()
2873 team_port_change_check(port, true); in team_device_event()
2876 team_port_change_check(port, false); in team_device_event()
2879 if (netif_running(port->dev)) in team_device_event()
2880 team_port_change_check(port, in team_device_event()
2881 !!netif_carrier_ok(port->dev)); in team_device_event()
2884 team_del_slave(port->team->dev, dev); in team_device_event()
2887 team_compute_features(port->team); in team_device_event()
2891 if (!port->team->port_mtu_change_allowed) in team_device_event()
2899 call_netdevice_notifiers(event, port->team->dev); in team_device_event()