tipc: Remove duplicate check of message destination node
authorAllan Stephens <allan.stephens@windriver.com>
Wed, 2 Nov 2011 19:08:44 +0000 (15:08 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Fri, 24 Feb 2012 22:05:14 +0000 (17:05 -0500)
Eliminates a check in the processing of TIPC messages arriving from
off node that ensures the message is destined for this node, since this
check duplicates an earlier check. (The check would be necessary if TIPC
needed to be able to route incoming messages to another node, but the
elimination of multi-cluster support means that this never happens and
all incoming messages are consumed by the receiving node.)

Note: This change involves the elimination of a single "if" statement
with a large "then" clause; consequently, a significant number of lines
end up getting re-indented. In addition, a simple message header access
routine that is no longer referenced is eliminated. However, the only
functional change is the elimination of the single check described above.

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
net/tipc/link.c
net/tipc/msg.h

index d8b0a22367b6f5178aa0b7bb9bfdf8eb6314b432..6cc78a97012696ea345e296a75db98d1465f5924 100644 (file)
@@ -1773,57 +1773,56 @@ protocol_check:
                                if (unlikely(l_ptr->oldest_deferred_in))
                                        head = link_insert_deferred_queue(l_ptr,
                                                                          head);
-                               if (likely(msg_is_dest(msg, tipc_own_addr))) {
-                                       int ret;
 deliver:
-                                       if (likely(msg_isdata(msg))) {
-                                               tipc_node_unlock(n_ptr);
-                                               tipc_port_recv_msg(buf);
-                                               continue;
+                               if (likely(msg_isdata(msg))) {
+                                       tipc_node_unlock(n_ptr);
+                                       tipc_port_recv_msg(buf);
+                                       continue;
+                               }
+                               switch (msg_user(msg)) {
+                                       int ret;
+                               case MSG_BUNDLER:
+                                       l_ptr->stats.recv_bundles++;
+                                       l_ptr->stats.recv_bundled +=
+                                               msg_msgcnt(msg);
+                                       tipc_node_unlock(n_ptr);
+                                       tipc_link_recv_bundle(buf);
+                                       continue;
+                               case NAME_DISTRIBUTOR:
+                                       tipc_node_unlock(n_ptr);
+                                       tipc_named_recv(buf);
+                                       continue;
+                               case CONN_MANAGER:
+                                       tipc_node_unlock(n_ptr);
+                                       tipc_port_recv_proto_msg(buf);
+                                       continue;
+                               case MSG_FRAGMENTER:
+                                       l_ptr->stats.recv_fragments++;
+                                       ret = tipc_link_recv_fragment(
+                                               &l_ptr->defragm_buf,
+                                               &buf, &msg);
+                                       if (ret == 1) {
+                                               l_ptr->stats.recv_fragmented++;
+                                               goto deliver;
                                        }
-                                       switch (msg_user(msg)) {
-                                       case MSG_BUNDLER:
-                                               l_ptr->stats.recv_bundles++;
-                                               l_ptr->stats.recv_bundled +=
-                                                       msg_msgcnt(msg);
-                                               tipc_node_unlock(n_ptr);
-                                               tipc_link_recv_bundle(buf);
-                                               continue;
-                                       case NAME_DISTRIBUTOR:
-                                               tipc_node_unlock(n_ptr);
-                                               tipc_named_recv(buf);
-                                               continue;
-                                       case CONN_MANAGER:
-                                               tipc_node_unlock(n_ptr);
-                                               tipc_port_recv_proto_msg(buf);
-                                               continue;
-                                       case MSG_FRAGMENTER:
-                                               l_ptr->stats.recv_fragments++;
-                                               ret = tipc_link_recv_fragment(
-                                                       &l_ptr->defragm_buf,
-                                                       &buf, &msg);
-                                               if (ret == 1) {
-                                                       l_ptr->stats.recv_fragmented++;
+                                       if (ret == -1)
+                                               l_ptr->next_in_no--;
+                                       break;
+                               case CHANGEOVER_PROTOCOL:
+                                       type = msg_type(msg);
+                                       if (link_recv_changeover_msg(&l_ptr,
+                                                                    &buf)) {
+                                               msg = buf_msg(buf);
+                                               seq_no = msg_seqno(msg);
+                                               if (type == ORIGINAL_MSG)
                                                        goto deliver;
-                                               }
-                                               if (ret == -1)
-                                                       l_ptr->next_in_no--;
-                                               break;
-                                       case CHANGEOVER_PROTOCOL:
-                                               type = msg_type(msg);
-                                               if (link_recv_changeover_msg(&l_ptr, &buf)) {
-                                                       msg = buf_msg(buf);
-                                                       seq_no = msg_seqno(msg);
-                                                       if (type == ORIGINAL_MSG)
-                                                               goto deliver;
-                                                       goto protocol_check;
-                                               }
-                                               break;
-                                       default:
-                                               buf_discard(buf);
-                                               buf = NULL;
-                                               break;
+                                               goto protocol_check;
                                        }
+                                       break;
+                               default:
+                                       buf_discard(buf);
+                                       buf = NULL;
+                                       break;
                                }
                                tipc_node_unlock(n_ptr);
                                tipc_net_route_msg(buf);
index 2ec13b73181173d15aa65cde5c6259b11ebc2cc4..eba524e34a6ba260e9afdc20dc794f5c79052b5d 100644 (file)
@@ -384,11 +384,6 @@ static inline void msg_set_destnode(struct tipc_msg *m, u32 a)
        msg_set_word(m, 7, a);
 }
 
-static inline int msg_is_dest(struct tipc_msg *m, u32 d)
-{
-       return msg_short(m) || (msg_destnode(m) == d);
-}
-
 static inline u32 msg_nametype(struct tipc_msg *m)
 {
        return msg_word(m, 8);