tipc: Handle broadcast attempt when no neighboring nodes exist
Adds a check to detect when an attempt is made to send a message via the broadcast link and no neighboring nodes are currently available to receive it. Rather than wasting effort passing the message to the broadcast link and broadcast bearer, who will only throw it away, TIPC now frees the message immediately and reports success (i.e. the message has been delivered to all available destinations). Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
parent
cd3decdfd1
commit
2b78f9a002
|
@ -417,13 +417,19 @@ int tipc_bclink_send_msg(struct sk_buff *buf)
|
|||
|
||||
spin_lock_bh(&bc_lock);
|
||||
|
||||
if (!bclink->bcast_nodes.count) {
|
||||
res = msg_data_sz(buf_msg(buf));
|
||||
buf_discard(buf);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
res = tipc_link_send_buf(bcl, buf);
|
||||
if (likely(res > 0))
|
||||
bclink_set_last_sent();
|
||||
|
||||
bcl->stats.queue_sz_counts++;
|
||||
bcl->stats.accu_queue_sz += bcl->out_queue_size;
|
||||
|
||||
exit:
|
||||
spin_unlock_bh(&bc_lock);
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue