Lines Matching defs:member

200 static void deref_member(struct mcast_member *member)
202 if (refcount_dec_and_test(&member->refcount))
203 complete(&member->comp);
206 static void queue_join(struct mcast_member *member)
208 struct mcast_group *group = member->group;
212 list_add_tail(&member->list, &group->pending_list);
222 * A multicast group has four types of members: full member, non member,
223 * sendonly non member and sendonly full member.
239 * the group is still a member with the SA, we need to leave that join state.
330 static int send_join(struct mcast_group *group, struct mcast_member *member)
335 group->last_join = member;
338 &member->multicast.rec,
339 member->multicast.comp_mask,
365 static void join_group(struct mcast_group *group, struct mcast_member *member,
368 member->state = MCAST_MEMBER;
371 member->multicast.rec = group->rec;
372 member->multicast.rec.join_state = join_state;
373 list_move(&member->list, &group->active_list);
376 static int fail_join(struct mcast_group *group, struct mcast_member *member,
380 list_del_init(&member->list);
382 return member->multicast.callback(status, &member->multicast);
387 struct mcast_member *member;
402 member = list_entry(group->active_list.next,
404 refcount_inc(&member->refcount);
405 list_del_init(&member->list);
406 adjust_membership(group, member->multicast.rec.join_state, -1);
407 member->state = MCAST_ERROR;
410 ret = member->multicast.callback(-ENETRESET,
411 &member->multicast);
412 deref_member(member);
414 ib_sa_free_multicast(&member->multicast);
427 struct mcast_member *member;
444 member = list_entry(group->pending_list.next,
446 multicast = &member->multicast;
448 refcount_inc(&member->refcount);
454 join_group(group, member, join_state);
456 list_del_init(&member->list);
461 status = send_join(group, member);
463 deref_member(member);
466 ret = fail_join(group, member, status);
469 deref_member(member);
471 ib_sa_free_multicast(&member->multicast);
493 struct mcast_member *member;
497 member = list_entry(group->pending_list.next,
499 if (group->last_join == member) {
500 refcount_inc(&member->refcount);
501 list_del_init(&member->list);
503 ret = member->multicast.callback(status, &member->multicast);
504 deref_member(member);
506 ib_sa_free_multicast(&member->multicast);
616 struct mcast_member *member;
624 member = kmalloc(sizeof *member, gfp_mask);
625 if (!member)
629 member->client = client;
630 member->multicast.rec = *rec;
631 member->multicast.comp_mask = comp_mask;
632 member->multicast.callback = callback;
633 member->multicast.context = context;
634 init_completion(&member->comp);
635 refcount_set(&member->refcount, 1);
636 member->state = MCAST_JOINING;
638 member->group = acquire_group(&dev->port[port_num - dev->start_port],
640 if (!member->group) {
651 multicast = &member->multicast;
652 queue_join(member);
657 kfree(member);
664 struct mcast_member *member;
667 member = container_of(multicast, struct mcast_member, multicast);
668 group = member->group;
671 if (member->state == MCAST_MEMBER)
674 list_del_init(&member->list);
686 deref_member(member);
687 wait_for_completion(&member->comp);
688 ib_sa_client_put(member->client);
689 kfree(member);
721 * member record and gid of the device.
724 * @rec: Multicast member record to use
730 * member record and other device properties. On success the caller is