Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_var.h
Show First 20 Lines • Show All 178 Lines • ▼ Show 20 Lines | struct tcpcb { | ||||
tcp_seq snd_recover_prev; /* snd_recover prior to retransmit */ | tcp_seq snd_recover_prev; /* snd_recover prior to retransmit */ | ||||
int t_sndzerowin; /* zero-window updates sent */ | int t_sndzerowin; /* zero-window updates sent */ | ||||
u_long t_rttupdated; /* number of times rtt sampled */ | u_long t_rttupdated; /* number of times rtt sampled */ | ||||
int snd_numholes; /* number of holes seen by sender */ | int snd_numholes; /* number of holes seen by sender */ | ||||
u_int t_badrxtwin; /* window for retransmit recovery */ | u_int t_badrxtwin; /* window for retransmit recovery */ | ||||
TAILQ_HEAD(sackhole_head, sackhole) snd_holes; | TAILQ_HEAD(sackhole_head, sackhole) snd_holes; | ||||
/* SACK scoreboard (sorted) */ | /* SACK scoreboard (sorted) */ | ||||
tcp_seq snd_fack; /* last seq number(+1) sack'd by rcv'r*/ | tcp_seq snd_fack; /* last seq number(+1) sack'd by rcv'r*/ | ||||
tcp_seq sack_newdata; /* New data xmitted in this recovery | |||||
episode starts at this seq number */ | |||||
struct sackblk sackblks[MAX_SACK_BLKS]; /* seq nos. of sack blocks */ | struct sackblk sackblks[MAX_SACK_BLKS]; /* seq nos. of sack blocks */ | ||||
struct sackhint sackhint; /* SACK scoreboard hint */ | struct sackhint sackhint; /* SACK scoreboard hint */ | ||||
int t_rttlow; /* smallest observerved RTT */ | int t_rttlow; /* smallest observerved RTT */ | ||||
int rfbuf_cnt; /* recv buffer autoscaling byte count */ | int rfbuf_cnt; /* recv buffer autoscaling byte count */ | ||||
struct toedev *tod; /* toedev handling this connection */ | struct toedev *tod; /* toedev handling this connection */ | ||||
int t_sndrexmitpack; /* retransmit packets sent */ | int t_sndrexmitpack; /* retransmit packets sent */ | ||||
int t_rcvoopack; /* out-of-order packets received */ | int t_rcvoopack; /* out-of-order packets received */ | ||||
void *t_toe; /* TOE pcb pointer */ | void *t_toe; /* TOE pcb pointer */ | ||||
struct cc_algo *cc_algo; /* congestion control algorithm */ | struct cc_algo *cc_algo; /* congestion control algorithm */ | ||||
rscheff: isn't cc_algo referenced rather often even during in-sequence processing, to warrant it to… | |||||
Done Inline Actions@rrs should comment on this, since he did the cacheline usage analysis. jtl: @rrs should comment on this, since he did the cacheline usage analysis. | |||||
Not Done Inline ActionsThis is probably ok since we are down in cache line 5. However I would like to Be worth seeing if we can gain a few cycles :D rrs: This is probably ok since we are down in cache line 5. However I would like to
run another re… | |||||
Done Inline ActionsSo, to move this patch forward, should I simply put a placeholder in that slot, so that subsequent data structures don't get moved around? rscheff: So, to move this patch forward, should I simply put a placeholder in that slot, so that… | |||||
struct cc_var *ccv; /* congestion control specific vars */ | struct cc_var *ccv; /* congestion control specific vars */ | ||||
struct osd *osd; /* storage for Khelp module data */ | struct osd *osd; /* storage for Khelp module data */ | ||||
int t_bytes_acked; /* # bytes acked during current RTT */ | int t_bytes_acked; /* # bytes acked during current RTT */ | ||||
u_int t_maxunacktime; | u_int t_maxunacktime; | ||||
u_int t_keepinit; /* time to establish connection */ | u_int t_keepinit; /* time to establish connection */ | ||||
u_int t_keepidle; /* time before keepalive probes begin */ | u_int t_keepidle; /* time before keepalive probes begin */ | ||||
u_int t_keepintvl; /* interval between keepalives */ | u_int t_keepintvl; /* interval between keepalives */ | ||||
u_int t_keepcnt; /* number of keepalives before close */ | u_int t_keepcnt; /* number of keepalives before close */ | ||||
int t_dupacks; /* consecutive dup acks recd */ | int t_dupacks; /* consecutive dup acks recd */ | ||||
int t_lognum; /* Number of log entries */ | int t_lognum; /* Number of log entries */ | ||||
struct tcp_log_stailq t_logs; /* Log buffer */ | struct tcp_log_stailq t_logs; /* Log buffer */ | ||||
struct tcp_log_id_node *t_lin; | struct tcp_log_id_node *t_lin; | ||||
struct tcp_log_id_bucket *t_lib; | struct tcp_log_id_bucket *t_lib; | ||||
const char *t_output_caller; /* Function that called tcp_output */ | const char *t_output_caller; /* Function that called tcp_output */ | ||||
uint32_t t_logsn; /* Log "serial number" */ | uint32_t t_logsn; /* Log "serial number" */ | ||||
uint8_t t_tfo_client_cookie_len; /* TCP Fast Open client cookie length */ | uint8_t t_tfo_client_cookie_len; /* TCP Fast Open client cookie length */ | ||||
unsigned int *t_tfo_pending; /* TCP Fast Open server pending counter */ | unsigned int *t_tfo_pending; /* TCP Fast Open server pending counter */ | ||||
Done Inline ActionsFast Open is a compile-time option; #ifdef for the connected tcpcb variables? rscheff: Fast Open is a compile-time option; #ifdef for the connected tcpcb variables? | |||||
union { | union { | ||||
uint8_t client[TCP_FASTOPEN_MAX_COOKIE_LEN]; | uint8_t client[TCP_FASTOPEN_MAX_COOKIE_LEN]; | ||||
uint64_t server; | uint64_t server; | ||||
} t_tfo_cookie; /* TCP Fast Open cookie to send */ | } t_tfo_cookie; /* TCP Fast Open cookie to send */ | ||||
#ifdef TCPPCAP | #ifdef TCPPCAP | ||||
struct mbufq t_inpkts; /* List of saved input packets. */ | struct mbufq t_inpkts; /* List of saved input packets. */ | ||||
struct mbufq t_outpkts; /* List of saved output packets. */ | struct mbufq t_outpkts; /* List of saved output packets. */ | ||||
#endif | #endif | ||||
▲ Show 20 Lines • Show All 750 Lines • Show Last 20 Lines |
isn't cc_algo referenced rather often even during in-sequence processing, to warrant it to move to a front cacheline?