diff mbox

[net-next,02/16] tipc: move broadcast link lock to struct tipc_net

Message ID 1445518308-26200-3-git-send-email-jon.maloy@ericsson.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Jon Maloy Oct. 22, 2015, 12:51 p.m. UTC
The broadcast lock will need to be acquired outside bcast.c in a later
commit. For this reason, we move the lock to struct tipc_net. Consistent
with the changes in the previous commit, we also introducee two new
functions tipc_bcast_lock() and tipc_bcast_unlock(). The code that is
currently using tipc_bclink_lock()/unlock() will be phased out during
the coming commits in this series.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
---
 net/tipc/bcast.c | 12 +++---------
 net/tipc/bcast.h | 10 ++++++++++
 net/tipc/core.h  |  1 +
 3 files changed, 14 insertions(+), 9 deletions(-)
diff mbox

Patch

diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c
index 2c5f544..ebf4fd7 100644
--- a/net/tipc/bcast.c
+++ b/net/tipc/bcast.c
@@ -90,7 +90,6 @@  struct tipc_bcbearer {
 
 /**
  * struct tipc_bc_base - link used for broadcast messages
- * @lock: spinlock governing access to structure
  * @link: (non-standard) broadcast link structure
  * @node: (non-standard) node structure representing b'cast link's peer node
  * @bcast_nodes: map of broadcast-capable nodes
@@ -99,7 +98,6 @@  struct tipc_bcbearer {
  * Handles sequence numbering, fragmentation, bundling, etc.
  */
 struct tipc_bc_base {
-	spinlock_t lock; /* spinlock protecting broadcast structs */
 	struct tipc_link link;
 	struct tipc_node node;
 	struct sk_buff_head arrvq;
@@ -124,16 +122,12 @@  static void tipc_nmap_add(struct tipc_node_map *nm_ptr, u32 node);
 static void tipc_nmap_remove(struct tipc_node_map *nm_ptr, u32 node);
 static void tipc_bclink_lock(struct net *net)
 {
-	struct tipc_net *tn = net_generic(net, tipc_net_id);
-
-	spin_lock_bh(&tn->bcbase->lock);
+	tipc_bcast_lock(net);
 }
 
 static void tipc_bclink_unlock(struct net *net)
 {
-	struct tipc_net *tn = net_generic(net, tipc_net_id);
-
-	spin_unlock_bh(&tn->bcbase->lock);
+	tipc_bcast_unlock(net);
 }
 
 void tipc_bclink_input(struct net *net)
@@ -1031,7 +1025,7 @@  int tipc_bcast_init(struct net *net)
 	bcbearer->media.send_msg = tipc_bcbearer_send;
 	sprintf(bcbearer->media.name, "tipc-broadcast");
 
-	spin_lock_init(&bclink->lock);
+	spin_lock_init(&tipc_net(net)->bclock);
 	__skb_queue_head_init(&bcl->transmq);
 	__skb_queue_head_init(&bcl->backlogq);
 	__skb_queue_head_init(&bcl->deferdq);
diff --git a/net/tipc/bcast.h b/net/tipc/bcast.h
index d379b0a..eac912a 100644
--- a/net/tipc/bcast.h
+++ b/net/tipc/bcast.h
@@ -69,4 +69,14 @@  int tipc_nl_bc_link_set(struct net *net, struct nlattr *attrs[]);
 void tipc_bclink_input(struct net *net);
 void tipc_bclink_sync_state(struct tipc_node *n, struct tipc_msg *msg);
 
+static inline void tipc_bcast_lock(struct net *net)
+{
+	spin_lock_bh(&tipc_net(net)->bclock);
+}
+
+static inline void tipc_bcast_unlock(struct net *net)
+{
+	spin_unlock_bh(&tipc_net(net)->bclock);
+}
+
 #endif
diff --git a/net/tipc/core.h b/net/tipc/core.h
index e4e9a56..645dcac 100644
--- a/net/tipc/core.h
+++ b/net/tipc/core.h
@@ -93,6 +93,7 @@  struct tipc_net {
 	struct tipc_bearer __rcu *bearer_list[MAX_BEARERS + 1];
 
 	/* Broadcast link */
+	spinlock_t bclock;
 	struct tipc_bcbearer *bcbearer;
 	struct tipc_bc_base *bcbase;
 	struct tipc_link *bcl;