FreeBSD kernel IPv4 code
|
Go to the source code of this file.
Data Structures | |
union | lro_address |
struct | lro_parser |
struct | lro_entry |
struct | lro_mbuf_sort |
struct | lro_ctrl |
struct | tcp_ackent |
Macros | |
#define | TCP_LRO_ENTRIES 8 |
#define | TSTMP_LRO 0x1000 |
#define | TSTMP_HDWR 0x2000 |
#define | HAS_TSTMP 0x4000 |
#define | TCP_LRO_CPU_DECLARATION_THRESH 50 |
#define | LRO_TYPE_NONE 0 |
#define | LRO_TYPE_IPV4_TCP 1 |
#define | LRO_TYPE_IPV6_TCP 2 |
#define | LRO_TYPE_IPV4_UDP 3 |
#define | LRO_TYPE_IPV6_UDP 4 |
#define | LRO_FLAG_DECRYPTED 1 |
#define | LRO_RAW_ADDRESS_MAX (sizeof(union lro_address) / sizeof(u_long)) |
#define | M_ACKCMP M_PROTO4 /* Indicates LRO is sending in a Ack-compression mbuf */ |
#define | M_LRO_EHDRSTRP M_PROTO6 /* Indicates that LRO has stripped the etherenet header */ |
#define | TCP_LRO_LENGTH_MAX (65535 - 255) /* safe value with room for outer headers */ |
#define | TCP_LRO_ACKCNT_MAX 65535 /* unlimited */ |
#define | TCP_LRO_NO_ENTRIES -2 |
#define | TCP_LRO_CANNOT -1 |
#define | TCP_LRO_NOT_SUPPORTED 1 |
Functions | |
union lro_address | __aligned (sizeof(u_long)) |
static bool | lro_address_compare (const union lro_address *pa, const union lro_address *pb) |
LIST_HEAD (lro_head, lro_entry) | |
int | tcp_lro_init (struct lro_ctrl *) |
int | tcp_lro_init_args (struct lro_ctrl *, struct ifnet *, unsigned, unsigned) |
void | tcp_lro_free (struct lro_ctrl *) |
void | tcp_lro_flush_inactive (struct lro_ctrl *, const struct timeval *) |
void | tcp_lro_flush (struct lro_ctrl *, struct lro_entry *) |
void | tcp_lro_flush_all (struct lro_ctrl *) |
int | tcp_lro_rx (struct lro_ctrl *, struct mbuf *, uint32_t) |
void | tcp_lro_queue_mbuf (struct lro_ctrl *, struct mbuf *) |
void | tcp_lro_reg_mbufq (void) |
void | tcp_lro_dereg_mbufq (void) |
Variables | |
u_long | raw [1] |
struct { | |
uint8_t lro_type | |
uint8_t lro_flags | |
uint16_t vlan_id | |
uint16_t s_port | |
uint16_t d_port | |
uint32_t vxlan_vni | |
union { | |
struct in_addr v4 | |
struct in6_addr v6 | |
} s_addr | |
union { | |
struct in_addr v4 | |
struct in6_addr v6 | |
} d_addr | |
}; | |
struct lro_parser | __aligned |
#define LRO_RAW_ADDRESS_MAX (sizeof(union lro_address) / sizeof(u_long)) |
#define M_ACKCMP M_PROTO4 /* Indicates LRO is sending in a Ack-compression mbuf */ |
#define M_LRO_EHDRSTRP M_PROTO6 /* Indicates that LRO has stripped the etherenet header */ |
#define TCP_LRO_LENGTH_MAX (65535 - 255) /* safe value with room for outer headers */ |
union lro_address __aligned | ( | sizeof(u_long) | ) |
LIST_HEAD | ( | lro_head | , |
lro_entry | |||
) |
|
inlinestatic |
Definition at line 100 of file tcp_lro.h.
References LRO_RAW_ADDRESS_MAX, lro_address::lro_type, LRO_TYPE_NONE, and lro_address::raw.
Referenced by tcp_lro_rx_common().
void tcp_lro_dereg_mbufq | ( | void | ) |
Definition at line 142 of file tcp_lro.c.
References tcplro_stacks_wanting_mbufq.
Referenced by tcp_addbbr(), and tcp_addrack().
Definition at line 1383 of file tcp_lro.c.
References lro_ctrl::ifp, lro_ctrl::lro_flushed, lro_ctrl::lro_free, next, tcp_flush_out_entry(), and tcp_lro_condense().
Referenced by tcp_lro_flush_inactive(), and tcp_lro_rx_done().
void tcp_lro_flush_all | ( | struct lro_ctrl * | lc | ) |
Definition at line 1496 of file tcp_lro.c.
References lro_ctrl::ifp, lro_ctrl::lro_cnt_of_same_cpu, lro_ctrl::lro_cpu_is_set, lro_ctrl::lro_flushed, lro_ctrl::lro_last_cpu, lro_ctrl::lro_last_queue_time, lro_ctrl::lro_mbuf_count, lro_ctrl::lro_mbuf_data, lro_ctrl::lro_queued, lro_mbuf_sort::mb, lro_mbuf_sort::seq, tcp_lro_cpu_set_thresh, tcp_lro_rx_common(), tcp_lro_rx_done(), tcp_lro_sort(), and tcp_run_hpts().
Referenced by tcp_lro_queue_mbuf().
void tcp_lro_flush_inactive | ( | struct lro_ctrl * | lc, |
const struct timeval * | timeout | ||
) |
Definition at line 596 of file tcp_lro.c.
References lro_entry::alloc_time, lro_ctrl::lro_active, next, tcp_lro_active_remove(), and tcp_lro_flush().
void tcp_lro_free | ( | struct lro_ctrl * | lc | ) |
Definition at line 491 of file tcp_lro.c.
References lro_ctrl::lro_active, lro_ctrl::lro_free, lro_free_mbuf_chain(), lro_ctrl::lro_hash, lro_ctrl::lro_hashsz, lro_ctrl::lro_mbuf_count, lro_ctrl::lro_mbuf_data, lro_entry::m_head, lro_mbuf_sort::mb, and tcp_lro_active_remove().
int tcp_lro_init | ( | struct lro_ctrl * | lc | ) |
Definition at line 165 of file tcp_lro.c.
References tcp_lro_entries, and tcp_lro_init_args().
int tcp_lro_init_args | ( | struct lro_ctrl * | lc, |
struct ifnet * | ifp, | ||
unsigned | lro_entries, | ||
unsigned | lro_mbufs | ||
) |
Definition at line 171 of file tcp_lro.c.
References lro_ctrl::ifp, lro_ctrl::lro_ackcnt_lim, lro_ctrl::lro_active, lro_ctrl::lro_bad_csum, lro_ctrl::lro_cnt, lro_ctrl::lro_flushed, lro_ctrl::lro_free, lro_ctrl::lro_hash, lro_ctrl::lro_hashsz, lro_ctrl::lro_length_lim, lro_ctrl::lro_mbuf_count, lro_ctrl::lro_mbuf_data, lro_ctrl::lro_mbuf_max, lro_ctrl::lro_queued, next, TCP_LRO_ACKCNT_MAX, and TCP_LRO_LENGTH_MAX.
Referenced by tcp_lro_init().
void tcp_lro_queue_mbuf | ( | struct lro_ctrl * | lc, |
struct mbuf * | mb | ||
) |
Definition at line 1941 of file tcp_lro.c.
References lro_ctrl::ifp, lro_ctrl::lro_mbuf_count, lro_ctrl::lro_mbuf_data, lro_ctrl::lro_mbuf_max, lro_mbuf_sort::mb, lro_mbuf_sort::seq, and tcp_lro_flush_all().
void tcp_lro_reg_mbufq | ( | void | ) |
Definition at line 136 of file tcp_lro.c.
References tcplro_stacks_wanting_mbufq.
Referenced by tcp_addbbr(), and tcp_addrack().
Definition at line 1916 of file tcp_lro.c.
References lro_ctrl::ifp, lro_ctrl::lro_last_queue_time, tcp_bad_csums, TCP_LRO_CANNOT, and tcp_lro_rx_common().
struct { ... } |
struct lro_parser __aligned |
union { ... } d_addr |
union { ... } s_addr |
Referenced by in_aifaddr_ioctl(), in_handle_ifaddr_route(), prison_primary_ip4(), and prison_qcmp_v4().