diff options
Diffstat (limited to 'net/batman-adv/multicast.c')
| -rw-r--r-- | net/batman-adv/multicast.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c index ab6bb2af1d45..b24e4bb64fb5 100644 --- a/net/batman-adv/multicast.c +++ b/net/batman-adv/multicast.c @@ -685,11 +685,13 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv,  		if (orig_initialized)  			atomic_dec(&bat_priv->mcast.num_disabled);  		orig->capabilities |= BATADV_ORIG_CAPA_HAS_MCAST; -	/* If mcast support is being switched off increase the disabled -	 * mcast node counter. +	/* 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 && -		   orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST) { +		   (orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST || +		    !orig_initialized)) {  		atomic_inc(&bat_priv->mcast.num_disabled);  		orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_MCAST;  	} @@ -738,7 +740,8 @@ void batadv_mcast_purge_orig(struct batadv_orig_node *orig)  {  	struct batadv_priv *bat_priv = orig->bat_priv; -	if (!(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST)) +	if (!(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST) && +	    orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST)  		atomic_dec(&bat_priv->mcast.num_disabled);  	batadv_mcast_want_unsnoop_update(bat_priv, orig, BATADV_NO_FLAGS); | 
