Lines Matching refs:net

56 static u16 rio_destid_alloc(struct rio_net *net)  in rio_destid_alloc()  argument
59 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_alloc()
82 static int rio_destid_reserve(struct rio_net *net, u16 destid) in rio_destid_reserve() argument
85 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_reserve()
101 static void rio_destid_free(struct rio_net *net, u16 destid) in rio_destid_free() argument
103 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_free()
115 static u16 rio_destid_first(struct rio_net *net) in rio_destid_first() argument
118 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_first()
135 static u16 rio_destid_next(struct rio_net *net, u16 from) in rio_destid_next() argument
138 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_next()
191 static int rio_clear_locks(struct rio_net *net) in rio_clear_locks() argument
193 struct rio_mport *port = net->hport; in rio_clear_locks()
208 list_for_each_entry(rdev, &net->devices, net_list) { in rio_clear_locks()
322 static struct rio_dev *rio_setup_device(struct rio_net *net, in rio_setup_device() argument
349 rdev->net = net; in rio_setup_device()
404 next_destid = rio_destid_alloc(net); in rio_setup_device()
431 dev_set_name(&rdev->dev, "%02x:s:%04x", rdev->net->id, in rio_setup_device()
441 dev_set_name(&rdev->dev, "%02x:e:%04x", rdev->net->id, in rio_setup_device()
445 rdev->dev.parent = &net->dev; in rio_setup_device()
526 static int rio_enum_peer(struct rio_net *net, struct rio_mport *port, in rio_enum_peer() argument
583 rdev = rio_setup_device(net, port, RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
604 destid = rio_destid_first(net); in rio_enum_peer()
611 destid = rio_destid_next(net, destid + 1); in rio_enum_peer()
643 if (rio_enum_peer(net, port, hopcount + 1, in rio_enum_peer()
648 destid = rio_destid_next(net, cur_destid + 1); in rio_enum_peer()
662 destid = rio_destid_next(net, in rio_enum_peer()
690 next_destid = rio_destid_alloc(net); in rio_enum_peer()
730 rio_disc_peer(struct rio_net *net, struct rio_mport *port, u16 destid, in rio_disc_peer() argument
738 if ((rdev = rio_setup_device(net, port, destid, hopcount, 0))) { in rio_disc_peer()
780 if (rio_disc_peer(net, port, ndestid, in rio_disc_peer()
812 static void rio_scan_release_net(struct rio_net *net) in rio_scan_release_net() argument
814 pr_debug("RIO-SCAN: %s: net_%d\n", __func__, net->id); in rio_scan_release_net()
815 kfree(net->enum_data); in rio_scan_release_net()
820 struct rio_net *net; in rio_scan_release_dev() local
822 net = to_rio_net(dev); in rio_scan_release_dev()
823 pr_debug("RIO-SCAN: %s: net_%d\n", __func__, net->id); in rio_scan_release_dev()
824 kfree(net); in rio_scan_release_dev()
840 struct rio_net *net; in rio_scan_alloc_net() local
842 net = rio_alloc_net(mport); in rio_scan_alloc_net()
844 if (net && do_enum) { in rio_scan_alloc_net()
857 rio_free_net(net); in rio_scan_alloc_net()
858 net = NULL; in rio_scan_alloc_net()
860 net->enum_data = idtab; in rio_scan_alloc_net()
861 net->release = rio_scan_release_net; in rio_scan_alloc_net()
868 if (net) { in rio_scan_alloc_net()
869 net->id = mport->id; in rio_scan_alloc_net()
870 net->hport = mport; in rio_scan_alloc_net()
871 dev_set_name(&net->dev, "rnet_%d", net->id); in rio_scan_alloc_net()
872 net->dev.parent = &mport->dev; in rio_scan_alloc_net()
873 net->dev.release = rio_scan_release_dev; in rio_scan_alloc_net()
874 rio_add_net(net); in rio_scan_alloc_net()
877 return net; in rio_scan_alloc_net()
888 static void rio_update_route_tables(struct rio_net *net) in rio_update_route_tables() argument
895 list_for_each_entry(rdev, &net->devices, net_list) { in rio_update_route_tables()
899 list_for_each_entry(rswitch, &net->switches, node) { in rio_update_route_tables()
948 struct rio_net *net = NULL; in rio_enum_mport() local
974 net = rio_scan_alloc_net(mport, 1, 0); in rio_enum_mport()
975 if (!net) { in rio_enum_mport()
982 rio_destid_reserve(net, mport->host_deviceid); in rio_enum_mport()
991 next_destid = rio_destid_alloc(net); in rio_enum_mport()
993 if (rio_enum_peer(net, mport, 0, NULL, 0) < 0) { in rio_enum_mport()
998 rio_clear_locks(net); in rio_enum_mport()
1003 rio_destid_free(net, next_destid); in rio_enum_mport()
1004 rio_update_route_tables(net); in rio_enum_mport()
1005 rio_clear_locks(net); in rio_enum_mport()
1024 static void rio_build_route_tables(struct rio_net *net) in rio_build_route_tables() argument
1031 list_for_each_entry(rswitch, &net->switches, node) { in rio_build_route_tables()
1034 rio_lock_device(net->hport, rdev->destid, in rio_build_route_tables()
1037 i < RIO_MAX_ROUTE_ENTRIES(net->hport->sys_size); in rio_build_route_tables()
1045 rio_unlock_device(net->hport, rdev->destid, rdev->hopcount); in rio_build_route_tables()
1063 struct rio_net *net = NULL; in rio_disc_mport() local
1091 net = rio_scan_alloc_net(mport, 0, 0); in rio_disc_mport()
1092 if (!net) { in rio_disc_mport()
1103 if (rio_disc_peer(net, mport, RIO_ANY_DESTID(mport->sys_size), in rio_disc_mport()
1111 rio_build_route_tables(net); in rio_disc_mport()