Lines Matching refs:destid
64 int destid; in rio_destid_alloc() local
68 destid = find_first_zero_bit(idtab->table, idtab->max); in rio_destid_alloc()
70 if (destid < idtab->max) { in rio_destid_alloc()
71 set_bit(destid, idtab->table); in rio_destid_alloc()
72 destid += idtab->start; in rio_destid_alloc()
74 destid = RIO_INVALID_DESTID; in rio_destid_alloc()
77 return (u16)destid; in rio_destid_alloc()
88 static int rio_destid_reserve(struct rio_net *net, u16 destid) in rio_destid_reserve() argument
93 destid -= idtab->start; in rio_destid_reserve()
95 oldbit = test_and_set_bit(destid, idtab->table); in rio_destid_reserve()
107 static void rio_destid_free(struct rio_net *net, u16 destid) in rio_destid_free() argument
111 destid -= idtab->start; in rio_destid_free()
113 clear_bit(destid, idtab->table); in rio_destid_free()
123 int destid; in rio_destid_first() local
127 destid = find_first_bit(idtab->table, idtab->max); in rio_destid_first()
128 if (destid >= idtab->max) in rio_destid_first()
129 destid = RIO_INVALID_DESTID; in rio_destid_first()
131 destid += idtab->start; in rio_destid_first()
133 return (u16)destid; in rio_destid_first()
143 int destid; in rio_destid_next() local
147 destid = find_next_bit(idtab->table, idtab->max, from); in rio_destid_next()
148 if (destid >= idtab->max) in rio_destid_next()
149 destid = RIO_INVALID_DESTID; in rio_destid_next()
151 destid += idtab->start; in rio_destid_next()
153 return (u16)destid; in rio_destid_next()
165 static u16 rio_get_device_id(struct rio_mport *port, u16 destid, u8 hopcount) in rio_get_device_id() argument
169 rio_mport_read_config_32(port, destid, hopcount, RIO_DID_CSR, &result); in rio_get_device_id()
183 static void rio_set_device_id(struct rio_mport *port, u16 destid, u8 hopcount, u16 did) in rio_set_device_id() argument
185 rio_mport_write_config_32(port, destid, hopcount, RIO_DID_CSR, in rio_set_device_id()
342 struct rio_mport *port, u16 destid, in rio_setup_device() argument
353 if (rio_mport_read_config_32(port, destid, hopcount, in rio_setup_device()
358 rio_mport_read_config_32(port, destid, hopcount, in rio_setup_device()
373 rio_mport_read_config_32(port, destid, hopcount, RIO_DEV_ID_CAR, in rio_setup_device()
377 rio_mport_read_config_32(port, destid, hopcount, RIO_DEV_INFO_CAR, in rio_setup_device()
379 rio_mport_read_config_32(port, destid, hopcount, RIO_ASM_ID_CAR, in rio_setup_device()
383 rio_mport_read_config_32(port, destid, hopcount, RIO_ASM_INFO_CAR, in rio_setup_device()
388 rdev->phys_efptr = rio_mport_get_physefb(port, 0, destid, in rio_setup_device()
391 rdev->em_efptr = rio_mport_get_feature(port, 0, destid, in rio_setup_device()
395 rio_mport_read_config_32(port, destid, hopcount, RIO_SRC_OPS_CAR, in rio_setup_device()
397 rio_mport_read_config_32(port, destid, hopcount, RIO_DST_OPS_CAR, in rio_setup_device()
406 rio_mport_write_config_32(port, destid, hopcount, in rio_setup_device()
411 rio_mport_read_config_32(port, destid, hopcount, in rio_setup_device()
418 rio_set_device_id(port, destid, hopcount, next_destid); in rio_setup_device()
419 rdev->destid = next_destid; in rio_setup_device()
422 rdev->destid = rio_get_device_id(port, destid, hopcount); in rio_setup_device()
429 rdev->destid = destid; in rio_setup_device()
458 rio_enable_rx_tx_port(port, 0, destid, hopcount, 0); in rio_setup_device()
506 rio_sport_is_active(struct rio_mport *port, u16 destid, u8 hopcount, int sport) in rio_sport_is_active() argument
511 ext_ftr_ptr = rio_mport_get_efb(port, 0, destid, hopcount, 0); in rio_sport_is_active()
514 rio_mport_read_config_32(port, destid, hopcount, in rio_sport_is_active()
522 ext_ftr_ptr = rio_mport_get_efb(port, 0, destid, hopcount, in rio_sport_is_active()
527 rio_mport_read_config_32(port, destid, hopcount, in rio_sport_is_active()
636 u16 destid; in rio_enum_peer() local
644 destid = rio_destid_first(net); in rio_enum_peer()
645 while (destid != RIO_INVALID_DESTID && destid < next_destid) { in rio_enum_peer()
646 if (destid != port->host_deviceid) { in rio_enum_peer()
648 destid, sw_inport, 0); in rio_enum_peer()
649 rdev->rswitch->route_table[destid] = sw_inport; in rio_enum_peer()
651 destid = rio_destid_next(net, destid + 1); in rio_enum_peer()
690 destid = rio_destid_next(net, cur_destid + 1); in rio_enum_peer()
691 if (destid != RIO_INVALID_DESTID) { in rio_enum_peer()
692 for (destid = cur_destid; in rio_enum_peer()
693 destid < next_destid;) { in rio_enum_peer()
694 if (destid != port->host_deviceid) { in rio_enum_peer()
697 destid, in rio_enum_peer()
701 route_table[destid] = in rio_enum_peer()
704 destid = rio_destid_next(net, in rio_enum_peer()
705 destid + 1); in rio_enum_peer()
734 rdev->destid = sw_destid; in rio_enum_peer()
772 rio_disc_peer(struct rio_net *net, struct rio_mport *port, u16 destid, in rio_disc_peer() argument
780 if ((rdev = rio_setup_device(net, port, destid, hopcount, 0))) { in rio_disc_peer()
791 rdev->destid = destid; in rio_disc_peer()
804 (port, destid, hopcount, port_num)) { in rio_disc_peer()
809 rio_lock_device(port, destid, hopcount, 1000); in rio_disc_peer()
824 rio_unlock_device(port, destid, hopcount); in rio_disc_peer()
927 u16 destid; in rio_update_route_tables() local
931 destid = rdev->destid; in rio_update_route_tables()
938 if (RIO_INVALID_ROUTE == rswitch->route_table[destid]) { in rio_update_route_tables()
942 if (swrdev->destid == destid) in rio_update_route_tables()
948 destid, sport, 0); in rio_update_route_tables()
949 rswitch->route_table[destid] = sport; in rio_update_route_tables()
1079 rio_lock_device(net->hport, rdev->destid, in rio_build_route_tables()
1090 rio_unlock_device(net->hport, rdev->destid, rdev->hopcount); in rio_build_route_tables()