/*
* 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_init(msg, TIPC_LOW_IMPORTANCE, TIPC_NAMED_MSG, TIPC_OK, LONG_H_SIZE,
+ 0);
msg_set_orignode(msg, tipc_own_addr);
msg_set_prevnode(msg, tipc_own_addr);
msg_set_origport(msg, ref);
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;
}
return buf;
}
-int tipc_set_msg_option(struct tipc_port *tp_ptr, const char *opt, const u32 sz)
-{
- msg_expand(&tp_ptr->phdr, msg_destnode(&tp_ptr->phdr));
- msg_set_options(&tp_ptr->phdr, opt, sz);
- return TIPC_OK;
-}
-
int tipc_reject_msg(struct sk_buff *buf, u32 err)
{
struct tipc_msg *msg = buf_msg(buf);
msg_orignode(msg),
msg_destport(msg),
tipc_own_addr,
- DATA_HIGH,
+ TIPC_HIGH_IMPORTANCE,
TIPC_CONN_MSG,
err,
0,
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;
}