Lines Matching refs:txb
83 struct rxrpc_txbuf *txb,
91 u8 *ackp = txb->acks;
101 txb->ack.firstPacket = htonl(window);
102 txb->ack.nAcks = wtop - window;
106 to = min_t(unsigned int, txb->ack.nAcks, RXRPC_SACK_SIZE);
108 if (sack + txb->ack.nAcks <= RXRPC_SACK_SIZE) {
109 memcpy(txb->acks, call->ackr_sack_table + sack, txb->ack.nAcks);
111 memcpy(txb->acks, call->ackr_sack_table + sack, wrap);
112 memcpy(txb->acks + wrap, call->ackr_sack_table,
119 } else if (txb->ack.reason == RXRPC_ACK_DELAY) {
120 txb->ack.reason = RXRPC_ACK_IDLE;
138 return txb->ack.nAcks + 3 + sizeof(ackinfo);
187 int rxrpc_send_ack_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
208 if (txb->ack.reason == RXRPC_ACK_PING)
209 txb->wire.flags |= RXRPC_REQUEST_ACK;
211 n = rxrpc_fill_out_ack(conn, call, txb, &rwind);
215 iov[0].iov_base = &txb->wire;
216 iov[0].iov_len = sizeof(txb->wire) + sizeof(txb->ack) + n;
220 txb->wire.serial = htonl(serial);
222 ntohl(txb->ack.firstPacket),
223 ntohl(txb->ack.serial), txb->ack.reason, txb->ack.nAcks,
226 if (txb->ack.reason == RXRPC_ACK_PING)
232 txb->ack.previousPacket = htonl(call->rx_highest_seq);
241 trace_rxrpc_tx_packet(call->debug_id, &txb->wire,
243 if (txb->wire.flags & RXRPC_REQUEST_ACK)
324 int rxrpc_send_data_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
334 _enter("%x,{%d}", txb->seq, txb->len);
338 txb->wire.serial = htonl(serial);
341 txb->seq == 1)
342 txb->wire.userStatus = RXRPC_USERSTATUS_SERVICE_UPGRADE;
344 iov[0].iov_base = &txb->wire;
345 iov[0].iov_len = sizeof(txb->wire) + txb->len;
362 if (txb->wire.flags & RXRPC_REQUEST_ACK)
364 else if (test_bit(RXRPC_TXBUF_LAST, &txb->flags) && rxrpc_sending_to_client(txb))
368 else if (test_bit(RXRPC_TXBUF_RESENT, &txb->flags))
374 else if (call->peer->rtt_count < 3 && txb->seq & 1)
382 trace_rxrpc_req_ack(call->debug_id, txb->seq, why);
384 txb->wire.flags |= RXRPC_REQUEST_ACK;
391 trace_rxrpc_tx_data(call, txb->seq, serial,
392 txb->wire.flags,
393 test_bit(RXRPC_TXBUF_RESENT, &txb->flags),
399 trace_rxrpc_tx_data(call, txb->seq, serial, txb->wire.flags,
400 test_bit(RXRPC_TXBUF_RESENT, &txb->flags), false);
409 cmpxchg(&call->tx_transmitted, txb->seq - 1, txb->seq);
413 if (txb->len >= call->peer->maxdata)
416 txb->last_sent = ktime_get_real();
417 if (txb->wire.flags & RXRPC_REQUEST_ACK)
436 trace_rxrpc_tx_packet(call->debug_id, &txb->wire,
446 call->tx_last_sent = txb->last_sent;
447 if (txb->wire.flags & RXRPC_REQUEST_ACK) {
448 call->peer->rtt_last_req = txb->last_sent;
460 if (txb->seq == 1 &&
490 txb->last_sent = ktime_get_real();
491 if (txb->wire.flags & RXRPC_REQUEST_ACK)
515 trace_rxrpc_tx_packet(call->debug_id, &txb->wire,
699 struct rxrpc_txbuf *txb)
708 void rxrpc_transmit_one(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
712 ret = rxrpc_send_data_packet(call, txb);
723 rxrpc_instant_resend(call, txb);