/* add the packet to the send queue if it's now full */
                if (sp->remain <= 0 || (segment == 0 && !more)) {
                        struct rxrpc_connection *conn = call->conn;
+                       uint32_t seq;
                        size_t pad;
 
                        /* pad out if we're using security */
                                        memset(skb_put(skb, pad), 0, pad);
                        }
 
+                       seq = atomic_inc_return(&call->sequence);
+
                        sp->hdr.epoch = conn->epoch;
                        sp->hdr.cid = call->cid;
                        sp->hdr.callNumber = call->call_id;
-                       sp->hdr.seq =
-                               htonl(atomic_inc_return(&call->sequence));
+                       sp->hdr.seq = htonl(seq);
                        sp->hdr.serial =
                                htonl(atomic_inc_return(&conn->serial));
                        sp->hdr.type = RXRPC_PACKET_TYPE_DATA;
                        else if (CIRC_SPACE(call->acks_head, call->acks_tail,
                                            call->acks_winsz) > 1)
                                sp->hdr.flags |= RXRPC_MORE_PACKETS;
+                       if (more && seq & 1)
+                               sp->hdr.flags |= RXRPC_REQUEST_ACK;
 
                        ret = rxrpc_secure_packet(
                                call, skb, skb->mark,