Lines Matching refs:route

82 	int (*get_route)(struct tb *tb, u8 link, u8 depth, u64 *route);
149 static inline u8 phy_port_from_route(u64 route, u8 depth) in phy_port_from_route() argument
153 link = depth ? route >> ((depth - 1) * 8) : route; in phy_port_from_route()
167 static inline u64 get_parent_route(u64 route) in get_parent_route() argument
169 int depth = tb_route_length(route); in get_parent_route()
170 return depth ? route & ~(0xffULL << (depth - 1) * TB_ROUTE_SHIFT) : 0; in get_parent_route()
256 static int icm_fr_get_route(struct tb *tb, u8 link, u8 depth, u64 *route) in icm_fr_get_route() argument
300 *route = get_route(sw->route_hi, sw->route_lo); in icm_fr_get_route()
463 static void add_switch(struct tb_switch *parent_sw, u64 route, in add_switch() argument
474 sw = tb_switch_alloc(parent_sw->tb, &parent_sw->dev, route); in add_switch()
492 tb_port_at(route, parent_sw)->remote = tb_upstream_port(sw); in add_switch()
493 tb_upstream_port(sw)->remote = tb_port_at(route, parent_sw); in add_switch()
506 u64 route, u8 connection_id, u8 connection_key, in update_switch() argument
512 tb_port_at(route, parent_sw)->remote = tb_upstream_port(sw); in update_switch()
515 sw->config.route_hi = upper_32_bits(route); in update_switch()
516 sw->config.route_lo = lower_32_bits(route); in update_switch()
536 static void add_xdomain(struct tb_switch *sw, u64 route, in add_xdomain() argument
544 xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid); in add_xdomain()
551 tb_port_at(route, sw)->xdomain = xd; in add_xdomain()
560 static void update_xdomain(struct tb_xdomain *xd, u64 route, u8 link) in update_xdomain() argument
563 xd->route = route; in update_xdomain()
572 tb_port_at(xd->route, sw)->xdomain = NULL; in remove_xdomain()
588 u64 route; in icm_fr_device_connected() local
628 ret = icm->get_route(tb, link, depth, &route); in icm_fr_device_connected()
636 route = tb_route(sw); in icm_fr_device_connected()
639 update_switch(parent_sw, sw, route, pkg->connection_id, in icm_fr_device_connected()
687 ret = icm->get_route(tb, link, depth, &route); in icm_fr_device_connected()
695 add_switch(parent_sw, route, &pkg->ep_uuid, (const u8 *)pkg->ep_name, in icm_fr_device_connected()
739 u64 route; in icm_fr_xdomain_connected() local
750 route = get_route(pkg->local_route_hi, pkg->local_route_lo); in icm_fr_xdomain_connected()
756 xd_phy_port = phy_port_from_route(xd->route, xd->depth); in icm_fr_xdomain_connected()
757 phy_port = phy_port_from_route(route, depth); in icm_fr_xdomain_connected()
760 update_xdomain(xd, route, link); in icm_fr_xdomain_connected()
799 sw = get_switch_at_route(tb->root_switch, route); in icm_fr_xdomain_connected()
810 add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, link, in icm_fr_xdomain_connected()
955 request.route_hi = upper_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
956 request.route_lo = lower_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
985 request.route_hi = upper_32_bits(xd->route); in icm_tr_xdomain_tear_down()
986 request.route_lo = lower_32_bits(xd->route); in icm_tr_xdomain_tear_down()
1022 u64 route; in icm_tr_device_connected() local
1032 route = get_route(pkg->route_hi, pkg->route_lo); in icm_tr_device_connected()
1040 route); in icm_tr_device_connected()
1047 if (tb_route(sw) == route && !!sw->authorized == authorized) { in icm_tr_device_connected()
1049 update_switch(parent_sw, sw, route, pkg->connection_id, in icm_tr_device_connected()
1060 sw = tb_switch_find_by_route(tb, route); in icm_tr_device_connected()
1067 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_device_connected()
1073 parent_sw = tb_switch_find_by_route(tb, get_parent_route(route)); in icm_tr_device_connected()
1075 tb_err(tb, "failed to find parent switch for %llx\n", route); in icm_tr_device_connected()
1079 add_switch(parent_sw, route, &pkg->ep_uuid, (const u8 *)pkg->ep_name, in icm_tr_device_connected()
1092 u64 route; in icm_tr_device_disconnected() local
1094 route = get_route(pkg->route_hi, pkg->route_lo); in icm_tr_device_disconnected()
1096 sw = tb_switch_find_by_route(tb, route); in icm_tr_device_disconnected()
1098 tb_warn(tb, "no switch exists at %llx, ignoring\n", route); in icm_tr_device_disconnected()
1113 u64 route; in icm_tr_xdomain_connected() local
1118 route = get_route(pkg->local_route_hi, pkg->local_route_lo); in icm_tr_xdomain_connected()
1122 if (xd->route == route) { in icm_tr_xdomain_connected()
1123 update_xdomain(xd, route, 0); in icm_tr_xdomain_connected()
1133 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_connected()
1144 sw = get_switch_at_route(tb->root_switch, route); in icm_tr_xdomain_connected()
1148 sw = tb_switch_find_by_route(tb, get_parent_route(route)); in icm_tr_xdomain_connected()
1150 tb_warn(tb, "no switch exists at %llx, ignoring\n", route); in icm_tr_xdomain_connected()
1154 add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, 0, 0); in icm_tr_xdomain_connected()
1164 u64 route; in icm_tr_xdomain_disconnected() local
1166 route = get_route(pkg->route_hi, pkg->route_lo); in icm_tr_xdomain_disconnected()
1168 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_disconnected()
1284 static int icm_ar_get_route(struct tb *tb, u8 link, u8 depth, u64 *route) in icm_ar_get_route() argument
1302 *route = get_route(reply.route_hi, reply.route_lo); in icm_ar_get_route()