| /linux/net/mptcp/ |
| H A D | subflow.c | 344 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in subflow_prep_synack() local 352 mptcp_fastopen_subflow_synack_set_params(subflow, req); in subflow_prep_synack() 411 static bool subflow_thmac_valid(struct mptcp_subflow_context *subflow) in subflow_thmac_valid() argument 416 subflow_generate_hmac(subflow->remote_key, subflow->local_key, in subflow_thmac_valid() 417 subflow->remote_nonce, subflow->local_nonce, in subflow_thmac_valid() 421 pr_debug("subflow=%p, token=%u, thmac=%llu, subflow->thmac=%llu\n", in subflow_thmac_valid() 422 subflow, subflo in subflow_thmac_valid() 429 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); mptcp_subflow_reset() local 456 struct mptcp_subflow_context *subflow; __mptcp_sync_state() local 475 subflow_set_remote_key(struct mptcp_sock * msk,struct mptcp_subflow_context * subflow,const struct mptcp_options_received * mp_opt) subflow_set_remote_key() argument 499 mptcp_propagate_state(struct sock * sk,struct sock * ssk,struct mptcp_subflow_context * subflow,const struct mptcp_options_received * mp_opt) mptcp_propagate_state() argument 525 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); subflow_finish_connect() local 622 subflow_set_local_id(struct mptcp_subflow_context * subflow,int local_id) subflow_set_local_id() argument 630 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); subflow_chk_local_id() local 674 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); subflow_v4_conn_request() local 705 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); subflow_v6_conn_request() local 796 __mptcp_subflow_fully_established(struct mptcp_sock * msk,struct mptcp_subflow_context * subflow,const struct mptcp_options_received * mp_opt) __mptcp_subflow_fully_established() argument 942 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(child); subflow_syn_recv_sock() local 992 dbg_bad_map(struct mptcp_subflow_context * subflow,u32 ssn) dbg_bad_map() argument 1000 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); skb_is_fully_mapped() local 1015 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); validate_mapping() local 1037 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); validate_data_csum() local 1116 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); get_mapping_status() local 1263 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); mptcp_subflow_discard_data() local 1295 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); subflow_sched_work_if_closed() local 1321 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); mptcp_subflow_fail() local 1358 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); subflow_check_data_avail() local 1458 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_subflow_data_available() local 1485 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); mptcp_space() local 1513 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); subflow_data_ready() local 1570 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcpv6_handle_mapped() local 1622 struct mptcp_subflow_context *subflow; __mptcp_subflow_connect() local 1784 struct mptcp_subflow_context *subflow; mptcp_subflow_create_socket() local 1881 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); subflow_state_change() local 1902 struct mptcp_subflow_context *subflow; mptcp_subflow_queue_clean() local 2098 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); tcp_release_cb_override() local [all...] |
| H A D | pm.c | 121 struct mptcp_subflow_context *subflow; in mptcp_pm_has_subflow_saddr() local 125 mptcp_for_each_subflow(msk, subflow) { in mptcp_pm_has_subflow_saddr() 126 skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow); in mptcp_pm_has_subflow_saddr() 221 struct mptcp_subflow_context *subflow, in __mptcp_pm_send_ack() argument 224 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in __mptcp_pm_send_ack() 233 subflow->send_mp_prio = 1; in __mptcp_pm_send_ack() 234 subflow->request_bkup = backup; in __mptcp_pm_send_ack() 242 struct mptcp_subflow_context *subflow, in mptcp_pm_send_ack() argument 246 __mptcp_pm_send_ack(msk, subflow, prio, backup); in mptcp_pm_send_ack() 250 static bool subflow_in_rm_list(const struct mptcp_subflow_context *subflow, in subflow_in_rm_list() argument 268 struct mptcp_subflow_context *subflow, *stale = NULL, *same_id = NULL; mptcp_pm_addr_send_ack_avoid_list() local 314 struct mptcp_subflow_context *subflow; mptcp_pm_mp_prio_send_ack() local 346 struct mptcp_subflow_context *subflow; mptcp_adjust_add_addr_timeout() local 663 mptcp_pm_subflow_check_next(struct mptcp_sock * msk,const struct mptcp_subflow_context * subflow) mptcp_pm_subflow_check_next() argument 700 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); mptcp_pm_add_addr_received() local 769 struct mptcp_subflow_context *subflow, *tmp; mptcp_pm_rm_addr_or_subflow() local 860 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); mptcp_pm_mp_prio_received() local 874 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_pm_mp_fail_received() local 1072 struct mptcp_subflow_context *iter, *subflow = mptcp_subflow_ctx(ssk); mptcp_pm_subflow_chk_stale() local 1109 struct mptcp_subflow_context *subflow; mptcp_pm_chk_stale() local [all...] |
| H A D | options.c | 64 * close the subflow with a RST, as it is not behaving as negotiated. in mptcp_parse_option() 66 * receiver MUST close the subflow with a RST, as it is considered in mptcp_parse_option() 468 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_syn_options() 473 subflow->snd_isn = TCP_SKB_CB(skb)->end_seq; in mptcp_syn_options() 474 if (subflow->request_mptcp) { in mptcp_syn_options() 481 subflow->request_mptcp = 0; in mptcp_syn_options() 490 } else if (subflow->request_join) { in mptcp_syn_options() 491 pr_debug("remote_token=%u, nonce=%u\n", subflow->remote_token, in mptcp_syn_options() 492 subflow->local_nonce); in mptcp_syn_options() 494 opts->join_id = subflow in mptcp_syn_options() 467 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_syn_options() local 516 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_mp() local 596 mptcp_write_data_fin(struct mptcp_subflow_context * subflow,struct sk_buff * skb,struct mptcp_ext * ext) mptcp_write_data_fin() argument 628 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_dss() local 725 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_add_addr() local 764 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_rm_addr() local 786 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_mp_prio() local 812 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_rst() local 830 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_fastclose() local 852 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options_mp_fail() local 874 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_established_options() local 976 check_fully_established(struct mptcp_sock * msk,struct sock * ssk,struct mptcp_subflow_context * subflow,struct sk_buff * skb,struct mptcp_options_received * mp_opt) check_fully_established() argument 1093 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); rwin_update() local 1224 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); mptcp_incoming_options() local 1424 struct mptcp_subflow_context *subflow; mptcp_track_rwin() local 1474 struct mptcp_subflow_context *subflow; mptcp_write_options() local [all...] |
| H A D | fastopen.c | 9 void mptcp_fastopen_subflow_synack_set_params(struct mptcp_subflow_context *subflow, in mptcp_fastopen_subflow_synack_set_params() argument 17 /* on early fallback the subflow context is deleted by in mptcp_fastopen_subflow_synack_set_params() 20 if (!subflow) in mptcp_fastopen_subflow_synack_set_params() 23 ssk = subflow->tcp_sock; in mptcp_fastopen_subflow_synack_set_params() 24 sk = subflow->conn; in mptcp_fastopen_subflow_synack_set_params() 32 subflow->is_mptfo = 1; in mptcp_fastopen_subflow_synack_set_params() 38 mptcp_subflow_lend_fwdmem(subflow, skb); in mptcp_fastopen_subflow_synack_set_params() 41 * space, need to offset it in the subflow sequence, see mptcp_subflow_get_map_offset() in mptcp_fastopen_subflow_synack_set_params() 44 subflow->ssn_offset += skb->len; in mptcp_fastopen_subflow_synack_set_params()
|
| H A D | sockopt.c | 78 struct mptcp_subflow_context *subflow; in mptcp_sol_socket_sync_intval() local 84 mptcp_for_each_subflow(msk, subflow) { in mptcp_sol_socket_sync_intval() 85 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in mptcp_sol_socket_sync_intval() 122 subflow->setsockopt_seq = msk->setsockopt_seq; in mptcp_sol_socket_sync_intval() 156 struct mptcp_subflow_context *subflow; in mptcp_setsockopt_sol_socket_tstamp() local 166 mptcp_for_each_subflow(msk, subflow) { in mptcp_setsockopt_sol_socket_tstamp() 167 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in mptcp_setsockopt_sol_socket_tstamp() 216 struct mptcp_subflow_context *subflow; in mptcp_setsockopt_sol_socket_timestamping() local 242 mptcp_for_each_subflow(msk, subflow) { in mptcp_setsockopt_sol_socket_timestamping() 243 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in mptcp_setsockopt_sol_socket_timestamping() [all …]
|
| H A D | sched.c | 162 void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subflow, in mptcp_sched_get_send() 165 WRITE_ONCE(subflow->scheduled, scheduled); in mptcp_sched_get_send() 170 struct mptcp_subflow_context *subflow; in mptcp_sched_get_send() 185 mptcp_for_each_subflow(msk, subflow) { in mptcp_sched_get_retrans() 186 if (READ_ONCE(subflow->scheduled)) in mptcp_sched_get_retrans() 197 struct mptcp_subflow_context *subflow; in mptcp_sched_get_retrans() 205 mptcp_for_each_subflow(msk, subflow) { in mptcp_sched_get_retrans() 206 if (READ_ONCE(subflow->scheduled)) in mptcp_sched_get_retrans() 151 mptcp_subflow_set_scheduled(struct mptcp_subflow_context * subflow,bool scheduled) mptcp_subflow_set_scheduled() argument 159 struct mptcp_subflow_context *subflow; mptcp_sched_get_send() local 187 struct mptcp_subflow_context *subflow; mptcp_sched_get_retrans() local
|
| H A D | mib.h | 29 MPTCP_MIB_MPJOINACKNOCTX, /* MP_RST: no subflow context on ACK */ 38 MPTCP_MIB_DSSCORRUPTIONRESET, /* DSS corruption detected, MPJ subflow reset */ 69 MPTCP_MIB_RMSUBFLOW, /* Remove a subflow */ 80 MPTCP_MIB_SNDWNDSHARED, /* Subflow snd wnd is overridden by msk's one */ 81 MPTCP_MIB_RCVWNDSHARED, /* Subflow rcv wnd is overridden by msk's one */ 82 MPTCP_MIB_RCVWNDCONFLICTUPDATE, /* subflow rcv wnd is overridden by msk's one due to 83 * conflict with another subflow while updating msk rcv wnd
|
| H A D | pm_userspace.c | 107 /* If the subflow is closed from the other peer (not via a in mptcp_userspace_pm_delete_local_addr() 108 * subflow destroy command then), we want to keep the entry in mptcp_userspace_pm_delete_local_addr() 110 * able to send RM_ADDR after the removal of the subflow. in mptcp_userspace_pm_delete_local_addr() 266 struct mptcp_subflow_context *subflow; in mptcp_userspace_pm_remove_id_zero_address() 272 mptcp_for_each_subflow(msk, subflow) { in mptcp_userspace_pm_remove_id_zero_address() 273 if (READ_ONCE(subflow->local_id) == 0) { in mptcp_userspace_pm_remove_id_zero_address() 301 /* only delete if either announced or matching a subflow */ in mptcp_userspace_pm_remove_addr_entry() 454 struct mptcp_subflow_context *subflow; in mptcp_nl_find_ssk() 459 mptcp_for_each_subflow(msk, subflow) { in mptcp_nl_find_ssk() 463 ssk = mptcp_subflow_tcp_sock(subflow); in mptcp_nl_find_ssk() 256 struct mptcp_subflow_context *subflow; mptcp_userspace_pm_remove_id_zero_address() local 444 struct mptcp_subflow_context *subflow; mptcp_nl_find_ssk() local [all...] |
| H A D | Makefile | 4 mptcp-y := protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o diag.o \
|
| H A D | Kconfig | 10 subflows in order to utilize multiple network paths. Each subflow
|
| H A D | pm_netlink.c | 468 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in mptcp_event_addr_announced() local 469 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_event_addr_announced()
|
| /linux/tools/testing/selftests/net/mptcp/ |
| H A D | mptcp_join.sh | 791 local flags="subflow" 797 # let the mptcp subflow be established in background before 1644 # the subflow creation 1921 local subflow="client" 1935 subflow="server" 1948 print_check "rm subflow ${subflow}" 1957 # in case of simult flush, the subflow removal count on each side is 2101 # number of all subflows, including the initial subflow. 2190 # subflow limited by client 2191 if reset "single subflow, limited by client"; then [all …]
|
| H A D | pm_netlink.sh | 162 add_endpoint 10.0.1.2 flags subflow dev lo 168 "2,10.0.1.2,subflow,lo" \ 268 add_endpoint 10.0.1.1 flags subflow 270 check "show_endpoints" "$(format_endpoints "1,10.0.1.1,subflow backup")" \ 273 check "show_endpoints" "$(format_endpoints "1,10.0.1.1,subflow")" \ 280 check "show_endpoints" "$(format_endpoints "1,10.0.1.1,subflow fullmesh")" \ 283 check "show_endpoints" "$(format_endpoints "1,10.0.1.1,subflow")" \ 286 check "show_endpoints" "$(format_endpoints "1,10.0.1.1,subflow backup fullmesh")" \
|
| H A D | userspace_pm.sh | 336 # ADD_ADDR from the client to server machine reusing the subflow port 346 # ADD_ADDR6 from the client to server machine reusing the subflow port 368 # ADD_ADDR from the server to client machine reusing the subflow port 376 # ADD_ADDR6 from the server to client machine reusing the subflow port 574 # Attempt to add a listener at 10.0.2.2:<subflow-port> 579 # ADD_ADDR from client to server machine reusing the subflow port 611 # Attempt to add a listener at dead:beef:2::2:<subflow-port> 616 # ADD_ADDR6 from client to server machine reusing the subflow port 690 # Attempt to add a listener at 10.0.2.1:<subflow-port> 695 # ADD_ADDR from server to client machine reusing the subflow port [all …]
|
| H A D | mptcp_diag.c | 213 printf("It's a mptcp subflow, the subflow info:\n"); in print_subflow_info()
|
| H A D | simult_flows.sh | 96 mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.2.1 dev ns1eth2 flags subflow
|
| H A D | pm_nl_ctl.c | 32 fprintf(stderr, "\tadd [flags signal|subflow|backup|fullmesh] [id <nr>] [dev <name>] <ip>\n"); in syntax() 42 fprintf(stderr, "\tlimits [<rcv addr max> <subflow max>]\n"); in syntax() 829 if (!strcmp(tok, "subflow")) in add_addr() 1019 printf("subflow"); in print_addr()
|
| H A D | mptcp_sockopt.c | 101 __u32 num_subflows; /* must be 0, set by kernel (real subflow count) */
|
| /linux/include/trace/events/ |
| H A D | mptcp.h | 26 TP_PROTO(struct mptcp_subflow_context *subflow), 28 TP_ARGS(subflow), 42 __entry->active = mptcp_subflow_active(subflow); 43 __entry->backup = subflow->backup || subflow->request_bkup; 45 if (subflow->tcp_sock && sk_fullsock(subflow->tcp_sock)) 46 __entry->free = sk_stream_memory_free(subflow->tcp_sock); 50 ssk = mptcp_subflow_tcp_sock(subflow);
|
| /linux/include/net/ |
| H A D | rstreason.h | 134 * This is the default error; it implies that the subflow is no 143 * is being sent to close a subflow because of an invalid response. 149 * resources to support the terminated subflow. 154 * This code indicates that the requested subflow is prohibited by 161 * that needs to be transmitted over the terminated subflow while 170 * This code indicates that the performance of this subflow was 177 * Middlebox interference has been detected over this subflow,
|
| /linux/Documentation/networking/ |
| H A D | mptcp.rst | 41 (Linux-specific), a *subflow* (or *path*) is created. This *subflow* consists of 45 *option* field of the underlying TCP *subflow*. This field contains, amongst 79 The Packet Scheduler is in charge of selecting which available *subflow(s)* to 127 values per subflow. 151 kernel is in charge of creating subflow sockets: they are TCP sockets where the
|
| /linux/tools/testing/selftests/bpf/prog_tests/ |
| H A D | mptcp.c | 435 if (endpoint_init("subflow") < 0) in test_subflow() 570 if (endpoint_init("subflow") < 0) in test_mptcp_sockmap() 590 if (test__start_subtest("subflow")) in test_mptcp()
|
| /linux/include/uapi/linux/ |
| H A D | mptcp.h | 123 __u32 num_subflows; /* must be 0, set by kernel (real subflow count) */
|
| /linux/drivers/net/ethernet/netronome/nfp/flower/ |
| H A D | offload.c | 1671 /* Get merge flows that the subflow forms to distribute their stats. */ in nfp_flower_update_merge_stats()
|
| H A D | conntrack.c | 751 * through the subflows and assign the proper subflow to a_rule in nfp_fl_merge_actions_offload()
|