Skip to content

Commit 5a0e81f

Browse files
Christoph Lameterdledford
authored andcommitted
IB/IPoIB: factor out common multicast list removal code
Code cleanup to remove multicast specific code from ipoib_main.c The removal of a list of multicast groups occurs in three places. Create a new function ipoib_mcast_remove_list(). Use this new function in ipoib_main.c too. That in turn allows the dropping of two functions that were exported from ipoib_multicast.c for expiration of mc groups. Reviewed-by: Ira Weiny <[email protected]> Signed-off-by: Christoph Lameter <[email protected]> Signed-off-by: Doug Ledford <[email protected]>
1 parent e53505a commit 5a0e81f

File tree

3 files changed

+17
-17
lines changed

3 files changed

+17
-17
lines changed

drivers/infiniband/ulp/ipoib/ipoib.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,6 @@ void ipoib_dev_cleanup(struct net_device *dev);
495495
void ipoib_mcast_join_task(struct work_struct *work);
496496
void ipoib_mcast_carrier_on_task(struct work_struct *work);
497497
void ipoib_mcast_send(struct net_device *dev, u8 *daddr, struct sk_buff *skb);
498-
void ipoib_mcast_free(struct ipoib_mcast *mc);
499498

500499
void ipoib_mcast_restart_task(struct work_struct *work);
501500
int ipoib_mcast_start_thread(struct net_device *dev);
@@ -549,7 +548,7 @@ void ipoib_path_iter_read(struct ipoib_path_iter *iter,
549548

550549
int ipoib_mcast_attach(struct net_device *dev, u16 mlid,
551550
union ib_gid *mgid, int set_qkey);
552-
int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast);
551+
void ipoib_mcast_remove_list(struct net_device *dev, struct list_head *remove_list);
553552
struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid);
554553

555554
int ipoib_init_qp(struct net_device *dev);

drivers/infiniband/ulp/ipoib/ipoib_main.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
11501150
unsigned long flags;
11511151
int i;
11521152
LIST_HEAD(remove_list);
1153-
struct ipoib_mcast *mcast, *tmcast;
1153+
struct ipoib_mcast *mcast;
11541154
struct net_device *dev = priv->dev;
11551155

11561156
if (test_bit(IPOIB_STOP_NEIGH_GC, &priv->flags))
@@ -1207,10 +1207,7 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
12071207

12081208
out_unlock:
12091209
spin_unlock_irqrestore(&priv->lock, flags);
1210-
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
1211-
ipoib_mcast_leave(dev, mcast);
1212-
ipoib_mcast_free(mcast);
1213-
}
1210+
ipoib_mcast_remove_list(dev, &remove_list);
12141211
}
12151212

12161213
static void ipoib_reap_neigh(struct work_struct *work)

drivers/infiniband/ulp/ipoib/ipoib_multicast.c

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ static void __ipoib_mcast_schedule_join_thread(struct ipoib_dev_priv *priv,
106106
queue_delayed_work(priv->wq, &priv->mcast_task, 0);
107107
}
108108

109-
void ipoib_mcast_free(struct ipoib_mcast *mcast)
109+
static void ipoib_mcast_free(struct ipoib_mcast *mcast)
110110
{
111111
struct net_device *dev = mcast->dev;
112112
int tx_dropped = 0;
@@ -677,7 +677,7 @@ int ipoib_mcast_stop_thread(struct net_device *dev)
677677
return 0;
678678
}
679679

680-
int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast)
680+
static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast)
681681
{
682682
struct ipoib_dev_priv *priv = netdev_priv(dev);
683683
int ret = 0;
@@ -704,6 +704,16 @@ int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast)
704704
return 0;
705705
}
706706

707+
void ipoib_mcast_remove_list(struct net_device *dev, struct list_head *remove_list)
708+
{
709+
struct ipoib_mcast *mcast, *tmcast;
710+
711+
list_for_each_entry_safe(mcast, tmcast, remove_list, list) {
712+
ipoib_mcast_leave(dev, mcast);
713+
ipoib_mcast_free(mcast);
714+
}
715+
}
716+
707717
void ipoib_mcast_send(struct net_device *dev, u8 *daddr, struct sk_buff *skb)
708718
{
709719
struct ipoib_dev_priv *priv = netdev_priv(dev);
@@ -810,10 +820,7 @@ void ipoib_mcast_dev_flush(struct net_device *dev)
810820
if (test_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags))
811821
wait_for_completion(&mcast->done);
812822

813-
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
814-
ipoib_mcast_leave(dev, mcast);
815-
ipoib_mcast_free(mcast);
816-
}
823+
ipoib_mcast_remove_list(dev, &remove_list);
817824
}
818825

819826
static int ipoib_mcast_addr_is_valid(const u8 *addr, const u8 *broadcast)
@@ -939,10 +946,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
939946
if (test_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags))
940947
wait_for_completion(&mcast->done);
941948

942-
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
943-
ipoib_mcast_leave(mcast->dev, mcast);
944-
ipoib_mcast_free(mcast);
945-
}
949+
ipoib_mcast_remove_list(mcast->dev, &remove_list);
946950

947951
/*
948952
* Double check that we are still up

0 commit comments

Comments
 (0)