Lines Matching full:peer
2 /* Peer event handling, typically ICMP messages.
28 * Find the peer associated with an ICMPv4 packet.
92 * Find the peer associated with an ICMPv6 packet.
161 struct rxrpc_peer *peer; in rxrpc_encap_err_rcv() local
179 peer = rxrpc_lookup_peer_icmp_rcu(local, skb, udp_offset, in rxrpc_encap_err_rcv()
184 peer = rxrpc_lookup_peer_icmp6_rcu(local, skb, udp_offset, in rxrpc_encap_err_rcv()
193 if (peer && !rxrpc_get_peer_maybe(peer)) in rxrpc_encap_err_rcv()
194 peer = NULL; in rxrpc_encap_err_rcv()
195 if (!peer) { in rxrpc_encap_err_rcv()
208 rxrpc_adjust_mtu(peer, info); in rxrpc_encap_err_rcv()
210 rxrpc_put_peer(peer); in rxrpc_encap_err_rcv()
244 rxrpc_adjust_mtu(peer, info); in rxrpc_encap_err_rcv()
246 rxrpc_put_peer(peer); in rxrpc_encap_err_rcv()
263 trace_rxrpc_rx_icmp(peer, &ee, &srx); in rxrpc_encap_err_rcv()
265 rxrpc_distribute_error(peer, err, RXRPC_CALL_NETWORK_ERROR); in rxrpc_encap_err_rcv()
267 rxrpc_put_peer(peer); in rxrpc_encap_err_rcv()
271 * Find the peer associated with a local error.
349 static void rxrpc_adjust_mtu(struct rxrpc_peer *peer, unsigned int mtu) in rxrpc_adjust_mtu() argument
354 if (mtu > 0 && peer->if_mtu == 65535 && mtu < peer->if_mtu) { in rxrpc_adjust_mtu()
355 peer->if_mtu = mtu; in rxrpc_adjust_mtu()
361 mtu = peer->if_mtu; in rxrpc_adjust_mtu()
368 if (mtu < peer->hdrsize) in rxrpc_adjust_mtu()
369 mtu = peer->hdrsize + 4; in rxrpc_adjust_mtu()
373 if (mtu < peer->mtu) { in rxrpc_adjust_mtu()
374 spin_lock_bh(&peer->lock); in rxrpc_adjust_mtu()
375 peer->mtu = mtu; in rxrpc_adjust_mtu()
376 peer->maxdata = peer->mtu - peer->hdrsize; in rxrpc_adjust_mtu()
377 spin_unlock_bh(&peer->lock); in rxrpc_adjust_mtu()
379 peer->mtu, peer->maxdata); in rxrpc_adjust_mtu()
391 struct rxrpc_peer *peer = NULL; in rxrpc_error_report() local
417 peer = rxrpc_lookup_peer_local_rcu(local, skb, &srx); in rxrpc_error_report()
418 if (peer && !rxrpc_get_peer_maybe(peer)) in rxrpc_error_report()
419 peer = NULL; in rxrpc_error_report()
420 if (peer) { in rxrpc_error_report()
421 trace_rxrpc_rx_icmp(peer, &serr->ee, &srx); in rxrpc_error_report()
422 rxrpc_store_error(peer, serr); in rxrpc_error_report()
428 rxrpc_put_peer(peer); in rxrpc_error_report()
433 * Map an error report to error codes on the peer record.
435 static void rxrpc_store_error(struct rxrpc_peer *peer, in rxrpc_store_error() argument
501 rxrpc_distribute_error(peer, err, compl); in rxrpc_store_error()
505 * Distribute an error that occurred on a peer.
507 static void rxrpc_distribute_error(struct rxrpc_peer *peer, int error, in rxrpc_distribute_error() argument
512 hlist_for_each_entry_rcu(call, &peer->error_targets, error_link) { in rxrpc_distribute_error()
526 struct rxrpc_peer *peer; in rxrpc_peer_keepalive_dispatch() local
534 peer = list_entry(collector->next, in rxrpc_peer_keepalive_dispatch()
537 list_del_init(&peer->keepalive_link); in rxrpc_peer_keepalive_dispatch()
538 if (!rxrpc_get_peer_maybe(peer)) in rxrpc_peer_keepalive_dispatch()
541 if (__rxrpc_use_local(peer->local)) { in rxrpc_peer_keepalive_dispatch()
544 keepalive_at = peer->last_tx_at + RXRPC_KEEPALIVE_TIME; in rxrpc_peer_keepalive_dispatch()
546 _debug("%02x peer %u t=%d {%pISp}", in rxrpc_peer_keepalive_dispatch()
547 cursor, peer->debug_id, slot, &peer->srx.transport); in rxrpc_peer_keepalive_dispatch()
551 rxrpc_send_keepalive(peer); in rxrpc_peer_keepalive_dispatch()
555 /* A transmission to this peer occurred since last we in rxrpc_peer_keepalive_dispatch()
562 list_add_tail(&peer->keepalive_link, in rxrpc_peer_keepalive_dispatch()
564 rxrpc_unuse_local(peer->local); in rxrpc_peer_keepalive_dispatch()
566 rxrpc_put_peer_locked(peer); in rxrpc_peer_keepalive_dispatch()