X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=net%2Frxrpc%2Fconn_event.c;h=1f251d758cb9d8be81856187d78e1994ef179072;hb=2868b8e45a89d2d36f38d58b2191d8920a99a5be;hp=95f4bc206b3dc9a571abe6fb63cc6fe05575e9c9;hpb=4bae0ad148f41904dd4e5857bdc2e3e31b950b3d;p=platform%2Fkernel%2Flinux-rpi.git diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c index 95f4bc2..1f251d7 100644 --- a/net/rxrpc/conn_event.c +++ b/net/rxrpc/conn_event.c @@ -95,6 +95,14 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn, _enter("%d", conn->debug_id); + if (sp && sp->hdr.type == RXRPC_PACKET_TYPE_ACK) { + if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header), + &pkt.ack, sizeof(pkt.ack)) < 0) + return; + if (pkt.ack.reason == RXRPC_ACK_PING_RESPONSE) + return; + } + chan = &conn->channels[channel]; /* If the last call got moved on whilst we were waiting to run, just @@ -117,7 +125,7 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn, iov[2].iov_base = &ack_info; iov[2].iov_len = sizeof(ack_info); - serial = atomic_inc_return(&conn->serial); + serial = rxrpc_get_next_serial(conn); pkt.whdr.epoch = htonl(conn->proto.epoch); pkt.whdr.cid = htonl(conn->proto.cid | channel);