aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2008-11-21 00:10:23 -0500
committerDavid S. Miller <davem@davemloft.net>2008-11-21 00:10:23 -0500
commit859ee3c43812051e21816c6d6d4cc04fb7ce9b2e (patch)
treeef3c3717038b5d4600065550f422fd8abf72de35 /include
parent0eb3aa9bab20217fb42244ccdcb5bf8a002f504c (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.h44
-rw-r--r--include/net/dcbnl.h4
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 */
50enum dcbnl_commands { 52enum 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 */
92enum dcbnl_attrs { 101enum 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
295enum 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__ */