diff options
Diffstat (limited to 'include/linux/dcbnl.h')
| -rw-r--r-- | include/linux/dcbnl.h | 115 |
1 files changed, 112 insertions, 3 deletions
diff --git a/include/linux/dcbnl.h b/include/linux/dcbnl.h index 68cd248f6d3e..c52280047e2c 100644 --- a/include/linux/dcbnl.h +++ b/include/linux/dcbnl.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2008, Intel Corporation. | 2 | * Copyright (c) 2008-2011, Intel Corporation. |
| 3 | * | 3 | * |
| 4 | * This program is free software; you can redistribute it and/or modify it | 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, | 5 | * under the terms and conditions of the GNU General Public License, |
| @@ -25,9 +25,14 @@ | |||
| 25 | /* IEEE 802.1Qaz std supported values */ | 25 | /* IEEE 802.1Qaz std supported values */ |
| 26 | #define IEEE_8021QAZ_MAX_TCS 8 | 26 | #define IEEE_8021QAZ_MAX_TCS 8 |
| 27 | 27 | ||
| 28 | #define IEEE_8021QAZ_TSA_STRICT 0 | ||
| 29 | #define IEEE_8021QAZ_TSA_CB_SHAPER 1 | ||
| 30 | #define IEEE_8021QAZ_TSA_ETS 2 | ||
| 31 | #define IEEE_8021QAZ_TSA_VENDOR 255 | ||
| 32 | |||
| 28 | /* This structure contains the IEEE 802.1Qaz ETS managed object | 33 | /* This structure contains the IEEE 802.1Qaz ETS managed object |
| 29 | * | 34 | * |
| 30 | * @willing: willing bit in ETS configuratin TLV | 35 | * @willing: willing bit in ETS configuration TLV |
| 31 | * @ets_cap: indicates supported capacity of ets feature | 36 | * @ets_cap: indicates supported capacity of ets feature |
| 32 | * @cbs: credit based shaper ets algorithm supported | 37 | * @cbs: credit based shaper ets algorithm supported |
| 33 | * @tc_tx_bw: tc tx bandwidth indexed by traffic class | 38 | * @tc_tx_bw: tc tx bandwidth indexed by traffic class |
| @@ -82,6 +87,50 @@ struct ieee_pfc { | |||
| 82 | __u64 indications[IEEE_8021QAZ_MAX_TCS]; | 87 | __u64 indications[IEEE_8021QAZ_MAX_TCS]; |
| 83 | }; | 88 | }; |
| 84 | 89 | ||
| 90 | /* CEE DCBX std supported values */ | ||
| 91 | #define CEE_DCBX_MAX_PGS 8 | ||
| 92 | #define CEE_DCBX_MAX_PRIO 8 | ||
| 93 | |||
| 94 | /** | ||
| 95 | * struct cee_pg - CEE Priority-Group managed object | ||
| 96 | * | ||
| 97 | * @willing: willing bit in the PG tlv | ||
| 98 | * @error: error bit in the PG tlv | ||
| 99 | * @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 | |||
| 85 | /* This structure contains the IEEE 802.1Qaz APP managed object. This | 134 | /* This structure contains the IEEE 802.1Qaz APP managed object. This |
| 86 | * object is also used for the CEE std as well. There is no difference | 135 | * object is also used for the CEE std as well. There is no difference |
| 87 | * between the objects. | 136 | * between the objects. |
| @@ -101,8 +150,22 @@ struct ieee_pfc { | |||
| 101 | */ | 150 | */ |
| 102 | struct dcb_app { | 151 | struct dcb_app { |
| 103 | __u8 selector; | 152 | __u8 selector; |
| 104 | __u32 protocol; | ||
| 105 | __u8 priority; | 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; | ||
| 106 | }; | 169 | }; |
| 107 | 170 | ||
| 108 | struct dcbmsg { | 171 | struct dcbmsg { |
| @@ -139,6 +202,7 @@ struct dcbmsg { | |||
| 139 | * @DCB_CMD_SDCBX: set DCBX engine configuration | 202 | * @DCB_CMD_SDCBX: set DCBX engine configuration |
| 140 | * @DCB_CMD_GFEATCFG: get DCBX features flags | 203 | * @DCB_CMD_GFEATCFG: get DCBX features flags |
| 141 | * @DCB_CMD_SFEATCFG: set DCBX features negotiation flags | 204 | * @DCB_CMD_SFEATCFG: set DCBX features negotiation flags |
| 205 | * @DCB_CMD_CEE_GET: get CEE aggregated configuration | ||
| 142 | */ | 206 | */ |
| 143 | enum dcbnl_commands { | 207 | enum dcbnl_commands { |
| 144 | DCB_CMD_UNDEFINED, | 208 | DCB_CMD_UNDEFINED, |
| @@ -181,6 +245,8 @@ enum dcbnl_commands { | |||
| 181 | DCB_CMD_GFEATCFG, | 245 | DCB_CMD_GFEATCFG, |
| 182 | DCB_CMD_SFEATCFG, | 246 | DCB_CMD_SFEATCFG, |
| 183 | 247 | ||
| 248 | DCB_CMD_CEE_GET, | ||
| 249 | |||
| 184 | __DCB_CMD_ENUM_MAX, | 250 | __DCB_CMD_ENUM_MAX, |
| 185 | DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, | 251 | DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, |
| 186 | }; | 252 | }; |
| @@ -203,6 +269,7 @@ enum dcbnl_commands { | |||
| 203 | * @DCB_ATTR_IEEE: IEEE 802.1Qaz supported attributes (NLA_NESTED) | 269 | * @DCB_ATTR_IEEE: IEEE 802.1Qaz supported attributes (NLA_NESTED) |
| 204 | * @DCB_ATTR_DCBX: DCBX engine configuration in the device (NLA_U8) | 270 | * @DCB_ATTR_DCBX: DCBX engine configuration in the device (NLA_U8) |
| 205 | * @DCB_ATTR_FEATCFG: DCBX features flags (NLA_NESTED) | 271 | * @DCB_ATTR_FEATCFG: DCBX features flags (NLA_NESTED) |
| 272 | * @DCB_ATTR_CEE: CEE std supported attributes (NLA_NESTED) | ||
| 206 | */ | 273 | */ |
| 207 | enum dcbnl_attrs { | 274 | enum dcbnl_attrs { |
| 208 | DCB_ATTR_UNDEFINED, | 275 | DCB_ATTR_UNDEFINED, |
| @@ -226,15 +293,32 @@ enum dcbnl_attrs { | |||
| 226 | DCB_ATTR_DCBX, | 293 | DCB_ATTR_DCBX, |
| 227 | DCB_ATTR_FEATCFG, | 294 | DCB_ATTR_FEATCFG, |
| 228 | 295 | ||
| 296 | /* CEE nested attributes */ | ||
| 297 | DCB_ATTR_CEE, | ||
| 298 | |||
| 229 | __DCB_ATTR_ENUM_MAX, | 299 | __DCB_ATTR_ENUM_MAX, |
| 230 | DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, | 300 | DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, |
| 231 | }; | 301 | }; |
| 232 | 302 | ||
| 303 | /** | ||
| 304 | * enum ieee_attrs - IEEE 802.1Qaz get/set attributes | ||
| 305 | * | ||
| 306 | * @DCB_ATTR_IEEE_UNSPEC: unspecified | ||
| 307 | * @DCB_ATTR_IEEE_ETS: negotiated ETS configuration | ||
| 308 | * @DCB_ATTR_IEEE_PFC: negotiated PFC configuration | ||
| 309 | * @DCB_ATTR_IEEE_APP_TABLE: negotiated APP configuration | ||
| 310 | * @DCB_ATTR_IEEE_PEER_ETS: peer ETS configuration - get only | ||
| 311 | * @DCB_ATTR_IEEE_PEER_PFC: peer PFC configuration - get only | ||
| 312 | * @DCB_ATTR_IEEE_PEER_APP: peer APP tlv - get only | ||
| 313 | */ | ||
| 233 | enum ieee_attrs { | 314 | enum ieee_attrs { |
| 234 | DCB_ATTR_IEEE_UNSPEC, | 315 | DCB_ATTR_IEEE_UNSPEC, |
| 235 | DCB_ATTR_IEEE_ETS, | 316 | DCB_ATTR_IEEE_ETS, |
| 236 | DCB_ATTR_IEEE_PFC, | 317 | DCB_ATTR_IEEE_PFC, |
| 237 | DCB_ATTR_IEEE_APP_TABLE, | 318 | DCB_ATTR_IEEE_APP_TABLE, |
| 319 | DCB_ATTR_IEEE_PEER_ETS, | ||
| 320 | DCB_ATTR_IEEE_PEER_PFC, | ||
| 321 | DCB_ATTR_IEEE_PEER_APP, | ||
| 238 | __DCB_ATTR_IEEE_MAX | 322 | __DCB_ATTR_IEEE_MAX |
| 239 | }; | 323 | }; |
| 240 | #define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1) | 324 | #define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1) |
| @@ -247,6 +331,31 @@ enum ieee_attrs_app { | |||
| 247 | #define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1) | 331 | #define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1) |
| 248 | 332 | ||
| 249 | /** | 333 | /** |
| 334 | * enum cee_attrs - CEE DCBX get attributes | ||
| 335 | * | ||
| 336 | * @DCB_ATTR_CEE_UNSPEC: unspecified | ||
| 337 | * @DCB_ATTR_CEE_PEER_PG: peer PG configuration - get only | ||
| 338 | * @DCB_ATTR_CEE_PEER_PFC: peer PFC configuration - get only | ||
| 339 | * @DCB_ATTR_CEE_PEER_APP: peer APP tlv - get only | ||
| 340 | */ | ||
| 341 | enum cee_attrs { | ||
| 342 | DCB_ATTR_CEE_UNSPEC, | ||
| 343 | DCB_ATTR_CEE_PEER_PG, | ||
| 344 | DCB_ATTR_CEE_PEER_PFC, | ||
| 345 | DCB_ATTR_CEE_PEER_APP_TABLE, | ||
| 346 | __DCB_ATTR_CEE_MAX | ||
| 347 | }; | ||
| 348 | #define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1) | ||
| 349 | |||
| 350 | enum peer_app_attr { | ||
| 351 | DCB_ATTR_CEE_PEER_APP_UNSPEC, | ||
| 352 | DCB_ATTR_CEE_PEER_APP_INFO, | ||
| 353 | DCB_ATTR_CEE_PEER_APP, | ||
| 354 | __DCB_ATTR_CEE_PEER_APP_MAX | ||
| 355 | }; | ||
| 356 | #define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1) | ||
| 357 | |||
| 358 | /** | ||
| 250 | * enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs | 359 | * enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs |
| 251 | * | 360 | * |
| 252 | * @DCB_PFC_UP_ATTR_UNDEFINED: unspecified attribute to catch errors | 361 | * @DCB_PFC_UP_ATTR_UNDEFINED: unspecified attribute to catch errors |
