Lines Matching +full:tp +full:- +full:link
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
86 toedev_listen_start(struct toedev *tod __unused, struct tcpcb *tp __unused) in toedev_listen_start()
93 toedev_listen_stop(struct toedev *tod __unused, struct tcpcb *tp __unused) in toedev_listen_stop()
100 toedev_input(struct toedev *tod __unused, struct tcpcb *tp __unused, in toedev_input()
109 toedev_rcvd(struct toedev *tod __unused, struct tcpcb *tp __unused) in toedev_rcvd()
116 toedev_output(struct toedev *tod __unused, struct tcpcb *tp __unused) in toedev_output()
123 toedev_pcb_detach(struct toedev *tod __unused, struct tcpcb *tp __unused) in toedev_pcb_detach()
178 toedev_ctloutput(struct toedev *tod __unused, struct tcpcb *tp __unused, in toedev_ctloutput()
186 toedev_tcp_info(struct toedev *tod __unused, const struct tcpcb *tp __unused, in toedev_tcp_info()
194 toedev_alloc_tls_session(struct toedev *tod __unused, struct tcpcb *tp __unused, in toedev_alloc_tls_session()
202 toedev_pmtu_update(struct toedev *tod __unused, struct tcpcb *tp __unused, in toedev_pmtu_update()
216 struct tcpcb *tp; in toe_listen_start() local
219 KASSERT(inp->inp_pcbinfo == &V_tcbinfo, in toe_listen_start()
222 if (inp->inp_flags & INP_DROPPED) in toe_listen_start()
225 tp = intotcpcb(inp); in toe_listen_start()
226 if (tp->t_state != TCPS_LISTEN) in toe_listen_start()
231 TAILQ_FOREACH(tod, &toedev_list, link) { in toe_listen_start()
233 tod->tod_listen_start(tod, tp); in toe_listen_start()
239 toe_listen_start_event(void *arg __unused, struct tcpcb *tp) in toe_listen_start_event() argument
241 struct inpcb *inp = tptoinpcb(tp); in toe_listen_start_event()
244 KASSERT(tp->t_state == TCPS_LISTEN, in toe_listen_start_event()
245 ("%s: t_state %s", __func__, tcpstates[tp->t_state])); in toe_listen_start_event()
251 toe_listen_stop_event(void *arg __unused, struct tcpcb *tp) in toe_listen_stop_event() argument
255 struct inpcb *inp = tptoinpcb(tp); in toe_listen_stop_event()
259 KASSERT(tp->t_state == TCPS_LISTEN, in toe_listen_stop_event()
260 ("%s: t_state %s", __func__, tcpstates[tp->t_state])); in toe_listen_stop_event()
263 TAILQ_FOREACH(tod, &toedev_list, link) in toe_listen_stop_event()
264 tod->tod_listen_stop(tod, tp); in toe_listen_stop_event()
275 tod->tod_softc = NULL; in init_toedev()
278 * Provide no-op defaults so that the kernel can call any toedev in init_toedev()
282 tod->tod_connect = toedev_connect; in init_toedev()
283 tod->tod_listen_start = toedev_listen_start; in init_toedev()
284 tod->tod_listen_stop = toedev_listen_stop; in init_toedev()
285 tod->tod_input = toedev_input; in init_toedev()
286 tod->tod_rcvd = toedev_rcvd; in init_toedev()
287 tod->tod_output = toedev_output; in init_toedev()
288 tod->tod_send_rst = toedev_output; in init_toedev()
289 tod->tod_send_fin = toedev_output; in init_toedev()
290 tod->tod_pcb_detach = toedev_pcb_detach; in init_toedev()
291 tod->tod_l2_update = toedev_l2_update; in init_toedev()
292 tod->tod_route_redirect = toedev_route_redirect; in init_toedev()
293 tod->tod_syncache_added = toedev_syncache_added; in init_toedev()
294 tod->tod_syncache_removed = toedev_syncache_removed; in init_toedev()
295 tod->tod_syncache_respond = toedev_syncache_respond; in init_toedev()
296 tod->tod_offload_socket = toedev_offload_socket; in init_toedev()
297 tod->tod_ctloutput = toedev_ctloutput; in init_toedev()
298 tod->tod_tcp_info = toedev_tcp_info; in init_toedev()
299 tod->tod_alloc_tls_session = toedev_alloc_tls_session; in init_toedev()
300 tod->tod_pmtu_update = toedev_pmtu_update; in init_toedev()
313 TAILQ_FOREACH(t, &toedev_list, link) { in register_toedev()
320 TAILQ_INSERT_TAIL(&toedev_list, tod, link); in register_toedev()
341 TAILQ_FOREACH_SAFE(t, &toedev_list, link, t2) { in unregister_toedev()
343 TAILQ_REMOVE(&toedev_list, tod, link); in unregister_toedev()
344 registered_toedevs--; in unregister_toedev()
362 (void )syncache_add(inc, to, th, inp, inp->inp_socket, NULL, tod, in toe_syncache_add()
377 * General purpose check to see if a 4-tuple is in use by the kernel. If a TCP
378 * header (presumably for an incoming SYN) is also provided, an existing 4-tuple
379 * in TIME_WAIT may be assassinated freeing it up for re-use.
388 struct tcpcb *tp; in toe_4tuple_check() local
390 if (inc->inc_flags & INC_ISIPV6) { in toe_4tuple_check()
391 inp = in6_pcblookup(&V_tcbinfo, &inc->inc6_faddr, in toe_4tuple_check()
392 inc->inc_fport, &inc->inc6_laddr, inc->inc_lport, in toe_4tuple_check()
395 inp = in_pcblookup(&V_tcbinfo, inc->inc_faddr, inc->inc_fport, in toe_4tuple_check()
396 inc->inc_laddr, inc->inc_lport, INPLOOKUP_RLOCKPCB, ifp); in toe_4tuple_check()
401 tp = intotcpcb(inp); in toe_4tuple_check()
402 if (tp->t_state == TCPS_TIME_WAIT && th != NULL) { in toe_4tuple_check()
427 ifp = lltable_get_ifp(lle->lle_tbl); in toe_lle_event()
428 family = lltable_get_af(lle->lle_tbl); in toe_lle_event()
435 if ((family == AF_INET && !(ifp->if_capenable & IFCAP_TOE4)) || in toe_lle_event()
436 (family == AF_INET6 && !(ifp->if_capenable & IFCAP_TOE6))) in toe_lle_event()
456 KASSERT(lle->la_flags & LLE_VALID, in toe_lle_event()
459 lladdr = (uint8_t *)lle->ll_addr; in toe_lle_event()
464 tod->tod_l2_update(tod, ifp, sa, lladdr, EVL_MAKETAG(vid, pcp, 0)); in toe_lle_event()
479 switch (sa->sa_family) { in toe_l2_resolve()
498 if (ifp->if_type == IFT_L2VLAN) { in toe_l2_resolve()
501 } else if (ifp->if_pcp != IFNET_PCP_NONE) { in toe_l2_resolve()
503 pcp = ifp->if_pcp; in toe_l2_resolve()
518 if (!(inp->inp_flags & INP_DROPPED)) { in toe_connect_failed()
519 struct tcpcb *tp = intotcpcb(inp); in toe_connect_failed() local
521 KASSERT(tp->t_flags & TF_TOE, in toe_connect_failed()
522 ("%s: tp %p not offloaded.", __func__, tp)); in toe_connect_failed()
532 tod->tod_pcb_detach(tod, tp); in toe_connect_failed()
533 KASSERT(!(tp->t_flags & TF_TOE), in toe_connect_failed()
534 ("%s: tp %p still offloaded.", __func__, tp)); in toe_connect_failed()
535 tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); in toe_connect_failed()
536 if (tcp_output(tp) < 0) in toe_connect_failed()
537 INP_WLOCK(inp); /* re-acquire */ in toe_connect_failed()
539 tp = tcp_drop(tp, err); in toe_connect_failed()
540 if (tp == NULL) in toe_connect_failed()
541 INP_WLOCK(inp); /* re-acquire */ in toe_connect_failed()