git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.3
[linux-2.6.git]
/
net
/
rxrpc
/
call.c
diff --git
a/net/rxrpc/call.c
b/net/rxrpc/call.c
index
6c87fca
..
dfb65d8
100644
(file)
--- a/
net/rxrpc/call.c
+++ b/
net/rxrpc/call.c
@@
-472,7
+472,7
@@
static inline int __rxrpc_call_gen_normal_ACK(struct rxrpc_call *call,
{
struct rxrpc_message *msg;
struct kvec diov[3];
{
struct rxrpc_message *msg;
struct kvec diov[3];
-
unsigned
aux[4];
+
__be32
aux[4];
int delta, ret;
/* ACKs default to DELAY */
int delta, ret;
/* ACKs default to DELAY */
@@
-840,7
+840,7
@@
static int __rxrpc_call_abort(struct rxrpc_call *call, int errno)
struct rxrpc_message *msg;
struct kvec diov[1];
int ret;
struct rxrpc_message *msg;
struct kvec diov[1];
int ret;
-
u
32 _error;
+
__be
32 _error;
_enter("%p{%08x},%p{%d},%d",
conn, ntohl(conn->conn_id), call, ntohl(call->call_id), errno);
_enter("%p{%08x},%p{%d},%d",
conn, ntohl(conn->conn_id), call, ntohl(call->call_id), errno);
@@
-929,7
+929,6
@@
static void rxrpc_call_receive_packet(struct rxrpc_call *call)
{
struct rxrpc_message *msg;
struct list_head *_p;
{
struct rxrpc_message *msg;
struct list_head *_p;
- uint32_t data32;
_enter("%p", call);
_enter("%p", call);
@@
-986,22
+985,21
@@
static void rxrpc_call_receive_packet(struct rxrpc_call *call)
break;
/* deal with abort packets */
break;
/* deal with abort packets */
- case RXRPC_PACKET_TYPE_ABORT:
- data32 = 0;
- if (skb_copy_bits(msg->pkt, msg->offset,
- &data32, sizeof(data32)) < 0) {
+ case RXRPC_PACKET_TYPE_ABORT: {
+ __be32 _dbuf, *dp;
+
+ dp = skb_header_pointer(msg->pkt, msg->offset,
+ sizeof(_dbuf), &_dbuf);
+ if (dp == NULL)
printk("Rx Received short ABORT packet\n");
printk("Rx Received short ABORT packet\n");
- }
- else {
- data32 = ntohl(data32);
- }
- _proto("Rx Received Call ABORT { data=%d }", data32);
+ _proto("Rx Received Call ABORT { data=%d }",
+ (dp ? ntohl(*dp) : 0));
spin_lock(&call->lock);
call->app_call_state = RXRPC_CSTATE_ERROR;
call->app_err_state = RXRPC_ESTATE_PEER_ABORT;
spin_lock(&call->lock);
call->app_call_state = RXRPC_CSTATE_ERROR;
call->app_err_state = RXRPC_ESTATE_PEER_ABORT;
- call->app_abort_code =
data32
;
+ call->app_abort_code =
(dp ? ntohl(*dp) : 0)
;
call->app_errno = -ECONNABORTED;
call->app_mark = RXRPC_APP_MARK_EOF;
call->app_read_buf = NULL;
call->app_errno = -ECONNABORTED;
call->app_mark = RXRPC_APP_MARK_EOF;
call->app_read_buf = NULL;
@@
-1013,7
+1011,7
@@
static void rxrpc_call_receive_packet(struct rxrpc_call *call)
spin_unlock(&call->lock);
call->app_error_func(call);
break;
spin_unlock(&call->lock);
call->app_error_func(call);
break;
-
+ }
default:
/* deal with other packet types */
_proto("Rx Unsupported packet type %u (#%u)",
default:
/* deal with other packet types */
_proto("Rx Unsupported packet type %u (#%u)",
@@
-1050,7
+1048,7
@@
static void rxrpc_call_receive_data_packet(struct rxrpc_call *call,
struct rxrpc_message *pmsg;
struct list_head *_p;
int ret, lo, hi, rmtimo;
struct rxrpc_message *pmsg;
struct list_head *_p;
int ret, lo, hi, rmtimo;
-
u
32 opid;
+
__be
32 opid;
_enter("%p{%u},%p{%u}", call, ntohl(call->call_id), msg, msg->seq);
_enter("%p{%u},%p{%u}", call, ntohl(call->call_id), msg, msg->seq);
@@
-1271,41
+1269,42
@@
static void rxrpc_call_receive_data_packet(struct rxrpc_call *call,
static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call,
struct rxrpc_message *msg)
{
static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call,
struct rxrpc_message *msg)
{
- struct rxrpc_ackpacket
ack
;
- rxrpc_serial_t serial;
+ struct rxrpc_ackpacket
_ack, *ap
;
+ rxrpc_serial_
net_
t serial;
rxrpc_seq_t seq;
int ret;
_enter("%p{%u},%p{%u}", call, ntohl(call->call_id), msg, msg->seq);
/* extract the basic ACK record */
rxrpc_seq_t seq;
int ret;
_enter("%p{%u},%p{%u}", call, ntohl(call->call_id), msg, msg->seq);
/* extract the basic ACK record */
- if (skb_copy_bits(msg->pkt, msg->offset, &ack, sizeof(ack)) < 0) {
+ ap = skb_header_pointer(msg->pkt, msg->offset, sizeof(_ack), &_ack);
+ if (ap == NULL) {
printk("Rx Received short ACK packet\n");
return;
}
printk("Rx Received short ACK packet\n");
return;
}
- msg->offset += sizeof(ack);
+ msg->offset += sizeof(
_
ack);
- serial = a
ck.
serial;
- seq = ntohl(a
ck.
firstPacket);
+ serial = a
p->
serial;
+ seq = ntohl(a
p->
firstPacket);
_proto("Rx Received ACK %%%d { b=%hu m=%hu f=%u p=%u s=%u r=%s n=%u }",
ntohl(msg->hdr.serial),
_proto("Rx Received ACK %%%d { b=%hu m=%hu f=%u p=%u s=%u r=%s n=%u }",
ntohl(msg->hdr.serial),
- ntohs(a
ck.
bufferSpace),
- ntohs(a
ck.
maxSkew),
+ ntohs(a
p->
bufferSpace),
+ ntohs(a
p->
maxSkew),
seq,
seq,
- ntohl(a
ck.
previousPacket),
+ ntohl(a
p->
previousPacket),
ntohl(serial),
ntohl(serial),
- rxrpc_acks[a
ck.
reason],
+ rxrpc_acks[a
p->
reason],
call->ackr.nAcks
);
/* check the other side isn't ACK'ing a sequence number I haven't sent
* yet */
call->ackr.nAcks
);
/* check the other side isn't ACK'ing a sequence number I haven't sent
* yet */
- if (a
ck.
nAcks > 0 &&
+ if (a
p->
nAcks > 0 &&
(seq > call->snd_seq_count ||
(seq > call->snd_seq_count ||
- seq + a
ck.
nAcks - 1 > call->snd_seq_count)) {
+ seq + a
p->
nAcks - 1 > call->snd_seq_count)) {
printk("Received ACK (#%u-#%u) for unsent packet\n",
printk("Received ACK (#%u-#%u) for unsent packet\n",
- seq, seq + a
ck.
nAcks - 1);
+ seq, seq + a
p->
nAcks - 1);
rxrpc_call_abort(call, -EINVAL);
_leave("");
return;
rxrpc_call_abort(call, -EINVAL);
_leave("");
return;
@@
-1354,7
+1353,7
@@
static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call,
}
}
}
}
- switch (a
ck.
reason) {
+ switch (a
p->
reason) {
/* deal with negative/positive acknowledgement of data
* packets */
case RXRPC_ACK_REQUESTED:
/* deal with negative/positive acknowledgement of data
* packets */
case RXRPC_ACK_REQUESTED:
@@
-1366,14
+1365,14
@@
static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call,
case RXRPC_ACK_OUT_OF_SEQUENCE:
case RXRPC_ACK_EXCEEDS_WINDOW:
call->snd_resend_cnt = 0;
case RXRPC_ACK_OUT_OF_SEQUENCE:
case RXRPC_ACK_EXCEEDS_WINDOW:
call->snd_resend_cnt = 0;
- ret = rxrpc_call_record_ACK(call, msg, seq, a
ck.
nAcks);
+ ret = rxrpc_call_record_ACK(call, msg, seq, a
p->
nAcks);
if (ret < 0)
rxrpc_call_abort(call, ret);
break;
/* respond to ping packets immediately */
case RXRPC_ACK_PING:
if (ret < 0)
rxrpc_call_abort(call, ret);
break;
/* respond to ping packets immediately */
case RXRPC_ACK_PING:
- rxrpc_call_generate_ACK(call, &msg->hdr,
&ack
);
+ rxrpc_call_generate_ACK(call, &msg->hdr,
ap
);
break;
/* only record RTT on ping response packets */
break;
/* only record RTT on ping response packets */
@@
-1386,7
+1385,7
@@
static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call,
rttmsg = NULL;
spin_lock(&call->lock);
if (call->snd_ping &&
rttmsg = NULL;
spin_lock(&call->lock);
if (call->snd_ping &&
- call->snd_ping->hdr.serial == a
ck.
serial) {
+ call->snd_ping->hdr.serial == a
p->
serial) {
rttmsg = call->snd_ping;
call->snd_ping = NULL;
}
rttmsg = call->snd_ping;
call->snd_ping = NULL;
}
@@
-1402,7
+1401,7
@@
static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call,
break;
default:
break;
default:
- printk("Unsupported ACK reason %u\n", a
ck.
reason);
+ printk("Unsupported ACK reason %u\n", a
p->
reason);
break;
}
break;
}