struct ipoib_mcast *mcast,
                                               bool delay)
 {
-       if (!test_bit(IPOIB_MCAST_RUN, &priv->flags))
+       if (!test_bit(IPOIB_FLAG_OPER_UP, &priv->flags))
                return;
 
        /*
        struct ipoib_mcast *mcast = NULL;
        int create = 1;
 
-       if (!test_bit(IPOIB_MCAST_RUN, &priv->flags))
+       if (!test_bit(IPOIB_FLAG_OPER_UP, &priv->flags))
                return;
 
        if (ib_query_port(priv->ca, priv->port, &port_attr) ||
        ipoib_dbg_mcast(priv, "starting multicast thread\n");
 
        spin_lock_irqsave(&priv->lock, flags);
-       set_bit(IPOIB_MCAST_RUN, &priv->flags);
        __ipoib_mcast_schedule_join_thread(priv, NULL, 0);
        spin_unlock_irqrestore(&priv->lock, flags);
 
        ipoib_dbg_mcast(priv, "stopping multicast thread\n");
 
        spin_lock_irqsave(&priv->lock, flags);
-       clear_bit(IPOIB_MCAST_RUN, &priv->flags);
        cancel_delayed_work(&priv->mcast_task);
        spin_unlock_irqrestore(&priv->lock, flags);