Lines Matching refs:call
24 static void rxrpc_request_final_ACK(struct rxrpc_call *call) in rxrpc_request_final_ACK() argument
27 write_lock(&call->state_lock); in rxrpc_request_final_ACK()
29 switch (call->state) { in rxrpc_request_final_ACK()
31 call->state = RXRPC_CALL_CLIENT_FINAL_ACK; in rxrpc_request_final_ACK()
36 rxrpc_get_call(call); in rxrpc_request_final_ACK()
37 set_bit(RXRPC_CALL_ACK_FINAL, &call->events); in rxrpc_request_final_ACK()
38 if (try_to_del_timer_sync(&call->ack_timer) >= 0) in rxrpc_request_final_ACK()
39 rxrpc_queue_call(call); in rxrpc_request_final_ACK()
43 call->state = RXRPC_CALL_SERVER_ACK_REQUEST; in rxrpc_request_final_ACK()
48 write_unlock(&call->state_lock); in rxrpc_request_final_ACK()
54 static void rxrpc_hard_ACK_data(struct rxrpc_call *call, in rxrpc_hard_ACK_data() argument
60 spin_lock_bh(&call->lock); in rxrpc_hard_ACK_data()
65 call->ackr_window[loop] >>= 1; in rxrpc_hard_ACK_data()
66 call->ackr_window[loop] |= in rxrpc_hard_ACK_data()
67 call->ackr_window[loop + 1] << (BITS_PER_LONG - 1); in rxrpc_hard_ACK_data()
71 ASSERTCMP(seq, ==, call->rx_data_eaten + 1); in rxrpc_hard_ACK_data()
72 call->rx_data_eaten = seq; in rxrpc_hard_ACK_data()
74 if (call->ackr_win_top < UINT_MAX) in rxrpc_hard_ACK_data()
75 call->ackr_win_top++; in rxrpc_hard_ACK_data()
77 ASSERTIFCMP(call->state <= RXRPC_CALL_COMPLETE, in rxrpc_hard_ACK_data()
78 call->rx_data_post, >=, call->rx_data_recv); in rxrpc_hard_ACK_data()
79 ASSERTIFCMP(call->state <= RXRPC_CALL_COMPLETE, in rxrpc_hard_ACK_data()
80 call->rx_data_recv, >=, call->rx_data_eaten); in rxrpc_hard_ACK_data()
83 rxrpc_request_final_ACK(call); in rxrpc_hard_ACK_data()
84 } else if (atomic_dec_and_test(&call->ackr_not_idle) && in rxrpc_hard_ACK_data()
85 test_and_clear_bit(RXRPC_CALL_TX_SOFT_ACK, &call->flags)) { in rxrpc_hard_ACK_data()
92 __rxrpc_propose_ACK(call, RXRPC_ACK_IDLE, sp->hdr.serial, in rxrpc_hard_ACK_data()
96 spin_unlock_bh(&call->lock); in rxrpc_hard_ACK_data()
108 struct rxrpc_call *call = sp->call; in rxrpc_packet_destructor() local
110 _enter("%p{%p}", skb, call); in rxrpc_packet_destructor()
112 if (call) { in rxrpc_packet_destructor()
115 rxrpc_hard_ACK_data(call, sp); in rxrpc_packet_destructor()
116 rxrpc_put_call(call); in rxrpc_packet_destructor()
117 sp->call = NULL; in rxrpc_packet_destructor()