On Fri, Dec 11, 2015 at 12:16:54PM -0600, Christoph Lameter wrote:
> Code cleanup to move multicast specific code that checks for
> a sendonly join to ipoib_multicast.c. This allows the removal
> of the export of __ipoib_mcast_find().
>
> Signed-off-by: Christoph Lameter <[email protected]>
> ---
> drivers/infiniband/ulp/ipoib/ipoib.h | 3 ++-
> drivers/infiniband/ulp/ipoib/ipoib_main.c | 13 +------------
> drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 21 ++++++++++++++++++++-
> 3 files changed, 23 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h
> b/drivers/infiniband/ulp/ipoib/ipoib.h
> index 989c409..a13f48c 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib.h
> +++ b/drivers/infiniband/ulp/ipoib/ipoib.h
> @@ -549,7 +549,8 @@ void ipoib_path_iter_read(struct ipoib_path_iter *iter,
> int ipoib_mcast_attach(struct net_device *dev, u16 mlid,
> union ib_gid *mgid, int set_qkey);
> void ipoib_mcast_remove_list(struct net_device *dev, struct list_head
> *remove_list);
> -struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid);
> +void ipoib_check_mcast_sendonly(struct ipoib_dev_priv *priv, u8 *mgid,
> + struct list_head *remove_list);
I think I would rather see this called something like
ipoib_add_to_list_sendonly
Or something...
Calling it iboib_check* sounds like it should return a bool.
>
> int ipoib_init_qp(struct net_device *dev);
> int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca);
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c
> b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> index 483ff20..6b16428 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> @@ -1150,7 +1150,6 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv
> *priv)
> unsigned long flags;
> int i;
> LIST_HEAD(remove_list);
> - struct ipoib_mcast *mcast;
> struct net_device *dev = priv->dev;
>
> if (test_bit(IPOIB_STOP_NEIGH_GC, &priv->flags))
> @@ -1179,18 +1178,8 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv
> *priv)
>
> lockdep_is_held(&priv->lock))) != NULL) {
> /* was the neigh idle for two GC periods */
> if (time_after(neigh_obsolete, neigh->alive)) {
> - u8 *mgid = neigh->daddr + 4;
>
> - /* Is this multicast ? */
> - if (*mgid == 0xff) {
> - mcast = __ipoib_mcast_find(dev, mgid);
> -
> - if (mcast &&
> test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
> - list_del(&mcast->list);
> - rb_erase(&mcast->rb_node,
> &priv->multicast_tree);
> - list_add_tail(&mcast->list,
> &remove_list);
> - }
> - }
> + ipoib_check_mcast_sendonly(priv, neigh->daddr +
> 4, &remove_list);
>
> rcu_assign_pointer(*np,
>
> rcu_dereference_protected(neigh->hnext,
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> index 8acb420a..1158819 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> @@ -153,7 +153,7 @@ static struct ipoib_mcast *ipoib_mcast_alloc(struct
> net_device *dev,
> return mcast;
> }
>
> -struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid)
> +static struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void
> *mgid)
> {
> struct ipoib_dev_priv *priv = netdev_priv(dev);
> struct rb_node *n = priv->multicast_tree.rb_node;
> @@ -704,6 +704,25 @@ static int ipoib_mcast_leave(struct net_device *dev,
> struct ipoib_mcast *mcast)
> return 0;
> }
>
> +/*
> + * Check if the multicast group is sendonly. If so remove it from the maps
> + * and add to the remove list
> + */
> +void ipoib_check_mcast_sendonly(struct ipoib_dev_priv *priv, u8 *mgid,
> + struct list_head *remove_list)
> +{
> + /* Is this multicast ? */
> + if (*mgid == 0xff) {
Odd to see a mgid variable which is only u8?
How about "gid_prefix"?
Ira
> + struct ipoib_mcast *mcast = __ipoib_mcast_find(priv->dev, mgid);
> +
> + if (mcast && test_bit(IPOIB_MCAST_FLAG_SENDONLY,
> &mcast->flags)) {
> + list_del(&mcast->list);
> + rb_erase(&mcast->rb_node, &priv->multicast_tree);
> + list_add_tail(&mcast->list, remove_list);
> + }
> + }
> +}
> +
> void ipoib_mcast_remove_list(struct net_device *dev, struct list_head
> *remove_list)
> {
> struct ipoib_mcast *mcast, *tmcast;
> --
> 2.5.0
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html