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()
1007 static int team_port_enter(struct team *team, struct team_port *port) in team_port_enter() argument
1013 err = team->ops.port_enter(team, port); in team_port_enter()
1016 port->dev->name); in team_port_enter()
1029 static void team_port_leave(struct team *team, struct team_port *port) in team_port_leave() argument
1032 team->ops.port_leave(team, port); in team_port_leave()
1037 static int team_port_enable_netpoll(struct team *team, struct team_port *port) in team_port_enable_netpoll() argument
1049 err = __netpoll_setup(np, port->dev); in team_port_enable_netpoll()
1054 port->np = np; in team_port_enable_netpoll()
1058 static void team_port_disable_netpoll(struct team_port *port) in team_port_disable_netpoll() argument
1060 struct netpoll *np = port->np; in team_port_disable_netpoll()
1064 port->np = NULL; in team_port_disable_netpoll()
1072 static int team_port_enable_netpoll(struct team *team, struct team_port *port) in team_port_enable_netpoll() argument
1076 static void team_port_disable_netpoll(struct team_port *port) in team_port_disable_netpoll() argument
1100 static void __team_port_change_port_added(struct team_port *port, bool linkup);
1107 struct team_port *port; in team_port_add() local
1140 port = kzalloc(sizeof(struct team_port) + team->mode->port_priv_size, in team_port_add()
1142 if (!port) in team_port_add()
1145 port->dev = port_dev; in team_port_add()
1146 port->team = team; in team_port_add()
1147 INIT_LIST_HEAD(&port->qom_list); in team_port_add()
1149 port->orig.mtu = port_dev->mtu; in team_port_add()
1156 memcpy(port->orig.dev_addr, port_dev->dev_addr, port_dev->addr_len); in team_port_add()
1158 err = team_port_enter(team, port); in team_port_add()
1179 err = team_port_enable_netpoll(team, port); in team_port_add()
1190 port); in team_port_add()
1204 err = __team_option_inst_add_port(team, port); in team_port_add()
1211 port->index = -1; in team_port_add()
1212 list_add_tail_rcu(&port->list, &team->port_list); in team_port_add()
1213 team_port_enable(team, port); in team_port_add()
1215 __team_port_change_port_added(port, !!netif_carrier_ok(port_dev)); in team_port_add()
1229 team_port_disable_netpoll(port); in team_port_add()
1238 team_port_leave(team, port); in team_port_add()
1239 team_port_set_orig_dev_addr(port); in team_port_add()
1242 dev_set_mtu(port_dev, port->orig.mtu); in team_port_add()
1245 kfree(port); in team_port_add()
1250 static void __team_port_change_port_removed(struct team_port *port);
1255 struct team_port *port; in team_port_del() local
1258 port = team_port_get_rtnl(port_dev); in team_port_del()
1259 if (!port || !team_port_find(team, port)) { in team_port_del()
1265 team_port_disable(team, port); in team_port_del()
1266 list_del_rcu(&port->list); in team_port_del()
1269 team_port_disable_netpoll(port); in team_port_del()
1274 team_port_leave(team, port); in team_port_del()
1276 __team_option_inst_mark_removed_port(team, port); in team_port_del()
1278 __team_option_inst_del_port(team, port); in team_port_del()
1279 __team_port_change_port_removed(port); in team_port_del()
1281 team_port_set_orig_dev_addr(port); in team_port_del()
1282 dev_set_mtu(port_dev, port->orig.mtu); in team_port_del()
1283 kfree_rcu(port, rcu); in team_port_del()
1365 struct team_port *port = ctx->info->port; in team_port_en_option_get() local
1367 ctx->data.bool_val = team_port_enabled(port); in team_port_en_option_get()
1374 struct team_port *port = ctx->info->port; in team_port_en_option_set() local
1377 team_port_enable(team, port); in team_port_en_option_set()
1379 team_port_disable(team, port); in team_port_en_option_set()
1386 struct team_port *port = ctx->info->port; in team_user_linkup_option_get() local
1388 ctx->data.bool_val = port->user.linkup; in team_user_linkup_option_get()
1397 struct team_port *port = ctx->info->port; in team_user_linkup_option_set() local
1399 port->user.linkup = ctx->data.bool_val; in team_user_linkup_option_set()
1400 team_refresh_port_linkup(port); in team_user_linkup_option_set()
1401 __team_carrier_check(port->team); in team_user_linkup_option_set()
1408 struct team_port *port = ctx->info->port; in team_user_linkup_en_option_get() local
1410 ctx->data.bool_val = port->user.linkup_enabled; in team_user_linkup_en_option_get()
1417 struct team_port *port = ctx->info->port; in team_user_linkup_en_option_set() local
1419 port->user.linkup_enabled = ctx->data.bool_val; in team_user_linkup_en_option_set()
1420 team_refresh_port_linkup(port); in team_user_linkup_en_option_set()
1421 __team_carrier_check(port->team); in team_user_linkup_en_option_set()
1428 struct team_port *port = ctx->info->port; in team_priority_option_get() local
1430 ctx->data.s32_val = port->priority; in team_priority_option_get()
1437 struct team_port *port = ctx->info->port; in team_priority_option_set() local
1440 if (port->priority == priority) in team_priority_option_set()
1442 port->priority = priority; in team_priority_option_set()
1443 team_queue_override_port_prio_changed(team, port); in team_priority_option_set()
1450 struct team_port *port = ctx->info->port; in team_queue_id_option_get() local
1452 ctx->data.u32_val = port->queue_id; in team_queue_id_option_get()
1459 struct team_port *port = ctx->info->port; in team_queue_id_option_set() local
1462 if (port->queue_id == new_queue_id) in team_queue_id_option_set()
1466 team_queue_override_port_change_queue_id(team, port, new_queue_id); in team_queue_id_option_set()
1607 struct team_port *port; in team_uninit() local
1611 list_for_each_entry_safe(port, tmp, &team->port_list, list) in team_uninit()
1612 team_port_del(team, port->dev); in team_uninit()
1694 struct team_port *port; in team_change_rx_flags() local
1698 list_for_each_entry_rcu(port, &team->port_list, list) { in team_change_rx_flags()
1701 dev_set_promiscuity(port->dev, inc); in team_change_rx_flags()
1705 dev_set_allmulti(port->dev, inc); in team_change_rx_flags()
1714 struct team_port *port; in team_set_rx_mode() local
1717 list_for_each_entry_rcu(port, &team->port_list, list) { in team_set_rx_mode()
1718 dev_uc_sync_multiple(port->dev, dev); in team_set_rx_mode()
1719 dev_mc_sync_multiple(port->dev, dev); in team_set_rx_mode()
1728 struct team_port *port; in team_set_mac_address() local
1734 list_for_each_entry(port, &team->port_list, list) in team_set_mac_address()
1736 team->ops.port_change_dev_addr(team, port); in team_set_mac_address()
1744 struct team_port *port; in team_change_mtu() local
1753 list_for_each_entry(port, &team->port_list, list) { in team_change_mtu()
1754 err = dev_set_mtu(port->dev, new_mtu); in team_change_mtu()
1757 port->dev->name); in team_change_mtu()
1769 list_for_each_entry_continue_reverse(port, &team->port_list, list) in team_change_mtu()
1770 dev_set_mtu(port->dev, dev->mtu); in team_change_mtu()
1818 struct team_port *port; in team_vlan_rx_add_vid() local
1826 list_for_each_entry(port, &team->port_list, list) { in team_vlan_rx_add_vid()
1827 err = vlan_vid_add(port->dev, proto, vid); in team_vlan_rx_add_vid()
1836 list_for_each_entry_continue_reverse(port, &team->port_list, list) in team_vlan_rx_add_vid()
1837 vlan_vid_del(port->dev, proto, vid); in team_vlan_rx_add_vid()
1846 struct team_port *port; in team_vlan_rx_kill_vid() local
1849 list_for_each_entry(port, &team->port_list, list) in team_vlan_rx_kill_vid()
1850 vlan_vid_del(port->dev, proto, vid); in team_vlan_rx_kill_vid()
1863 struct team_port *port; in __team_netpoll_cleanup() local
1865 list_for_each_entry(port, &team->port_list, list) in __team_netpoll_cleanup()
1866 team_port_disable_netpoll(port); in __team_netpoll_cleanup()
1882 struct team_port *port; in team_netpoll_setup() local
1886 list_for_each_entry(port, &team->port_list, list) { in team_netpoll_setup()
1887 err = team_port_enable_netpoll(team, port); in team_netpoll_setup()
1923 struct team_port *port; in team_fix_features() local
1932 list_for_each_entry_rcu(port, &team->port_list, list) { in team_fix_features()
1934 port->dev->features, in team_fix_features()
2236 if (opt_inst_info->port && in team_nl_fill_one_option_get()
2238 opt_inst_info->port->dev->ifindex)) in team_nl_fill_one_option_get()
2498 tmp_ifindex = opt_inst_info->port ? in team_nl_cmd_options_set()
2499 opt_inst_info->port->dev->ifindex : 0; in team_nl_cmd_options_set()
2553 struct team_port *port) in team_nl_fill_one_port_get() argument
2560 if (nla_put_u32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex)) in team_nl_fill_one_port_get()
2562 if (port->changed) { in team_nl_fill_one_port_get()
2565 port->changed = false; in team_nl_fill_one_port_get()
2567 if ((port->removed && in team_nl_fill_one_port_get()
2569 (port->state.linkup && in team_nl_fill_one_port_get()
2571 nla_put_u32(skb, TEAM_ATTR_PORT_SPEED, port->state.speed) || in team_nl_fill_one_port_get()
2572 nla_put_u8(skb, TEAM_ATTR_PORT_DUPLEX, port->state.duplex)) in team_nl_fill_one_port_get()
2589 struct team_port *port; in team_nl_send_port_list_get() local
2595 port = list_first_entry_or_null(&team->port_list, in team_nl_send_port_list_get()
2624 } else if (port) { in team_nl_send_port_list_get()
2625 list_for_each_entry_from(port, &team->port_list, list) { in team_nl_send_port_list_get()
2626 err = team_nl_fill_one_port_get(skb, port); in team_nl_send_port_list_get()
2727 struct team_port *port) in team_nl_send_event_port_get() argument
2730 port); in team_nl_send_event_port_get()
2767 static void __team_port_change_send(struct team_port *port, bool linkup) in __team_port_change_send() argument
2771 port->changed = true; in __team_port_change_send()
2772 port->state.linkup = linkup; in __team_port_change_send()
2773 team_refresh_port_linkup(port); in __team_port_change_send()
2777 err = __ethtool_get_settings(port->dev, &ecmd); in __team_port_change_send()
2779 port->state.speed = ethtool_cmd_speed(&ecmd); in __team_port_change_send()
2780 port->state.duplex = ecmd.duplex; in __team_port_change_send()
2784 port->state.speed = 0; in __team_port_change_send()
2785 port->state.duplex = 0; in __team_port_change_send()
2788 err = team_nl_send_event_port_get(port->team, port); in __team_port_change_send()
2790 netdev_warn(port->team->dev, "Failed to send port change of device %s via netlink (err %d)\n", in __team_port_change_send()
2791 port->dev->name, err); in __team_port_change_send()
2797 struct team_port *port; in __team_carrier_check() local
2804 list_for_each_entry(port, &team->port_list, list) { in __team_carrier_check()
2805 if (port->linkup) { in __team_carrier_check()
2817 static void __team_port_change_check(struct team_port *port, bool linkup) in __team_port_change_check() argument
2819 if (port->state.linkup != linkup) in __team_port_change_check()
2820 __team_port_change_send(port, linkup); in __team_port_change_check()
2821 __team_carrier_check(port->team); in __team_port_change_check()
2824 static void __team_port_change_port_added(struct team_port *port, bool linkup) in __team_port_change_port_added() argument
2826 __team_port_change_send(port, linkup); in __team_port_change_port_added()
2827 __team_carrier_check(port->team); in __team_port_change_port_added()
2830 static void __team_port_change_port_removed(struct team_port *port) in __team_port_change_port_removed() argument
2832 port->removed = true; in __team_port_change_port_removed()
2833 __team_port_change_send(port, false); in __team_port_change_port_removed()
2834 __team_carrier_check(port->team); in __team_port_change_port_removed()
2837 static void team_port_change_check(struct team_port *port, bool linkup) in team_port_change_check() argument
2839 struct team *team = port->team; in team_port_change_check()
2842 __team_port_change_check(port, linkup); in team_port_change_check()
2855 struct team_port *port; in team_device_event() local
2857 port = team_port_get_rtnl(dev); in team_device_event()
2858 if (!port) in team_device_event()
2864 team_port_change_check(port, true); in team_device_event()
2867 team_port_change_check(port, false); in team_device_event()
2870 if (netif_running(port->dev)) in team_device_event()
2871 team_port_change_check(port, in team_device_event()
2872 !!netif_carrier_ok(port->dev)); in team_device_event()
2875 team_del_slave(port->team->dev, dev); in team_device_event()
2878 team_compute_features(port->team); in team_device_event()
2882 if (!port->team->port_mtu_change_allowed) in team_device_event()
2890 call_netdevice_notifiers(event, port->team->dev); in team_device_event()