Changeset View
Changeset View
Standalone View
Standalone View
netinet/tcp_lro.h
Context not available. | |||||
LIST_ENTRY(lro_entry) hash_next; | LIST_ENTRY(lro_entry) hash_next; | ||||
struct mbuf *m_head; | struct mbuf *m_head; | ||||
struct mbuf *m_tail; | struct mbuf *m_tail; | ||||
struct mbuf *m_last_mbuf; | |||||
struct mbuf *m_prev_last; | |||||
union { | union { | ||||
struct ip *ip4; | struct ip *ip4; | ||||
struct ip6_hdr *ip6; | struct ip6_hdr *ip6; | ||||
Context not available. | |||||
uint32_t ack_seq; /* tcp_seq */ | uint32_t ack_seq; /* tcp_seq */ | ||||
uint32_t tsval; | uint32_t tsval; | ||||
uint32_t tsecr; | uint32_t tsecr; | ||||
uint32_t tcp_tot_p_len; /* TCP payload length of chain */ | |||||
uint16_t window; | uint16_t window; | ||||
uint16_t timestamp; /* flag, not a TCP hdr field. */ | uint16_t timestamp; /* flag, not a TCP hdr field. */ | ||||
uint16_t need_wakeup; | |||||
uint16_t mbuf_cnt; /* Count of mbufs collected see note */ | |||||
uint16_t mbuf_appended; | |||||
struct timeval mtime; | struct timeval mtime; | ||||
}; | }; | ||||
/* | |||||
* Note: The mbuf_cnt field tracks our number of mbufs added to the m_next | |||||
* list. Each mbuf counted can have data and of course it will | |||||
* have an ack as well (by defintion any inbound tcp segment will | |||||
* have an ack value. We use this count to tell us how many ACK's | |||||
* are present for our ack-count threshold. If we exceed that or | |||||
* the data threshold we will wake up the endpoint. | |||||
*/ | |||||
LIST_HEAD(lro_head, lro_entry); | LIST_HEAD(lro_head, lro_entry); | ||||
#define le_ip4 leip.ip4 | #define le_ip4 leip.ip4 | ||||
Context not available. |