Changeset View
Changeset View
Standalone View
Standalone View
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
Show First 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | while (n) { | ||||
struct ipoib_mcast *mcast; | struct ipoib_mcast *mcast; | ||||
int ret; | int ret; | ||||
mcast = rb_entry(n, struct ipoib_mcast, rb_node); | mcast = rb_entry(n, struct ipoib_mcast, rb_node); | ||||
ret = memcmp(mgid, mcast->mcmember.mgid.raw, | ret = memcmp(mgid, mcast->mcmember.mgid.raw, | ||||
sizeof (union ib_gid)); | sizeof (union ib_gid)); | ||||
if (ret < 0) | if (ret < 0) | ||||
n = n->rb_left; | n = rb_ptr(n->rb_left); | ||||
else if (ret > 0) | else if (ret > 0) | ||||
n = n->rb_right; | n = rb_ptr(n->rb_right); | ||||
else | else | ||||
return mcast; | return mcast; | ||||
} | } | ||||
return NULL; | return NULL; | ||||
} | } | ||||
static int __ipoib_mcast_add(struct ipoib_dev_priv *priv, | static int __ipoib_mcast_add(struct ipoib_dev_priv *priv, | ||||
struct ipoib_mcast *mcast) | struct ipoib_mcast *mcast) | ||||
{ | { | ||||
struct rb_node **n = &priv->multicast_tree.rb_node, *pn = NULL; | struct rb_node **n = &priv->multicast_tree.rb_node, *pn = NULL; | ||||
while (*n) { | while (rb_ptr(*n)) { | ||||
struct ipoib_mcast *tmcast; | struct ipoib_mcast *tmcast; | ||||
int ret; | int ret; | ||||
pn = *n; | pn = rb_ptr(*n); | ||||
tmcast = rb_entry(pn, struct ipoib_mcast, rb_node); | tmcast = rb_entry(pn, struct ipoib_mcast, rb_node); | ||||
ret = memcmp(mcast->mcmember.mgid.raw, tmcast->mcmember.mgid.raw, | ret = memcmp(mcast->mcmember.mgid.raw, tmcast->mcmember.mgid.raw, | ||||
sizeof (union ib_gid)); | sizeof (union ib_gid)); | ||||
if (ret < 0) | if (ret < 0) | ||||
n = &pn->rb_left; | n = &pn->rb_left; | ||||
else if (ret > 0) | else if (ret > 0) | ||||
n = &pn->rb_right; | n = &pn->rb_right; | ||||
▲ Show 20 Lines • Show All 791 Lines • Show Last 20 Lines |