Commit d7e163ce authored by David S. Miller's avatar David S. Miller

Merge tag 'batadv-net-for-davem-20190509' of git://git.open-mesh.org/linux-merge

Simon Wunderlich says:

====================
This feature/cleanup patchset includes the following patches:

 - bump version strings, by Simon Wunderlich (we forgot to include
   this patch previously ...)

 - fix multicast tt/tvlv worker locking, by Linus Lüssing
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 2cf67270 a3c7cd0c
...@@ -168,6 +168,7 @@ int batadv_mesh_init(struct net_device *soft_iface) ...@@ -168,6 +168,7 @@ int batadv_mesh_init(struct net_device *soft_iface)
spin_lock_init(&bat_priv->tt.commit_lock); spin_lock_init(&bat_priv->tt.commit_lock);
spin_lock_init(&bat_priv->gw.list_lock); spin_lock_init(&bat_priv->gw.list_lock);
#ifdef CONFIG_BATMAN_ADV_MCAST #ifdef CONFIG_BATMAN_ADV_MCAST
spin_lock_init(&bat_priv->mcast.mla_lock);
spin_lock_init(&bat_priv->mcast.want_lists_lock); spin_lock_init(&bat_priv->mcast.want_lists_lock);
#endif #endif
spin_lock_init(&bat_priv->tvlv.container_list_lock); spin_lock_init(&bat_priv->tvlv.container_list_lock);
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#define BATADV_DRIVER_DEVICE "batman-adv" #define BATADV_DRIVER_DEVICE "batman-adv"
#ifndef BATADV_SOURCE_VERSION #ifndef BATADV_SOURCE_VERSION
#define BATADV_SOURCE_VERSION "2019.1" #define BATADV_SOURCE_VERSION "2019.2"
#endif #endif
/* B.A.T.M.A.N. parameters */ /* B.A.T.M.A.N. parameters */
......
...@@ -314,8 +314,6 @@ static void batadv_mcast_mla_list_free(struct hlist_head *mcast_list) ...@@ -314,8 +314,6 @@ static void batadv_mcast_mla_list_free(struct hlist_head *mcast_list)
* translation table except the ones listed in the given mcast_list. * translation table except the ones listed in the given mcast_list.
* *
* If mcast_list is NULL then all are retracted. * If mcast_list is NULL then all are retracted.
*
* Do not call outside of the mcast worker! (or cancel mcast worker first)
*/ */
static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv,
struct hlist_head *mcast_list) struct hlist_head *mcast_list)
...@@ -323,8 +321,6 @@ static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, ...@@ -323,8 +321,6 @@ static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv,
struct batadv_hw_addr *mcast_entry; struct batadv_hw_addr *mcast_entry;
struct hlist_node *tmp; struct hlist_node *tmp;
WARN_ON(delayed_work_pending(&bat_priv->mcast.work));
hlist_for_each_entry_safe(mcast_entry, tmp, &bat_priv->mcast.mla_list, hlist_for_each_entry_safe(mcast_entry, tmp, &bat_priv->mcast.mla_list,
list) { list) {
if (mcast_list && if (mcast_list &&
...@@ -348,8 +344,6 @@ static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, ...@@ -348,8 +344,6 @@ static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv,
* *
* Adds multicast listener announcements from the given mcast_list to the * Adds multicast listener announcements from the given mcast_list to the
* translation table if they have not been added yet. * translation table if they have not been added yet.
*
* Do not call outside of the mcast worker! (or cancel mcast worker first)
*/ */
static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv, static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv,
struct hlist_head *mcast_list) struct hlist_head *mcast_list)
...@@ -357,8 +351,6 @@ static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv, ...@@ -357,8 +351,6 @@ static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv,
struct batadv_hw_addr *mcast_entry; struct batadv_hw_addr *mcast_entry;
struct hlist_node *tmp; struct hlist_node *tmp;
WARN_ON(delayed_work_pending(&bat_priv->mcast.work));
if (!mcast_list) if (!mcast_list)
return; return;
...@@ -647,7 +639,10 @@ static void batadv_mcast_mla_update(struct work_struct *work) ...@@ -647,7 +639,10 @@ static void batadv_mcast_mla_update(struct work_struct *work)
priv_mcast = container_of(delayed_work, struct batadv_priv_mcast, work); priv_mcast = container_of(delayed_work, struct batadv_priv_mcast, work);
bat_priv = container_of(priv_mcast, struct batadv_priv, mcast); bat_priv = container_of(priv_mcast, struct batadv_priv, mcast);
spin_lock(&bat_priv->mcast.mla_lock);
__batadv_mcast_mla_update(bat_priv); __batadv_mcast_mla_update(bat_priv);
spin_unlock(&bat_priv->mcast.mla_lock);
batadv_mcast_start_timer(bat_priv); batadv_mcast_start_timer(bat_priv);
} }
......
...@@ -1211,6 +1211,11 @@ struct batadv_priv_mcast { ...@@ -1211,6 +1211,11 @@ struct batadv_priv_mcast {
/** @bridged: whether the soft interface has a bridge on top */ /** @bridged: whether the soft interface has a bridge on top */
unsigned char bridged:1; unsigned char bridged:1;
/**
* @mla_lock: a lock protecting mla_list and mla_flags
*/
spinlock_t mla_lock;
/** /**
* @num_want_all_unsnoopables: number of nodes wanting unsnoopable IP * @num_want_all_unsnoopables: number of nodes wanting unsnoopable IP
* traffic * traffic
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment