Currently all GRED's virtual queue data is dumped in a single array in a single attribute. This makes it pretty much impossible to add new fields. In order to expose more detailed stats add a new set of attributes. We can now expose the 64 bit value of bytesin and all the mark stats which were not part of the original design.
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -291,11 +291,37 @@ enum { · 290 unmodified lines | |||
| 291 | TCA_GRED_DPS, | 291 | TCA_GRED_DPS, |
| 292 | TCA_GRED_MAX_P, | 292 | TCA_GRED_MAX_P, |
| 293 | TCA_GRED_LIMIT, | 293 | TCA_GRED_LIMIT, |
| 294 | TCA_GRED_VQ_LIST, /* nested TCA_GRED_VQ_ENTRY */ | ||
| 294 | __TCA_GRED_MAX, | 295 | __TCA_GRED_MAX, |
| 295 | }; | 296 | }; |
| 296 | 297 | ||
| 297 | #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) | 298 | #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) |
| 298 | 299 | ||
| 300 | enum { | ||
| 301 | TCA_GRED_VQ_ENTRY_UNSPEC, | ||
| 302 | TCA_GRED_VQ_ENTRY, /* nested TCA_GRED_VQ_* */ | ||
| 303 | __TCA_GRED_VQ_ENTRY_MAX, | ||
| 304 | }; | ||
| 305 | #define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1) | ||
| 306 | |||
| 307 | enum { | ||
| 308 | TCA_GRED_VQ_UNSPEC, | ||
| 309 | TCA_GRED_VQ_PAD, | ||
| 310 | TCA_GRED_VQ_DP, /* u32 */ | ||
| 311 | TCA_GRED_VQ_STAT_BYTES, /* u64 */ | ||
| 312 | TCA_GRED_VQ_STAT_PACKETS, /* u32 */ | ||
| 313 | TCA_GRED_VQ_STAT_BACKLOG, /* u32 */ | ||
| 314 | TCA_GRED_VQ_STAT_PROB_DROP, /* u32 */ | ||
| 315 | TCA_GRED_VQ_STAT_PROB_MARK, /* u32 */ | ||
| 316 | TCA_GRED_VQ_STAT_FORCED_DROP, /* u32 */ | ||
| 317 | TCA_GRED_VQ_STAT_FORCED_MARK, /* u32 */ | ||
| 318 | TCA_GRED_VQ_STAT_PDROP, /* u32 */ | ||
| 319 | TCA_GRED_VQ_STAT_OTHER, /* u32 */ | ||
| 320 | __TCA_GRED_VQ_MAX | ||
| 321 | }; | ||
| 322 | |||
| 323 | #define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1) | ||
| 324 | |||
| 299 | struct tc_gred_qopt { | 325 | struct tc_gred_qopt { |
| 300 | __u32 limit; /* HARD maximal queue length (bytes) */ | 326 | __u32 limit; /* HARD maximal queue length (bytes) */ |
| 301 | __u32 qth_min; /* Min average length threshold (bytes) */ | 327 | __u32 qth_min; /* Min average length threshold (bytes) */ |