Lines Matching refs:conn

22 static void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
42 _enter("%d", conn->debug_id);
52 chan = &conn->channels[channel];
63 msg.msg_name = &conn->params.peer->srx.transport;
64 msg.msg_namelen = conn->params.peer->srx.transport_len;
76 pkt.whdr.epoch = htonl(conn->proto.epoch);
77 pkt.whdr.cid = htonl(conn->proto.cid | channel);
81 pkt.whdr.flags = conn->out_clientflag;
83 pkt.whdr.securityIndex = conn->security_ix;
85 pkt.whdr.serviceId = htons(conn->service_id);
97 mtu = conn->params.peer->if_mtu;
98 mtu -= conn->params.peer->hdrsize;
128 serial = atomic_inc_return(&conn->serial);
133 _proto("Tx ABORT %%%u { %d } [re]", serial, conn->abort_code);
144 ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, ioc, len);
145 conn->params.peer->last_tx_at = ktime_get_seconds();
159 static void rxrpc_abort_calls(struct rxrpc_connection *conn,
166 _enter("{%d},%x", conn->debug_id, conn->abort_code);
168 spin_lock(&conn->bundle->channel_lock);
172 conn->channels[i].call,
173 lockdep_is_held(&conn->bundle->channel_lock));
179 conn->abort_code,
180 conn->error);
183 conn->abort_code);
185 conn->abort_code,
186 conn->error);
190 spin_unlock(&conn->bundle->channel_lock);
197 static int rxrpc_abort_connection(struct rxrpc_connection *conn,
208 _enter("%d,,%u,%u", conn->debug_id, error, abort_code);
211 spin_lock_bh(&conn->state_lock);
212 if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) {
213 spin_unlock_bh(&conn->state_lock);
218 conn->error = error;
219 conn->abort_code = abort_code;
220 conn->state = RXRPC_CONN_LOCALLY_ABORTED;
221 set_bit(RXRPC_CONN_DONT_REUSE, &conn->flags);
222 spin_unlock_bh(&conn->state_lock);
224 msg.msg_name = &conn->params.peer->srx.transport;
225 msg.msg_namelen = conn->params.peer->srx.transport_len;
230 whdr.epoch = htonl(conn->proto.epoch);
231 whdr.cid = htonl(conn->proto.cid);
235 whdr.flags = conn->out_clientflag;
237 whdr.securityIndex = conn->security_ix;
239 whdr.serviceId = htons(conn->service_id);
241 word = htonl(conn->abort_code);
250 serial = atomic_inc_return(&conn->serial);
251 rxrpc_abort_calls(conn, RXRPC_CALL_LOCALLY_ABORTED, serial);
253 _proto("Tx CONN ABORT %%%u { %d }", serial, conn->abort_code);
255 ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, 2, len);
257 trace_rxrpc_tx_fail(conn->debug_id, serial, ret,
263 trace_rxrpc_tx_packet(conn->debug_id, &whdr, rxrpc_tx_point_conn_abort);
265 conn->params.peer->last_tx_at = ktime_get_seconds();
291 static int rxrpc_process_event(struct rxrpc_connection *conn,
300 if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) {
301 _leave(" = -ECONNABORTED [%u]", conn->state);
305 _enter("{%d},{%u,%%%u},", conn->debug_id, sp->hdr.type, sp->hdr.serial);
310 rxrpc_conn_retransmit_call(conn, skb,
328 conn->error = -ECONNABORTED;
329 conn->abort_code = abort_code;
330 conn->state = RXRPC_CONN_REMOTELY_ABORTED;
331 set_bit(RXRPC_CONN_DONT_REUSE, &conn->flags);
332 rxrpc_abort_calls(conn, RXRPC_CALL_REMOTELY_ABORTED, sp->hdr.serial);
336 return conn->security->respond_to_challenge(conn, skb,
340 ret = conn->security->verify_response(conn, skb, _abort_code);
344 ret = conn->security->init_connection_security(conn);
348 ret = conn->security->prime_packet_security(conn);
352 spin_lock(&conn->bundle->channel_lock);
353 spin_lock_bh(&conn->state_lock);
355 if (conn->state == RXRPC_CONN_SERVICE_CHALLENGING) {
356 conn->state = RXRPC_CONN_SERVICE;
357 spin_unlock_bh(&conn->state_lock);
361 conn->channels[loop].call,
362 lockdep_is_held(&conn->bundle->channel_lock)));
364 spin_unlock_bh(&conn->state_lock);
367 spin_unlock(&conn->bundle->channel_lock);
380 static void rxrpc_secure_connection(struct rxrpc_connection *conn)
385 _enter("{%d}", conn->debug_id);
387 ASSERT(conn->security_ix != 0);
388 ASSERT(conn->server_key);
390 if (conn->security->issue_challenge(conn) < 0) {
401 rxrpc_abort_connection(conn, ret, abort_code);
408 void rxrpc_process_delayed_final_acks(struct rxrpc_connection *conn, bool force)
418 struct rxrpc_channel *chan = &conn->channels[channel];
421 if (!test_bit(RXRPC_CONN_FINAL_ACK_0 + channel, &conn->flags))
436 &conn->flags))
437 rxrpc_conn_retransmit_call(conn, NULL, channel);
444 rxrpc_reduce_conn_timer(conn, next_j);
450 static void rxrpc_do_process_connection(struct rxrpc_connection *conn)
456 if (test_and_clear_bit(RXRPC_CONN_EV_CHALLENGE, &conn->events))
457 rxrpc_secure_connection(conn);
460 if (conn->flags & RXRPC_CONN_FINAL_ACK_MASK)
461 rxrpc_process_delayed_final_acks(conn, false);
463 /* go through the conn-level event packets, releasing the ref on this
465 while ((skb = skb_dequeue(&conn->rx_queue))) {
467 ret = rxrpc_process_event(conn, skb, &abort_code);
486 skb_queue_head(&conn->rx_queue, skb);
490 if (rxrpc_abort_connection(conn, ret, abort_code) < 0)
498 struct rxrpc_connection *conn =
501 rxrpc_see_connection(conn);
503 if (__rxrpc_use_local(conn->params.local)) {
504 rxrpc_do_process_connection(conn);
505 rxrpc_unuse_local(conn->params.local);
508 rxrpc_put_connection(conn);