diff options
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r-- | net/tipc/node.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index 3f7a4ed71990..fa97d9649a28 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c | |||
@@ -1189,20 +1189,19 @@ int tipc_node_xmit(struct net *net, struct sk_buff_head *list, | |||
1189 | spin_unlock_bh(&le->lock); | 1189 | spin_unlock_bh(&le->lock); |
1190 | } | 1190 | } |
1191 | tipc_node_read_unlock(n); | 1191 | tipc_node_read_unlock(n); |
1192 | if (likely(!skb_queue_empty(&xmitq))) { | 1192 | if (likely(!rc)) |
1193 | tipc_bearer_xmit(net, bearer_id, &xmitq, &le->maddr); | 1193 | tipc_bearer_xmit(net, bearer_id, &xmitq, &le->maddr); |
1194 | return 0; | 1194 | else if (rc == -ENOBUFS) |
1195 | } | ||
1196 | if (unlikely(rc == -ENOBUFS)) | ||
1197 | tipc_node_link_down(n, bearer_id, false); | 1195 | tipc_node_link_down(n, bearer_id, false); |
1198 | tipc_node_put(n); | 1196 | tipc_node_put(n); |
1199 | return rc; | 1197 | return rc; |
1200 | } | 1198 | } |
1201 | 1199 | ||
1202 | if (unlikely(!in_own_node(net, dnode))) | 1200 | if (likely(in_own_node(net, dnode))) { |
1203 | return rc; | 1201 | tipc_sk_rcv(net, list); |
1204 | tipc_sk_rcv(net, list); | 1202 | return 0; |
1205 | return 0; | 1203 | } |
1204 | return rc; | ||
1206 | } | 1205 | } |
1207 | 1206 | ||
1208 | /* tipc_node_xmit_skb(): send single buffer to destination | 1207 | /* tipc_node_xmit_skb(): send single buffer to destination |