diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2008-11-21 00:10:23 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-21 00:10:23 -0500 |
commit | 859ee3c43812051e21816c6d6d4cc04fb7ce9b2e (patch) | |
tree | ef3c3717038b5d4600065550f422fd8abf72de35 /include | |
parent | 0eb3aa9bab20217fb42244ccdcb5bf8a002f504c (diff) |
DCB: Add support for DCB BCN
Adds an interface to configure the Backward Congestion Notification
(BCN) feature. In a BCN capabale network, congestion notifications
from congested points out in the network can cause the end station
limit the rate of a given traffic flow.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/dcbnl.h | 44 | ||||
-rw-r--r-- | include/net/dcbnl.h | 4 |
2 files changed, 47 insertions, 1 deletions
diff --git a/include/linux/dcbnl.h b/include/linux/dcbnl.h index 6cc4560bc376..e73a61449ad6 100644 --- a/include/linux/dcbnl.h +++ b/include/linux/dcbnl.h | |||
@@ -46,6 +46,8 @@ struct dcbmsg { | |||
46 | * @DCB_CMD_GCAP: request the DCB capabilities of the device | 46 | * @DCB_CMD_GCAP: request the DCB capabilities of the device |
47 | * @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported | 47 | * @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported |
48 | * @DCB_CMD_SNUMTCS: set the number of traffic classes | 48 | * @DCB_CMD_SNUMTCS: set the number of traffic classes |
49 | * @DCB_CMD_GBCN: set backward congestion notification configuration | ||
50 | * @DCB_CMD_SBCN: get backward congestion notification configration. | ||
49 | */ | 51 | */ |
50 | enum dcbnl_commands { | 52 | enum dcbnl_commands { |
51 | DCB_CMD_UNDEFINED, | 53 | DCB_CMD_UNDEFINED, |
@@ -62,18 +64,24 @@ enum dcbnl_commands { | |||
62 | DCB_CMD_PFC_SCFG, | 64 | DCB_CMD_PFC_SCFG, |
63 | 65 | ||
64 | DCB_CMD_SET_ALL, | 66 | DCB_CMD_SET_ALL, |
67 | |||
65 | DCB_CMD_GPERM_HWADDR, | 68 | DCB_CMD_GPERM_HWADDR, |
69 | |||
66 | DCB_CMD_GCAP, | 70 | DCB_CMD_GCAP, |
71 | |||
67 | DCB_CMD_GNUMTCS, | 72 | DCB_CMD_GNUMTCS, |
68 | DCB_CMD_SNUMTCS, | 73 | DCB_CMD_SNUMTCS, |
74 | |||
69 | DCB_CMD_PFC_GSTATE, | 75 | DCB_CMD_PFC_GSTATE, |
70 | DCB_CMD_PFC_SSTATE, | 76 | DCB_CMD_PFC_SSTATE, |
71 | 77 | ||
78 | DCB_CMD_BCN_GCFG, | ||
79 | DCB_CMD_BCN_SCFG, | ||
80 | |||
72 | __DCB_CMD_ENUM_MAX, | 81 | __DCB_CMD_ENUM_MAX, |
73 | DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, | 82 | DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, |
74 | }; | 83 | }; |
75 | 84 | ||
76 | |||
77 | /** | 85 | /** |
78 | * enum dcbnl_attrs - DCB top-level netlink attributes | 86 | * enum dcbnl_attrs - DCB top-level netlink attributes |
79 | * | 87 | * |
@@ -88,6 +96,7 @@ enum dcbnl_commands { | |||
88 | * @DCB_ATTR_PERM_HWADDR: MAC address of the physical device (NLA_NESTED) | 96 | * @DCB_ATTR_PERM_HWADDR: MAC address of the physical device (NLA_NESTED) |
89 | * @DCB_ATTR_CAP: DCB capabilities of the device (NLA_NESTED) | 97 | * @DCB_ATTR_CAP: DCB capabilities of the device (NLA_NESTED) |
90 | * @DCB_ATTR_NUMTCS: number of traffic classes supported (NLA_NESTED) | 98 | * @DCB_ATTR_NUMTCS: number of traffic classes supported (NLA_NESTED) |
99 | * @DCB_ATTR_BCN: backward congestion notification configuration (NLA_NESTED) | ||
91 | */ | 100 | */ |
92 | enum dcbnl_attrs { | 101 | enum dcbnl_attrs { |
93 | DCB_ATTR_UNDEFINED, | 102 | DCB_ATTR_UNDEFINED, |
@@ -102,6 +111,7 @@ enum dcbnl_attrs { | |||
102 | DCB_ATTR_PERM_HWADDR, | 111 | DCB_ATTR_PERM_HWADDR, |
103 | DCB_ATTR_CAP, | 112 | DCB_ATTR_CAP, |
104 | DCB_ATTR_NUMTCS, | 113 | DCB_ATTR_NUMTCS, |
114 | DCB_ATTR_BCN, | ||
105 | 115 | ||
106 | __DCB_ATTR_ENUM_MAX, | 116 | __DCB_ATTR_ENUM_MAX, |
107 | DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, | 117 | DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, |
@@ -282,6 +292,38 @@ enum dcbnl_numtcs_attrs { | |||
282 | DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1, | 292 | DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1, |
283 | }; | 293 | }; |
284 | 294 | ||
295 | enum dcbnl_bcn_attrs{ | ||
296 | DCB_BCN_ATTR_UNDEFINED = 0, | ||
297 | |||
298 | DCB_BCN_ATTR_RP_0, | ||
299 | DCB_BCN_ATTR_RP_1, | ||
300 | DCB_BCN_ATTR_RP_2, | ||
301 | DCB_BCN_ATTR_RP_3, | ||
302 | DCB_BCN_ATTR_RP_4, | ||
303 | DCB_BCN_ATTR_RP_5, | ||
304 | DCB_BCN_ATTR_RP_6, | ||
305 | DCB_BCN_ATTR_RP_7, | ||
306 | DCB_BCN_ATTR_RP_ALL, | ||
307 | |||
308 | DCB_BCN_ATTR_ALPHA, | ||
309 | DCB_BCN_ATTR_BETA, | ||
310 | DCB_BCN_ATTR_GD, | ||
311 | DCB_BCN_ATTR_GI, | ||
312 | DCB_BCN_ATTR_TMAX, | ||
313 | DCB_BCN_ATTR_TD, | ||
314 | DCB_BCN_ATTR_RMIN, | ||
315 | DCB_BCN_ATTR_W, | ||
316 | DCB_BCN_ATTR_RD, | ||
317 | DCB_BCN_ATTR_RU, | ||
318 | DCB_BCN_ATTR_WRTT, | ||
319 | DCB_BCN_ATTR_RI, | ||
320 | DCB_BCN_ATTR_C, | ||
321 | DCB_BCN_ATTR_ALL, | ||
322 | |||
323 | __DCB_BCN_ATTR_ENUM_MAX, | ||
324 | DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1, | ||
325 | }; | ||
326 | |||
285 | /** | 327 | /** |
286 | * enum dcb_general_attr_values - general DCB attribute values | 328 | * enum dcb_general_attr_values - general DCB attribute values |
287 | * | 329 | * |
diff --git a/include/net/dcbnl.h b/include/net/dcbnl.h index c7d87caf3f99..91e0a3d7faf2 100644 --- a/include/net/dcbnl.h +++ b/include/net/dcbnl.h | |||
@@ -44,6 +44,10 @@ struct dcbnl_rtnl_ops { | |||
44 | u8 (*setnumtcs)(struct net_device *, int, u8); | 44 | u8 (*setnumtcs)(struct net_device *, int, u8); |
45 | u8 (*getpfcstate)(struct net_device *); | 45 | u8 (*getpfcstate)(struct net_device *); |
46 | void (*setpfcstate)(struct net_device *, u8); | 46 | void (*setpfcstate)(struct net_device *, u8); |
47 | void (*getbcncfg)(struct net_device *, int, u32 *); | ||
48 | void (*setbcncfg)(struct net_device *, int, u32); | ||
49 | void (*getbcnrp)(struct net_device *, int, u8 *); | ||
50 | void (*setbcnrp)(struct net_device *, int, u8); | ||
47 | }; | 51 | }; |
48 | 52 | ||
49 | #endif /* __NET_DCBNL_H__ */ | 53 | #endif /* __NET_DCBNL_H__ */ |