Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[deliverable/linux.git] / drivers / infiniband / core / multicast.c
index 250937cb9a1a5071f054a24e74414a8c90bd88a0..a83ec28a147b4884492fa960fd721568791553f2 100644 (file)
@@ -93,6 +93,18 @@ enum {
 
 struct mcast_member;
 
+/*
+* There are 4 types of join states:
+* FullMember, NonMember, SendOnlyNonMember, SendOnlyFullMember.
+*/
+enum {
+       FULLMEMBER_JOIN,
+       NONMEMBER_JOIN,
+       SENDONLY_NONMEBER_JOIN,
+       SENDONLY_FULLMEMBER_JOIN,
+       NUM_JOIN_MEMBERSHIP_TYPES,
+};
+
 struct mcast_group {
        struct ib_sa_mcmember_rec rec;
        struct rb_node          node;
@@ -102,7 +114,7 @@ struct mcast_group {
        struct list_head        pending_list;
        struct list_head        active_list;
        struct mcast_member     *last_join;
-       int                     members[3];
+       int                     members[NUM_JOIN_MEMBERSHIP_TYPES];
        atomic_t                refcount;
        enum mcast_group_state  state;
        struct ib_sa_query      *query;
@@ -220,8 +232,9 @@ static void queue_join(struct mcast_member *member)
 }
 
 /*
- * A multicast group has three types of members: full member, non member, and
- * send only member.  We need to keep track of the number of members of each
+ * A multicast group has four types of members: full member, non member,
+ * sendonly non member and sendonly full member.
+ * We need to keep track of the number of members of each
  * type based on their join state.  Adjust the number of members the belong to
  * the specified join states.
  */
@@ -229,7 +242,7 @@ static void adjust_membership(struct mcast_group *group, u8 join_state, int inc)
 {
        int i;
 
-       for (i = 0; i < 3; i++, join_state >>= 1)
+       for (i = 0; i < NUM_JOIN_MEMBERSHIP_TYPES; i++, join_state >>= 1)
                if (join_state & 0x1)
                        group->members[i] += inc;
 }
@@ -245,7 +258,7 @@ static u8 get_leave_state(struct mcast_group *group)
        u8 leave_state = 0;
        int i;
 
-       for (i = 0; i < 3; i++)
+       for (i = 0; i < NUM_JOIN_MEMBERSHIP_TYPES; i++)
                if (!group->members[i])
                        leave_state |= (0x1 << i);
 
This page took 0.024297 seconds and 5 git commands to generate.