devlink: Add layer 2 control packet traps
Add layer 2 control packet traps such as STP and IGMP query, so that capable device drivers could register them with devlink. Add documentation for every added packet trap and packet trap group. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
30a4e9a29a
commit
515eac677f
|
@ -252,6 +252,42 @@ be added to the following table:
|
||||||
* - ``egress_flow_action_drop``
|
* - ``egress_flow_action_drop``
|
||||||
- ``drop``
|
- ``drop``
|
||||||
- Traps packets dropped during processing of egress flow action drop
|
- Traps packets dropped during processing of egress flow action drop
|
||||||
|
* - ``stp``
|
||||||
|
- ``control``
|
||||||
|
- Traps STP packets
|
||||||
|
* - ``lacp``
|
||||||
|
- ``control``
|
||||||
|
- Traps LACP packets
|
||||||
|
* - ``lldp``
|
||||||
|
- ``control``
|
||||||
|
- Traps LLDP packets
|
||||||
|
* - ``igmp_query``
|
||||||
|
- ``control``
|
||||||
|
- Traps IGMP Membership Query packets
|
||||||
|
* - ``igmp_v1_report``
|
||||||
|
- ``control``
|
||||||
|
- Traps IGMP Version 1 Membership Report packets
|
||||||
|
* - ``igmp_v2_report``
|
||||||
|
- ``control``
|
||||||
|
- Traps IGMP Version 2 Membership Report packets
|
||||||
|
* - ``igmp_v3_report``
|
||||||
|
- ``control``
|
||||||
|
- Traps IGMP Version 3 Membership Report packets
|
||||||
|
* - ``igmp_v2_leave``
|
||||||
|
- ``control``
|
||||||
|
- Traps IGMP Version 2 Leave Group packets
|
||||||
|
* - ``mld_query``
|
||||||
|
- ``control``
|
||||||
|
- Traps MLD Multicast Listener Query packets
|
||||||
|
* - ``mld_v1_report``
|
||||||
|
- ``control``
|
||||||
|
- Traps MLD Version 1 Multicast Listener Report packets
|
||||||
|
* - ``mld_v2_report``
|
||||||
|
- ``control``
|
||||||
|
- Traps MLD Version 2 Multicast Listener Report packets
|
||||||
|
* - ``mld_v1_done``
|
||||||
|
- ``control``
|
||||||
|
- Traps MLD Version 1 Multicast Listener Done packets
|
||||||
|
|
||||||
Driver-specific Packet Traps
|
Driver-specific Packet Traps
|
||||||
============================
|
============================
|
||||||
|
@ -299,6 +335,15 @@ narrow. The description of these groups must be added to the following table:
|
||||||
* - ``acl_drops``
|
* - ``acl_drops``
|
||||||
- Contains packet traps for packets that were dropped by the device during
|
- Contains packet traps for packets that were dropped by the device during
|
||||||
ACL processing
|
ACL processing
|
||||||
|
* - ``stp``
|
||||||
|
- Contains packet traps for STP packets
|
||||||
|
* - ``lacp``
|
||||||
|
- Contains packet traps for LACP packets
|
||||||
|
* - ``lldp``
|
||||||
|
- Contains packet traps for LLDP packets
|
||||||
|
* - ``mc_snooping``
|
||||||
|
- Contains packet traps for IGMP and MLD packets required for multicast
|
||||||
|
snooping
|
||||||
|
|
||||||
Packet Trap Policers
|
Packet Trap Policers
|
||||||
====================
|
====================
|
||||||
|
|
|
@ -645,6 +645,18 @@ enum devlink_trap_generic_id {
|
||||||
DEVLINK_TRAP_GENERIC_ID_OVERLAY_SMAC_MC,
|
DEVLINK_TRAP_GENERIC_ID_OVERLAY_SMAC_MC,
|
||||||
DEVLINK_TRAP_GENERIC_ID_INGRESS_FLOW_ACTION_DROP,
|
DEVLINK_TRAP_GENERIC_ID_INGRESS_FLOW_ACTION_DROP,
|
||||||
DEVLINK_TRAP_GENERIC_ID_EGRESS_FLOW_ACTION_DROP,
|
DEVLINK_TRAP_GENERIC_ID_EGRESS_FLOW_ACTION_DROP,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_STP,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_LACP,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_LLDP,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_IGMP_QUERY,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_IGMP_V1_REPORT,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_IGMP_V2_REPORT,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_IGMP_V3_REPORT,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_IGMP_V2_LEAVE,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_MLD_QUERY,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_MLD_V1_REPORT,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_MLD_V2_REPORT,
|
||||||
|
DEVLINK_TRAP_GENERIC_ID_MLD_V1_DONE,
|
||||||
|
|
||||||
/* Add new generic trap IDs above */
|
/* Add new generic trap IDs above */
|
||||||
__DEVLINK_TRAP_GENERIC_ID_MAX,
|
__DEVLINK_TRAP_GENERIC_ID_MAX,
|
||||||
|
@ -661,6 +673,10 @@ enum devlink_trap_group_generic_id {
|
||||||
DEVLINK_TRAP_GROUP_GENERIC_ID_BUFFER_DROPS,
|
DEVLINK_TRAP_GROUP_GENERIC_ID_BUFFER_DROPS,
|
||||||
DEVLINK_TRAP_GROUP_GENERIC_ID_TUNNEL_DROPS,
|
DEVLINK_TRAP_GROUP_GENERIC_ID_TUNNEL_DROPS,
|
||||||
DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_DROPS,
|
DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_DROPS,
|
||||||
|
DEVLINK_TRAP_GROUP_GENERIC_ID_STP,
|
||||||
|
DEVLINK_TRAP_GROUP_GENERIC_ID_LACP,
|
||||||
|
DEVLINK_TRAP_GROUP_GENERIC_ID_LLDP,
|
||||||
|
DEVLINK_TRAP_GROUP_GENERIC_ID_MC_SNOOPING,
|
||||||
|
|
||||||
/* Add new generic trap group IDs above */
|
/* Add new generic trap group IDs above */
|
||||||
__DEVLINK_TRAP_GROUP_GENERIC_ID_MAX,
|
__DEVLINK_TRAP_GROUP_GENERIC_ID_MAX,
|
||||||
|
@ -726,6 +742,30 @@ enum devlink_trap_group_generic_id {
|
||||||
"ingress_flow_action_drop"
|
"ingress_flow_action_drop"
|
||||||
#define DEVLINK_TRAP_GENERIC_NAME_EGRESS_FLOW_ACTION_DROP \
|
#define DEVLINK_TRAP_GENERIC_NAME_EGRESS_FLOW_ACTION_DROP \
|
||||||
"egress_flow_action_drop"
|
"egress_flow_action_drop"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_STP \
|
||||||
|
"stp"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_LACP \
|
||||||
|
"lacp"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_LLDP \
|
||||||
|
"lldp"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_IGMP_QUERY \
|
||||||
|
"igmp_query"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_IGMP_V1_REPORT \
|
||||||
|
"igmp_v1_report"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_IGMP_V2_REPORT \
|
||||||
|
"igmp_v2_report"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_IGMP_V3_REPORT \
|
||||||
|
"igmp_v3_report"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_IGMP_V2_LEAVE \
|
||||||
|
"igmp_v2_leave"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_MLD_QUERY \
|
||||||
|
"mld_query"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_MLD_V1_REPORT \
|
||||||
|
"mld_v1_report"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_MLD_V2_REPORT \
|
||||||
|
"mld_v2_report"
|
||||||
|
#define DEVLINK_TRAP_GENERIC_NAME_MLD_V1_DONE \
|
||||||
|
"mld_v1_done"
|
||||||
|
|
||||||
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_L2_DROPS \
|
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_L2_DROPS \
|
||||||
"l2_drops"
|
"l2_drops"
|
||||||
|
@ -739,6 +779,14 @@ enum devlink_trap_group_generic_id {
|
||||||
"tunnel_drops"
|
"tunnel_drops"
|
||||||
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_ACL_DROPS \
|
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_ACL_DROPS \
|
||||||
"acl_drops"
|
"acl_drops"
|
||||||
|
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_STP \
|
||||||
|
"stp"
|
||||||
|
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_LACP \
|
||||||
|
"lacp"
|
||||||
|
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_LLDP \
|
||||||
|
"lldp"
|
||||||
|
#define DEVLINK_TRAP_GROUP_GENERIC_NAME_MC_SNOOPING \
|
||||||
|
"mc_snooping"
|
||||||
|
|
||||||
#define DEVLINK_TRAP_GENERIC(_type, _init_action, _id, _group_id, \
|
#define DEVLINK_TRAP_GENERIC(_type, _init_action, _id, _group_id, \
|
||||||
_metadata_cap) \
|
_metadata_cap) \
|
||||||
|
|
|
@ -8495,6 +8495,18 @@ static const struct devlink_trap devlink_trap_generic[] = {
|
||||||
DEVLINK_TRAP(OVERLAY_SMAC_MC, DROP),
|
DEVLINK_TRAP(OVERLAY_SMAC_MC, DROP),
|
||||||
DEVLINK_TRAP(INGRESS_FLOW_ACTION_DROP, DROP),
|
DEVLINK_TRAP(INGRESS_FLOW_ACTION_DROP, DROP),
|
||||||
DEVLINK_TRAP(EGRESS_FLOW_ACTION_DROP, DROP),
|
DEVLINK_TRAP(EGRESS_FLOW_ACTION_DROP, DROP),
|
||||||
|
DEVLINK_TRAP(STP, CONTROL),
|
||||||
|
DEVLINK_TRAP(LACP, CONTROL),
|
||||||
|
DEVLINK_TRAP(LLDP, CONTROL),
|
||||||
|
DEVLINK_TRAP(IGMP_QUERY, CONTROL),
|
||||||
|
DEVLINK_TRAP(IGMP_V1_REPORT, CONTROL),
|
||||||
|
DEVLINK_TRAP(IGMP_V2_REPORT, CONTROL),
|
||||||
|
DEVLINK_TRAP(IGMP_V3_REPORT, CONTROL),
|
||||||
|
DEVLINK_TRAP(IGMP_V2_LEAVE, CONTROL),
|
||||||
|
DEVLINK_TRAP(MLD_QUERY, CONTROL),
|
||||||
|
DEVLINK_TRAP(MLD_V1_REPORT, CONTROL),
|
||||||
|
DEVLINK_TRAP(MLD_V2_REPORT, CONTROL),
|
||||||
|
DEVLINK_TRAP(MLD_V1_DONE, CONTROL),
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEVLINK_TRAP_GROUP(_id) \
|
#define DEVLINK_TRAP_GROUP(_id) \
|
||||||
|
@ -8510,6 +8522,10 @@ static const struct devlink_trap_group devlink_trap_group_generic[] = {
|
||||||
DEVLINK_TRAP_GROUP(BUFFER_DROPS),
|
DEVLINK_TRAP_GROUP(BUFFER_DROPS),
|
||||||
DEVLINK_TRAP_GROUP(TUNNEL_DROPS),
|
DEVLINK_TRAP_GROUP(TUNNEL_DROPS),
|
||||||
DEVLINK_TRAP_GROUP(ACL_DROPS),
|
DEVLINK_TRAP_GROUP(ACL_DROPS),
|
||||||
|
DEVLINK_TRAP_GROUP(STP),
|
||||||
|
DEVLINK_TRAP_GROUP(LACP),
|
||||||
|
DEVLINK_TRAP_GROUP(LLDP),
|
||||||
|
DEVLINK_TRAP_GROUP(MC_SNOOPING),
|
||||||
};
|
};
|
||||||
|
|
||||||
static int devlink_trap_generic_verify(const struct devlink_trap *trap)
|
static int devlink_trap_generic_verify(const struct devlink_trap *trap)
|
||||||
|
|
Loading…
Reference in New Issue