diff options
Diffstat (limited to 'net/tipc/msg.h')
| -rw-r--r-- | net/tipc/msg.h | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/net/tipc/msg.h b/net/tipc/msg.h index e1d3595e2ee9..19c45fb66238 100644 --- a/net/tipc/msg.h +++ b/net/tipc/msg.h | |||
| @@ -313,12 +313,12 @@ static inline void msg_set_lookup_scope(struct tipc_msg *m, u32 n) | |||
| 313 | msg_set_bits(m, 1, 19, 0x3, n); | 313 | msg_set_bits(m, 1, 19, 0x3, n); |
| 314 | } | 314 | } |
| 315 | 315 | ||
| 316 | static inline u32 msg_bcast_ack(struct tipc_msg *m) | 316 | static inline u16 msg_bcast_ack(struct tipc_msg *m) |
| 317 | { | 317 | { |
| 318 | return msg_bits(m, 1, 0, 0xffff); | 318 | return msg_bits(m, 1, 0, 0xffff); |
| 319 | } | 319 | } |
| 320 | 320 | ||
| 321 | static inline void msg_set_bcast_ack(struct tipc_msg *m, u32 n) | 321 | static inline void msg_set_bcast_ack(struct tipc_msg *m, u16 n) |
| 322 | { | 322 | { |
| 323 | msg_set_bits(m, 1, 0, 0xffff, n); | 323 | msg_set_bits(m, 1, 0, 0xffff, n); |
| 324 | } | 324 | } |
| @@ -327,22 +327,22 @@ static inline void msg_set_bcast_ack(struct tipc_msg *m, u32 n) | |||
| 327 | /* | 327 | /* |
| 328 | * Word 2 | 328 | * Word 2 |
| 329 | */ | 329 | */ |
| 330 | static inline u32 msg_ack(struct tipc_msg *m) | 330 | static inline u16 msg_ack(struct tipc_msg *m) |
| 331 | { | 331 | { |
| 332 | return msg_bits(m, 2, 16, 0xffff); | 332 | return msg_bits(m, 2, 16, 0xffff); |
| 333 | } | 333 | } |
| 334 | 334 | ||
| 335 | static inline void msg_set_ack(struct tipc_msg *m, u32 n) | 335 | static inline void msg_set_ack(struct tipc_msg *m, u16 n) |
| 336 | { | 336 | { |
| 337 | msg_set_bits(m, 2, 16, 0xffff, n); | 337 | msg_set_bits(m, 2, 16, 0xffff, n); |
| 338 | } | 338 | } |
| 339 | 339 | ||
| 340 | static inline u32 msg_seqno(struct tipc_msg *m) | 340 | static inline u16 msg_seqno(struct tipc_msg *m) |
| 341 | { | 341 | { |
| 342 | return msg_bits(m, 2, 0, 0xffff); | 342 | return msg_bits(m, 2, 0, 0xffff); |
| 343 | } | 343 | } |
| 344 | 344 | ||
| 345 | static inline void msg_set_seqno(struct tipc_msg *m, u32 n) | 345 | static inline void msg_set_seqno(struct tipc_msg *m, u16 n) |
| 346 | { | 346 | { |
| 347 | msg_set_bits(m, 2, 0, 0xffff, n); | 347 | msg_set_bits(m, 2, 0, 0xffff, n); |
| 348 | } | 348 | } |
| @@ -352,18 +352,22 @@ static inline void msg_set_seqno(struct tipc_msg *m, u32 n) | |||
| 352 | */ | 352 | */ |
| 353 | static inline u32 msg_importance(struct tipc_msg *m) | 353 | static inline u32 msg_importance(struct tipc_msg *m) |
| 354 | { | 354 | { |
| 355 | if (unlikely(msg_user(m) == MSG_FRAGMENTER)) | 355 | int usr = msg_user(m); |
| 356 | |||
| 357 | if (likely((usr <= TIPC_CRITICAL_IMPORTANCE) && !msg_errcode(m))) | ||
| 358 | return usr; | ||
| 359 | if ((usr == MSG_FRAGMENTER) || (usr == MSG_BUNDLER)) | ||
| 356 | return msg_bits(m, 5, 13, 0x7); | 360 | return msg_bits(m, 5, 13, 0x7); |
| 357 | if (likely(msg_isdata(m) && !msg_errcode(m))) | ||
| 358 | return msg_user(m); | ||
| 359 | return TIPC_SYSTEM_IMPORTANCE; | 361 | return TIPC_SYSTEM_IMPORTANCE; |
| 360 | } | 362 | } |
| 361 | 363 | ||
| 362 | static inline void msg_set_importance(struct tipc_msg *m, u32 i) | 364 | static inline void msg_set_importance(struct tipc_msg *m, u32 i) |
| 363 | { | 365 | { |
| 364 | if (unlikely(msg_user(m) == MSG_FRAGMENTER)) | 366 | int usr = msg_user(m); |
| 367 | |||
| 368 | if (likely((usr == MSG_FRAGMENTER) || (usr == MSG_BUNDLER))) | ||
| 365 | msg_set_bits(m, 5, 13, 0x7, i); | 369 | msg_set_bits(m, 5, 13, 0x7, i); |
| 366 | else if (likely(i < TIPC_SYSTEM_IMPORTANCE)) | 370 | else if (i < TIPC_SYSTEM_IMPORTANCE) |
| 367 | msg_set_user(m, i); | 371 | msg_set_user(m, i); |
| 368 | else | 372 | else |
| 369 | pr_warn("Trying to set illegal importance in message\n"); | 373 | pr_warn("Trying to set illegal importance in message\n"); |
| @@ -772,9 +776,9 @@ struct sk_buff *tipc_msg_create(uint user, uint type, uint hdr_sz, | |||
| 772 | uint data_sz, u32 dnode, u32 onode, | 776 | uint data_sz, u32 dnode, u32 onode, |
| 773 | u32 dport, u32 oport, int errcode); | 777 | u32 dport, u32 oport, int errcode); |
| 774 | int tipc_buf_append(struct sk_buff **headbuf, struct sk_buff **buf); | 778 | int tipc_buf_append(struct sk_buff **headbuf, struct sk_buff **buf); |
| 775 | bool tipc_msg_bundle(struct sk_buff *bskb, struct sk_buff *skb, u32 mtu); | 779 | bool tipc_msg_bundle(struct sk_buff *skb, struct tipc_msg *msg, u32 mtu); |
| 776 | 780 | bool tipc_msg_make_bundle(struct sk_buff **skb, struct tipc_msg *msg, | |
| 777 | bool tipc_msg_make_bundle(struct sk_buff **skb, u32 mtu, u32 dnode); | 781 | u32 mtu, u32 dnode); |
| 778 | bool tipc_msg_extract(struct sk_buff *skb, struct sk_buff **iskb, int *pos); | 782 | bool tipc_msg_extract(struct sk_buff *skb, struct sk_buff **iskb, int *pos); |
| 779 | int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, | 783 | int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, |
| 780 | int offset, int dsz, int mtu, struct sk_buff_head *list); | 784 | int offset, int dsz, int mtu, struct sk_buff_head *list); |
| @@ -782,6 +786,11 @@ bool tipc_msg_lookup_dest(struct net *net, struct sk_buff *skb, u32 *dnode, | |||
| 782 | int *err); | 786 | int *err); |
| 783 | struct sk_buff *tipc_msg_reassemble(struct sk_buff_head *list); | 787 | struct sk_buff *tipc_msg_reassemble(struct sk_buff_head *list); |
| 784 | 788 | ||
| 789 | static inline u16 buf_seqno(struct sk_buff *skb) | ||
| 790 | { | ||
| 791 | return msg_seqno(buf_msg(skb)); | ||
| 792 | } | ||
| 793 | |||
| 785 | /* tipc_skb_peek(): peek and reserve first buffer in list | 794 | /* tipc_skb_peek(): peek and reserve first buffer in list |
| 786 | * @list: list to be peeked in | 795 | * @list: list to be peeked in |
| 787 | * Returns pointer to first buffer in list, if any | 796 | * Returns pointer to first buffer in list, if any |
