blob: 5ca6dc6470fccd9cc47ab2921a82c4803363041a [file] [log] [blame]
/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
#include <linux/pkt_sched.h>
#include "conf-parser.h"
#include "qdisc.h"
typedef enum CakeCompensationMode {
CAKE_COMPENSATION_MODE_NONE = CAKE_ATM_NONE,
CAKE_COMPENSATION_MODE_ATM = CAKE_ATM_ATM,
CAKE_COMPENSATION_MODE_PTM = CAKE_ATM_PTM,
_CAKE_COMPENSATION_MODE_MAX,
_CAKE_COMPENSATION_MODE_INVALID = -EINVAL,
} CakeCompensationMode;
typedef enum CakeFlowIsolationMode {
CAKE_FLOW_ISOLATION_MODE_NONE = CAKE_FLOW_NONE,
CAKE_FLOW_ISOLATION_MODE_SRC_IP = CAKE_FLOW_SRC_IP,
CAKE_FLOW_ISOLATION_MODE_DST_IP = CAKE_FLOW_DST_IP,
CAKE_FLOW_ISOLATION_MODE_HOSTS = CAKE_FLOW_HOSTS,
CAKE_FLOW_ISOLATION_MODE_FLOWS = CAKE_FLOW_FLOWS,
CAKE_FLOW_ISOLATION_MODE_DUAL_SRC = CAKE_FLOW_DUAL_SRC,
CAKE_FLOW_ISOLATION_MODE_DUAL_DST = CAKE_FLOW_DUAL_DST,
CAKE_FLOW_ISOLATION_MODE_TRIPLE = CAKE_FLOW_TRIPLE,
_CAKE_FLOW_ISOLATION_MODE_MAX,
_CAKE_FLOW_ISOLATION_MODE_INVALID = -EINVAL,
} CakeFlowIsolationMode;
typedef enum CakePriorityQueueingPreset {
CAKE_PRESET_DIFFSERV3 = CAKE_DIFFSERV_DIFFSERV3,
CAKE_PRESET_DIFFSERV4 = CAKE_DIFFSERV_DIFFSERV4,
CAKE_PRESET_DIFFSERV8 = CAKE_DIFFSERV_DIFFSERV8,
CAKE_PRESET_BESTEFFORT = CAKE_DIFFSERV_BESTEFFORT,
CAKE_PRESET_PRECEDENCE = CAKE_DIFFSERV_PRECEDENCE,
_CAKE_PRESET_MAX,
_CAKE_PRESET_INVALID = -EINVAL,
} CakePriorityQueueingPreset;
typedef enum CakeAckFilter {
CAKE_ACK_FILTER_NO = CAKE_ACK_NONE,
CAKE_ACK_FILTER_YES = CAKE_ACK_FILTER,
CAKE_ACK_FILTER_AGGRESSIVE = CAKE_ACK_AGGRESSIVE,
_CAKE_ACK_FILTER_MAX,
_CAKE_ACK_FILTER_INVALID = -EINVAL,
} CakeAckFilter;
typedef struct CommonApplicationsKeptEnhanced {
QDisc meta;
/* Shaper parameters */
int autorate;
uint64_t bandwidth;
/* Overhead compensation parameters */
bool overhead_set;
int overhead;
uint32_t mpu;
CakeCompensationMode compensation_mode;
int raw;
/* Flow isolation parameters */
CakeFlowIsolationMode flow_isolation_mode;
int nat;
/* Priority queue parameters */
CakePriorityQueueingPreset preset;
uint32_t fwmark;
/* Other parameters */
int wash;
int split_gso;
usec_t rtt;
CakeAckFilter ack_filter;
} CommonApplicationsKeptEnhanced;
DEFINE_QDISC_CAST(CAKE, CommonApplicationsKeptEnhanced);
extern const QDiscVTable cake_vtable;
CONFIG_PARSER_PROTOTYPE(config_parse_cake_bandwidth);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_overhead);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_mpu);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_tristate);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_compensation_mode);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_flow_isolation_mode);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_priority_queueing_preset);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_fwmark);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_rtt);
CONFIG_PARSER_PROTOTYPE(config_parse_cake_ack_filter);