dctcp
struct tcp_dctcp_info dctcp;
struct dctcp *ca = inet_csk_ca(sk);
struct dctcp *ca = inet_csk_ca(sk);
struct dctcp *ca = inet_csk_ca(sk);
struct dctcp *ca = inet_csk_ca(sk);
const struct dctcp *ca = inet_csk_ca(sk);
memset(&info->dctcp, 0, sizeof(info->dctcp));
info->dctcp.dctcp_enabled = 1;
info->dctcp.dctcp_ce_state = (u16) ca->ce_state;
info->dctcp.dctcp_alpha = ca->dctcp_alpha;
info->dctcp.dctcp_ab_ecn = tp->mss_cache *
info->dctcp.dctcp_ab_tot = tp->mss_cache *
return sizeof(info->dctcp);
const struct dctcp *ca = inet_csk_ca(sk);
static struct tcp_congestion_ops dctcp __read_mostly = {
BUILD_BUG_ON(sizeof(struct dctcp) > ICSK_CA_PRIV_SIZE);
return tcp_register_congestion_control(&dctcp);
tcp_unregister_congestion_control(&dctcp);
static void dctcp_reset(const struct tcp_sock *tp, struct dctcp *ca)
struct dctcp *ca = inet_csk_ca(sk);
dctcp_link = bpf_map__attach_struct_ops(dctcp_skel->maps.dctcp);
link = bpf_map__attach_struct_ops(dctcp_skel->maps.dctcp);
bpf_map__set_autoattach(dctcp_skel->maps.dctcp, true);
link = dctcp_skel->links.dctcp;
struct cb_opts dctcp = {
.cb_opts = &dctcp,
link = bpf_map__attach_struct_ops(dctcp_skel->maps.dctcp);
struct tcp_congestion_ops dctcp = {