|
@@ -62,21 +62,8 @@ static void tipc_bclink_lock(struct net *net)
|
|
static void tipc_bclink_unlock(struct net *net)
|
|
static void tipc_bclink_unlock(struct net *net)
|
|
{
|
|
{
|
|
struct tipc_net *tn = net_generic(net, tipc_net_id);
|
|
struct tipc_net *tn = net_generic(net, tipc_net_id);
|
|
- struct tipc_node *node = NULL;
|
|
|
|
|
|
|
|
- if (likely(!tn->bclink->flags)) {
|
|
|
|
- spin_unlock_bh(&tn->bclink->lock);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (tn->bclink->flags & TIPC_BCLINK_RESET) {
|
|
|
|
- tn->bclink->flags &= ~TIPC_BCLINK_RESET;
|
|
|
|
- node = tipc_bclink_retransmit_to(net);
|
|
|
|
- }
|
|
|
|
spin_unlock_bh(&tn->bclink->lock);
|
|
spin_unlock_bh(&tn->bclink->lock);
|
|
-
|
|
|
|
- if (node)
|
|
|
|
- tipc_link_reset_all(node);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void tipc_bclink_input(struct net *net)
|
|
void tipc_bclink_input(struct net *net)
|
|
@@ -91,13 +78,6 @@ uint tipc_bclink_get_mtu(void)
|
|
return MAX_PKT_DEFAULT_MCAST;
|
|
return MAX_PKT_DEFAULT_MCAST;
|
|
}
|
|
}
|
|
|
|
|
|
-void tipc_bclink_set_flags(struct net *net, unsigned int flags)
|
|
|
|
-{
|
|
|
|
- struct tipc_net *tn = net_generic(net, tipc_net_id);
|
|
|
|
-
|
|
|
|
- tn->bclink->flags |= flags;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static u32 bcbuf_acks(struct sk_buff *buf)
|
|
static u32 bcbuf_acks(struct sk_buff *buf)
|
|
{
|
|
{
|
|
return (u32)(unsigned long)TIPC_SKB_CB(buf)->handle;
|
|
return (u32)(unsigned long)TIPC_SKB_CB(buf)->handle;
|
|
@@ -156,7 +136,6 @@ static void bclink_update_last_sent(struct tipc_node *node, u32 seqno)
|
|
seqno : node->bclink.last_sent;
|
|
seqno : node->bclink.last_sent;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* tipc_bclink_retransmit_to - get most recent node to request retransmission
|
|
* tipc_bclink_retransmit_to - get most recent node to request retransmission
|
|
*
|
|
*
|
|
@@ -476,13 +455,13 @@ void tipc_bclink_rcv(struct net *net, struct sk_buff *buf)
|
|
goto unlock;
|
|
goto unlock;
|
|
if (msg_destnode(msg) == tn->own_addr) {
|
|
if (msg_destnode(msg) == tn->own_addr) {
|
|
tipc_bclink_acknowledge(node, msg_bcast_ack(msg));
|
|
tipc_bclink_acknowledge(node, msg_bcast_ack(msg));
|
|
- tipc_node_unlock(node);
|
|
|
|
tipc_bclink_lock(net);
|
|
tipc_bclink_lock(net);
|
|
bcl->stats.recv_nacks++;
|
|
bcl->stats.recv_nacks++;
|
|
tn->bclink->retransmit_to = node;
|
|
tn->bclink->retransmit_to = node;
|
|
bclink_retransmit_pkt(tn, msg_bcgap_after(msg),
|
|
bclink_retransmit_pkt(tn, msg_bcgap_after(msg),
|
|
msg_bcgap_to(msg));
|
|
msg_bcgap_to(msg));
|
|
tipc_bclink_unlock(net);
|
|
tipc_bclink_unlock(net);
|
|
|
|
+ tipc_node_unlock(node);
|
|
} else {
|
|
} else {
|
|
tipc_node_unlock(node);
|
|
tipc_node_unlock(node);
|
|
bclink_peek_nack(net, msg);
|
|
bclink_peek_nack(net, msg);
|