June 2025 | ||||||
Mo | Tu | We | Th | Fr | Sa | Su |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 1 | 2 | 3 | 4 | 5 | 6 |
001: /* 002: * Copyright (c) 2008-2011, Intel Corporation. 003: * 004: * This program is free software; you can redistribute it and/or modify it 005: * under the terms and conditions of the GNU General Public License, 006: * version 2, as published by the Free Software Foundation. 007: * 008: * This program is distributed in the hope it will be useful, but WITHOUT 009: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 010: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 011: * more details. 012: * 013: * You should have received a copy of the GNU General Public License along with 014: * this program; if not, write to the Free Software Foundation, Inc., 59 Temple 015: * Place - Suite 330, Boston, MA 02111-1307 USA. 016: * 017: * Author: Lucy Liu <lucy.liu@intel.com> 018: */ 019: 020: #ifndef __LINUX_DCBNL_H__ 021: #define __LINUX_DCBNL_H__ 022: 023: #include <linux/types.h> 024: 025: /* IEEE 802.1Qaz std supported values */ 026: #define IEEE_8021QAZ_MAX_TCS 8 027: 028: #define IEEE_8021QAZ_TSA_STRICT 0 029: #define IEEE_8021QAZ_TSA_CB_SHAPER 1 030: #define IEEE_8021QAZ_TSA_ETS 2 031: #define IEEE_8021QAZ_TSA_VENDOR 255 032: 033: /* This structure contains the IEEE 802.1Qaz ETS managed object 034: * 035: * @willing: willing bit in ETS configuration TLV 036: * @ets_cap: indicates supported capacity of ets feature 037: * @cbs: credit based shaper ets algorithm supported 038: * @tc_tx_bw: tc tx bandwidth indexed by traffic class 039: * @tc_rx_bw: tc rx bandwidth indexed by traffic class 040: * @tc_tsa: TSA Assignment table, indexed by traffic class 041: * @prio_tc: priority assignment table mapping 8021Qp to traffic class 042: * @tc_reco_bw: recommended tc bandwidth indexed by traffic class for TLV 043: * @tc_reco_tsa: recommended tc bandwidth indexed by traffic class for TLV 044: * @reco_prio_tc: recommended tc tx bandwidth indexed by traffic class for TLV 045: * 046: * Recommended values are used to set fields in the ETS recommendation TLV 047: * with hardware offloaded LLDP. 048: * 049: * ---- 050: * TSA Assignment 8 bit identifiers 051: * 0 strict priority 052: * 1 credit-based shaper 053: * 2 enhanced transmission selection 054: * 3-254 reserved 055: * 255 vendor specific 056: */ 057: struct ieee_ets { 058: __u8 willing; 059: __u8 ets_cap; 060: __u8 cbs; 061: __u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS]; 062: __u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS]; 063: __u8 tc_tsa[IEEE_8021QAZ_MAX_TCS]; 064: __u8 prio_tc[IEEE_8021QAZ_MAX_TCS]; 065: __u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS]; 066: __u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS]; 067: __u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS]; 068: }; 069: 070: /* This structure contains the IEEE 802.1Qaz PFC managed object 071: * 072: * @pfc_cap: Indicates the number of traffic classes on the local device 073: * that may simultaneously have PFC enabled. 074: * @pfc_en: bitmap indicating pfc enabled traffic classes 075: * @mbc: enable macsec bypass capability 076: * @delay: the allowance made for a round-trip propagation delay of the 077: * link in bits. 078: * @requests: count of the sent pfc frames 079: * @indications: count of the received pfc frames 080: */ 081: struct ieee_pfc { 082: __u8 pfc_cap; 083: __u8 pfc_en; 084: __u8 mbc; 085: __u16 delay; 086: __u64 requests[IEEE_8021QAZ_MAX_TCS]; 087: __u64 indications[IEEE_8021QAZ_MAX_TCS]; 088: }; 089: 090: /* CEE DCBX std supported values */ 091: #define CEE_DCBX_MAX_PGS 8 092: #define CEE_DCBX_MAX_PRIO 8 093: 094: /** 095: * struct cee_pg - CEE Priority-Group managed object 096: * 097: * @willing: willing bit in the PG tlv 098: * @error: error bit in the PG tlv 099: * @pg_en: enable bit of the PG feature 100: * @tcs_supported: number of traffic classes supported 101: * @pg_bw: bandwidth percentage for each priority group 102: * @prio_pg: priority to PG mapping indexed by priority 103: */ 104: struct cee_pg { 105: __u8 willing; 106: __u8 error; 107: __u8 pg_en; 108: __u8 tcs_supported; 109: __u8 pg_bw[CEE_DCBX_MAX_PGS]; 110: __u8 prio_pg[CEE_DCBX_MAX_PGS]; 111: }; 112: 113: /** 114: * struct cee_pfc - CEE PFC managed object 115: * 116: * @willing: willing bit in the PFC tlv 117: * @error: error bit in the PFC tlv 118: * @pfc_en: bitmap indicating pfc enabled traffic classes 119: * @tcs_supported: number of traffic classes supported 120: */ 121: struct cee_pfc { 122: __u8 willing; 123: __u8 error; 124: __u8 pfc_en; 125: __u8 tcs_supported; 126: }; 127: 128: /* IEEE 802.1Qaz std supported values */ 129: #define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1 130: #define IEEE_8021QAZ_APP_SEL_STREAM 2 131: #define IEEE_8021QAZ_APP_SEL_DGRAM 3 132: #define IEEE_8021QAZ_APP_SEL_ANY 4 133: 134: /* This structure contains the IEEE 802.1Qaz APP managed object. This 135: * object is also used for the CEE std as well. There is no difference 136: * between the objects. 137: * 138: * @selector: protocol identifier type 139: * @protocol: protocol of type indicated 140: * @priority: 3-bit unsigned integer indicating priority 141: * 142: * ---- 143: * Selector field values 144: * 0 Reserved 145: * 1 Ethertype 146: * 2 Well known port number over TCP or SCTP 147: * 3 Well known port number over UDP or DCCP 148: * 4 Well known port number over TCP, SCTP, UDP, or DCCP 149: * 5-7 Reserved 150: */ 151: struct dcb_app { 152: __u8 selector; 153: __u8 priority; 154: __u16 protocol; 155: }; 156: 157: /** 158: * struct dcb_peer_app_info - APP feature information sent by the peer 159: * 160: * @willing: willing bit in the peer APP tlv 161: * @error: error bit in the peer APP tlv 162: * 163: * In addition to this information the full peer APP tlv also contains 164: * a table of 'app_count' APP objects defined above. 165: */ 166: struct dcb_peer_app_info { 167: __u8 willing; 168: __u8 error; 169: }; 170: 171: struct dcbmsg { 172: __u8 dcb_family; 173: __u8 cmd; 174: __u16 dcb_pad; 175: }; 176: 177: /** 178: * enum dcbnl_commands - supported DCB commands 179: * 180: * @DCB_CMD_UNDEFINED: unspecified command to catch errors 181: * @DCB_CMD_GSTATE: request the state of DCB in the device 182: * @DCB_CMD_SSTATE: set the state of DCB in the device 183: * @DCB_CMD_PGTX_GCFG: request the priority group configuration for Tx 184: * @DCB_CMD_PGTX_SCFG: set the priority group configuration for Tx 185: * @DCB_CMD_PGRX_GCFG: request the priority group configuration for Rx 186: * @DCB_CMD_PGRX_SCFG: set the priority group configuration for Rx 187: * @DCB_CMD_PFC_GCFG: request the priority flow control configuration 188: * @DCB_CMD_PFC_SCFG: set the priority flow control configuration 189: * @DCB_CMD_SET_ALL: apply all changes to the underlying device 190: * @DCB_CMD_GPERM_HWADDR: get the permanent MAC address of the underlying 191: * device. Only useful when using bonding. 192: * @DCB_CMD_GCAP: request the DCB capabilities of the device 193: * @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported 194: * @DCB_CMD_SNUMTCS: set the number of traffic classes 195: * @DCB_CMD_GBCN: set backward congestion notification configuration 196: * @DCB_CMD_SBCN: get backward congestion notification configration. 197: * @DCB_CMD_GAPP: get application protocol configuration 198: * @DCB_CMD_SAPP: set application protocol configuration 199: * @DCB_CMD_IEEE_SET: set IEEE 802.1Qaz configuration 200: * @DCB_CMD_IEEE_GET: get IEEE 802.1Qaz configuration 201: * @DCB_CMD_GDCBX: get DCBX engine configuration 202: * @DCB_CMD_SDCBX: set DCBX engine configuration 203: * @DCB_CMD_GFEATCFG: get DCBX features flags 204: * @DCB_CMD_SFEATCFG: set DCBX features negotiation flags 205: * @DCB_CMD_CEE_GET: get CEE aggregated configuration 206: * @DCB_CMD_IEEE_DEL: delete IEEE 802.1Qaz configuration 207: */ 208: enum dcbnl_commands { 209: DCB_CMD_UNDEFINED, 210: 211: DCB_CMD_GSTATE, 212: DCB_CMD_SSTATE, 213: 214: DCB_CMD_PGTX_GCFG, 215: DCB_CMD_PGTX_SCFG, 216: DCB_CMD_PGRX_GCFG, 217: DCB_CMD_PGRX_SCFG, 218: 219: DCB_CMD_PFC_GCFG, 220: DCB_CMD_PFC_SCFG, 221: 222: DCB_CMD_SET_ALL, 223: 224: DCB_CMD_GPERM_HWADDR, 225: 226: DCB_CMD_GCAP, 227: 228: DCB_CMD_GNUMTCS, 229: DCB_CMD_SNUMTCS, 230: 231: DCB_CMD_PFC_GSTATE, 232: DCB_CMD_PFC_SSTATE, 233: 234: DCB_CMD_BCN_GCFG, 235: DCB_CMD_BCN_SCFG, 236: 237: DCB_CMD_GAPP, 238: DCB_CMD_SAPP, 239: 240: DCB_CMD_IEEE_SET, 241: DCB_CMD_IEEE_GET, 242: 243: DCB_CMD_GDCBX, 244: DCB_CMD_SDCBX, 245: 246: DCB_CMD_GFEATCFG, 247: DCB_CMD_SFEATCFG, 248: 249: DCB_CMD_CEE_GET, 250: DCB_CMD_IEEE_DEL, 251: 252: __DCB_CMD_ENUM_MAX, 253: DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, 254: }; 255: 256: /** 257: * enum dcbnl_attrs - DCB top-level netlink attributes 258: * 259: * @DCB_ATTR_UNDEFINED: unspecified attribute to catch errors 260: * @DCB_ATTR_IFNAME: interface name of the underlying device (NLA_STRING) 261: * @DCB_ATTR_STATE: enable state of DCB in the device (NLA_U8) 262: * @DCB_ATTR_PFC_STATE: enable state of PFC in the device (NLA_U8) 263: * @DCB_ATTR_PFC_CFG: priority flow control configuration (NLA_NESTED) 264: * @DCB_ATTR_NUM_TC: number of traffic classes supported in the device (NLA_U8) 265: * @DCB_ATTR_PG_CFG: priority group configuration (NLA_NESTED) 266: * @DCB_ATTR_SET_ALL: bool to commit changes to hardware or not (NLA_U8) 267: * @DCB_ATTR_PERM_HWADDR: MAC address of the physical device (NLA_NESTED) 268: * @DCB_ATTR_CAP: DCB capabilities of the device (NLA_NESTED) 269: * @DCB_ATTR_NUMTCS: number of traffic classes supported (NLA_NESTED) 270: * @DCB_ATTR_BCN: backward congestion notification configuration (NLA_NESTED) 271: * @DCB_ATTR_IEEE: IEEE 802.1Qaz supported attributes (NLA_NESTED) 272: * @DCB_ATTR_DCBX: DCBX engine configuration in the device (NLA_U8) 273: * @DCB_ATTR_FEATCFG: DCBX features flags (NLA_NESTED) 274: * @DCB_ATTR_CEE: CEE std supported attributes (NLA_NESTED) 275: */ 276: enum dcbnl_attrs { 277: DCB_ATTR_UNDEFINED, 278: 279: DCB_ATTR_IFNAME, 280: DCB_ATTR_STATE, 281: DCB_ATTR_PFC_STATE, 282: DCB_ATTR_PFC_CFG, 283: DCB_ATTR_NUM_TC, 284: DCB_ATTR_PG_CFG, 285: DCB_ATTR_SET_ALL, 286: DCB_ATTR_PERM_HWADDR, 287: DCB_ATTR_CAP, 288: DCB_ATTR_NUMTCS, 289: DCB_ATTR_BCN, 290: DCB_ATTR_APP, 291: 292: /* IEEE std attributes */ 293: DCB_ATTR_IEEE, 294: 295: DCB_ATTR_DCBX, 296: DCB_ATTR_FEATCFG, 297: 298: /* CEE nested attributes */ 299: DCB_ATTR_CEE, 300: 301: __DCB_ATTR_ENUM_MAX, 302: DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, 303: }; 304: 305: /** 306: * enum ieee_attrs - IEEE 802.1Qaz get/set attributes 307: * 308: * @DCB_ATTR_IEEE_UNSPEC: unspecified 309: * @DCB_ATTR_IEEE_ETS: negotiated ETS configuration 310: * @DCB_ATTR_IEEE_PFC: negotiated PFC configuration 311: * @DCB_ATTR_IEEE_APP_TABLE: negotiated APP configuration 312: * @DCB_ATTR_IEEE_PEER_ETS: peer ETS configuration - get only 313: * @DCB_ATTR_IEEE_PEER_PFC: peer PFC configuration - get only 314: * @DCB_ATTR_IEEE_PEER_APP: peer APP tlv - get only 315: */ 316: enum ieee_attrs { 317: DCB_ATTR_IEEE_UNSPEC, 318: DCB_ATTR_IEEE_ETS, 319: DCB_ATTR_IEEE_PFC, 320: DCB_ATTR_IEEE_APP_TABLE, 321: DCB_ATTR_IEEE_PEER_ETS, 322: DCB_ATTR_IEEE_PEER_PFC, 323: DCB_ATTR_IEEE_PEER_APP, 324: __DCB_ATTR_IEEE_MAX 325: }; 326: #define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1) 327: 328: enum ieee_attrs_app { 329: DCB_ATTR_IEEE_APP_UNSPEC, 330: DCB_ATTR_IEEE_APP, 331: __DCB_ATTR_IEEE_APP_MAX 332: }; 333: #define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1) 334: 335: /** 336: * enum cee_attrs - CEE DCBX get attributes. 337: * 338: * @DCB_ATTR_CEE_UNSPEC: unspecified 339: * @DCB_ATTR_CEE_PEER_PG: peer PG configuration - get only 340: * @DCB_ATTR_CEE_PEER_PFC: peer PFC configuration - get only 341: * @DCB_ATTR_CEE_PEER_APP_TABLE: peer APP tlv - get only 342: * @DCB_ATTR_CEE_TX_PG: TX PG configuration (DCB_CMD_PGTX_GCFG) 343: * @DCB_ATTR_CEE_RX_PG: RX PG configuration (DCB_CMD_PGRX_GCFG) 344: * @DCB_ATTR_CEE_PFC: PFC configuration (DCB_CMD_PFC_GCFG) 345: * @DCB_ATTR_CEE_APP_TABLE: APP configuration (multi DCB_CMD_GAPP) 346: * @DCB_ATTR_CEE_FEAT: DCBX features flags (DCB_CMD_GFEATCFG) 347: * 348: * An aggregated collection of the cee std negotiated parameters. 349: */ 350: enum cee_attrs { 351: DCB_ATTR_CEE_UNSPEC, 352: DCB_ATTR_CEE_PEER_PG, 353: DCB_ATTR_CEE_PEER_PFC, 354: DCB_ATTR_CEE_PEER_APP_TABLE, 355: DCB_ATTR_CEE_TX_PG, 356: DCB_ATTR_CEE_RX_PG, 357: DCB_ATTR_CEE_PFC, 358: DCB_ATTR_CEE_APP_TABLE, 359: DCB_ATTR_CEE_FEAT, 360: __DCB_ATTR_CEE_MAX 361: }; 362: #define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1) 363: 364: enum peer_app_attr { 365: DCB_ATTR_CEE_PEER_APP_UNSPEC, 366: DCB_ATTR_CEE_PEER_APP_INFO, 367: DCB_ATTR_CEE_PEER_APP, 368: __DCB_ATTR_CEE_PEER_APP_MAX 369: }; 370: #define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1) 371: 372: enum cee_attrs_app { 373: DCB_ATTR_CEE_APP_UNSPEC, 374: DCB_ATTR_CEE_APP, 375: __DCB_ATTR_CEE_APP_MAX 376: }; 377: #define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1) 378: 379: /** 380: * enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs 381: * 382: * @DCB_PFC_UP_ATTR_UNDEFINED: unspecified attribute to catch errors 383: * @DCB_PFC_UP_ATTR_0: Priority Flow Control value for User Priority 0 (NLA_U8) 384: * @DCB_PFC_UP_ATTR_1: Priority Flow Control value for User Priority 1 (NLA_U8) 385: * @DCB_PFC_UP_ATTR_2: Priority Flow Control value for User Priority 2 (NLA_U8) 386: * @DCB_PFC_UP_ATTR_3: Priority Flow Control value for User Priority 3 (NLA_U8) 387: * @DCB_PFC_UP_ATTR_4: Priority Flow Control value for User Priority 4 (NLA_U8) 388: * @DCB_PFC_UP_ATTR_5: Priority Flow Control value for User Priority 5 (NLA_U8) 389: * @DCB_PFC_UP_ATTR_6: Priority Flow Control value for User Priority 6 (NLA_U8) 390: * @DCB_PFC_UP_ATTR_7: Priority Flow Control value for User Priority 7 (NLA_U8) 391: * @DCB_PFC_UP_ATTR_MAX: highest attribute number currently defined 392: * @DCB_PFC_UP_ATTR_ALL: apply to all priority flow control attrs (NLA_FLAG) 393: * 394: */ 395: enum dcbnl_pfc_up_attrs { 396: DCB_PFC_UP_ATTR_UNDEFINED, 397: 398: DCB_PFC_UP_ATTR_0, 399: DCB_PFC_UP_ATTR_1, 400: DCB_PFC_UP_ATTR_2, 401: DCB_PFC_UP_ATTR_3, 402: DCB_PFC_UP_ATTR_4, 403: DCB_PFC_UP_ATTR_5, 404: DCB_PFC_UP_ATTR_6, 405: DCB_PFC_UP_ATTR_7, 406: DCB_PFC_UP_ATTR_ALL, 407: 408: __DCB_PFC_UP_ATTR_ENUM_MAX, 409: DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1, 410: }; 411: 412: /** 413: * enum dcbnl_pg_attrs - DCB Priority Group attributes 414: * 415: * @DCB_PG_ATTR_UNDEFINED: unspecified attribute to catch errors 416: * @DCB_PG_ATTR_TC_0: Priority Group Traffic Class 0 configuration (NLA_NESTED) 417: * @DCB_PG_ATTR_TC_1: Priority Group Traffic Class 1 configuration (NLA_NESTED) 418: * @DCB_PG_ATTR_TC_2: Priority Group Traffic Class 2 configuration (NLA_NESTED) 419: * @DCB_PG_ATTR_TC_3: Priority Group Traffic Class 3 configuration (NLA_NESTED) 420: * @DCB_PG_ATTR_TC_4: Priority Group Traffic Class 4 configuration (NLA_NESTED) 421: * @DCB_PG_ATTR_TC_5: Priority Group Traffic Class 5 configuration (NLA_NESTED) 422: * @DCB_PG_ATTR_TC_6: Priority Group Traffic Class 6 configuration (NLA_NESTED) 423: * @DCB_PG_ATTR_TC_7: Priority Group Traffic Class 7 configuration (NLA_NESTED) 424: * @DCB_PG_ATTR_TC_MAX: highest attribute number currently defined 425: * @DCB_PG_ATTR_TC_ALL: apply to all traffic classes (NLA_NESTED) 426: * @DCB_PG_ATTR_BW_ID_0: Percent of link bandwidth for Priority Group 0 (NLA_U8) 427: * @DCB_PG_ATTR_BW_ID_1: Percent of link bandwidth for Priority Group 1 (NLA_U8) 428: * @DCB_PG_ATTR_BW_ID_2: Percent of link bandwidth for Priority Group 2 (NLA_U8) 429: * @DCB_PG_ATTR_BW_ID_3: Percent of link bandwidth for Priority Group 3 (NLA_U8) 430: * @DCB_PG_ATTR_BW_ID_4: Percent of link bandwidth for Priority Group 4 (NLA_U8) 431: * @DCB_PG_ATTR_BW_ID_5: Percent of link bandwidth for Priority Group 5 (NLA_U8) 432: * @DCB_PG_ATTR_BW_ID_6: Percent of link bandwidth for Priority Group 6 (NLA_U8) 433: * @DCB_PG_ATTR_BW_ID_7: Percent of link bandwidth for Priority Group 7 (NLA_U8) 434: * @DCB_PG_ATTR_BW_ID_MAX: highest attribute number currently defined 435: * @DCB_PG_ATTR_BW_ID_ALL: apply to all priority groups (NLA_FLAG) 436: * 437: */ 438: enum dcbnl_pg_attrs { 439: DCB_PG_ATTR_UNDEFINED, 440: 441: DCB_PG_ATTR_TC_0, 442: DCB_PG_ATTR_TC_1, 443: DCB_PG_ATTR_TC_2, 444: DCB_PG_ATTR_TC_3, 445: DCB_PG_ATTR_TC_4, 446: DCB_PG_ATTR_TC_5, 447: DCB_PG_ATTR_TC_6, 448: DCB_PG_ATTR_TC_7, 449: DCB_PG_ATTR_TC_MAX, 450: DCB_PG_ATTR_TC_ALL, 451: 452: DCB_PG_ATTR_BW_ID_0, 453: DCB_PG_ATTR_BW_ID_1, 454: DCB_PG_ATTR_BW_ID_2, 455: DCB_PG_ATTR_BW_ID_3, 456: DCB_PG_ATTR_BW_ID_4, 457: DCB_PG_ATTR_BW_ID_5, 458: DCB_PG_ATTR_BW_ID_6, 459: DCB_PG_ATTR_BW_ID_7, 460: DCB_PG_ATTR_BW_ID_MAX, 461: DCB_PG_ATTR_BW_ID_ALL, 462: 463: __DCB_PG_ATTR_ENUM_MAX, 464: DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1, 465: }; 466: 467: /** 468: * enum dcbnl_tc_attrs - DCB Traffic Class attributes 469: * 470: * @DCB_TC_ATTR_PARAM_UNDEFINED: unspecified attribute to catch errors 471: * @DCB_TC_ATTR_PARAM_PGID: (NLA_U8) Priority group the traffic class belongs to 472: * Valid values are: 0-7 473: * @DCB_TC_ATTR_PARAM_UP_MAPPING: (NLA_U8) Traffic class to user priority map 474: * Some devices may not support changing the 475: * user priority map of a TC. 476: * @DCB_TC_ATTR_PARAM_STRICT_PRIO: (NLA_U8) Strict priority setting 477: * 0 - none 478: * 1 - group strict 479: * 2 - link strict 480: * @DCB_TC_ATTR_PARAM_BW_PCT: optional - (NLA_U8) If supported by the device and 481: * not configured to use link strict priority, 482: * this is the percentage of bandwidth of the 483: * priority group this traffic class belongs to 484: * @DCB_TC_ATTR_PARAM_ALL: (NLA_FLAG) all traffic class parameters 485: * 486: */ 487: enum dcbnl_tc_attrs { 488: DCB_TC_ATTR_PARAM_UNDEFINED, 489: 490: DCB_TC_ATTR_PARAM_PGID, 491: DCB_TC_ATTR_PARAM_UP_MAPPING, 492: DCB_TC_ATTR_PARAM_STRICT_PRIO, 493: DCB_TC_ATTR_PARAM_BW_PCT, 494: DCB_TC_ATTR_PARAM_ALL, 495: 496: __DCB_TC_ATTR_PARAM_ENUM_MAX, 497: DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1, 498: }; 499: 500: /** 501: * enum dcbnl_cap_attrs - DCB Capability attributes 502: * 503: * @DCB_CAP_ATTR_UNDEFINED: unspecified attribute to catch errors 504: * @DCB_CAP_ATTR_ALL: (NLA_FLAG) all capability parameters 505: * @DCB_CAP_ATTR_PG: (NLA_U8) device supports Priority Groups 506: * @DCB_CAP_ATTR_PFC: (NLA_U8) device supports Priority Flow Control 507: * @DCB_CAP_ATTR_UP2TC: (NLA_U8) device supports user priority to 508: * traffic class mapping 509: * @DCB_CAP_ATTR_PG_TCS: (NLA_U8) bitmap where each bit represents a 510: * number of traffic classes the device 511: * can be configured to use for Priority Groups 512: * @DCB_CAP_ATTR_PFC_TCS: (NLA_U8) bitmap where each bit represents a 513: * number of traffic classes the device can be 514: * configured to use for Priority Flow Control 515: * @DCB_CAP_ATTR_GSP: (NLA_U8) device supports group strict priority 516: * @DCB_CAP_ATTR_BCN: (NLA_U8) device supports Backwards Congestion 517: * Notification 518: * @DCB_CAP_ATTR_DCBX: (NLA_U8) device supports DCBX engine 519: * 520: */ 521: enum dcbnl_cap_attrs { 522: DCB_CAP_ATTR_UNDEFINED, 523: DCB_CAP_ATTR_ALL, 524: DCB_CAP_ATTR_PG, 525: DCB_CAP_ATTR_PFC, 526: DCB_CAP_ATTR_UP2TC, 527: DCB_CAP_ATTR_PG_TCS, 528: DCB_CAP_ATTR_PFC_TCS, 529: DCB_CAP_ATTR_GSP, 530: DCB_CAP_ATTR_BCN, 531: DCB_CAP_ATTR_DCBX, 532: 533: __DCB_CAP_ATTR_ENUM_MAX, 534: DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1, 535: }; 536: 537: /** 538: * DCBX capability flags 539: * 540: * @DCB_CAP_DCBX_HOST: DCBX negotiation is performed by the host LLDP agent. 541: * 'set' routines are used to configure the device with 542: * the negotiated parameters 543: * 544: * @DCB_CAP_DCBX_LLD_MANAGED: DCBX negotiation is not performed in the host but 545: * by another entity 546: * 'get' routines are used to retrieve the 547: * negotiated parameters 548: * 'set' routines can be used to set the initial 549: * negotiation configuration 550: * 551: * @DCB_CAP_DCBX_VER_CEE: for a non-host DCBX engine, indicates the engine 552: * supports the CEE protocol flavor 553: * 554: * @DCB_CAP_DCBX_VER_IEEE: for a non-host DCBX engine, indicates the engine 555: * supports the IEEE protocol flavor 556: * 557: * @DCB_CAP_DCBX_STATIC: for a non-host DCBX engine, indicates the engine 558: * supports static configuration (i.e no actual 559: * negotiation is performed negotiated parameters equal 560: * the initial configuration) 561: * 562: */ 563: #define DCB_CAP_DCBX_HOST 0x01 564: #define DCB_CAP_DCBX_LLD_MANAGED 0x02 565: #define DCB_CAP_DCBX_VER_CEE 0x04 566: #define DCB_CAP_DCBX_VER_IEEE 0x08 567: #define DCB_CAP_DCBX_STATIC 0x10 568: 569: /** 570: * enum dcbnl_numtcs_attrs - number of traffic classes 571: * 572: * @DCB_NUMTCS_ATTR_UNDEFINED: unspecified attribute to catch errors 573: * @DCB_NUMTCS_ATTR_ALL: (NLA_FLAG) all traffic class attributes 574: * @DCB_NUMTCS_ATTR_PG: (NLA_U8) number of traffic classes used for 575: * priority groups 576: * @DCB_NUMTCS_ATTR_PFC: (NLA_U8) number of traffic classes which can 577: * support priority flow control 578: */ 579: enum dcbnl_numtcs_attrs { 580: DCB_NUMTCS_ATTR_UNDEFINED, 581: DCB_NUMTCS_ATTR_ALL, 582: DCB_NUMTCS_ATTR_PG, 583: DCB_NUMTCS_ATTR_PFC, 584: 585: __DCB_NUMTCS_ATTR_ENUM_MAX, 586: DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1, 587: }; 588: 589: enum dcbnl_bcn_attrs{ 590: DCB_BCN_ATTR_UNDEFINED = 0, 591: 592: DCB_BCN_ATTR_RP_0, 593: DCB_BCN_ATTR_RP_1, 594: DCB_BCN_ATTR_RP_2, 595: DCB_BCN_ATTR_RP_3, 596: DCB_BCN_ATTR_RP_4, 597: DCB_BCN_ATTR_RP_5, 598: DCB_BCN_ATTR_RP_6, 599: DCB_BCN_ATTR_RP_7, 600: DCB_BCN_ATTR_RP_ALL, 601: 602: DCB_BCN_ATTR_BCNA_0, 603: DCB_BCN_ATTR_BCNA_1, 604: DCB_BCN_ATTR_ALPHA, 605: DCB_BCN_ATTR_BETA, 606: DCB_BCN_ATTR_GD, 607: DCB_BCN_ATTR_GI, 608: DCB_BCN_ATTR_TMAX, 609: DCB_BCN_ATTR_TD, 610: DCB_BCN_ATTR_RMIN, 611: DCB_BCN_ATTR_W, 612: DCB_BCN_ATTR_RD, 613: DCB_BCN_ATTR_RU, 614: DCB_BCN_ATTR_WRTT, 615: DCB_BCN_ATTR_RI, 616: DCB_BCN_ATTR_C, 617: DCB_BCN_ATTR_ALL, 618: 619: __DCB_BCN_ATTR_ENUM_MAX, 620: DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1, 621: }; 622: 623: /** 624: * enum dcb_general_attr_values - general DCB attribute values 625: * 626: * @DCB_ATTR_UNDEFINED: value used to indicate an attribute is not supported 627: * 628: */ 629: enum dcb_general_attr_values { 630: DCB_ATTR_VALUE_UNDEFINED = 0xff 631: }; 632: 633: #define DCB_APP_IDTYPE_ETHTYPE 0x00 634: #define DCB_APP_IDTYPE_PORTNUM 0x01 635: enum dcbnl_app_attrs { 636: DCB_APP_ATTR_UNDEFINED, 637: 638: DCB_APP_ATTR_IDTYPE, 639: DCB_APP_ATTR_ID, 640: DCB_APP_ATTR_PRIORITY, 641: 642: __DCB_APP_ATTR_ENUM_MAX, 643: DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1, 644: }; 645: 646: /** 647: * enum dcbnl_featcfg_attrs - features conifiguration flags 648: * 649: * @DCB_FEATCFG_ATTR_UNDEFINED: unspecified attribute to catch errors 650: * @DCB_FEATCFG_ATTR_ALL: (NLA_FLAG) all features configuration attributes 651: * @DCB_FEATCFG_ATTR_PG: (NLA_U8) configuration flags for priority groups 652: * @DCB_FEATCFG_ATTR_PFC: (NLA_U8) configuration flags for priority 653: * flow control 654: * @DCB_FEATCFG_ATTR_APP: (NLA_U8) configuration flags for application TLV 655: * 656: */ 657: #define DCB_FEATCFG_ERROR 0x01 /* error in feature resolution */ 658: #define DCB_FEATCFG_ENABLE 0x02 /* enable feature */ 659: #define DCB_FEATCFG_WILLING 0x04 /* feature is willing */ 660: #define DCB_FEATCFG_ADVERTISE 0x08 /* advertise feature */ 661: enum dcbnl_featcfg_attrs { 662: DCB_FEATCFG_ATTR_UNDEFINED, 663: DCB_FEATCFG_ATTR_ALL, 664: DCB_FEATCFG_ATTR_PG, 665: DCB_FEATCFG_ATTR_PFC, 666: DCB_FEATCFG_ATTR_APP, 667: 668: __DCB_FEATCFG_ATTR_ENUM_MAX, 669: DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1, 670: }; 671: 672: #endif /* __LINUX_DCBNL_H__ */ 673: