[PATCH net-next v3 00/10] flower: rework TCA_FLOWER_KEY_ENC_FLAGS usage

From: Asbjørn Sloth Tønnesen
Date: Tue Jul 09 2024 - 13:14:34 EST


This series reworks the recently added TCA_FLOWER_KEY_ENC_FLAGS
attribute, to be more like TCA_FLOWER_KEY_FLAGS, and use the unused
u32 flags field in FLOW_DISSECTOR_KEY_ENC_CONTROL, instead of adding
a new flags field as FLOW_DISSECTOR_KEY_ENC_FLAGS.

I have defined the new FLOW_DIS_F_* and TCA_FLOWER_KEY_FLAGS_*
flags to co-exist with the existing flags, so the meaning
of the flags field in struct flow_dissector_key_control is not
depending on the context it is used in. If we run out of bits
then we can always split them up later, if we really want to.
Future flags might also be valid in both contexts.

iproute2 RFC patch: (needs update of uAPI headers)
https://lore.kernel.org/897379f1850a50d8c320ca3facd06c5f03943bac.1719506876.git.dcaratti@xxxxxxxxxx/

---
Changelog:

v3:
- Retitle patch 1 (tunnel flags -> control flags)

v2: https://lore.kernel.org/20240705133348.728901-1-ast@xxxxxxxxxxx/
- Refactor flower control flag definitions
(requested by Jakub and Alexander)
- Add Tested-by from Davide Caratti on patch 3-10.

v1: https://lore.kernel.org/20240703104600.455125-1-ast@xxxxxxxxxxx/
- Change netlink attribute type from NLA_U32 to NLA_BE32.
- Ensure that the FLOW_DISSECTOR_KEY_ENC_CONTROL
is also masked for non-IP.
- Fix preexisting typo in kdoc for struct flow_dissector_key_control
(all suggested by Davide)

RFC: https://lore.kernel.org/20240611235355.177667-1-ast@xxxxxxxxxxx/

Asbjørn Sloth Tønnesen (10):
net/sched: flower: refactor control flag definitions
net/sched: flower: define new tunnel flags
net/sched: cls_flower: prepare fl_{set,dump}_key_flags() for ENC_FLAGS
net/sched: cls_flower: add policy for TCA_FLOWER_KEY_FLAGS
flow_dissector: prepare for encapsulated control flags
flow_dissector: set encapsulated control flags from tun_flags
net/sched: cls_flower: add tunnel flags to fl_{set,dump}_key_flags()
net/sched: cls_flower: rework TCA_FLOWER_KEY_ENC_FLAGS usage
flow_dissector: cleanup FLOW_DISSECTOR_KEY_ENC_FLAGS
flow_dissector: set encapsulation control flags for non-IP

include/net/flow_dissector.h | 30 ++++----
include/net/ip_tunnels.h | 12 ---
include/uapi/linux/pkt_cls.h | 11 ++-
net/core/flow_dissector.c | 50 ++++++------
net/sched/cls_flower.c | 142 ++++++++++++++++++++---------------
5 files changed, 135 insertions(+), 110 deletions(-)

--
2.45.2