/*
* net/tipc/port.c: TIPC port code
*
- * Copyright (c) 1992-2006, Ericsson AB
- * Copyright (c) 2004-2005, Wind River Systems
+ * Copyright (c) 1992-2007, Ericsson AB
+ * Copyright (c) 2004-2007, Wind River Systems
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#include "addr.h"
#include "link.h"
#include "node.h"
-#include "port.h"
#include "name_table.h"
#include "user_reg.h"
#include "msg.h"
}
tipc_port_lock(ref);
+ p_ptr->publ.usr_handle = usr_handle;
+ p_ptr->publ.max_pkt = MAX_PKT_DEFAULT;
p_ptr->publ.ref = ref;
msg = &p_ptr->publ.phdr;
msg_init(msg, DATA_LOW, TIPC_NAMED_MSG, TIPC_OK, LONG_H_SIZE, 0);
msg_set_importance(msg,importance);
p_ptr->last_in_seqno = 41;
p_ptr->sent = 1;
- p_ptr->publ.usr_handle = usr_handle;
INIT_LIST_HEAD(&p_ptr->wait_list);
INIT_LIST_HEAD(&p_ptr->subscription.nodesub_list);
p_ptr->congested_link = NULL;
- p_ptr->max_pkt = MAX_PKT_DEFAULT;
p_ptr->dispatcher = dispatcher;
p_ptr->wakeup = wakeup;
p_ptr->user_port = NULL;
if (!p_ptr)
return -EINVAL;
*isunreliable = port_unreliable(p_ptr);
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
return TIPC_OK;
}
if (!p_ptr)
return -EINVAL;
*isunrejectable = port_unreturnable(p_ptr);
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
return TIPC_OK;
}
u32 peer_port = port_peerport(p_ptr);
u32 peer_node = port_peernode(p_ptr);
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
if (unlikely(!connected)) {
if (unlikely(published))
goto reject;
case TIPC_DIRECT_MSG:{
tipc_msg_event cb = up_ptr->msg_cb;
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
if (unlikely(connected))
goto reject;
if (unlikely(!cb))
case TIPC_NAMED_MSG:{
tipc_named_msg_event cb = up_ptr->named_msg_cb;
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
if (unlikely(connected))
goto reject;
if (unlikely(!cb))
u32 peer_port = port_peerport(p_ptr);
u32 peer_node = port_peernode(p_ptr);
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
if (!connected || !cb)
break;
if (msg_origport(msg) != peer_port)
case TIPC_DIRECT_MSG:{
tipc_msg_err_event cb = up_ptr->err_cb;
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
if (connected || !cb)
break;
skb_pull(buf, msg_hdr_sz(msg));
tipc_named_msg_err_event cb =
up_ptr->named_err_cb;
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
if (connected || !cb)
break;
dseq.type = msg_nametype(msg);
if (!p_ptr)
return -EINVAL;
*importance = (unsigned int)msg_importance(&p_ptr->publ.phdr);
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
return TIPC_OK;
}
if (!p_ptr)
return -EINVAL;
msg_set_importance(&p_ptr->publ.phdr, (u32)imp);
- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
return TIPC_OK;
}
res = TIPC_OK;
exit:
tipc_port_unlock(p_ptr);
- p_ptr->max_pkt = tipc_link_get_max_pkt(peer->node, ref);
+ p_ptr->publ.max_pkt = tipc_link_get_max_pkt(peer->node, ref);
return res;
}