summaryrefslogtreecommitdiffstats
path: root/include/net/tcp.h
AgeCommit message (Expand)Author
2017-06-05net: Update TCP congestion control documentationAnmol Sarma
2017-05-08tcp: make congestion control optionally skip slow start after idleWei Wang
2017-05-05tcp: randomize timestamps on syncookiesEric Dumazet
2017-04-26tcp: do not pass timestamp to tcp_rack_advance()Eric Dumazet
2017-04-26tcp: do not pass timestamp to tcp_rate_gen()Eric Dumazet
2017-04-26tcp: do not pass timestamp to tcp_rack_mark_lost()Eric Dumazet
2017-04-24net/tcp_fastopen: Add snmp counter for blackhole detectionWei Wang
2017-04-24net/tcp_fastopen: Disable active side TFO in certain scenariosWei Wang
2017-04-05net: tcp: Define the TCP_MAX_WSCALE instead of literal number 14Gao Feng
2017-03-24tcp: sysctl: Fix a race to avoid unexpected 0 window from spaceGao Feng
2017-03-16tcp: remove tcp_tw_recycleSoheil Hassas Yeganeh
2017-03-16tcp: remove per-destination timestamp cacheSoheil Hassas Yeganeh
2017-03-09tcp: rename *_sequence_number() to *_seq_and_tsoff()Alexey Kodanev
2017-01-25net/tcp-fastopen: Add new API supportWei Wang
2017-01-25net/tcp-fastopen: refactor cookie check logicWei Wang
2017-01-13tcp: remove early retransmitYuchung Cheng
2017-01-13tcp: enable RACK loss detection to trigger recoveryYuchung Cheng
2017-01-13tcp: use sequence to break TS ties for RACK loss detectionYuchung Cheng
2017-01-13tcp: add reordering timer in RACK loss detectionYuchung Cheng
2017-01-13tcp: record most recent RTT in RACK loss detectionYuchung Cheng
2017-01-13tcp: new helper for RACK to detect lossYuchung Cheng
2016-12-29ipv4: Namespaceify tcp_tw_recycle and tcp_max_tw_buckets knobHaishuang Yan
2016-12-27ipv4: Namespaceify tcp_tw_reuse knobHaishuang Yan
2016-12-02tcp: randomize tcp timestamp offsets for each connectionFlorian Westphal
2016-11-30tcp: instrument how long TCP is busy sendingFrancis Yan
2016-11-30tcp: instrument tcp sender limits chronographsFrancis Yan
2016-11-21tcp: make undo_cwnd mandatory for congestion modulesFlorian Westphal
2016-11-13tcp: take care of truncations done by sk_filter()Eric Dumazet
2016-11-03net: tcp: check skb is non-NULL for exact match on lookupsDavid Ahern
2016-10-17net: Require exact match for TCP socket lookups if dif is l3mdevDavid Ahern
2016-09-21tcp: new CC hook to set sending rate with rate_sample in any CA stateYuchung Cheng
2016-09-21tcp: allow congestion control to expand send buffer differentlyYuchung Cheng
2016-09-21tcp: export tcp_tso_autosize() and parameterize minimum number of TSO segmentsNeal Cardwell
2016-09-21tcp: allow congestion control module to request TSO skb segment countNeal Cardwell
2016-09-21tcp: track application-limited rate samplesSoheil Hassas Yeganeh
2016-09-21tcp: track data delivery rate for a TCP connectionYuchung Cheng
2016-09-21tcp: use windowed min filter library for TCP min_rtt estimationNeal Cardwell
2016-09-08tcp: use an RB tree for ooo receive queueYaogong Wang
2016-08-30Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netDavid S. Miller
2016-08-29tcp: add tcp_add_backlog()Eric Dumazet
2016-08-28tcp: Set read_sock and peek_len proto_opsTom Herbert
2016-08-28net: Add read_sock proto_opTom Herbert
2016-08-23net-tcp: retire TFO_SERVER_WO_SOCKOPT2 configYuchung Cheng
2016-08-18tcp: fix use after free in tcp_xmit_retransmit_queue()Eric Dumazet
2016-07-01tcp: md5: use kmalloc() backed scratch areasEric Dumazet
2016-06-30tcp: increase size at which tcp_bound_to_half_wnd bounds to > TCP_MSS_DEFAULTSeymour, Shane M
2016-06-10tcp: add in_flight to tcp_skb_cbLawrence Brakmo
2016-05-11net: l3mdev: Add hook in ip and ipv6David Ahern
2016-05-11tcp: replace cnt & rtt with struct in pkts_acked()Lawrence Brakmo
2016-05-09tcp: refactor struct tcp_skb_cbLawrence Brakmo
>[CRYPTO_MAX_ALG_NAME]; /* mapping to kernel crypto API */ /* kernel crypto API backend cipher name */ char backend_cra_name[CRYPTO_MAX_ALG_NAME]; }; struct drbg_state_ops { int (*update)(struct drbg_state *drbg, struct list_head *seed, int reseed); int (*generate)(struct drbg_state *drbg, unsigned char *buf, unsigned int buflen, struct list_head *addtl); int (*crypto_init)(struct drbg_state *drbg); int (*crypto_fini)(struct drbg_state *drbg); }; struct drbg_test_data { struct drbg_string *testentropy; /* TEST PARAMETER: test entropy */ }; struct drbg_state { struct mutex drbg_mutex; /* lock around DRBG */ unsigned char *V; /* internal state 10.1.1.1 1a) */ unsigned char *Vbuf; /* hash: static value 10.1.1.1 1b) hmac / ctr: key */ unsigned char *C; unsigned char *Cbuf; /* Number of RNG requests since last reseed -- 10.1.1.1 1c) */ size_t reseed_ctr; size_t reseed_threshold; /* some memory the DRBG can use for its operation */ unsigned char *scratchpad; unsigned char *scratchpadbuf; void *priv_data; /* Cipher handle */ struct crypto_skcipher *ctr_handle; /* CTR mode cipher handle */ struct skcipher_request *ctr_req; /* CTR mode request handle */ __u8 *outscratchpadbuf; /* CTR mode output scratchpad */ __u8 *outscratchpad; /* CTR mode aligned outbuf */ struct crypto_wait ctr_wait; /* CTR mode async wait obj */ struct scatterlist sg_in, sg_out; /* CTR mode SGLs */ bool seeded; /* DRBG fully seeded? */ bool pr; /* Prediction resistance enabled? */ struct work_struct seed_work; /* asynchronous seeding support */ struct crypto_rng *jent; const struct drbg_state_ops *d_ops; const struct drbg_core *core; struct drbg_string test_data; struct random_ready_callback random_ready; }; static inline __u8 drbg_statelen(struct drbg_state *drbg) { if (drbg && drbg->core) return drbg->core->statelen; return 0; } static inline __u8 drbg_blocklen(struct drbg_state *drbg) { if (drbg && drbg->core) return drbg->core->blocklen_bytes; return 0; } static inline __u8 drbg_keylen(struct drbg_state *drbg) { if (drbg && drbg->core) return (drbg->core->statelen - drbg->core->blocklen_bytes); return 0; } static inline size_t drbg_max_request_bytes(struct drbg_state *drbg) { /* SP800-90A requires the limit 2**19 bits, but we return bytes */ return (1 << 16); } static inline size_t drbg_max_addtl(struct drbg_state *drbg) { /* SP800-90A requires 2**35 bytes additional info str / pers str */ #if (__BITS_PER_LONG == 32) /* * SP800-90A allows smaller maximum numbers to be returned -- we * return SIZE_MAX - 1 to allow the verification of the enforcement * of this value in drbg_healthcheck_sanity. */ return (SIZE_MAX - 1); #else return (1UL<<35); #endif } static inline size_t drbg_max_requests(struct drbg_state *drbg) { /* SP800-90A requires 2**48 maximum requests before reseeding */ #if (__BITS_PER_LONG == 32) return SIZE_MAX; #else return (1UL<<48); #endif } /* * This is a wrapper to the kernel crypto API function of * crypto_rng_generate() to allow the caller to provide additional data. * * @drng DRBG handle -- see crypto_rng_get_bytes * @outbuf output buffer -- see crypto_rng_get_bytes * @outlen length of output buffer -- see crypto_rng_get_bytes * @addtl_input additional information string input buffer * @addtllen length of additional information string buffer * * return * see crypto_rng_get_bytes */ static inline int crypto_drbg_get_bytes_addtl(struct crypto_rng *drng, unsigned char *outbuf, unsigned int outlen, struct drbg_string *addtl) { return crypto_rng_generate(drng, addtl->buf, addtl->len, outbuf, outlen); } /* * TEST code * * This is a wrapper to the kernel crypto API function of * crypto_rng_generate() to allow the caller to provide additional data and * allow furnishing of test_data * * @drng DRBG handle -- see crypto_rng_get_bytes * @outbuf output buffer -- see crypto_rng_get_bytes * @outlen length of output buffer -- see crypto_rng_get_bytes * @addtl_input additional information string input buffer * @addtllen length of additional information string buffer * @test_data filled test data * * return * see crypto_rng_get_bytes */ static inline int crypto_drbg_get_bytes_addtl_test(struct crypto_rng *drng, unsigned char *outbuf, unsigned int outlen, struct drbg_string *addtl, struct drbg_test_data *test_data) { crypto_rng_set_entropy(drng, test_data->testentropy->buf, test_data->testentropy->len); return crypto_rng_generate(drng, addtl->buf, addtl->len, outbuf, outlen); } /* * TEST code * * This is a wrapper to the kernel crypto API function of * crypto_rng_reset() to allow the caller to provide test_data * * @drng DRBG handle -- see crypto_rng_reset * @pers personalization string input buffer * @perslen length of additional information string buffer * @test_data filled test data * * return * see crypto_rng_reset */ static inline int crypto_drbg_reset_test(struct crypto_rng *drng, struct drbg_string *pers, struct drbg_test_data *test_data) { crypto_rng_set_entropy(drng, test_data->testentropy->buf, test_data->testentropy->len); return crypto_rng_reset(drng, pers->buf, pers->len); } /* DRBG type flags */ #define DRBG_CTR ((drbg_flag_t)1<<0) #define DRBG_HMAC ((drbg_flag_t)1<<1) #define DRBG_HASH ((drbg_flag_t)1<<2) #define DRBG_TYPE_MASK (DRBG_CTR | DRBG_HMAC | DRBG_HASH) /* DRBG strength flags */ #define DRBG_STRENGTH128 ((drbg_flag_t)1<<3) #define DRBG_STRENGTH192 ((drbg_flag_t)1<<4) #define DRBG_STRENGTH256 ((drbg_flag_t)1<<5) #define DRBG_STRENGTH_MASK (DRBG_STRENGTH128 | DRBG_STRENGTH192 | \ DRBG_STRENGTH256) enum drbg_prefixes { DRBG_PREFIX0 = 0x00, DRBG_PREFIX1, DRBG_PREFIX2, DRBG_PREFIX3 }; #endif /* _DRBG_H */