diff options
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r-- | net/tipc/msg.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index c3e96e815418..ff7362d40cb3 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
@@ -365,6 +365,9 @@ bool tipc_msg_bundle(struct sk_buff *bskb, struct sk_buff *skb, u32 mtu) | |||
365 | return false; | 365 | return false; |
366 | if (unlikely(max < (start + msz))) | 366 | if (unlikely(max < (start + msz))) |
367 | return false; | 367 | return false; |
368 | if ((msg_importance(msg) < TIPC_SYSTEM_IMPORTANCE) && | ||
369 | (msg_importance(bmsg) == TIPC_SYSTEM_IMPORTANCE)) | ||
370 | return false; | ||
368 | 371 | ||
369 | skb_put(bskb, pad + msz); | 372 | skb_put(bskb, pad + msz); |
370 | skb_copy_to_linear_data_offset(bskb, start, skb->data, msz); | 373 | skb_copy_to_linear_data_offset(bskb, start, skb->data, msz); |
@@ -448,6 +451,10 @@ bool tipc_msg_make_bundle(struct sk_buff **skb, u32 mtu, u32 dnode) | |||
448 | bmsg = buf_msg(bskb); | 451 | bmsg = buf_msg(bskb); |
449 | tipc_msg_init(msg_prevnode(msg), bmsg, MSG_BUNDLER, 0, | 452 | tipc_msg_init(msg_prevnode(msg), bmsg, MSG_BUNDLER, 0, |
450 | INT_H_SIZE, dnode); | 453 | INT_H_SIZE, dnode); |
454 | if (msg_isdata(msg)) | ||
455 | msg_set_importance(bmsg, TIPC_CRITICAL_IMPORTANCE); | ||
456 | else | ||
457 | msg_set_importance(bmsg, TIPC_SYSTEM_IMPORTANCE); | ||
451 | msg_set_seqno(bmsg, msg_seqno(msg)); | 458 | msg_set_seqno(bmsg, msg_seqno(msg)); |
452 | msg_set_ack(bmsg, msg_ack(msg)); | 459 | msg_set_ack(bmsg, msg_ack(msg)); |
453 | msg_set_bcast_ack(bmsg, msg_bcast_ack(msg)); | 460 | msg_set_bcast_ack(bmsg, msg_bcast_ack(msg)); |