Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_lro.c
Show First 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
#include <netinet6/in6_pcb.h> | #include <netinet6/in6_pcb.h> | ||||
#include <netinet/tcp.h> | #include <netinet/tcp.h> | ||||
#include <netinet/tcp_seq.h> | #include <netinet/tcp_seq.h> | ||||
#include <netinet/tcp_lro.h> | #include <netinet/tcp_lro.h> | ||||
#include <netinet/tcp_var.h> | #include <netinet/tcp_var.h> | ||||
#include <netinet/tcpip.h> | #include <netinet/tcpip.h> | ||||
#include <netinet/tcp_hpts.h> | #include <netinet/tcp_hpts.h> | ||||
#include <netinet/tcp_log_buf.h> | #include <netinet/tcp_log_buf.h> | ||||
#include <netinet/tcp_fsm.h> | |||||
#include <netinet/udp.h> | #include <netinet/udp.h> | ||||
#include <netinet6/ip6_var.h> | #include <netinet6/ip6_var.h> | ||||
#include <machine/in_cksum.h> | #include <machine/in_cksum.h> | ||||
static MALLOC_DEFINE(M_LRO, "LRO", "LRO control structures"); | static MALLOC_DEFINE(M_LRO, "LRO", "LRO control structures"); | ||||
#define TCP_LRO_TS_OPTION \ | #define TCP_LRO_TS_OPTION \ | ||||
▲ Show 20 Lines • Show All 1,270 Lines • ▼ Show 20 Lines | if (inp == NULL) | ||||
return (TCP_LRO_CANNOT); | return (TCP_LRO_CANNOT); | ||||
counter_u64_add(tcp_inp_lro_locks_taken, 1); | counter_u64_add(tcp_inp_lro_locks_taken, 1); | ||||
/* Get TCP control structure. */ | /* Get TCP control structure. */ | ||||
tp = intotcpcb(inp); | tp = intotcpcb(inp); | ||||
/* Check if the inp is dead, Jim. */ | /* Check if the inp is dead, Jim. */ | ||||
if (tp == NULL || (inp->inp_flags & INP_DROPPED)) { | if (tp == NULL || | ||||
(inp->inp_flags & INP_DROPPED) || | |||||
(tp->t_state == TCPS_TIME_WAIT)) { | |||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
return (TCP_LRO_CANNOT); | return (TCP_LRO_CANNOT); | ||||
} | } | ||||
if ((inp->inp_irq_cpu_set == 0) && (lc->lro_cpu_is_set == 1)) { | if ((inp->inp_irq_cpu_set == 0) && (lc->lro_cpu_is_set == 1)) { | ||||
inp->inp_irq_cpu = lc->lro_last_cpu; | inp->inp_irq_cpu = lc->lro_last_cpu; | ||||
inp->inp_irq_cpu_set = 1; | inp->inp_irq_cpu_set = 1; | ||||
} | } | ||||
/* Check if the transport doesn't support the needed optimizations. */ | /* Check if the transport doesn't support the needed optimizations. */ | ||||
▲ Show 20 Lines • Show All 692 Lines • Show Last 20 Lines |