if (!atomic_read(&bat_priv->multicast_mode))
                return -EINVAL;
 
-       if (atomic_read(&bat_priv->mcast.num_disabled))
-               return -EINVAL;
-
        switch (ntohs(ethhdr->h_proto)) {
        case ETH_P_IP:
                return batadv_mcast_forw_mode_check_ipv4(bat_priv, skb,
 {
        bool orig_mcast_enabled = !(flags & BATADV_TVLV_HANDLER_OGM_CIFNOTFND);
        u8 mcast_flags = BATADV_NO_FLAGS;
-       bool orig_initialized;
 
        if (orig_mcast_enabled && tvlv_value &&
            tvlv_value_len >= sizeof(mcast_flags))
                mcast_flags = *(u8 *)tvlv_value;
 
+       if (!orig_mcast_enabled) {
+               mcast_flags |= BATADV_MCAST_WANT_ALL_IPV4;
+               mcast_flags |= BATADV_MCAST_WANT_ALL_IPV6;
+       }
+
        spin_lock_bh(&orig->mcast_handler_lock);
-       orig_initialized = test_bit(BATADV_ORIG_CAPA_HAS_MCAST,
-                                   &orig->capa_initialized);
 
-       /* If mcast support is turned on decrease the disabled mcast node
-        * counter only if we had increased it for this node before. If this
-        * is a completely new orig_node no need to decrease the counter.
-        */
        if (orig_mcast_enabled &&
            !test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities)) {
-               if (orig_initialized)
-                       atomic_dec(&bat_priv->mcast.num_disabled);
                set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities);
-       /* If mcast support is being switched off or if this is an initial
-        * OGM without mcast support then increase the disabled mcast
-        * node counter.
-        */
        } else if (!orig_mcast_enabled &&
-                  (test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities) ||
-                   !orig_initialized)) {
-               atomic_inc(&bat_priv->mcast.num_disabled);
+                  test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities)) {
                clear_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities);
        }
 
 
        spin_lock_bh(&orig->mcast_handler_lock);
 
-       if (!test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities) &&
-           test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capa_initialized))
-               atomic_dec(&bat_priv->mcast.num_disabled);
-
        batadv_mcast_want_unsnoop_update(bat_priv, orig, BATADV_NO_FLAGS);
        batadv_mcast_want_ipv4_update(bat_priv, orig, BATADV_NO_FLAGS);
        batadv_mcast_want_ipv6_update(bat_priv, orig, BATADV_NO_FLAGS);
 
        bat_priv->mcast.querier_ipv6.shadowing = false;
        bat_priv->mcast.flags = BATADV_NO_FLAGS;
        atomic_set(&bat_priv->multicast_mode, 1);
-       atomic_set(&bat_priv->mcast.num_disabled, 0);
        atomic_set(&bat_priv->mcast.num_want_all_unsnoopables, 0);
        atomic_set(&bat_priv->mcast.num_want_all_ipv4, 0);
        atomic_set(&bat_priv->mcast.num_want_all_ipv6, 0);