Lines Matching refs:tip
173 find_trill_link(trill_inst_t *tip, datalink_id_t linkid) in find_trill_link() argument
177 ASSERT(RW_LOCK_HELD(&tip->ti_rwlock)); in find_trill_link()
178 for (tsp = list_head(&tip->ti_socklist); tsp != NULL; in find_trill_link()
179 tsp = list_next(&tip->ti_socklist, tsp)) { in find_trill_link()
195 trill_dest_fwd(trill_inst_t *tip, mblk_t *fwd_mp, uint16_t adj_nick, in trill_dest_fwd() argument
205 adj = trill_node_lookup(tip, adj_nick); in trill_dest_fwd()
244 rw_enter(&tip->ti_rwlock, RW_READER); in trill_dest_fwd()
245 trillhdr->th_ingressnick = tip->ti_nick; in trill_dest_fwd()
246 rw_exit(&tip->ti_rwlock); in trill_dest_fwd()
266 trill_node_unref(tip, adj); in trill_dest_fwd()
271 trill_node_unref(tip, adj); in trill_dest_fwd()
283 trill_multidest_fwd(trill_inst_t *tip, mblk_t *mp, uint16_t egressnick, in trill_multidest_fwd() argument
296 if ((dest = trill_node_lookup(tip, egressnick)) == NULL) in trill_multidest_fwd()
306 ((adj = trill_node_lookup(tip, adjnick)) == NULL)) in trill_multidest_fwd()
314 trill_node_unref(tip, adj); in trill_multidest_fwd()
322 trill_node_unref(tip, adj); in trill_multidest_fwd()
329 trill_node_unref(tip, adj); in trill_multidest_fwd()
348 trill_dest_fwd(tip, fwd_mp, adjnick, is_trill_pkt, in trill_multidest_fwd()
351 trill_node_unref(tip, dest); in trill_multidest_fwd()
357 trill_dest_fwd(tip, mp, adjnicksaved, is_trill_pkt, in trill_multidest_fwd()
384 trill_inst_t *tip = tsock->ts_tip; in trill_recv() local
418 rw_enter(&tip->ti_rwlock, RW_READER); in trill_recv()
419 ournick = tip->ti_nick; in trill_recv()
420 treeroot = tip->ti_treeroot; in trill_recv()
421 rw_exit(&tip->ti_rwlock); in trill_recv()
477 trill_dest_fwd(tip, mp, trillhdr->th_egressnick, in trill_recv()
494 if ((dest = trill_node_lookup(tip, trillhdr->th_egressnick)) == NULL) in trill_recv()
498 if ((adj = trill_node_lookup(tip, adjnick)) == NULL) in trill_recv()
501 trill_node_unref(tip, adj); in trill_recv()
504 trill_node_unref(tip, adj); in trill_recv()
518 if ((source = trill_node_lookup(tip, trillhdr->th_ingressnick)) == NULL) in trill_recv()
538 source, trill_inst_t *, tip); in trill_recv()
550 trill_node_unref(tip, source); in trill_recv()
551 trill_node_unref(tip, dest); in trill_recv()
554 trill_multidest_fwd(tip, mp, trillhdr->th_egressnick, in trill_recv()
571 trill_node_unref(tip, dest); in trill_recv()
573 trill_node_unref(tip, source); in trill_recv()
693 trill_instance_unref(trill_inst_t *tip) in trill_instance_unref() argument
696 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_instance_unref()
697 if (atomic_dec_uint_nv(&tip->ti_refs) == 0) { in trill_instance_unref()
698 list_remove(&trill_inst_list, tip); in trill_instance_unref()
699 rw_exit(&tip->ti_rwlock); in trill_instance_unref()
701 if (tip->ti_binst != NULL) in trill_instance_unref()
702 bridge_trill_brunref(tip->ti_binst); in trill_instance_unref()
703 list_destroy(&tip->ti_socklist); in trill_instance_unref()
704 rw_destroy(&tip->ti_rwlock); in trill_instance_unref()
705 kmem_free(tip, sizeof (*tip)); in trill_instance_unref()
707 rw_exit(&tip->ti_rwlock); in trill_instance_unref()
788 trill_inst_t *tip = tsock->ts_tip; in trill_encap_pkt_cb() local
799 rw_enter(&tip->ti_rwlock, RW_READER); in trill_encap_pkt_cb()
800 ournick = tip->ti_nick; in trill_encap_pkt_cb()
801 dtnick = tip->ti_treeroot; in trill_encap_pkt_cb()
802 rw_exit(&tip->ti_rwlock); in trill_encap_pkt_cb()
813 if ((self = trill_node_lookup(tip, ournick)) == NULL) in trill_encap_pkt_cb()
824 trill_node_unref(tip, self); in trill_encap_pkt_cb()
842 trill_multidest_fwd(tip, mp, dtnick, in trill_encap_pkt_cb()
845 trill_dest_fwd(tip, mp, egress_nick, B_FALSE, B_FALSE, in trill_encap_pkt_cb()
863 trill_inst_t *tip = bptr; in trill_br_dstr_cb() local
866 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_br_dstr_cb()
867 if (tip->ti_binst != NULL) in trill_br_dstr_cb()
868 bridge_trill_brunref(tip->ti_binst); in trill_br_dstr_cb()
869 tip->ti_binst = NULL; in trill_br_dstr_cb()
870 rw_exit(&tip->ti_rwlock); in trill_br_dstr_cb()
995 trill_inst_t *tip, *newtip = NULL; in trill_find_bridge() local
999 newtip = kmem_zalloc(sizeof (*tip), KM_NOSLEEP); in trill_find_bridge()
1002 for (tip = list_head(&trill_inst_list); tip != NULL; in trill_find_bridge()
1003 tip = list_next(&trill_inst_list, tip)) { in trill_find_bridge()
1004 if (strcmp(tip->ti_bridgename, bname) == 0) in trill_find_bridge()
1007 if (tip == NULL) { in trill_find_bridge()
1013 tip = newtip; in trill_find_bridge()
1015 (void) strcpy(tip->ti_bridgename, bname); in trill_find_bridge()
1018 tip->ti_binst = bridge_trill_brref(bname, tip); in trill_find_bridge()
1019 if (tip->ti_binst == NULL) { in trill_find_bridge()
1021 kmem_free(tip, sizeof (*tip)); in trill_find_bridge()
1025 rw_init(&tip->ti_rwlock, NULL, RW_DRIVER, NULL); in trill_find_bridge()
1026 list_create(&tip->ti_socklist, sizeof (trill_sock_t), in trill_find_bridge()
1028 list_insert_tail(&trill_inst_list, tip); in trill_find_bridge()
1030 atomic_inc_uint(&tip->ti_refs); in trill_find_bridge()
1037 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_find_bridge()
1038 list_insert_tail(&(tip->ti_socklist), tsock); in trill_find_bridge()
1039 tsock->ts_tip = tip; in trill_find_bridge()
1040 rw_exit(&tip->ti_rwlock); in trill_find_bridge()
1047 trill_inst_t *tip; in trill_clear_bridge() local
1049 if ((tip = tsock->ts_tip) == NULL) in trill_clear_bridge()
1051 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_clear_bridge()
1052 list_remove(&tip->ti_socklist, tsock); in trill_clear_bridge()
1053 if (list_is_empty(&tip->ti_socklist)) in trill_clear_bridge()
1054 trill_del_all(tip, B_TRUE); in trill_clear_bridge()
1055 rw_exit(&tip->ti_rwlock); in trill_clear_bridge()
1072 trill_inst_t *tip; in trill_do_close() local
1074 tip = tsock->ts_tip; in trill_do_close()
1080 if (tip != NULL) in trill_do_close()
1081 trill_instance_unref(tip); in trill_do_close()
1085 trill_del_all(trill_inst_t *tip, boolean_t lockheld) in trill_del_all() argument
1090 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_del_all()
1092 if (tip->ti_nodes[i] != NULL) in trill_del_all()
1093 (void) trill_del_nick(tip, i, B_TRUE); in trill_del_all()
1096 rw_exit(&tip->ti_rwlock); in trill_del_all()
1110 trill_node_unref(trill_inst_t *tip, trill_node_t *tnp) in trill_node_unref() argument
1116 atomic_dec_uint(&tip->ti_nodecount); in trill_node_unref()
1121 trill_node_lookup(trill_inst_t *tip, uint16_t nick) in trill_node_lookup() argument
1127 rw_enter(&tip->ti_rwlock, RW_READER); in trill_node_lookup()
1128 nick_entry = tip->ti_nodes[nick]; in trill_node_lookup()
1132 rw_exit(&tip->ti_rwlock); in trill_node_lookup()
1137 trill_del_nick(trill_inst_t *tip, uint16_t nick, boolean_t lockheld) in trill_del_nick() argument
1143 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_del_nick()
1145 nick_entry = tip->ti_nodes[nick]; in trill_del_nick()
1147 trill_node_unref(tip, nick_entry); in trill_del_nick()
1148 tip->ti_nodes[nick] = NULL; in trill_del_nick()
1153 rw_exit(&tip->ti_rwlock); in trill_del_nick()
1158 trill_add_nick(trill_inst_t *tip, void *arg, boolean_t self, int mode) in trill_add_nick() argument
1188 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_add_nick()
1189 if (tip->ti_nodes[nick] != NULL) in trill_add_nick()
1190 (void) trill_del_nick(tip, nick, B_TRUE); in trill_add_nick()
1193 tip->ti_nick = nick; in trill_add_nick()
1195 tnode->tn_tsp = find_trill_link(tip, in trill_add_nick()
1200 tip->ti_nodes[nick] = tnode; in trill_add_nick()
1201 tip->ti_nodecount++; in trill_add_nick()
1202 rw_exit(&tip->ti_rwlock); in trill_add_nick()
1210 trill_inst_t *tip = tsock->ts_tip; in trill_do_ioctl() local
1232 if (tip == NULL) in trill_do_ioctl()
1234 error = trill_add_nick(tip, arg, B_TRUE, mode); in trill_do_ioctl()
1238 if (tip == NULL) in trill_do_ioctl()
1240 rw_enter(&tip->ti_rwlock, RW_READER); in trill_do_ioctl()
1241 if (ddi_copyout(&tip->ti_nick, arg, sizeof (tip->ti_nick), in trill_do_ioctl()
1244 rw_exit(&tip->ti_rwlock); in trill_do_ioctl()
1248 if (tip == NULL) in trill_do_ioctl()
1250 error = trill_add_nick(tip, arg, B_FALSE, mode); in trill_do_ioctl()
1256 if (tip == NULL) in trill_do_ioctl()
1260 error = trill_del_nick(tip, delnick, B_FALSE); in trill_do_ioctl()
1264 if (tip == NULL) in trill_do_ioctl()
1266 trill_del_all(tip, B_FALSE); in trill_do_ioctl()
1272 if (tip == NULL) in trill_do_ioctl()
1278 rw_enter(&tip->ti_rwlock, RW_WRITER); in trill_do_ioctl()
1279 tip->ti_treeroot = treeroot; in trill_do_ioctl()
1280 rw_exit(&tip->ti_rwlock); in trill_do_ioctl()
1297 if (tip != NULL) in trill_do_ioctl()
1310 if (tip != NULL) in trill_do_ioctl()
1325 if (tip == NULL) in trill_do_ioctl()
1334 rw_enter(&tip->ti_rwlock, RW_READER); in trill_do_ioctl()
1336 if ((tnp = tip->ti_nodes[nick]) != NULL) { in trill_do_ioctl()
1342 tln.tln_ours = nick == tip->ti_nick; in trill_do_ioctl()
1353 rw_exit(&tip->ti_rwlock); in trill_do_ioctl()