mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
tipc: Minor optimizations to received message processing
This patch enhances TIPC's handler for incoming messages in two ways: - the trivial, single-use routine for processing non-sequenced messages has been merged into the main handler - the interface that received a message is now identified without having to access and/or modify the associated sk_buff Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a686e6859e
commit
1265a02108
3 changed files with 8 additions and 25 deletions
|
@ -156,11 +156,11 @@ static void disc_dupl_alert(struct bearer *b_ptr, u32 node_addr,
|
||||||
/**
|
/**
|
||||||
* tipc_disc_recv_msg - handle incoming link setup message (request or response)
|
* tipc_disc_recv_msg - handle incoming link setup message (request or response)
|
||||||
* @buf: buffer containing message
|
* @buf: buffer containing message
|
||||||
|
* @b_ptr: bearer that message arrived on
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void tipc_disc_recv_msg(struct sk_buff *buf)
|
void tipc_disc_recv_msg(struct sk_buff *buf, struct bearer *b_ptr)
|
||||||
{
|
{
|
||||||
struct bearer *b_ptr = (struct bearer *)TIPC_SKB_CB(buf)->handle;
|
|
||||||
struct link *link;
|
struct link *link;
|
||||||
struct tipc_media_addr media_addr;
|
struct tipc_media_addr media_addr;
|
||||||
struct tipc_msg *msg = buf_msg(buf);
|
struct tipc_msg *msg = buf_msg(buf);
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct link_req *tipc_disc_init_link_req(struct bearer *b_ptr,
|
||||||
void tipc_disc_update_link_req(struct link_req *req);
|
void tipc_disc_update_link_req(struct link_req *req);
|
||||||
void tipc_disc_stop_link_req(struct link_req *req);
|
void tipc_disc_stop_link_req(struct link_req *req);
|
||||||
|
|
||||||
void tipc_disc_recv_msg(struct sk_buff *buf);
|
void tipc_disc_recv_msg(struct sk_buff *buf, struct bearer *b_ptr);
|
||||||
|
|
||||||
void tipc_disc_link_event(u32 addr, char *name, int up);
|
void tipc_disc_link_event(u32 addr, char *name, int up);
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -1766,21 +1766,6 @@ void tipc_link_retransmit(struct link *l_ptr, struct sk_buff *buf,
|
||||||
l_ptr->retransm_queue_head = l_ptr->retransm_queue_size = 0;
|
l_ptr->retransm_queue_head = l_ptr->retransm_queue_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* link_recv_non_seq: Receive packets which are outside
|
|
||||||
* the link sequence flow
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void link_recv_non_seq(struct sk_buff *buf)
|
|
||||||
{
|
|
||||||
struct tipc_msg *msg = buf_msg(buf);
|
|
||||||
|
|
||||||
if (msg_user(msg) == LINK_CONFIG)
|
|
||||||
tipc_disc_recv_msg(buf);
|
|
||||||
else
|
|
||||||
tipc_bclink_recv_pkt(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* link_insert_deferred_queue - insert deferred messages back into receive chain
|
* link_insert_deferred_queue - insert deferred messages back into receive chain
|
||||||
*/
|
*/
|
||||||
|
@ -1857,7 +1842,7 @@ void tipc_recv_msg(struct sk_buff *head, struct tipc_bearer *tb_ptr)
|
||||||
{
|
{
|
||||||
read_lock_bh(&tipc_net_lock);
|
read_lock_bh(&tipc_net_lock);
|
||||||
while (head) {
|
while (head) {
|
||||||
struct bearer *b_ptr;
|
struct bearer *b_ptr = (struct bearer *)tb_ptr;
|
||||||
struct node *n_ptr;
|
struct node *n_ptr;
|
||||||
struct link *l_ptr;
|
struct link *l_ptr;
|
||||||
struct sk_buff *crs;
|
struct sk_buff *crs;
|
||||||
|
@ -1868,9 +1853,6 @@ void tipc_recv_msg(struct sk_buff *head, struct tipc_bearer *tb_ptr)
|
||||||
u32 released = 0;
|
u32 released = 0;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
b_ptr = (struct bearer *)tb_ptr;
|
|
||||||
TIPC_SKB_CB(buf)->handle = b_ptr;
|
|
||||||
|
|
||||||
head = head->next;
|
head = head->next;
|
||||||
|
|
||||||
/* Ensure message is well-formed */
|
/* Ensure message is well-formed */
|
||||||
|
@ -1889,7 +1871,10 @@ void tipc_recv_msg(struct sk_buff *head, struct tipc_bearer *tb_ptr)
|
||||||
msg = buf_msg(buf);
|
msg = buf_msg(buf);
|
||||||
|
|
||||||
if (unlikely(msg_non_seq(msg))) {
|
if (unlikely(msg_non_seq(msg))) {
|
||||||
link_recv_non_seq(buf);
|
if (msg_user(msg) == LINK_CONFIG)
|
||||||
|
tipc_disc_recv_msg(buf, b_ptr);
|
||||||
|
else
|
||||||
|
tipc_bclink_recv_pkt(buf);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1996,8 +1981,6 @@ deliver:
|
||||||
if (link_recv_changeover_msg(&l_ptr, &buf)) {
|
if (link_recv_changeover_msg(&l_ptr, &buf)) {
|
||||||
msg = buf_msg(buf);
|
msg = buf_msg(buf);
|
||||||
seq_no = msg_seqno(msg);
|
seq_no = msg_seqno(msg);
|
||||||
TIPC_SKB_CB(buf)->handle
|
|
||||||
= b_ptr;
|
|
||||||
if (type == ORIGINAL_MSG)
|
if (type == ORIGINAL_MSG)
|
||||||
goto deliver;
|
goto deliver;
|
||||||
goto protocol_check;
|
goto protocol_check;
|
||||||
|
|
Loading…
Reference in a new issue