linux/include/linux/dcbnl.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2008, Intel Corporation.
   3 *
   4 * This program is free software; you can redistribute it and/or modify it
   5 * under the terms and conditions of the GNU General Public License,
   6 * version 2, as published by the Free Software Foundation.
   7 *
   8 * This program is distributed in the hope it will be useful, but WITHOUT
   9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  11 * more details.
  12 *
  13 * You should have received a copy of the GNU General Public License along with
  14 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  15 * Place - Suite 330, Boston, MA 02111-1307 USA.
  16 *
  17 * Author: Lucy Liu <lucy.liu@intel.com>
  18 */
  19
  20#ifndef __LINUX_DCBNL_H__
  21#define __LINUX_DCBNL_H__
  22
  23#include <linux/types.h>
  24
  25#define DCB_PROTO_VERSION 1
  26
  27struct dcbmsg {
  28        __u8               dcb_family;
  29        __u8               cmd;
  30        __u16              dcb_pad;
  31};
  32
  33/**
  34 * enum dcbnl_commands - supported DCB commands
  35 *
  36 * @DCB_CMD_UNDEFINED: unspecified command to catch errors
  37 * @DCB_CMD_GSTATE: request the state of DCB in the device
  38 * @DCB_CMD_SSTATE: set the state of DCB in the device
  39 * @DCB_CMD_PGTX_GCFG: request the priority group configuration for Tx
  40 * @DCB_CMD_PGTX_SCFG: set the priority group configuration for Tx
  41 * @DCB_CMD_PGRX_GCFG: request the priority group configuration for Rx
  42 * @DCB_CMD_PGRX_SCFG: set the priority group configuration for Rx
  43 * @DCB_CMD_PFC_GCFG: request the priority flow control configuration
  44 * @DCB_CMD_PFC_SCFG: set the priority flow control configuration
  45 * @DCB_CMD_SET_ALL: apply all changes to the underlying device
  46 * @DCB_CMD_GPERM_HWADDR: get the permanent MAC address of the underlying
  47 *                        device.  Only useful when using bonding.
  48 * @DCB_CMD_GCAP: request the DCB capabilities of the device
  49 * @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported
  50 * @DCB_CMD_SNUMTCS: set the number of traffic classes
  51 * @DCB_CMD_GBCN: set backward congestion notification configuration
  52 * @DCB_CMD_SBCN: get backward congestion notification configration.
  53 */
  54enum dcbnl_commands {
  55        DCB_CMD_UNDEFINED,
  56
  57        DCB_CMD_GSTATE,
  58        DCB_CMD_SSTATE,
  59
  60        DCB_CMD_PGTX_GCFG,
  61        DCB_CMD_PGTX_SCFG,
  62        DCB_CMD_PGRX_GCFG,
  63        DCB_CMD_PGRX_SCFG,
  64
  65        DCB_CMD_PFC_GCFG,
  66        DCB_CMD_PFC_SCFG,
  67
  68        DCB_CMD_SET_ALL,
  69
  70        DCB_CMD_GPERM_HWADDR,
  71
  72        DCB_CMD_GCAP,
  73
  74        DCB_CMD_GNUMTCS,
  75        DCB_CMD_SNUMTCS,
  76
  77        DCB_CMD_PFC_GSTATE,
  78        DCB_CMD_PFC_SSTATE,
  79
  80        DCB_CMD_BCN_GCFG,
  81        DCB_CMD_BCN_SCFG,
  82
  83        __DCB_CMD_ENUM_MAX,
  84        DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
  85};
  86
  87/**
  88 * enum dcbnl_attrs - DCB top-level netlink attributes
  89 *
  90 * @DCB_ATTR_UNDEFINED: unspecified attribute to catch errors
  91 * @DCB_ATTR_IFNAME: interface name of the underlying device (NLA_STRING)
  92 * @DCB_ATTR_STATE: enable state of DCB in the device (NLA_U8)
  93 * @DCB_ATTR_PFC_STATE: enable state of PFC in the device (NLA_U8)
  94 * @DCB_ATTR_PFC_CFG: priority flow control configuration (NLA_NESTED)
  95 * @DCB_ATTR_NUM_TC: number of traffic classes supported in the device (NLA_U8)
  96 * @DCB_ATTR_PG_CFG: priority group configuration (NLA_NESTED)
  97 * @DCB_ATTR_SET_ALL: bool to commit changes to hardware or not (NLA_U8)
  98 * @DCB_ATTR_PERM_HWADDR: MAC address of the physical device (NLA_NESTED)
  99 * @DCB_ATTR_CAP: DCB capabilities of the device (NLA_NESTED)
 100 * @DCB_ATTR_NUMTCS: number of traffic classes supported (NLA_NESTED)
 101 * @DCB_ATTR_BCN: backward congestion notification configuration (NLA_NESTED)
 102 */
 103enum dcbnl_attrs {
 104        DCB_ATTR_UNDEFINED,
 105
 106        DCB_ATTR_IFNAME,
 107        DCB_ATTR_STATE,
 108        DCB_ATTR_PFC_STATE,
 109        DCB_ATTR_PFC_CFG,
 110        DCB_ATTR_NUM_TC,
 111        DCB_ATTR_PG_CFG,
 112        DCB_ATTR_SET_ALL,
 113        DCB_ATTR_PERM_HWADDR,
 114        DCB_ATTR_CAP,
 115        DCB_ATTR_NUMTCS,
 116        DCB_ATTR_BCN,
 117
 118        __DCB_ATTR_ENUM_MAX,
 119        DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
 120};
 121
 122/**
 123 * enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs
 124 *
 125 * @DCB_PFC_UP_ATTR_UNDEFINED: unspecified attribute to catch errors
 126 * @DCB_PFC_UP_ATTR_0: Priority Flow Control value for User Priority 0 (NLA_U8)
 127 * @DCB_PFC_UP_ATTR_1: Priority Flow Control value for User Priority 1 (NLA_U8)
 128 * @DCB_PFC_UP_ATTR_2: Priority Flow Control value for User Priority 2 (NLA_U8)
 129 * @DCB_PFC_UP_ATTR_3: Priority Flow Control value for User Priority 3 (NLA_U8)
 130 * @DCB_PFC_UP_ATTR_4: Priority Flow Control value for User Priority 4 (NLA_U8)
 131 * @DCB_PFC_UP_ATTR_5: Priority Flow Control value for User Priority 5 (NLA_U8)
 132 * @DCB_PFC_UP_ATTR_6: Priority Flow Control value for User Priority 6 (NLA_U8)
 133 * @DCB_PFC_UP_ATTR_7: Priority Flow Control value for User Priority 7 (NLA_U8)
 134 * @DCB_PFC_UP_ATTR_MAX: highest attribute number currently defined
 135 * @DCB_PFC_UP_ATTR_ALL: apply to all priority flow control attrs (NLA_FLAG)
 136 *
 137 */
 138enum dcbnl_pfc_up_attrs {
 139        DCB_PFC_UP_ATTR_UNDEFINED,
 140
 141        DCB_PFC_UP_ATTR_0,
 142        DCB_PFC_UP_ATTR_1,
 143        DCB_PFC_UP_ATTR_2,
 144        DCB_PFC_UP_ATTR_3,
 145        DCB_PFC_UP_ATTR_4,
 146        DCB_PFC_UP_ATTR_5,
 147        DCB_PFC_UP_ATTR_6,
 148        DCB_PFC_UP_ATTR_7,
 149        DCB_PFC_UP_ATTR_ALL,
 150
 151        __DCB_PFC_UP_ATTR_ENUM_MAX,
 152        DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
 153};
 154
 155/**
 156 * enum dcbnl_pg_attrs - DCB Priority Group attributes
 157 *
 158 * @DCB_PG_ATTR_UNDEFINED: unspecified attribute to catch errors
 159 * @DCB_PG_ATTR_TC_0: Priority Group Traffic Class 0 configuration (NLA_NESTED)
 160 * @DCB_PG_ATTR_TC_1: Priority Group Traffic Class 1 configuration (NLA_NESTED)
 161 * @DCB_PG_ATTR_TC_2: Priority Group Traffic Class 2 configuration (NLA_NESTED)
 162 * @DCB_PG_ATTR_TC_3: Priority Group Traffic Class 3 configuration (NLA_NESTED)
 163 * @DCB_PG_ATTR_TC_4: Priority Group Traffic Class 4 configuration (NLA_NESTED)
 164 * @DCB_PG_ATTR_TC_5: Priority Group Traffic Class 5 configuration (NLA_NESTED)
 165 * @DCB_PG_ATTR_TC_6: Priority Group Traffic Class 6 configuration (NLA_NESTED)
 166 * @DCB_PG_ATTR_TC_7: Priority Group Traffic Class 7 configuration (NLA_NESTED)
 167 * @DCB_PG_ATTR_TC_MAX: highest attribute number currently defined
 168 * @DCB_PG_ATTR_TC_ALL: apply to all traffic classes (NLA_NESTED)
 169 * @DCB_PG_ATTR_BW_ID_0: Percent of link bandwidth for Priority Group 0 (NLA_U8)
 170 * @DCB_PG_ATTR_BW_ID_1: Percent of link bandwidth for Priority Group 1 (NLA_U8)
 171 * @DCB_PG_ATTR_BW_ID_2: Percent of link bandwidth for Priority Group 2 (NLA_U8)
 172 * @DCB_PG_ATTR_BW_ID_3: Percent of link bandwidth for Priority Group 3 (NLA_U8)
 173 * @DCB_PG_ATTR_BW_ID_4: Percent of link bandwidth for Priority Group 4 (NLA_U8)
 174 * @DCB_PG_ATTR_BW_ID_5: Percent of link bandwidth for Priority Group 5 (NLA_U8)
 175 * @DCB_PG_ATTR_BW_ID_6: Percent of link bandwidth for Priority Group 6 (NLA_U8)
 176 * @DCB_PG_ATTR_BW_ID_7: Percent of link bandwidth for Priority Group 7 (NLA_U8)
 177 * @DCB_PG_ATTR_BW_ID_MAX: highest attribute number currently defined
 178 * @DCB_PG_ATTR_BW_ID_ALL: apply to all priority groups (NLA_FLAG)
 179 *
 180 */
 181enum dcbnl_pg_attrs {
 182        DCB_PG_ATTR_UNDEFINED,
 183
 184        DCB_PG_ATTR_TC_0,
 185        DCB_PG_ATTR_TC_1,
 186        DCB_PG_ATTR_TC_2,
 187        DCB_PG_ATTR_TC_3,
 188        DCB_PG_ATTR_TC_4,
 189        DCB_PG_ATTR_TC_5,
 190        DCB_PG_ATTR_TC_6,
 191        DCB_PG_ATTR_TC_7,
 192        DCB_PG_ATTR_TC_MAX,
 193        DCB_PG_ATTR_TC_ALL,
 194
 195        DCB_PG_ATTR_BW_ID_0,
 196        DCB_PG_ATTR_BW_ID_1,
 197        DCB_PG_ATTR_BW_ID_2,
 198        DCB_PG_ATTR_BW_ID_3,
 199        DCB_PG_ATTR_BW_ID_4,
 200        DCB_PG_ATTR_BW_ID_5,
 201        DCB_PG_ATTR_BW_ID_6,
 202        DCB_PG_ATTR_BW_ID_7,
 203        DCB_PG_ATTR_BW_ID_MAX,
 204        DCB_PG_ATTR_BW_ID_ALL,
 205
 206        __DCB_PG_ATTR_ENUM_MAX,
 207        DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
 208};
 209
 210/**
 211 * enum dcbnl_tc_attrs - DCB Traffic Class attributes
 212 *
 213 * @DCB_TC_ATTR_PARAM_UNDEFINED: unspecified attribute to catch errors
 214 * @DCB_TC_ATTR_PARAM_PGID: (NLA_U8) Priority group the traffic class belongs to
 215 *                          Valid values are:  0-7
 216 * @DCB_TC_ATTR_PARAM_UP_MAPPING: (NLA_U8) Traffic class to user priority map
 217 *                                Some devices may not support changing the
 218 *                                user priority map of a TC.
 219 * @DCB_TC_ATTR_PARAM_STRICT_PRIO: (NLA_U8) Strict priority setting
 220 *                                 0 - none
 221 *                                 1 - group strict
 222 *                                 2 - link strict
 223 * @DCB_TC_ATTR_PARAM_BW_PCT: optional - (NLA_U8) If supported by the device and
 224 *                            not configured to use link strict priority,
 225 *                            this is the percentage of bandwidth of the
 226 *                            priority group this traffic class belongs to
 227 * @DCB_TC_ATTR_PARAM_ALL: (NLA_FLAG) all traffic class parameters
 228 *
 229 */
 230enum dcbnl_tc_attrs {
 231        DCB_TC_ATTR_PARAM_UNDEFINED,
 232
 233        DCB_TC_ATTR_PARAM_PGID,
 234        DCB_TC_ATTR_PARAM_UP_MAPPING,
 235        DCB_TC_ATTR_PARAM_STRICT_PRIO,
 236        DCB_TC_ATTR_PARAM_BW_PCT,
 237        DCB_TC_ATTR_PARAM_ALL,
 238
 239        __DCB_TC_ATTR_PARAM_ENUM_MAX,
 240        DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
 241};
 242
 243/**
 244 * enum dcbnl_cap_attrs - DCB Capability attributes
 245 *
 246 * @DCB_CAP_ATTR_UNDEFINED: unspecified attribute to catch errors
 247 * @DCB_CAP_ATTR_ALL: (NLA_FLAG) all capability parameters
 248 * @DCB_CAP_ATTR_PG: (NLA_U8) device supports Priority Groups
 249 * @DCB_CAP_ATTR_PFC: (NLA_U8) device supports Priority Flow Control
 250 * @DCB_CAP_ATTR_UP2TC: (NLA_U8) device supports user priority to
 251 *                               traffic class mapping
 252 * @DCB_CAP_ATTR_PG_TCS: (NLA_U8) bitmap where each bit represents a
 253 *                                number of traffic classes the device
 254 *                                can be configured to use for Priority Groups
 255 * @DCB_CAP_ATTR_PFC_TCS: (NLA_U8) bitmap where each bit represents a
 256 *                                 number of traffic classes the device can be
 257 *                                 configured to use for Priority Flow Control
 258 * @DCB_CAP_ATTR_GSP: (NLA_U8) device supports group strict priority
 259 * @DCB_CAP_ATTR_BCN: (NLA_U8) device supports Backwards Congestion
 260 *                             Notification
 261 */
 262enum dcbnl_cap_attrs {
 263        DCB_CAP_ATTR_UNDEFINED,
 264        DCB_CAP_ATTR_ALL,
 265        DCB_CAP_ATTR_PG,
 266        DCB_CAP_ATTR_PFC,
 267        DCB_CAP_ATTR_UP2TC,
 268        DCB_CAP_ATTR_PG_TCS,
 269        DCB_CAP_ATTR_PFC_TCS,
 270        DCB_CAP_ATTR_GSP,
 271        DCB_CAP_ATTR_BCN,
 272
 273        __DCB_CAP_ATTR_ENUM_MAX,
 274        DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
 275};
 276
 277/**
 278 * enum dcbnl_numtcs_attrs - number of traffic classes
 279 *
 280 * @DCB_NUMTCS_ATTR_UNDEFINED: unspecified attribute to catch errors
 281 * @DCB_NUMTCS_ATTR_ALL: (NLA_FLAG) all traffic class attributes
 282 * @DCB_NUMTCS_ATTR_PG: (NLA_U8) number of traffic classes used for
 283 *                               priority groups
 284 * @DCB_NUMTCS_ATTR_PFC: (NLA_U8) number of traffic classes which can
 285 *                                support priority flow control
 286 */
 287enum dcbnl_numtcs_attrs {
 288        DCB_NUMTCS_ATTR_UNDEFINED,
 289        DCB_NUMTCS_ATTR_ALL,
 290        DCB_NUMTCS_ATTR_PG,
 291        DCB_NUMTCS_ATTR_PFC,
 292
 293        __DCB_NUMTCS_ATTR_ENUM_MAX,
 294        DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
 295};
 296
 297enum dcbnl_bcn_attrs{
 298        DCB_BCN_ATTR_UNDEFINED = 0,
 299
 300        DCB_BCN_ATTR_RP_0,
 301        DCB_BCN_ATTR_RP_1,
 302        DCB_BCN_ATTR_RP_2,
 303        DCB_BCN_ATTR_RP_3,
 304        DCB_BCN_ATTR_RP_4,
 305        DCB_BCN_ATTR_RP_5,
 306        DCB_BCN_ATTR_RP_6,
 307        DCB_BCN_ATTR_RP_7,
 308        DCB_BCN_ATTR_RP_ALL,
 309
 310        DCB_BCN_ATTR_BCNA_0,
 311        DCB_BCN_ATTR_BCNA_1,
 312        DCB_BCN_ATTR_ALPHA,
 313        DCB_BCN_ATTR_BETA,
 314        DCB_BCN_ATTR_GD,
 315        DCB_BCN_ATTR_GI,
 316        DCB_BCN_ATTR_TMAX,
 317        DCB_BCN_ATTR_TD,
 318        DCB_BCN_ATTR_RMIN,
 319        DCB_BCN_ATTR_W,
 320        DCB_BCN_ATTR_RD,
 321        DCB_BCN_ATTR_RU,
 322        DCB_BCN_ATTR_WRTT,
 323        DCB_BCN_ATTR_RI,
 324        DCB_BCN_ATTR_C,
 325        DCB_BCN_ATTR_ALL,
 326
 327        __DCB_BCN_ATTR_ENUM_MAX,
 328        DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
 329};
 330
 331/**
 332 * enum dcb_general_attr_values - general DCB attribute values
 333 *
 334 * @DCB_ATTR_UNDEFINED: value used to indicate an attribute is not supported
 335 *
 336 */
 337enum dcb_general_attr_values {
 338        DCB_ATTR_VALUE_UNDEFINED = 0xff
 339};
 340
 341
 342#endif /* __LINUX_DCBNL_H__ */
 343
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.