diff options
| author | Allan Stephens <allan.stephens@windriver.com> | 2008-06-04 20:54:48 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-06-04 20:54:48 -0400 |
| commit | 40aecb1b13f50d96616abb612c17e59457f54263 (patch) | |
| tree | 1c73be75d3bdcda30d2f90d5189bd57920188802 /net | |
| parent | 99c145939bc1f65f9b946f2b9dd7bfc1f44783d6 (diff) | |
tipc: Message rejection rework preparatory changes
This patch defines a few new message header manipulation routines,
and generalizes the usefulness of another, in preparation for upcoming
rework of TIPC's message rejection code.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/tipc/bcast.c | 2 | ||||
| -rw-r--r-- | net/tipc/discover.c | 2 | ||||
| -rw-r--r-- | net/tipc/msg.h | 31 |
3 files changed, 31 insertions, 4 deletions
diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c index 0052c0747d05..a5883b1452ff 100644 --- a/net/tipc/bcast.c +++ b/net/tipc/bcast.c | |||
| @@ -571,7 +571,7 @@ static int tipc_bcbearer_send(struct sk_buff *buf, | |||
| 571 | assert(tipc_cltr_bcast_nodes.count != 0); | 571 | assert(tipc_cltr_bcast_nodes.count != 0); |
| 572 | bcbuf_set_acks(buf, tipc_cltr_bcast_nodes.count); | 572 | bcbuf_set_acks(buf, tipc_cltr_bcast_nodes.count); |
| 573 | msg = buf_msg(buf); | 573 | msg = buf_msg(buf); |
| 574 | msg_set_non_seq(msg); | 574 | msg_set_non_seq(msg, 1); |
| 575 | msg_set_mc_netid(msg, tipc_net_id); | 575 | msg_set_mc_netid(msg, tipc_net_id); |
| 576 | } | 576 | } |
| 577 | 577 | ||
diff --git a/net/tipc/discover.c b/net/tipc/discover.c index 64c20284e0f7..1657f0e795ff 100644 --- a/net/tipc/discover.c +++ b/net/tipc/discover.c | |||
| @@ -121,7 +121,7 @@ static struct sk_buff *tipc_disc_init_msg(u32 type, | |||
| 121 | if (buf) { | 121 | if (buf) { |
| 122 | msg = buf_msg(buf); | 122 | msg = buf_msg(buf); |
| 123 | msg_init(msg, LINK_CONFIG, type, DSC_H_SIZE, dest_domain); | 123 | msg_init(msg, LINK_CONFIG, type, DSC_H_SIZE, dest_domain); |
| 124 | msg_set_non_seq(msg); | 124 | msg_set_non_seq(msg, 1); |
| 125 | msg_set_req_links(msg, req_links); | 125 | msg_set_req_links(msg, req_links); |
| 126 | msg_set_dest_domain(msg, dest_domain); | 126 | msg_set_dest_domain(msg, dest_domain); |
| 127 | msg_set_bc_netid(msg, tipc_net_id); | 127 | msg_set_bc_netid(msg, tipc_net_id); |
diff --git a/net/tipc/msg.h b/net/tipc/msg.h index b23619fab968..7ee6ae238147 100644 --- a/net/tipc/msg.h +++ b/net/tipc/msg.h | |||
| @@ -75,6 +75,14 @@ static inline void msg_set_bits(struct tipc_msg *m, u32 w, | |||
| 75 | m->hdr[w] |= htonl(val); | 75 | m->hdr[w] |= htonl(val); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | static inline void msg_swap_words(struct tipc_msg *msg, u32 a, u32 b) | ||
| 79 | { | ||
| 80 | u32 temp = msg->hdr[a]; | ||
| 81 | |||
| 82 | msg->hdr[a] = msg->hdr[b]; | ||
| 83 | msg->hdr[b] = temp; | ||
| 84 | } | ||
| 85 | |||
| 78 | /* | 86 | /* |
| 79 | * Word 0 | 87 | * Word 0 |
| 80 | */ | 88 | */ |
| @@ -119,9 +127,9 @@ static inline int msg_non_seq(struct tipc_msg *m) | |||
| 119 | return msg_bits(m, 0, 20, 1); | 127 | return msg_bits(m, 0, 20, 1); |
| 120 | } | 128 | } |
| 121 | 129 | ||
| 122 | static inline void msg_set_non_seq(struct tipc_msg *m) | 130 | static inline void msg_set_non_seq(struct tipc_msg *m, u32 n) |
| 123 | { | 131 | { |
| 124 | msg_set_bits(m, 0, 20, 1, 1); | 132 | msg_set_bits(m, 0, 20, 1, n); |
| 125 | } | 133 | } |
| 126 | 134 | ||
| 127 | static inline int msg_dest_droppable(struct tipc_msg *m) | 135 | static inline int msg_dest_droppable(struct tipc_msg *m) |
| @@ -224,6 +232,25 @@ static inline void msg_set_seqno(struct tipc_msg *m, u32 n) | |||
| 224 | msg_set_bits(m, 2, 0, 0xffff, n); | 232 | msg_set_bits(m, 2, 0, 0xffff, n); |
| 225 | } | 233 | } |
| 226 | 234 | ||
| 235 | /* | ||
| 236 | * TIPC may utilize the "link ack #" and "link seq #" fields of a short | ||
| 237 | * message header to hold the destination node for the message, since the | ||
| 238 | * normal "dest node" field isn't present. This cache is only referenced | ||
| 239 | * when required, so populating the cache of a longer message header is | ||
| 240 | * harmless (as long as the header has the two link sequence fields present). | ||
| 241 | * | ||
| 242 | * Note: Host byte order is OK here, since the info never goes off-card. | ||
| 243 | */ | ||
| 244 | |||
| 245 | static inline u32 msg_destnode_cache(struct tipc_msg *m) | ||
| 246 | { | ||
| 247 | return m->hdr[2]; | ||
| 248 | } | ||
| 249 | |||
| 250 | static inline void msg_set_destnode_cache(struct tipc_msg *m, u32 dnode) | ||
| 251 | { | ||
| 252 | m->hdr[2] = dnode; | ||
| 253 | } | ||
| 227 | 254 | ||
| 228 | /* | 255 | /* |
| 229 | * Words 3-10 | 256 | * Words 3-10 |
