• Home
  • Raw
  • Download

Lines Matching refs:b

69 static void bearer_disable(struct net *net, struct tipc_bearer *b);
176 struct tipc_bearer *b; in tipc_bearer_find() local
180 b = rtnl_dereference(tn->bearer_list[i]); in tipc_bearer_find()
181 if (b && (!strcmp(b->name, name))) in tipc_bearer_find()
182 return b; in tipc_bearer_find()
195 struct tipc_bearer *b; in tipc_bearer_get_name() local
200 b = rtnl_dereference(tn->bearer_list[bearer_id]); in tipc_bearer_get_name()
201 if (!b) in tipc_bearer_get_name()
204 strcpy(name, b->name); in tipc_bearer_get_name()
211 struct tipc_bearer *b; in tipc_bearer_add_dest() local
214 b = rcu_dereference(tn->bearer_list[bearer_id]); in tipc_bearer_add_dest()
215 if (b) in tipc_bearer_add_dest()
216 tipc_disc_add_dest(b->disc); in tipc_bearer_add_dest()
223 struct tipc_bearer *b; in tipc_bearer_remove_dest() local
226 b = rcu_dereference(tn->bearer_list[bearer_id]); in tipc_bearer_remove_dest()
227 if (b) in tipc_bearer_remove_dest()
228 tipc_disc_remove_dest(b->disc); in tipc_bearer_remove_dest()
243 struct tipc_bearer *b; in tipc_enable_bearer() local
276 b = rtnl_dereference(tn->bearer_list[i]); in tipc_enable_bearer()
277 if (!b) { in tipc_enable_bearer()
281 if (!strcmp(name, b->name)) { in tipc_enable_bearer()
287 if (b->priority == prio && in tipc_enable_bearer()
313 b = kzalloc(sizeof(*b), GFP_ATOMIC); in tipc_enable_bearer()
314 if (!b) in tipc_enable_bearer()
317 strcpy(b->name, name); in tipc_enable_bearer()
318 b->media = m; in tipc_enable_bearer()
319 res = m->enable_media(net, b, attr); in tipc_enable_bearer()
321 kfree(b); in tipc_enable_bearer()
327 b->identity = bearer_id; in tipc_enable_bearer()
328 b->tolerance = m->tolerance; in tipc_enable_bearer()
329 b->min_win = m->min_win; in tipc_enable_bearer()
330 b->max_win = m->max_win; in tipc_enable_bearer()
331 b->domain = disc_domain; in tipc_enable_bearer()
332 b->net_plane = bearer_id + 'A'; in tipc_enable_bearer()
333 b->priority = prio; in tipc_enable_bearer()
334 refcount_set(&b->refcnt, 1); in tipc_enable_bearer()
336 res = tipc_disc_create(net, b, &b->bcast_addr, &skb); in tipc_enable_bearer()
338 bearer_disable(net, b); in tipc_enable_bearer()
346 bearer_disable(net, b); in tipc_enable_bearer()
351 test_and_set_bit_lock(0, &b->up); in tipc_enable_bearer()
352 rcu_assign_pointer(tn->bearer_list[bearer_id], b); in tipc_enable_bearer()
354 tipc_bearer_xmit_skb(net, bearer_id, skb, &b->bcast_addr); in tipc_enable_bearer()
367 static int tipc_reset_bearer(struct net *net, struct tipc_bearer *b) in tipc_reset_bearer() argument
369 pr_info("Resetting bearer <%s>\n", b->name); in tipc_reset_bearer()
370 tipc_node_delete_links(net, b->identity); in tipc_reset_bearer()
371 tipc_disc_reset(net, b); in tipc_reset_bearer()
375 bool tipc_bearer_hold(struct tipc_bearer *b) in tipc_bearer_hold() argument
377 return (b && refcount_inc_not_zero(&b->refcnt)); in tipc_bearer_hold()
380 void tipc_bearer_put(struct tipc_bearer *b) in tipc_bearer_put() argument
382 if (b && refcount_dec_and_test(&b->refcnt)) in tipc_bearer_put()
383 kfree_rcu(b, rcu); in tipc_bearer_put()
391 static void bearer_disable(struct net *net, struct tipc_bearer *b) in bearer_disable() argument
394 int bearer_id = b->identity; in bearer_disable()
396 pr_info("Disabling bearer <%s>\n", b->name); in bearer_disable()
397 clear_bit_unlock(0, &b->up); in bearer_disable()
399 b->media->disable_media(b); in bearer_disable()
400 RCU_INIT_POINTER(b->media_ptr, NULL); in bearer_disable()
401 if (b->disc) in bearer_disable()
402 tipc_disc_delete(b->disc); in bearer_disable()
404 tipc_bearer_put(b); in bearer_disable()
408 int tipc_enable_l2_media(struct net *net, struct tipc_bearer *b, in tipc_enable_l2_media() argument
411 char *dev_name = strchr((const char *)b->name, ':') + 1; in tipc_enable_l2_media()
412 int hwaddr_len = b->media->hwaddr_len; in tipc_enable_l2_media()
426 pr_info("Enabling <%s> not permitted\n", b->name); in tipc_enable_l2_media()
442 rcu_assign_pointer(b->media_ptr, dev); in tipc_enable_l2_media()
443 b->pt.dev = dev; in tipc_enable_l2_media()
444 b->pt.type = htons(ETH_P_TIPC); in tipc_enable_l2_media()
445 b->pt.func = tipc_l2_rcv_msg; in tipc_enable_l2_media()
446 dev_add_pack(&b->pt); in tipc_enable_l2_media()
447 memset(&b->bcast_addr, 0, sizeof(b->bcast_addr)); in tipc_enable_l2_media()
448 memcpy(b->bcast_addr.value, dev->broadcast, hwaddr_len); in tipc_enable_l2_media()
449 b->bcast_addr.media_id = b->media->type_id; in tipc_enable_l2_media()
450 b->bcast_addr.broadcast = TIPC_BROADCAST_SUPPORT; in tipc_enable_l2_media()
451 b->mtu = dev->mtu; in tipc_enable_l2_media()
452 b->media->raw2addr(b, &b->addr, (char *)dev->dev_addr); in tipc_enable_l2_media()
453 rcu_assign_pointer(dev->tipc_ptr, b); in tipc_enable_l2_media()
461 void tipc_disable_l2_media(struct tipc_bearer *b) in tipc_disable_l2_media() argument
465 dev = (struct net_device *)rtnl_dereference(b->media_ptr); in tipc_disable_l2_media()
466 dev_remove_pack(&b->pt); in tipc_disable_l2_media()
479 struct tipc_bearer *b, struct tipc_media_addr *dest) in tipc_l2_send_msg() argument
484 dev = (struct net_device *)rcu_dereference(b->media_ptr); in tipc_l2_send_msg()
505 struct tipc_bearer *b; in tipc_bearer_bcast_support() local
508 b = bearer_get(net, bearer_id); in tipc_bearer_bcast_support()
509 if (b) in tipc_bearer_bcast_support()
510 supp = (b->bcast_addr.broadcast == TIPC_BROADCAST_SUPPORT); in tipc_bearer_bcast_support()
518 struct tipc_bearer *b; in tipc_bearer_mtu() local
521 b = rcu_dereference(tipc_net(net)->bearer_list[bearer_id]); in tipc_bearer_mtu()
522 if (b) in tipc_bearer_mtu()
523 mtu = b->mtu; in tipc_bearer_mtu()
535 struct tipc_bearer *b; in tipc_bearer_xmit_skb() local
538 b = bearer_get(net, bearer_id); in tipc_bearer_xmit_skb()
539 if (likely(b && (test_bit(0, &b->up) || msg_is_reset(hdr)))) { in tipc_bearer_xmit_skb()
541 tipc_crypto_xmit(net, &skb, b, dest, NULL); in tipc_bearer_xmit_skb()
544 b->media->send_msg(net, skb, b, dest); in tipc_bearer_xmit_skb()
558 struct tipc_bearer *b; in tipc_bearer_xmit() local
565 b = bearer_get(net, bearer_id); in tipc_bearer_xmit()
566 if (unlikely(!b)) in tipc_bearer_xmit()
570 if (likely(test_bit(0, &b->up) || msg_is_reset(buf_msg(skb)))) { in tipc_bearer_xmit()
572 tipc_crypto_xmit(net, &skb, b, dst, __dnode); in tipc_bearer_xmit()
575 b->media->send_msg(net, skb, b, dst); in tipc_bearer_xmit()
591 struct tipc_bearer *b; in tipc_bearer_bc_xmit() local
596 b = bearer_get(net, bearer_id); in tipc_bearer_bc_xmit()
597 if (unlikely(!b || !test_bit(0, &b->up))) in tipc_bearer_bc_xmit()
604 dst = &b->bcast_addr; in tipc_bearer_bc_xmit()
606 tipc_crypto_xmit(net, &skb, b, dst, NULL); in tipc_bearer_bc_xmit()
609 b->media->send_msg(net, skb, b, dst); in tipc_bearer_bc_xmit()
628 struct tipc_bearer *b; in tipc_l2_rcv_msg() local
631 b = rcu_dereference(dev->tipc_ptr) ?: in tipc_l2_rcv_msg()
633 if (likely(b && test_bit(0, &b->up) && in tipc_l2_rcv_msg()
637 tipc_rcv(dev_net(b->pt.dev), skb, b); in tipc_l2_rcv_msg()
660 struct tipc_bearer *b; in tipc_l2_device_event() local
662 b = rtnl_dereference(dev->tipc_ptr); in tipc_l2_device_event()
663 if (!b) in tipc_l2_device_event()
666 trace_tipc_l2_device_event(dev, b, evt); in tipc_l2_device_event()
670 test_and_set_bit_lock(0, &b->up); in tipc_l2_device_event()
675 clear_bit_unlock(0, &b->up); in tipc_l2_device_event()
676 tipc_reset_bearer(net, b); in tipc_l2_device_event()
679 test_and_set_bit_lock(0, &b->up); in tipc_l2_device_event()
683 bearer_disable(net, b); in tipc_l2_device_event()
686 b->mtu = dev->mtu; in tipc_l2_device_event()
687 tipc_reset_bearer(net, b); in tipc_l2_device_event()
690 b->media->raw2addr(b, &b->addr, in tipc_l2_device_event()
692 tipc_reset_bearer(net, b); in tipc_l2_device_event()
696 bearer_disable(net, b); in tipc_l2_device_event()
720 struct tipc_bearer *b; in tipc_bearer_stop() local
724 b = rtnl_dereference(tn->bearer_list[i]); in tipc_bearer_stop()
725 if (b) { in tipc_bearer_stop()
726 bearer_disable(net, b); in tipc_bearer_stop()
1035 struct tipc_bearer *b; in tipc_nl_bearer_add() local
1053 b = tipc_bearer_find(net, name); in tipc_nl_bearer_add()
1054 if (!b) { in tipc_nl_bearer_add()
1062 if (b->media->type_id != TIPC_MEDIA_TYPE_UDP) { in tipc_nl_bearer_add()
1068 err = tipc_udp_nl_bearer_add(b, in tipc_nl_bearer_add()
1083 struct tipc_bearer *b; in __tipc_nl_bearer_set() local
1102 b = tipc_bearer_find(net, name); in __tipc_nl_bearer_set()
1103 if (!b) { in __tipc_nl_bearer_set()
1117 b->tolerance = nla_get_u32(props[TIPC_NLA_PROP_TOL]); in __tipc_nl_bearer_set()
1118 tipc_node_apply_property(net, b, TIPC_NLA_PROP_TOL); in __tipc_nl_bearer_set()
1121 b->priority = nla_get_u32(props[TIPC_NLA_PROP_PRIO]); in __tipc_nl_bearer_set()
1123 b->max_win = nla_get_u32(props[TIPC_NLA_PROP_WIN]); in __tipc_nl_bearer_set()
1125 if (b->media->type_id != TIPC_MEDIA_TYPE_UDP) { in __tipc_nl_bearer_set()
1137 b->mtu = nla_get_u32(props[TIPC_NLA_PROP_MTU]); in __tipc_nl_bearer_set()
1138 tipc_node_apply_property(net, b, TIPC_NLA_PROP_MTU); in __tipc_nl_bearer_set()