@@ -283,14 +283,11 @@ struct rxrpc_local {
283
283
struct rxrpc_net * rxnet ; /* The network ns in which this resides */
284
284
struct hlist_node link ;
285
285
struct socket * socket ; /* my UDP socket */
286
- struct work_struct processor ;
287
286
struct task_struct * io_thread ;
288
287
struct list_head ack_tx_queue ; /* List of ACKs that need sending */
289
288
spinlock_t ack_tx_lock ; /* ACK list lock */
290
289
struct rxrpc_sock __rcu * service ; /* Service(s) listening on this endpoint */
291
290
struct rw_semaphore defrag_sem ; /* control re-enablement of IP DF bit */
292
- struct sk_buff_head reject_queue ; /* packets awaiting rejection */
293
- struct sk_buff_head event_queue ; /* endpoint event packets awaiting processing */
294
291
struct sk_buff_head rx_queue ; /* Received packets */
295
292
struct list_head call_attend_q ; /* Calls requiring immediate attention */
296
293
struct rb_root client_bundles ; /* Client connection bundles by socket params */
@@ -524,23 +521,19 @@ enum rxrpc_call_flag {
524
521
RXRPC_CALL_RETRANS_TIMEOUT , /* Retransmission due to timeout occurred */
525
522
RXRPC_CALL_BEGAN_RX_TIMER , /* We began the expect_rx_by timer */
526
523
RXRPC_CALL_RX_HEARD , /* The peer responded at least once to this call */
527
- RXRPC_CALL_RX_UNDERRUN , /* Got data underrun */
528
524
RXRPC_CALL_DISCONNECTED , /* The call has been disconnected */
529
525
RXRPC_CALL_KERNEL , /* The call was made by the kernel */
530
526
RXRPC_CALL_UPGRADE , /* Service upgrade was requested for the call */
531
- RXRPC_CALL_DELAY_ACK_PENDING , /* DELAY ACK generation is pending */
532
- RXRPC_CALL_IDLE_ACK_PENDING , /* IDLE ACK generation is pending */
533
527
RXRPC_CALL_EXCLUSIVE , /* The call uses a once-only connection */
528
+ RXRPC_CALL_RX_IS_IDLE , /* Reception is idle - send an ACK */
534
529
};
535
530
536
531
/*
537
532
* Events that can be raised on a call.
538
533
*/
539
534
enum rxrpc_call_event {
540
- RXRPC_CALL_EV_ABORT , /* need to generate abort */
541
- RXRPC_CALL_EV_RESEND , /* Tx resend required */
542
- RXRPC_CALL_EV_EXPIRED , /* Expiry occurred */
543
535
RXRPC_CALL_EV_ACK_LOST , /* ACK may be lost, send ping */
536
+ RXRPC_CALL_EV_INITIAL_PING , /* Send initial ping for a new service call */
544
537
};
545
538
546
539
/*
@@ -611,7 +604,6 @@ struct rxrpc_call {
611
604
u32 next_rx_timo ; /* Timeout for next Rx packet (jif) */
612
605
u32 next_req_timo ; /* Timeout for next Rx request packet (jif) */
613
606
struct timer_list timer ; /* Combined event timer */
614
- struct work_struct processor ; /* Event processor */
615
607
struct work_struct destroyer ; /* In-process-context destroyer */
616
608
rxrpc_notify_rx_t notify_rx ; /* kernel service Rx notification function */
617
609
struct list_head link ; /* link in master call list */
@@ -705,11 +697,7 @@ struct rxrpc_call {
705
697
rxrpc_seq_t acks_prev_seq ; /* Highest previousPacket received */
706
698
rxrpc_seq_t acks_hard_ack ; /* Latest hard-ack point */
707
699
rxrpc_seq_t acks_lowest_nak ; /* Lowest NACK in the buffer (or ==tx_hard_ack) */
708
- rxrpc_seq_t acks_lost_top ; /* tx_top at the time lost-ack ping sent */
709
- rxrpc_serial_t acks_lost_ping ; /* Serial number of probe ACK */
710
700
rxrpc_serial_t acks_highest_serial ; /* Highest serial number ACK'd */
711
- struct sk_buff * acks_soft_tbl ; /* The last ACK packet with NAKs in it */
712
- spinlock_t acks_ack_lock ; /* Access to ->acks_last_ack */
713
701
};
714
702
715
703
/*
@@ -822,10 +810,9 @@ extern struct workqueue_struct *rxrpc_workqueue;
822
810
*/
823
811
int rxrpc_service_prealloc (struct rxrpc_sock * , gfp_t );
824
812
void rxrpc_discard_prealloc (struct rxrpc_sock * );
825
- struct rxrpc_call * rxrpc_new_incoming_call (struct rxrpc_local * ,
826
- struct rxrpc_sock * ,
827
- struct sockaddr_rxrpc * ,
828
- struct sk_buff * );
813
+ bool rxrpc_new_incoming_call (struct rxrpc_local * , struct rxrpc_peer * ,
814
+ struct rxrpc_connection * , struct sockaddr_rxrpc * ,
815
+ struct sk_buff * );
829
816
void rxrpc_accept_incoming_calls (struct rxrpc_local * );
830
817
int rxrpc_user_charge_accept (struct rxrpc_sock * , unsigned long );
831
818
@@ -838,13 +825,15 @@ void rxrpc_send_ACK(struct rxrpc_call *, u8, rxrpc_serial_t, enum rxrpc_propose_
838
825
void rxrpc_propose_delay_ACK (struct rxrpc_call * , rxrpc_serial_t ,
839
826
enum rxrpc_propose_ack_trace );
840
827
void rxrpc_shrink_call_tx_buffer (struct rxrpc_call * );
841
- void rxrpc_process_call (struct work_struct * );
828
+ void rxrpc_resend (struct rxrpc_call * call , struct sk_buff * ack_skb );
842
829
843
830
void rxrpc_reduce_call_timer (struct rxrpc_call * call ,
844
831
unsigned long expire_at ,
845
832
unsigned long now ,
846
833
enum rxrpc_timer_trace why );
847
834
835
+ void rxrpc_input_call_event (struct rxrpc_call * call , struct sk_buff * skb );
836
+
848
837
/*
849
838
* call_object.c
850
839
*/
@@ -864,9 +853,8 @@ void rxrpc_incoming_call(struct rxrpc_sock *, struct rxrpc_call *,
864
853
struct sk_buff * );
865
854
void rxrpc_release_call (struct rxrpc_sock * , struct rxrpc_call * );
866
855
void rxrpc_release_calls_on_socket (struct rxrpc_sock * );
867
- void rxrpc_queue_call (struct rxrpc_call * , enum rxrpc_call_trace );
868
856
void rxrpc_see_call (struct rxrpc_call * , enum rxrpc_call_trace );
869
- bool rxrpc_try_get_call (struct rxrpc_call * , enum rxrpc_call_trace );
857
+ struct rxrpc_call * rxrpc_try_get_call (struct rxrpc_call * , enum rxrpc_call_trace );
870
858
void rxrpc_get_call (struct rxrpc_call * , enum rxrpc_call_trace );
871
859
void rxrpc_put_call (struct rxrpc_call * , enum rxrpc_call_trace );
872
860
void rxrpc_cleanup_call (struct rxrpc_call * );
@@ -908,6 +896,7 @@ void rxrpc_clean_up_local_conns(struct rxrpc_local *);
908
896
*/
909
897
void rxrpc_process_connection (struct work_struct * );
910
898
void rxrpc_process_delayed_final_acks (struct rxrpc_connection * , bool );
899
+ int rxrpc_input_conn_packet (struct rxrpc_connection * conn , struct sk_buff * skb );
911
900
912
901
/*
913
902
* conn_object.c
@@ -916,10 +905,9 @@ extern unsigned int rxrpc_connection_expiry;
916
905
extern unsigned int rxrpc_closed_conn_expiry ;
917
906
918
907
struct rxrpc_connection * rxrpc_alloc_connection (struct rxrpc_net * , gfp_t );
919
- struct rxrpc_connection * rxrpc_find_connection_rcu (struct rxrpc_local * ,
920
- struct sockaddr_rxrpc * ,
921
- struct sk_buff * ,
922
- struct rxrpc_peer * * );
908
+ struct rxrpc_connection * rxrpc_find_client_connection_rcu (struct rxrpc_local * ,
909
+ struct sockaddr_rxrpc * ,
910
+ struct sk_buff * );
923
911
void __rxrpc_disconnect_call (struct rxrpc_connection * , struct rxrpc_call * );
924
912
void rxrpc_disconnect_call (struct rxrpc_call * );
925
913
void rxrpc_kill_client_conn (struct rxrpc_connection * );
@@ -962,8 +950,8 @@ void rxrpc_unpublish_service_conn(struct rxrpc_connection *);
962
950
/*
963
951
* input.c
964
952
*/
965
- void rxrpc_input_call_event (struct rxrpc_call * , struct sk_buff * );
966
- void rxrpc_input_implicit_end_call (struct rxrpc_connection * , struct rxrpc_call * );
953
+ void rxrpc_input_call_packet (struct rxrpc_call * , struct sk_buff * );
954
+ void rxrpc_implicit_end_call (struct rxrpc_call * , struct sk_buff * );
967
955
968
956
/*
969
957
* io_thread.c
@@ -993,7 +981,9 @@ int rxrpc_get_server_data_key(struct rxrpc_connection *, const void *, time64_t,
993
981
/*
994
982
* local_event.c
995
983
*/
996
- extern void rxrpc_process_local_events (struct rxrpc_local * );
984
+ void rxrpc_send_version_request (struct rxrpc_local * local ,
985
+ struct rxrpc_host_header * hdr ,
986
+ struct sk_buff * skb );
997
987
998
988
/*
999
989
* local_object.c
@@ -1004,7 +994,6 @@ struct rxrpc_local *rxrpc_get_local_maybe(struct rxrpc_local *, enum rxrpc_local
1004
994
void rxrpc_put_local (struct rxrpc_local * , enum rxrpc_local_trace );
1005
995
struct rxrpc_local * rxrpc_use_local (struct rxrpc_local * , enum rxrpc_local_trace );
1006
996
void rxrpc_unuse_local (struct rxrpc_local * , enum rxrpc_local_trace );
1007
- void rxrpc_queue_local (struct rxrpc_local * );
1008
997
void rxrpc_destroy_local (struct rxrpc_local * local );
1009
998
void rxrpc_destroy_all_locals (struct rxrpc_net * );
1010
999
@@ -1068,7 +1057,7 @@ static inline struct rxrpc_net *rxrpc_net(struct net *net)
1068
1057
void rxrpc_transmit_ack_packets (struct rxrpc_local * );
1069
1058
int rxrpc_send_abort_packet (struct rxrpc_call * );
1070
1059
int rxrpc_send_data_packet (struct rxrpc_call * , struct rxrpc_txbuf * );
1071
- void rxrpc_reject_packets (struct rxrpc_local * );
1060
+ void rxrpc_reject_packet (struct rxrpc_local * local , struct sk_buff * skb );
1072
1061
void rxrpc_send_keepalive (struct rxrpc_peer * );
1073
1062
void rxrpc_transmit_one (struct rxrpc_call * call , struct rxrpc_txbuf * txb );
1074
1063
@@ -1178,7 +1167,6 @@ int rxrpc_server_keyring(struct rxrpc_sock *, sockptr_t, int);
1178
1167
* skbuff.c
1179
1168
*/
1180
1169
void rxrpc_kernel_data_consumed (struct rxrpc_call * , struct sk_buff * );
1181
- void rxrpc_packet_destructor (struct sk_buff * );
1182
1170
void rxrpc_new_skb (struct sk_buff * , enum rxrpc_skb_trace );
1183
1171
void rxrpc_see_skb (struct sk_buff * , enum rxrpc_skb_trace );
1184
1172
void rxrpc_eaten_skb (struct sk_buff * , enum rxrpc_skb_trace );
0 commit comments