Merge branch 'main' into next
Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
commit
fa2881b664
11
dcb/dcb.c
11
dcb/dcb.c
|
|
@ -38,6 +38,7 @@ static void dcb_fini(struct dcb *dcb)
|
||||||
{
|
{
|
||||||
delete_json_obj_plain();
|
delete_json_obj_plain();
|
||||||
mnl_socket_close(dcb->nl);
|
mnl_socket_close(dcb->nl);
|
||||||
|
free(dcb->buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct dcb *dcb_alloc(void)
|
static struct dcb *dcb_alloc(void)
|
||||||
|
|
@ -177,7 +178,7 @@ int dcb_set_attribute(struct dcb *dcb, const char *dev, int attr, const void *da
|
||||||
struct nlattr *nest;
|
struct nlattr *nest;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
nlh = dcb_prepare(dcb, dev, RTM_GETDCB, DCB_CMD_IEEE_SET);
|
nlh = dcb_prepare(dcb, dev, RTM_SETDCB, DCB_CMD_IEEE_SET);
|
||||||
|
|
||||||
nest = mnl_attr_nest_start(nlh, DCB_ATTR_IEEE);
|
nest = mnl_attr_nest_start(nlh, DCB_ATTR_IEEE);
|
||||||
mnl_attr_put(nlh, attr, data_len, data);
|
mnl_attr_put(nlh, attr, data_len, data);
|
||||||
|
|
@ -331,7 +332,7 @@ static void dcb_help(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: dcb [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
"Usage: dcb [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
||||||
" dcb [ -f | --force ] { -b | --batch } filename [ -N | --Netns ] netnsname\n"
|
" dcb [ -f | --force ] { -b | --batch } filename [ -n | --netns ] netnsname\n"
|
||||||
"where OBJECT := { buffer | ets | maxrate | pfc }\n"
|
"where OBJECT := { buffer | ets | maxrate | pfc }\n"
|
||||||
" OPTIONS := [ -V | --Version | -i | --iec | -j | --json\n"
|
" OPTIONS := [ -V | --Version | -i | --iec | -j | --json\n"
|
||||||
" | -p | --pretty | -s | --statistics | -v | --verbose]\n");
|
" | -p | --pretty | -s | --statistics | -v | --verbose]\n");
|
||||||
|
|
@ -378,7 +379,7 @@ int main(int argc, char **argv)
|
||||||
{ "json", no_argument, NULL, 'j' },
|
{ "json", no_argument, NULL, 'j' },
|
||||||
{ "pretty", no_argument, NULL, 'p' },
|
{ "pretty", no_argument, NULL, 'p' },
|
||||||
{ "statistics", no_argument, NULL, 's' },
|
{ "statistics", no_argument, NULL, 's' },
|
||||||
{ "Netns", required_argument, NULL, 'N' },
|
{ "netns", required_argument, NULL, 'n' },
|
||||||
{ "help", no_argument, NULL, 'h' },
|
{ "help", no_argument, NULL, 'h' },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
@ -395,7 +396,7 @@ int main(int argc, char **argv)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((opt = getopt_long(argc, argv, "b:fhijpsvN:V",
|
while ((opt = getopt_long(argc, argv, "b:fhijn:psvV",
|
||||||
long_options, NULL)) >= 0) {
|
long_options, NULL)) >= 0) {
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
|
@ -418,7 +419,7 @@ int main(int argc, char **argv)
|
||||||
case 's':
|
case 's':
|
||||||
dcb->stats = true;
|
dcb->stats = true;
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'n':
|
||||||
if (netns_switch(optarg)) {
|
if (netns_switch(optarg)) {
|
||||||
ret = EXIT_FAILURE;
|
ret = EXIT_FAILURE;
|
||||||
goto dcb_free;
|
goto dcb_free;
|
||||||
|
|
|
||||||
|
|
@ -3822,6 +3822,14 @@ union bpf_attr {
|
||||||
* The **hash_algo** is returned on success,
|
* The **hash_algo** is returned on success,
|
||||||
* **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if
|
* **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if
|
||||||
* invalid arguments are passed.
|
* invalid arguments are passed.
|
||||||
|
*
|
||||||
|
* struct socket *bpf_sock_from_file(struct file *file)
|
||||||
|
* Description
|
||||||
|
* If the given file represents a socket, returns the associated
|
||||||
|
* socket.
|
||||||
|
* Return
|
||||||
|
* A pointer to a struct socket on success or NULL if the file is
|
||||||
|
* not a socket.
|
||||||
*/
|
*/
|
||||||
#define __BPF_FUNC_MAPPER(FN) \
|
#define __BPF_FUNC_MAPPER(FN) \
|
||||||
FN(unspec), \
|
FN(unspec), \
|
||||||
|
|
@ -3986,6 +3994,7 @@ union bpf_attr {
|
||||||
FN(bprm_opts_set), \
|
FN(bprm_opts_set), \
|
||||||
FN(ktime_get_coarse_ns), \
|
FN(ktime_get_coarse_ns), \
|
||||||
FN(ima_inode_hash), \
|
FN(ima_inode_hash), \
|
||||||
|
FN(sock_from_file), \
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||||
|
|
|
||||||
|
|
@ -28,4 +28,9 @@
|
||||||
#define _BITUL(x) (_UL(1) << (x))
|
#define _BITUL(x) (_UL(1) << (x))
|
||||||
#define _BITULL(x) (_ULL(1) << (x))
|
#define _BITULL(x) (_ULL(1) << (x))
|
||||||
|
|
||||||
|
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
|
||||||
|
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
|
||||||
|
|
||||||
|
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
|
||||||
|
|
||||||
#endif /* _LINUX_CONST_H */
|
#endif /* _LINUX_CONST_H */
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,769 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2008-2011, Intel Corporation.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
* version 2, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
* more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
|
* Place - Suite 330, Boston, MA 02111-1307 USA.
|
||||||
|
*
|
||||||
|
* Author: Lucy Liu <lucy.liu@intel.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __LINUX_DCBNL_H__
|
||||||
|
#define __LINUX_DCBNL_H__
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
/* IEEE 802.1Qaz std supported values */
|
||||||
|
#define IEEE_8021QAZ_MAX_TCS 8
|
||||||
|
|
||||||
|
#define IEEE_8021QAZ_TSA_STRICT 0
|
||||||
|
#define IEEE_8021QAZ_TSA_CB_SHAPER 1
|
||||||
|
#define IEEE_8021QAZ_TSA_ETS 2
|
||||||
|
#define IEEE_8021QAZ_TSA_VENDOR 255
|
||||||
|
|
||||||
|
/* This structure contains the IEEE 802.1Qaz ETS managed object
|
||||||
|
*
|
||||||
|
* @willing: willing bit in ETS configuration TLV
|
||||||
|
* @ets_cap: indicates supported capacity of ets feature
|
||||||
|
* @cbs: credit based shaper ets algorithm supported
|
||||||
|
* @tc_tx_bw: tc tx bandwidth indexed by traffic class
|
||||||
|
* @tc_rx_bw: tc rx bandwidth indexed by traffic class
|
||||||
|
* @tc_tsa: TSA Assignment table, indexed by traffic class
|
||||||
|
* @prio_tc: priority assignment table mapping 8021Qp to traffic class
|
||||||
|
* @tc_reco_bw: recommended tc bandwidth indexed by traffic class for TLV
|
||||||
|
* @tc_reco_tsa: recommended tc bandwidth indexed by traffic class for TLV
|
||||||
|
* @reco_prio_tc: recommended tc tx bandwidth indexed by traffic class for TLV
|
||||||
|
*
|
||||||
|
* Recommended values are used to set fields in the ETS recommendation TLV
|
||||||
|
* with hardware offloaded LLDP.
|
||||||
|
*
|
||||||
|
* ----
|
||||||
|
* TSA Assignment 8 bit identifiers
|
||||||
|
* 0 strict priority
|
||||||
|
* 1 credit-based shaper
|
||||||
|
* 2 enhanced transmission selection
|
||||||
|
* 3-254 reserved
|
||||||
|
* 255 vendor specific
|
||||||
|
*/
|
||||||
|
struct ieee_ets {
|
||||||
|
__u8 willing;
|
||||||
|
__u8 ets_cap;
|
||||||
|
__u8 cbs;
|
||||||
|
__u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This structure contains rate limit extension to the IEEE 802.1Qaz ETS
|
||||||
|
* managed object.
|
||||||
|
* Values are 64 bits long and specified in Kbps to enable usage over both
|
||||||
|
* slow and very fast networks.
|
||||||
|
*
|
||||||
|
* @tc_maxrate: maximal tc tx bandwidth indexed by traffic class
|
||||||
|
*/
|
||||||
|
struct ieee_maxrate {
|
||||||
|
__u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
};
|
||||||
|
|
||||||
|
enum dcbnl_cndd_states {
|
||||||
|
DCB_CNDD_RESET = 0,
|
||||||
|
DCB_CNDD_EDGE,
|
||||||
|
DCB_CNDD_INTERIOR,
|
||||||
|
DCB_CNDD_INTERIOR_READY,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This structure contains the IEEE 802.1Qau QCN managed object.
|
||||||
|
*
|
||||||
|
*@rpg_enable: enable QCN RP
|
||||||
|
*@rppp_max_rps: maximum number of RPs allowed for this CNPV on this port
|
||||||
|
*@rpg_time_reset: time between rate increases if no CNMs received.
|
||||||
|
* given in u-seconds
|
||||||
|
*@rpg_byte_reset: transmitted data between rate increases if no CNMs received.
|
||||||
|
* given in Bytes
|
||||||
|
*@rpg_threshold: The number of times rpByteStage or rpTimeStage can count
|
||||||
|
* before RP rate control state machine advances states
|
||||||
|
*@rpg_max_rate: the maxinun rate, in Mbits per second,
|
||||||
|
* at which an RP can transmit
|
||||||
|
*@rpg_ai_rate: The rate, in Mbits per second,
|
||||||
|
* used to increase rpTargetRate in the RPR_ACTIVE_INCREASE
|
||||||
|
*@rpg_hai_rate: The rate, in Mbits per second,
|
||||||
|
* used to increase rpTargetRate in the RPR_HYPER_INCREASE state
|
||||||
|
*@rpg_gd: Upon CNM receive, flow rate is limited to (Fb/Gd)*CurrentRate.
|
||||||
|
* rpgGd is given as log2(Gd), where Gd may only be powers of 2
|
||||||
|
*@rpg_min_dec_fac: The minimum factor by which the current transmit rate
|
||||||
|
* can be changed by reception of a CNM.
|
||||||
|
* value is given as percentage (1-100)
|
||||||
|
*@rpg_min_rate: The minimum value, in bits per second, for rate to limit
|
||||||
|
*@cndd_state_machine: The state of the congestion notification domain
|
||||||
|
* defense state machine, as defined by IEEE 802.3Qau
|
||||||
|
* section 32.1.1. In the interior ready state,
|
||||||
|
* the QCN capable hardware may add CN-TAG TLV to the
|
||||||
|
* outgoing traffic, to specifically identify outgoing
|
||||||
|
* flows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct ieee_qcn {
|
||||||
|
__u8 rpg_enable[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rppp_max_rps[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_time_reset[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_byte_reset[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_threshold[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_max_rate[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_ai_rate[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_hai_rate[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_gd[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_min_dec_fac[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rpg_min_rate[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 cndd_state_machine[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This structure contains the IEEE 802.1Qau QCN statistics.
|
||||||
|
*
|
||||||
|
*@rppp_rp_centiseconds: the number of RP-centiseconds accumulated
|
||||||
|
* by RPs at this priority level on this Port
|
||||||
|
*@rppp_created_rps: number of active RPs(flows) that react to CNMs
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct ieee_qcn_stats {
|
||||||
|
__u64 rppp_rp_centiseconds[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u32 rppp_created_rps[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This structure contains the IEEE 802.1Qaz PFC managed object
|
||||||
|
*
|
||||||
|
* @pfc_cap: Indicates the number of traffic classes on the local device
|
||||||
|
* that may simultaneously have PFC enabled.
|
||||||
|
* @pfc_en: bitmap indicating pfc enabled traffic classes
|
||||||
|
* @mbc: enable macsec bypass capability
|
||||||
|
* @delay: the allowance made for a round-trip propagation delay of the
|
||||||
|
* link in bits.
|
||||||
|
* @requests: count of the sent pfc frames
|
||||||
|
* @indications: count of the received pfc frames
|
||||||
|
*/
|
||||||
|
struct ieee_pfc {
|
||||||
|
__u8 pfc_cap;
|
||||||
|
__u8 pfc_en;
|
||||||
|
__u8 mbc;
|
||||||
|
__u16 delay;
|
||||||
|
__u64 requests[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
__u64 indications[IEEE_8021QAZ_MAX_TCS];
|
||||||
|
};
|
||||||
|
|
||||||
|
#define IEEE_8021Q_MAX_PRIORITIES 8
|
||||||
|
#define DCBX_MAX_BUFFERS 8
|
||||||
|
struct dcbnl_buffer {
|
||||||
|
/* priority to buffer mapping */
|
||||||
|
__u8 prio2buffer[IEEE_8021Q_MAX_PRIORITIES];
|
||||||
|
/* buffer size in Bytes */
|
||||||
|
__u32 buffer_size[DCBX_MAX_BUFFERS];
|
||||||
|
__u32 total_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* CEE DCBX std supported values */
|
||||||
|
#define CEE_DCBX_MAX_PGS 8
|
||||||
|
#define CEE_DCBX_MAX_PRIO 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct cee_pg - CEE Priority-Group managed object
|
||||||
|
*
|
||||||
|
* @willing: willing bit in the PG tlv
|
||||||
|
* @error: error bit in the PG tlv
|
||||||
|
* @pg_en: enable bit of the PG feature
|
||||||
|
* @tcs_supported: number of traffic classes supported
|
||||||
|
* @pg_bw: bandwidth percentage for each priority group
|
||||||
|
* @prio_pg: priority to PG mapping indexed by priority
|
||||||
|
*/
|
||||||
|
struct cee_pg {
|
||||||
|
__u8 willing;
|
||||||
|
__u8 error;
|
||||||
|
__u8 pg_en;
|
||||||
|
__u8 tcs_supported;
|
||||||
|
__u8 pg_bw[CEE_DCBX_MAX_PGS];
|
||||||
|
__u8 prio_pg[CEE_DCBX_MAX_PGS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct cee_pfc - CEE PFC managed object
|
||||||
|
*
|
||||||
|
* @willing: willing bit in the PFC tlv
|
||||||
|
* @error: error bit in the PFC tlv
|
||||||
|
* @pfc_en: bitmap indicating pfc enabled traffic classes
|
||||||
|
* @tcs_supported: number of traffic classes supported
|
||||||
|
*/
|
||||||
|
struct cee_pfc {
|
||||||
|
__u8 willing;
|
||||||
|
__u8 error;
|
||||||
|
__u8 pfc_en;
|
||||||
|
__u8 tcs_supported;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* IEEE 802.1Qaz std supported values */
|
||||||
|
#define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
|
||||||
|
#define IEEE_8021QAZ_APP_SEL_STREAM 2
|
||||||
|
#define IEEE_8021QAZ_APP_SEL_DGRAM 3
|
||||||
|
#define IEEE_8021QAZ_APP_SEL_ANY 4
|
||||||
|
#define IEEE_8021QAZ_APP_SEL_DSCP 5
|
||||||
|
|
||||||
|
/* This structure contains the IEEE 802.1Qaz APP managed object. This
|
||||||
|
* object is also used for the CEE std as well.
|
||||||
|
*
|
||||||
|
* @selector: protocol identifier type
|
||||||
|
* @protocol: protocol of type indicated
|
||||||
|
* @priority: 3-bit unsigned integer indicating priority for IEEE
|
||||||
|
* 8-bit 802.1p user priority bitmap for CEE
|
||||||
|
*
|
||||||
|
* ----
|
||||||
|
* Selector field values for IEEE 802.1Qaz
|
||||||
|
* 0 Reserved
|
||||||
|
* 1 Ethertype
|
||||||
|
* 2 Well known port number over TCP or SCTP
|
||||||
|
* 3 Well known port number over UDP or DCCP
|
||||||
|
* 4 Well known port number over TCP, SCTP, UDP, or DCCP
|
||||||
|
* 5 Differentiated Services Code Point (DSCP) value
|
||||||
|
* 6-7 Reserved
|
||||||
|
*
|
||||||
|
* Selector field values for CEE
|
||||||
|
* 0 Ethertype
|
||||||
|
* 1 Well known port number over TCP or UDP
|
||||||
|
* 2-3 Reserved
|
||||||
|
*/
|
||||||
|
struct dcb_app {
|
||||||
|
__u8 selector;
|
||||||
|
__u8 priority;
|
||||||
|
__u16 protocol;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct dcb_peer_app_info - APP feature information sent by the peer
|
||||||
|
*
|
||||||
|
* @willing: willing bit in the peer APP tlv
|
||||||
|
* @error: error bit in the peer APP tlv
|
||||||
|
*
|
||||||
|
* In addition to this information the full peer APP tlv also contains
|
||||||
|
* a table of 'app_count' APP objects defined above.
|
||||||
|
*/
|
||||||
|
struct dcb_peer_app_info {
|
||||||
|
__u8 willing;
|
||||||
|
__u8 error;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct dcbmsg {
|
||||||
|
__u8 dcb_family;
|
||||||
|
__u8 cmd;
|
||||||
|
__u16 dcb_pad;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_commands - supported DCB commands
|
||||||
|
*
|
||||||
|
* @DCB_CMD_UNDEFINED: unspecified command to catch errors
|
||||||
|
* @DCB_CMD_GSTATE: request the state of DCB in the device
|
||||||
|
* @DCB_CMD_SSTATE: set the state of DCB in the device
|
||||||
|
* @DCB_CMD_PGTX_GCFG: request the priority group configuration for Tx
|
||||||
|
* @DCB_CMD_PGTX_SCFG: set the priority group configuration for Tx
|
||||||
|
* @DCB_CMD_PGRX_GCFG: request the priority group configuration for Rx
|
||||||
|
* @DCB_CMD_PGRX_SCFG: set the priority group configuration for Rx
|
||||||
|
* @DCB_CMD_PFC_GCFG: request the priority flow control configuration
|
||||||
|
* @DCB_CMD_PFC_SCFG: set the priority flow control configuration
|
||||||
|
* @DCB_CMD_SET_ALL: apply all changes to the underlying device
|
||||||
|
* @DCB_CMD_GPERM_HWADDR: get the permanent MAC address of the underlying
|
||||||
|
* device. Only useful when using bonding.
|
||||||
|
* @DCB_CMD_GCAP: request the DCB capabilities of the device
|
||||||
|
* @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported
|
||||||
|
* @DCB_CMD_SNUMTCS: set the number of traffic classes
|
||||||
|
* @DCB_CMD_GBCN: set backward congestion notification configuration
|
||||||
|
* @DCB_CMD_SBCN: get backward congestion notification configuration.
|
||||||
|
* @DCB_CMD_GAPP: get application protocol configuration
|
||||||
|
* @DCB_CMD_SAPP: set application protocol configuration
|
||||||
|
* @DCB_CMD_IEEE_SET: set IEEE 802.1Qaz configuration
|
||||||
|
* @DCB_CMD_IEEE_GET: get IEEE 802.1Qaz configuration
|
||||||
|
* @DCB_CMD_GDCBX: get DCBX engine configuration
|
||||||
|
* @DCB_CMD_SDCBX: set DCBX engine configuration
|
||||||
|
* @DCB_CMD_GFEATCFG: get DCBX features flags
|
||||||
|
* @DCB_CMD_SFEATCFG: set DCBX features negotiation flags
|
||||||
|
* @DCB_CMD_CEE_GET: get CEE aggregated configuration
|
||||||
|
* @DCB_CMD_IEEE_DEL: delete IEEE 802.1Qaz configuration
|
||||||
|
*/
|
||||||
|
enum dcbnl_commands {
|
||||||
|
DCB_CMD_UNDEFINED,
|
||||||
|
|
||||||
|
DCB_CMD_GSTATE,
|
||||||
|
DCB_CMD_SSTATE,
|
||||||
|
|
||||||
|
DCB_CMD_PGTX_GCFG,
|
||||||
|
DCB_CMD_PGTX_SCFG,
|
||||||
|
DCB_CMD_PGRX_GCFG,
|
||||||
|
DCB_CMD_PGRX_SCFG,
|
||||||
|
|
||||||
|
DCB_CMD_PFC_GCFG,
|
||||||
|
DCB_CMD_PFC_SCFG,
|
||||||
|
|
||||||
|
DCB_CMD_SET_ALL,
|
||||||
|
|
||||||
|
DCB_CMD_GPERM_HWADDR,
|
||||||
|
|
||||||
|
DCB_CMD_GCAP,
|
||||||
|
|
||||||
|
DCB_CMD_GNUMTCS,
|
||||||
|
DCB_CMD_SNUMTCS,
|
||||||
|
|
||||||
|
DCB_CMD_PFC_GSTATE,
|
||||||
|
DCB_CMD_PFC_SSTATE,
|
||||||
|
|
||||||
|
DCB_CMD_BCN_GCFG,
|
||||||
|
DCB_CMD_BCN_SCFG,
|
||||||
|
|
||||||
|
DCB_CMD_GAPP,
|
||||||
|
DCB_CMD_SAPP,
|
||||||
|
|
||||||
|
DCB_CMD_IEEE_SET,
|
||||||
|
DCB_CMD_IEEE_GET,
|
||||||
|
|
||||||
|
DCB_CMD_GDCBX,
|
||||||
|
DCB_CMD_SDCBX,
|
||||||
|
|
||||||
|
DCB_CMD_GFEATCFG,
|
||||||
|
DCB_CMD_SFEATCFG,
|
||||||
|
|
||||||
|
DCB_CMD_CEE_GET,
|
||||||
|
DCB_CMD_IEEE_DEL,
|
||||||
|
|
||||||
|
__DCB_CMD_ENUM_MAX,
|
||||||
|
DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_attrs - DCB top-level netlink attributes
|
||||||
|
*
|
||||||
|
* @DCB_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_ATTR_IFNAME: interface name of the underlying device (NLA_STRING)
|
||||||
|
* @DCB_ATTR_STATE: enable state of DCB in the device (NLA_U8)
|
||||||
|
* @DCB_ATTR_PFC_STATE: enable state of PFC in the device (NLA_U8)
|
||||||
|
* @DCB_ATTR_PFC_CFG: priority flow control configuration (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_NUM_TC: number of traffic classes supported in the device (NLA_U8)
|
||||||
|
* @DCB_ATTR_PG_CFG: priority group configuration (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_SET_ALL: bool to commit changes to hardware or not (NLA_U8)
|
||||||
|
* @DCB_ATTR_PERM_HWADDR: MAC address of the physical device (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_CAP: DCB capabilities of the device (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_NUMTCS: number of traffic classes supported (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_BCN: backward congestion notification configuration (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_IEEE: IEEE 802.1Qaz supported attributes (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_DCBX: DCBX engine configuration in the device (NLA_U8)
|
||||||
|
* @DCB_ATTR_FEATCFG: DCBX features flags (NLA_NESTED)
|
||||||
|
* @DCB_ATTR_CEE: CEE std supported attributes (NLA_NESTED)
|
||||||
|
*/
|
||||||
|
enum dcbnl_attrs {
|
||||||
|
DCB_ATTR_UNDEFINED,
|
||||||
|
|
||||||
|
DCB_ATTR_IFNAME,
|
||||||
|
DCB_ATTR_STATE,
|
||||||
|
DCB_ATTR_PFC_STATE,
|
||||||
|
DCB_ATTR_PFC_CFG,
|
||||||
|
DCB_ATTR_NUM_TC,
|
||||||
|
DCB_ATTR_PG_CFG,
|
||||||
|
DCB_ATTR_SET_ALL,
|
||||||
|
DCB_ATTR_PERM_HWADDR,
|
||||||
|
DCB_ATTR_CAP,
|
||||||
|
DCB_ATTR_NUMTCS,
|
||||||
|
DCB_ATTR_BCN,
|
||||||
|
DCB_ATTR_APP,
|
||||||
|
|
||||||
|
/* IEEE std attributes */
|
||||||
|
DCB_ATTR_IEEE,
|
||||||
|
|
||||||
|
DCB_ATTR_DCBX,
|
||||||
|
DCB_ATTR_FEATCFG,
|
||||||
|
|
||||||
|
/* CEE nested attributes */
|
||||||
|
DCB_ATTR_CEE,
|
||||||
|
|
||||||
|
__DCB_ATTR_ENUM_MAX,
|
||||||
|
DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum ieee_attrs - IEEE 802.1Qaz get/set attributes
|
||||||
|
*
|
||||||
|
* @DCB_ATTR_IEEE_UNSPEC: unspecified
|
||||||
|
* @DCB_ATTR_IEEE_ETS: negotiated ETS configuration
|
||||||
|
* @DCB_ATTR_IEEE_PFC: negotiated PFC configuration
|
||||||
|
* @DCB_ATTR_IEEE_APP_TABLE: negotiated APP configuration
|
||||||
|
* @DCB_ATTR_IEEE_PEER_ETS: peer ETS configuration - get only
|
||||||
|
* @DCB_ATTR_IEEE_PEER_PFC: peer PFC configuration - get only
|
||||||
|
* @DCB_ATTR_IEEE_PEER_APP: peer APP tlv - get only
|
||||||
|
*/
|
||||||
|
enum ieee_attrs {
|
||||||
|
DCB_ATTR_IEEE_UNSPEC,
|
||||||
|
DCB_ATTR_IEEE_ETS,
|
||||||
|
DCB_ATTR_IEEE_PFC,
|
||||||
|
DCB_ATTR_IEEE_APP_TABLE,
|
||||||
|
DCB_ATTR_IEEE_PEER_ETS,
|
||||||
|
DCB_ATTR_IEEE_PEER_PFC,
|
||||||
|
DCB_ATTR_IEEE_PEER_APP,
|
||||||
|
DCB_ATTR_IEEE_MAXRATE,
|
||||||
|
DCB_ATTR_IEEE_QCN,
|
||||||
|
DCB_ATTR_IEEE_QCN_STATS,
|
||||||
|
DCB_ATTR_DCB_BUFFER,
|
||||||
|
__DCB_ATTR_IEEE_MAX
|
||||||
|
};
|
||||||
|
#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
|
||||||
|
|
||||||
|
enum ieee_attrs_app {
|
||||||
|
DCB_ATTR_IEEE_APP_UNSPEC,
|
||||||
|
DCB_ATTR_IEEE_APP,
|
||||||
|
__DCB_ATTR_IEEE_APP_MAX
|
||||||
|
};
|
||||||
|
#define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum cee_attrs - CEE DCBX get attributes.
|
||||||
|
*
|
||||||
|
* @DCB_ATTR_CEE_UNSPEC: unspecified
|
||||||
|
* @DCB_ATTR_CEE_PEER_PG: peer PG configuration - get only
|
||||||
|
* @DCB_ATTR_CEE_PEER_PFC: peer PFC configuration - get only
|
||||||
|
* @DCB_ATTR_CEE_PEER_APP_TABLE: peer APP tlv - get only
|
||||||
|
* @DCB_ATTR_CEE_TX_PG: TX PG configuration (DCB_CMD_PGTX_GCFG)
|
||||||
|
* @DCB_ATTR_CEE_RX_PG: RX PG configuration (DCB_CMD_PGRX_GCFG)
|
||||||
|
* @DCB_ATTR_CEE_PFC: PFC configuration (DCB_CMD_PFC_GCFG)
|
||||||
|
* @DCB_ATTR_CEE_APP_TABLE: APP configuration (multi DCB_CMD_GAPP)
|
||||||
|
* @DCB_ATTR_CEE_FEAT: DCBX features flags (DCB_CMD_GFEATCFG)
|
||||||
|
*
|
||||||
|
* An aggregated collection of the cee std negotiated parameters.
|
||||||
|
*/
|
||||||
|
enum cee_attrs {
|
||||||
|
DCB_ATTR_CEE_UNSPEC,
|
||||||
|
DCB_ATTR_CEE_PEER_PG,
|
||||||
|
DCB_ATTR_CEE_PEER_PFC,
|
||||||
|
DCB_ATTR_CEE_PEER_APP_TABLE,
|
||||||
|
DCB_ATTR_CEE_TX_PG,
|
||||||
|
DCB_ATTR_CEE_RX_PG,
|
||||||
|
DCB_ATTR_CEE_PFC,
|
||||||
|
DCB_ATTR_CEE_APP_TABLE,
|
||||||
|
DCB_ATTR_CEE_FEAT,
|
||||||
|
__DCB_ATTR_CEE_MAX
|
||||||
|
};
|
||||||
|
#define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
|
||||||
|
|
||||||
|
enum peer_app_attr {
|
||||||
|
DCB_ATTR_CEE_PEER_APP_UNSPEC,
|
||||||
|
DCB_ATTR_CEE_PEER_APP_INFO,
|
||||||
|
DCB_ATTR_CEE_PEER_APP,
|
||||||
|
__DCB_ATTR_CEE_PEER_APP_MAX
|
||||||
|
};
|
||||||
|
#define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
|
||||||
|
|
||||||
|
enum cee_attrs_app {
|
||||||
|
DCB_ATTR_CEE_APP_UNSPEC,
|
||||||
|
DCB_ATTR_CEE_APP,
|
||||||
|
__DCB_ATTR_CEE_APP_MAX
|
||||||
|
};
|
||||||
|
#define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs
|
||||||
|
*
|
||||||
|
* @DCB_PFC_UP_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_PFC_UP_ATTR_0: Priority Flow Control value for User Priority 0 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_1: Priority Flow Control value for User Priority 1 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_2: Priority Flow Control value for User Priority 2 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_3: Priority Flow Control value for User Priority 3 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_4: Priority Flow Control value for User Priority 4 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_5: Priority Flow Control value for User Priority 5 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_6: Priority Flow Control value for User Priority 6 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_7: Priority Flow Control value for User Priority 7 (NLA_U8)
|
||||||
|
* @DCB_PFC_UP_ATTR_MAX: highest attribute number currently defined
|
||||||
|
* @DCB_PFC_UP_ATTR_ALL: apply to all priority flow control attrs (NLA_FLAG)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
enum dcbnl_pfc_up_attrs {
|
||||||
|
DCB_PFC_UP_ATTR_UNDEFINED,
|
||||||
|
|
||||||
|
DCB_PFC_UP_ATTR_0,
|
||||||
|
DCB_PFC_UP_ATTR_1,
|
||||||
|
DCB_PFC_UP_ATTR_2,
|
||||||
|
DCB_PFC_UP_ATTR_3,
|
||||||
|
DCB_PFC_UP_ATTR_4,
|
||||||
|
DCB_PFC_UP_ATTR_5,
|
||||||
|
DCB_PFC_UP_ATTR_6,
|
||||||
|
DCB_PFC_UP_ATTR_7,
|
||||||
|
DCB_PFC_UP_ATTR_ALL,
|
||||||
|
|
||||||
|
__DCB_PFC_UP_ATTR_ENUM_MAX,
|
||||||
|
DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_pg_attrs - DCB Priority Group attributes
|
||||||
|
*
|
||||||
|
* @DCB_PG_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_PG_ATTR_TC_0: Priority Group Traffic Class 0 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_1: Priority Group Traffic Class 1 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_2: Priority Group Traffic Class 2 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_3: Priority Group Traffic Class 3 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_4: Priority Group Traffic Class 4 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_5: Priority Group Traffic Class 5 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_6: Priority Group Traffic Class 6 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_7: Priority Group Traffic Class 7 configuration (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_TC_MAX: highest attribute number currently defined
|
||||||
|
* @DCB_PG_ATTR_TC_ALL: apply to all traffic classes (NLA_NESTED)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_0: Percent of link bandwidth for Priority Group 0 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_1: Percent of link bandwidth for Priority Group 1 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_2: Percent of link bandwidth for Priority Group 2 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_3: Percent of link bandwidth for Priority Group 3 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_4: Percent of link bandwidth for Priority Group 4 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_5: Percent of link bandwidth for Priority Group 5 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_6: Percent of link bandwidth for Priority Group 6 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_7: Percent of link bandwidth for Priority Group 7 (NLA_U8)
|
||||||
|
* @DCB_PG_ATTR_BW_ID_MAX: highest attribute number currently defined
|
||||||
|
* @DCB_PG_ATTR_BW_ID_ALL: apply to all priority groups (NLA_FLAG)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
enum dcbnl_pg_attrs {
|
||||||
|
DCB_PG_ATTR_UNDEFINED,
|
||||||
|
|
||||||
|
DCB_PG_ATTR_TC_0,
|
||||||
|
DCB_PG_ATTR_TC_1,
|
||||||
|
DCB_PG_ATTR_TC_2,
|
||||||
|
DCB_PG_ATTR_TC_3,
|
||||||
|
DCB_PG_ATTR_TC_4,
|
||||||
|
DCB_PG_ATTR_TC_5,
|
||||||
|
DCB_PG_ATTR_TC_6,
|
||||||
|
DCB_PG_ATTR_TC_7,
|
||||||
|
DCB_PG_ATTR_TC_MAX,
|
||||||
|
DCB_PG_ATTR_TC_ALL,
|
||||||
|
|
||||||
|
DCB_PG_ATTR_BW_ID_0,
|
||||||
|
DCB_PG_ATTR_BW_ID_1,
|
||||||
|
DCB_PG_ATTR_BW_ID_2,
|
||||||
|
DCB_PG_ATTR_BW_ID_3,
|
||||||
|
DCB_PG_ATTR_BW_ID_4,
|
||||||
|
DCB_PG_ATTR_BW_ID_5,
|
||||||
|
DCB_PG_ATTR_BW_ID_6,
|
||||||
|
DCB_PG_ATTR_BW_ID_7,
|
||||||
|
DCB_PG_ATTR_BW_ID_MAX,
|
||||||
|
DCB_PG_ATTR_BW_ID_ALL,
|
||||||
|
|
||||||
|
__DCB_PG_ATTR_ENUM_MAX,
|
||||||
|
DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_tc_attrs - DCB Traffic Class attributes
|
||||||
|
*
|
||||||
|
* @DCB_TC_ATTR_PARAM_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_TC_ATTR_PARAM_PGID: (NLA_U8) Priority group the traffic class belongs to
|
||||||
|
* Valid values are: 0-7
|
||||||
|
* @DCB_TC_ATTR_PARAM_UP_MAPPING: (NLA_U8) Traffic class to user priority map
|
||||||
|
* Some devices may not support changing the
|
||||||
|
* user priority map of a TC.
|
||||||
|
* @DCB_TC_ATTR_PARAM_STRICT_PRIO: (NLA_U8) Strict priority setting
|
||||||
|
* 0 - none
|
||||||
|
* 1 - group strict
|
||||||
|
* 2 - link strict
|
||||||
|
* @DCB_TC_ATTR_PARAM_BW_PCT: optional - (NLA_U8) If supported by the device and
|
||||||
|
* not configured to use link strict priority,
|
||||||
|
* this is the percentage of bandwidth of the
|
||||||
|
* priority group this traffic class belongs to
|
||||||
|
* @DCB_TC_ATTR_PARAM_ALL: (NLA_FLAG) all traffic class parameters
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
enum dcbnl_tc_attrs {
|
||||||
|
DCB_TC_ATTR_PARAM_UNDEFINED,
|
||||||
|
|
||||||
|
DCB_TC_ATTR_PARAM_PGID,
|
||||||
|
DCB_TC_ATTR_PARAM_UP_MAPPING,
|
||||||
|
DCB_TC_ATTR_PARAM_STRICT_PRIO,
|
||||||
|
DCB_TC_ATTR_PARAM_BW_PCT,
|
||||||
|
DCB_TC_ATTR_PARAM_ALL,
|
||||||
|
|
||||||
|
__DCB_TC_ATTR_PARAM_ENUM_MAX,
|
||||||
|
DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_cap_attrs - DCB Capability attributes
|
||||||
|
*
|
||||||
|
* @DCB_CAP_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_CAP_ATTR_ALL: (NLA_FLAG) all capability parameters
|
||||||
|
* @DCB_CAP_ATTR_PG: (NLA_U8) device supports Priority Groups
|
||||||
|
* @DCB_CAP_ATTR_PFC: (NLA_U8) device supports Priority Flow Control
|
||||||
|
* @DCB_CAP_ATTR_UP2TC: (NLA_U8) device supports user priority to
|
||||||
|
* traffic class mapping
|
||||||
|
* @DCB_CAP_ATTR_PG_TCS: (NLA_U8) bitmap where each bit represents a
|
||||||
|
* number of traffic classes the device
|
||||||
|
* can be configured to use for Priority Groups
|
||||||
|
* @DCB_CAP_ATTR_PFC_TCS: (NLA_U8) bitmap where each bit represents a
|
||||||
|
* number of traffic classes the device can be
|
||||||
|
* configured to use for Priority Flow Control
|
||||||
|
* @DCB_CAP_ATTR_GSP: (NLA_U8) device supports group strict priority
|
||||||
|
* @DCB_CAP_ATTR_BCN: (NLA_U8) device supports Backwards Congestion
|
||||||
|
* Notification
|
||||||
|
* @DCB_CAP_ATTR_DCBX: (NLA_U8) device supports DCBX engine
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
enum dcbnl_cap_attrs {
|
||||||
|
DCB_CAP_ATTR_UNDEFINED,
|
||||||
|
DCB_CAP_ATTR_ALL,
|
||||||
|
DCB_CAP_ATTR_PG,
|
||||||
|
DCB_CAP_ATTR_PFC,
|
||||||
|
DCB_CAP_ATTR_UP2TC,
|
||||||
|
DCB_CAP_ATTR_PG_TCS,
|
||||||
|
DCB_CAP_ATTR_PFC_TCS,
|
||||||
|
DCB_CAP_ATTR_GSP,
|
||||||
|
DCB_CAP_ATTR_BCN,
|
||||||
|
DCB_CAP_ATTR_DCBX,
|
||||||
|
|
||||||
|
__DCB_CAP_ATTR_ENUM_MAX,
|
||||||
|
DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DCBX capability flags
|
||||||
|
*
|
||||||
|
* @DCB_CAP_DCBX_HOST: DCBX negotiation is performed by the host LLDP agent.
|
||||||
|
* 'set' routines are used to configure the device with
|
||||||
|
* the negotiated parameters
|
||||||
|
*
|
||||||
|
* @DCB_CAP_DCBX_LLD_MANAGED: DCBX negotiation is not performed in the host but
|
||||||
|
* by another entity
|
||||||
|
* 'get' routines are used to retrieve the
|
||||||
|
* negotiated parameters
|
||||||
|
* 'set' routines can be used to set the initial
|
||||||
|
* negotiation configuration
|
||||||
|
*
|
||||||
|
* @DCB_CAP_DCBX_VER_CEE: for a non-host DCBX engine, indicates the engine
|
||||||
|
* supports the CEE protocol flavor
|
||||||
|
*
|
||||||
|
* @DCB_CAP_DCBX_VER_IEEE: for a non-host DCBX engine, indicates the engine
|
||||||
|
* supports the IEEE protocol flavor
|
||||||
|
*
|
||||||
|
* @DCB_CAP_DCBX_STATIC: for a non-host DCBX engine, indicates the engine
|
||||||
|
* supports static configuration (i.e no actual
|
||||||
|
* negotiation is performed negotiated parameters equal
|
||||||
|
* the initial configuration)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define DCB_CAP_DCBX_HOST 0x01
|
||||||
|
#define DCB_CAP_DCBX_LLD_MANAGED 0x02
|
||||||
|
#define DCB_CAP_DCBX_VER_CEE 0x04
|
||||||
|
#define DCB_CAP_DCBX_VER_IEEE 0x08
|
||||||
|
#define DCB_CAP_DCBX_STATIC 0x10
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_numtcs_attrs - number of traffic classes
|
||||||
|
*
|
||||||
|
* @DCB_NUMTCS_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_NUMTCS_ATTR_ALL: (NLA_FLAG) all traffic class attributes
|
||||||
|
* @DCB_NUMTCS_ATTR_PG: (NLA_U8) number of traffic classes used for
|
||||||
|
* priority groups
|
||||||
|
* @DCB_NUMTCS_ATTR_PFC: (NLA_U8) number of traffic classes which can
|
||||||
|
* support priority flow control
|
||||||
|
*/
|
||||||
|
enum dcbnl_numtcs_attrs {
|
||||||
|
DCB_NUMTCS_ATTR_UNDEFINED,
|
||||||
|
DCB_NUMTCS_ATTR_ALL,
|
||||||
|
DCB_NUMTCS_ATTR_PG,
|
||||||
|
DCB_NUMTCS_ATTR_PFC,
|
||||||
|
|
||||||
|
__DCB_NUMTCS_ATTR_ENUM_MAX,
|
||||||
|
DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum dcbnl_bcn_attrs{
|
||||||
|
DCB_BCN_ATTR_UNDEFINED = 0,
|
||||||
|
|
||||||
|
DCB_BCN_ATTR_RP_0,
|
||||||
|
DCB_BCN_ATTR_RP_1,
|
||||||
|
DCB_BCN_ATTR_RP_2,
|
||||||
|
DCB_BCN_ATTR_RP_3,
|
||||||
|
DCB_BCN_ATTR_RP_4,
|
||||||
|
DCB_BCN_ATTR_RP_5,
|
||||||
|
DCB_BCN_ATTR_RP_6,
|
||||||
|
DCB_BCN_ATTR_RP_7,
|
||||||
|
DCB_BCN_ATTR_RP_ALL,
|
||||||
|
|
||||||
|
DCB_BCN_ATTR_BCNA_0,
|
||||||
|
DCB_BCN_ATTR_BCNA_1,
|
||||||
|
DCB_BCN_ATTR_ALPHA,
|
||||||
|
DCB_BCN_ATTR_BETA,
|
||||||
|
DCB_BCN_ATTR_GD,
|
||||||
|
DCB_BCN_ATTR_GI,
|
||||||
|
DCB_BCN_ATTR_TMAX,
|
||||||
|
DCB_BCN_ATTR_TD,
|
||||||
|
DCB_BCN_ATTR_RMIN,
|
||||||
|
DCB_BCN_ATTR_W,
|
||||||
|
DCB_BCN_ATTR_RD,
|
||||||
|
DCB_BCN_ATTR_RU,
|
||||||
|
DCB_BCN_ATTR_WRTT,
|
||||||
|
DCB_BCN_ATTR_RI,
|
||||||
|
DCB_BCN_ATTR_C,
|
||||||
|
DCB_BCN_ATTR_ALL,
|
||||||
|
|
||||||
|
__DCB_BCN_ATTR_ENUM_MAX,
|
||||||
|
DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcb_general_attr_values - general DCB attribute values
|
||||||
|
*
|
||||||
|
* @DCB_ATTR_UNDEFINED: value used to indicate an attribute is not supported
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
enum dcb_general_attr_values {
|
||||||
|
DCB_ATTR_VALUE_UNDEFINED = 0xff
|
||||||
|
};
|
||||||
|
|
||||||
|
#define DCB_APP_IDTYPE_ETHTYPE 0x00
|
||||||
|
#define DCB_APP_IDTYPE_PORTNUM 0x01
|
||||||
|
enum dcbnl_app_attrs {
|
||||||
|
DCB_APP_ATTR_UNDEFINED,
|
||||||
|
|
||||||
|
DCB_APP_ATTR_IDTYPE,
|
||||||
|
DCB_APP_ATTR_ID,
|
||||||
|
DCB_APP_ATTR_PRIORITY,
|
||||||
|
|
||||||
|
__DCB_APP_ATTR_ENUM_MAX,
|
||||||
|
DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum dcbnl_featcfg_attrs - features conifiguration flags
|
||||||
|
*
|
||||||
|
* @DCB_FEATCFG_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||||
|
* @DCB_FEATCFG_ATTR_ALL: (NLA_FLAG) all features configuration attributes
|
||||||
|
* @DCB_FEATCFG_ATTR_PG: (NLA_U8) configuration flags for priority groups
|
||||||
|
* @DCB_FEATCFG_ATTR_PFC: (NLA_U8) configuration flags for priority
|
||||||
|
* flow control
|
||||||
|
* @DCB_FEATCFG_ATTR_APP: (NLA_U8) configuration flags for application TLV
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define DCB_FEATCFG_ERROR 0x01 /* error in feature resolution */
|
||||||
|
#define DCB_FEATCFG_ENABLE 0x02 /* enable feature */
|
||||||
|
#define DCB_FEATCFG_WILLING 0x04 /* feature is willing */
|
||||||
|
#define DCB_FEATCFG_ADVERTISE 0x08 /* advertise feature */
|
||||||
|
enum dcbnl_featcfg_attrs {
|
||||||
|
DCB_FEATCFG_ATTR_UNDEFINED,
|
||||||
|
DCB_FEATCFG_ATTR_ALL,
|
||||||
|
DCB_FEATCFG_ATTR_PG,
|
||||||
|
DCB_FEATCFG_ATTR_PFC,
|
||||||
|
DCB_FEATCFG_ATTR_APP,
|
||||||
|
|
||||||
|
__DCB_FEATCFG_ATTR_ENUM_MAX,
|
||||||
|
DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __LINUX_DCBNL_H__ */
|
||||||
|
|
@ -322,7 +322,7 @@ enum devlink_reload_limit {
|
||||||
DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
|
DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEVLINK_RELOAD_LIMITS_VALID_MASK (BIT(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
|
#define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
|
||||||
|
|
||||||
enum devlink_attr {
|
enum devlink_attr {
|
||||||
/* don't change the order or add anything between, this is ABI! */
|
/* don't change the order or add anything between, this is ABI! */
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,22 @@ struct sockaddr_alg {
|
||||||
__u8 salg_name[64];
|
__u8 salg_name[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Linux v4.12 and later removed the 64-byte limit on salg_name[]; it's now an
|
||||||
|
* arbitrary-length field. We had to keep the original struct above for source
|
||||||
|
* compatibility with existing userspace programs, though. Use the new struct
|
||||||
|
* below if support for very long algorithm names is needed. To do this,
|
||||||
|
* allocate 'sizeof(struct sockaddr_alg_new) + strlen(algname) + 1' bytes, and
|
||||||
|
* copy algname (including the null terminator) into salg_name.
|
||||||
|
*/
|
||||||
|
struct sockaddr_alg_new {
|
||||||
|
__u16 salg_family;
|
||||||
|
__u8 salg_type[14];
|
||||||
|
__u32 salg_feat;
|
||||||
|
__u32 salg_mask;
|
||||||
|
__u8 salg_name[];
|
||||||
|
};
|
||||||
|
|
||||||
struct af_alg_iv {
|
struct af_alg_iv {
|
||||||
__u32 ivlen;
|
__u32 ivlen;
|
||||||
__u8 iv[0];
|
__u8 iv[0];
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,9 @@ struct rtnl_link_stats {
|
||||||
*
|
*
|
||||||
* @rx_dropped: Number of packets received but not processed,
|
* @rx_dropped: Number of packets received but not processed,
|
||||||
* e.g. due to lack of resources or unsupported protocol.
|
* e.g. due to lack of resources or unsupported protocol.
|
||||||
* For hardware interfaces this counter should not include packets
|
* For hardware interfaces this counter may include packets discarded
|
||||||
* dropped by the device which are counted separately in
|
* due to L2 address filtering but should not include packets dropped
|
||||||
|
* by the device due to buffer exhaustion which are counted separately in
|
||||||
* @rx_missed_errors (since procfs folds those two counters together).
|
* @rx_missed_errors (since procfs folds those two counters together).
|
||||||
*
|
*
|
||||||
* @tx_dropped: Number of packets dropped on their way to transmission,
|
* @tx_dropped: Number of packets dropped on their way to transmission,
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,6 @@
|
||||||
#define _LINUX_KERNEL_H
|
#define _LINUX_KERNEL_H
|
||||||
|
|
||||||
#include <linux/sysinfo.h>
|
#include <linux/sysinfo.h>
|
||||||
|
#include <linux/const.h>
|
||||||
/*
|
|
||||||
* 'kernel.h' contains some often-used function prototypes etc
|
|
||||||
*/
|
|
||||||
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
|
|
||||||
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
|
|
||||||
|
|
||||||
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
|
|
||||||
|
|
||||||
#endif /* _LINUX_KERNEL_H */
|
#endif /* _LINUX_KERNEL_H */
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||||
#ifndef _X_TABLES_H
|
#ifndef _X_TABLES_H
|
||||||
#define _X_TABLES_H
|
#define _X_TABLES_H
|
||||||
#include <linux/kernel.h>
|
#include <linux/const.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
#define XT_FUNCTION_MAXNAMELEN 30
|
#define XT_FUNCTION_MAXNAMELEN 30
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
#ifndef __LINUX_NETLINK_H
|
#ifndef __LINUX_NETLINK_H
|
||||||
#define __LINUX_NETLINK_H
|
#define __LINUX_NETLINK_H
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/const.h>
|
||||||
#include <linux/socket.h> /* for __kernel_sa_family_t */
|
#include <linux/socket.h> /* for __kernel_sa_family_t */
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
static const char version[] = "5.9.0";
|
static const char version[] = "5.10.0";
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,13 @@ dcb \- show / manipulate DCB (Data Center Bridging) settings
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.BR "\-n" , " \--netns " <NETNS>
|
||||||
|
switches
|
||||||
|
.B dcb
|
||||||
|
to the specified network namespace
|
||||||
|
.IR NETNS .
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BR "\-V" , " --Version"
|
.BR "\-V" , " --Version"
|
||||||
Print the version of the
|
Print the version of the
|
||||||
|
|
|
||||||
|
|
@ -2470,7 +2470,7 @@ static void flower_print_u32(const char *name, struct rtattr *attr)
|
||||||
print_uint(PRINT_ANY, name, namefrm, rta_getattr_u32(attr));
|
print_uint(PRINT_ANY, name, namefrm, rta_getattr_u32(attr));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void flower_print_mpls_opt_lse(const char *name, struct rtattr *lse)
|
static void flower_print_mpls_opt_lse(struct rtattr *lse)
|
||||||
{
|
{
|
||||||
struct rtattr *tb[TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX + 1];
|
struct rtattr *tb[TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX + 1];
|
||||||
struct rtattr *attr;
|
struct rtattr *attr;
|
||||||
|
|
@ -2487,7 +2487,8 @@ static void flower_print_mpls_opt_lse(const char *name, struct rtattr *lse)
|
||||||
RTA_PAYLOAD(lse));
|
RTA_PAYLOAD(lse));
|
||||||
|
|
||||||
print_nl();
|
print_nl();
|
||||||
open_json_array(PRINT_ANY, name);
|
print_string(PRINT_FP, NULL, " lse", NULL);
|
||||||
|
open_json_object(NULL);
|
||||||
attr = tb[TCA_FLOWER_KEY_MPLS_OPT_LSE_DEPTH];
|
attr = tb[TCA_FLOWER_KEY_MPLS_OPT_LSE_DEPTH];
|
||||||
if (attr)
|
if (attr)
|
||||||
print_hhu(PRINT_ANY, "depth", " depth %u",
|
print_hhu(PRINT_ANY, "depth", " depth %u",
|
||||||
|
|
@ -2505,10 +2506,10 @@ static void flower_print_mpls_opt_lse(const char *name, struct rtattr *lse)
|
||||||
attr = tb[TCA_FLOWER_KEY_MPLS_OPT_LSE_TTL];
|
attr = tb[TCA_FLOWER_KEY_MPLS_OPT_LSE_TTL];
|
||||||
if (attr)
|
if (attr)
|
||||||
print_hhu(PRINT_ANY, "ttl", " ttl %u", rta_getattr_u8(attr));
|
print_hhu(PRINT_ANY, "ttl", " ttl %u", rta_getattr_u8(attr));
|
||||||
close_json_array(PRINT_JSON, NULL);
|
close_json_object();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void flower_print_mpls_opts(const char *name, struct rtattr *attr)
|
static void flower_print_mpls_opts(struct rtattr *attr)
|
||||||
{
|
{
|
||||||
struct rtattr *lse;
|
struct rtattr *lse;
|
||||||
int rem;
|
int rem;
|
||||||
|
|
@ -2517,11 +2518,12 @@ static void flower_print_mpls_opts(const char *name, struct rtattr *attr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
print_nl();
|
print_nl();
|
||||||
open_json_array(PRINT_ANY, name);
|
print_string(PRINT_FP, NULL, " mpls", NULL);
|
||||||
|
open_json_array(PRINT_JSON, "mpls");
|
||||||
rem = RTA_PAYLOAD(attr);
|
rem = RTA_PAYLOAD(attr);
|
||||||
lse = RTA_DATA(attr);
|
lse = RTA_DATA(attr);
|
||||||
while (RTA_OK(lse, rem)) {
|
while (RTA_OK(lse, rem)) {
|
||||||
flower_print_mpls_opt_lse(" lse", lse);
|
flower_print_mpls_opt_lse(lse);
|
||||||
lse = RTA_NEXT(lse, rem);
|
lse = RTA_NEXT(lse, rem);
|
||||||
};
|
};
|
||||||
if (rem)
|
if (rem)
|
||||||
|
|
@ -2644,7 +2646,7 @@ static int flower_print_opt(struct filter_util *qu, FILE *f,
|
||||||
flower_print_ip_attr("ip_ttl", tb[TCA_FLOWER_KEY_IP_TTL],
|
flower_print_ip_attr("ip_ttl", tb[TCA_FLOWER_KEY_IP_TTL],
|
||||||
tb[TCA_FLOWER_KEY_IP_TTL_MASK]);
|
tb[TCA_FLOWER_KEY_IP_TTL_MASK]);
|
||||||
|
|
||||||
flower_print_mpls_opts(" mpls", tb[TCA_FLOWER_KEY_MPLS_OPTS]);
|
flower_print_mpls_opts(tb[TCA_FLOWER_KEY_MPLS_OPTS]);
|
||||||
flower_print_u32("mpls_label", tb[TCA_FLOWER_KEY_MPLS_LABEL]);
|
flower_print_u32("mpls_label", tb[TCA_FLOWER_KEY_MPLS_LABEL]);
|
||||||
flower_print_u8("mpls_tc", tb[TCA_FLOWER_KEY_MPLS_TC]);
|
flower_print_u8("mpls_tc", tb[TCA_FLOWER_KEY_MPLS_TC]);
|
||||||
flower_print_u8("mpls_bos", tb[TCA_FLOWER_KEY_MPLS_BOS]);
|
flower_print_u8("mpls_bos", tb[TCA_FLOWER_KEY_MPLS_BOS]);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue