On Fri, Dec 11, 2015 at 06:21:43PM -0500, ira. weiny wrote:
> 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"?

Nevermind on this one, I misread this, it's a pointer to the full gid...

Ira

> 
> 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
--
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

Reply via email to