net: sched: RED: Introduce an ECN nodrop mode
When the RED Qdisc is currently configured to enable ECN, the RED algorithm is used to decide whether a certain SKB should be marked. If that SKB is not ECN-capable, it is early-dropped. It is also possible to keep all traffic in the queue, and just mark the ECN-capable subset of it, as appropriate under the RED algorithm. Some switches support this mode, and some installations make use of it. To that end, add a new RED flag, TC_RED_NODROP. When the Qdisc is configured with this flag, non-ECT traffic is enqueued instead of being early-dropped. Signed-off-by: Petr Machata <petrm@mellanox.com> Reviewed-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
14bc175d9c
commit
0a7fad2376
@@ -209,6 +209,11 @@ static inline int red_get_flags(unsigned char qopt_flags,
|
||||
static inline int red_validate_flags(unsigned char flags,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
if ((flags & TC_RED_NODROP) && !(flags & TC_RED_ECN)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "nodrop mode is only meaningful with ECN");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user