Lines Matching full:ack
75 * Allocate transmission buffers for an ACK and attach them to local->kv[].
81 struct rxrpc_ackpacket *ack; in rxrpc_alloc_ack() local
88 sizeof(*whdr) + sizeof(*ack) + 1 + 3 + sizeof(*trailer), gfp); in rxrpc_alloc_ack()
101 ack = buf + sizeof(*whdr); in rxrpc_alloc_ack()
102 filler = buf + sizeof(*whdr) + sizeof(*ack) + 1; in rxrpc_alloc_ack()
103 trailer = buf + sizeof(*whdr) + sizeof(*ack) + 1 + 3; in rxrpc_alloc_ack()
106 kv[0].iov_len = sizeof(*whdr) + sizeof(*ack); in rxrpc_alloc_ack()
150 * Fill out an ACK packet.
158 struct rxrpc_ackpacket *ack = (struct rxrpc_ackpacket *)(whdr + 1); in rxrpc_fill_out_ack() local
186 ack->bufferSpace = 0; in rxrpc_fill_out_ack()
187 ack->maxSkew = 0; in rxrpc_fill_out_ack()
188 ack->firstPacket = htonl(window); in rxrpc_fill_out_ack()
189 ack->previousPacket = htonl(call->rx_highest_seq); in rxrpc_fill_out_ack()
190 ack->serial = htonl(serial_to_ack); in rxrpc_fill_out_ack()
191 ack->reason = ack_reason; in rxrpc_fill_out_ack()
192 ack->nAcks = wtop - window; in rxrpc_fill_out_ack()
201 kv[1].iov_len = ack->nAcks; in rxrpc_fill_out_ack()
204 to = umin(ack->nAcks, RXRPC_SACK_SIZE); in rxrpc_fill_out_ack()
206 if (sack + ack->nAcks <= RXRPC_SACK_SIZE) { in rxrpc_fill_out_ack()
207 memcpy(sackp, call->ackr_sack_table + sack, ack->nAcks); in rxrpc_fill_out_ack()
213 pr_warn("ack window backward %x %x", window, wtop); in rxrpc_fill_out_ack()
214 } else if (ack->reason == RXRPC_ACK_DELAY) { in rxrpc_fill_out_ack()
215 ack->reason = RXRPC_ACK_IDLE; in rxrpc_fill_out_ack()
243 * Transmit an ACK packet.
252 struct rxrpc_ackpacket *ack = (struct rxrpc_ackpacket *)(whdr + 1); in rxrpc_send_ack_packet() local
268 ntohl(ack->firstPacket), in rxrpc_send_ack_packet()
269 ntohl(ack->serial), ack->reason, ack->nAcks, in rxrpc_send_ack_packet()
300 * Queue an ACK for immediate transmission.
326 /* Extend a path MTU probe ACK. */ in rxrpc_send_ACK()
353 * Send an ACK probe for path MTU discovery.
374 * hard-ACK'd all of its request data. After that point, we're not in rxrpc_send_abort_packet()
459 /* If our RTT cache needs working on, request an ACK. Also request in rxrpc_prepare_data_subpacket()
462 * However, we mustn't request an ACK on the last reply packet of a in rxrpc_prepare_data_subpacket()
463 * service call, lest OpenAFS incorrectly send us an ACK with some in rxrpc_prepare_data_subpacket()
464 * soft-ACKs in it and then never follow up with a proper hard ACK. in rxrpc_prepare_data_subpacket()