| From stable-bounces@linux.kernel.org Tue Oct 17 16:23:45 2006 |
| To: stable@kernel.org |
| From: Eli Cohen <eli@mellanox.co.il> |
| Date: Tue, 17 Oct 2006 16:23:25 -0700 |
| Message-ID: <adazmbur0gi.fsf@cisco.com> |
| MIME-Version: 1.0 |
| Subject: IPoIB: Rejoin all multicast groups after a port event |
| Content-Type: text/plain; charset="us-ascii" |
| |
| From: Eli Cohen <eli@mellanox.co.il> |
| |
| When ipoib_ib_dev_flush() is called because of a port event, the |
| driver needs to rejoin all multicast groups, since the flush will call |
| ipoib_mcast_dev_flush() (via ipoib_ib_dev_down()). Otherwise no |
| (non-broadcast) multicast groups will be rejoined until the networking |
| core calls ->set_multicast_list again, and so multicast reception will |
| be broken for potentially a long time. |
| |
| Signed-off-by: Eli Cohen <eli@mellanox.co.il> |
| Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il> |
| Signed-off-by: Roland Dreier <rolandd@cisco.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| |
| --- |
| drivers/infiniband/ulp/ipoib/ipoib_ib.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- linux-2.6.18.1.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c |
| +++ linux-2.6.18.1/drivers/infiniband/ulp/ipoib/ipoib_ib.c |
| @@ -619,8 +619,10 @@ void ipoib_ib_dev_flush(void *_dev) |
| * The device could have been brought down between the start and when |
| * we get here, don't bring it back up if it's not configured up |
| */ |
| - if (test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags)) |
| + if (test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags)) { |
| ipoib_ib_dev_up(dev); |
| + ipoib_mcast_restart_task(dev); |
| + } |
| |
| mutex_lock(&priv->vlan_mutex); |
| |