mlxsw: Add irif and erif disabled traps
IRIF_DISABLED and ERIF_DISABLED are driver specific traps. Packets are dropped for these reasons when they need to be routed through/from existing router interfaces (RIF) which are disabled. Add devlink driver-specific traps and mlxsw trap IDs used to report these traps. Signed-off-by: Amit Cohen <amitc@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
95ae2d1d11
commit
5b05162160
@ -234,6 +234,7 @@ links to the description of driver-specific traps registered by various device
|
||||
drivers:
|
||||
|
||||
* :doc:`netdevsim`
|
||||
* :doc:`mlxsw`
|
||||
|
||||
Generic Packet Trap Groups
|
||||
==========================
|
||||
|
@ -57,3 +57,25 @@ The ``mlxsw`` driver reports the following versions
|
||||
* - ``fw.version``
|
||||
- running
|
||||
- Three digit firmware version
|
||||
|
||||
Driver-specific Traps
|
||||
=====================
|
||||
|
||||
.. list-table:: List of Driver-specific Traps Registered by ``mlxsw``
|
||||
:widths: 5 5 90
|
||||
|
||||
* - Name
|
||||
- Type
|
||||
- Description
|
||||
* - ``irif_disabled``
|
||||
- ``drop``
|
||||
- Traps packets that the device decided to drop because they need to be
|
||||
routed from a disabled router interface (RIF). This can happen during
|
||||
RIF dismantle, when the RIF is first disabled before being removed
|
||||
completely
|
||||
* - ``erif_disabled``
|
||||
- ``drop``
|
||||
- Traps packets that the device decided to drop because they need to be
|
||||
routed through a disabled router interface (RIF). This can happen during
|
||||
RIF dismantle, when the RIF is first disabled before being removed
|
||||
completely
|
||||
|
@ -9,6 +9,20 @@
|
||||
#include "reg.h"
|
||||
#include "spectrum.h"
|
||||
|
||||
/* All driver-specific traps must be documented in
|
||||
* Documentation/networking/devlink/mlxsw.rst
|
||||
*/
|
||||
enum {
|
||||
DEVLINK_MLXSW_TRAP_ID_BASE = DEVLINK_TRAP_GENERIC_ID_MAX,
|
||||
DEVLINK_MLXSW_TRAP_ID_IRIF_DISABLED,
|
||||
DEVLINK_MLXSW_TRAP_ID_ERIF_DISABLED,
|
||||
};
|
||||
|
||||
#define DEVLINK_MLXSW_TRAP_NAME_IRIF_DISABLED \
|
||||
"irif_disabled"
|
||||
#define DEVLINK_MLXSW_TRAP_NAME_ERIF_DISABLED \
|
||||
"erif_disabled"
|
||||
|
||||
#define MLXSW_SP_TRAP_METADATA DEVLINK_TRAP_METADATA_TYPE_F_IN_PORT
|
||||
|
||||
static void mlxsw_sp_rx_drop_listener(struct sk_buff *skb, u8 local_port,
|
||||
@ -21,6 +35,12 @@ static void mlxsw_sp_rx_exception_listener(struct sk_buff *skb, u8 local_port,
|
||||
DEVLINK_TRAP_GROUP_GENERIC(_group_id), \
|
||||
MLXSW_SP_TRAP_METADATA)
|
||||
|
||||
#define MLXSW_SP_TRAP_DRIVER_DROP(_id, _group_id) \
|
||||
DEVLINK_TRAP_DRIVER(DROP, DROP, DEVLINK_MLXSW_TRAP_ID_##_id, \
|
||||
DEVLINK_MLXSW_TRAP_NAME_##_id, \
|
||||
DEVLINK_TRAP_GROUP_GENERIC(_group_id), \
|
||||
MLXSW_SP_TRAP_METADATA)
|
||||
|
||||
#define MLXSW_SP_TRAP_EXCEPTION(_id, _group_id) \
|
||||
DEVLINK_TRAP_GENERIC(EXCEPTION, TRAP, _id, \
|
||||
DEVLINK_TRAP_GROUP_GENERIC(_group_id), \
|
||||
@ -58,6 +78,8 @@ static struct devlink_trap mlxsw_sp_traps_arr[] = {
|
||||
MLXSW_SP_TRAP_EXCEPTION(UNRESOLVED_NEIGH, L3_DROPS),
|
||||
MLXSW_SP_TRAP_EXCEPTION(IPV4_LPM_UNICAST_MISS, L3_DROPS),
|
||||
MLXSW_SP_TRAP_EXCEPTION(IPV6_LPM_UNICAST_MISS, L3_DROPS),
|
||||
MLXSW_SP_TRAP_DRIVER_DROP(IRIF_DISABLED, L3_DROPS),
|
||||
MLXSW_SP_TRAP_DRIVER_DROP(ERIF_DISABLED, L3_DROPS),
|
||||
};
|
||||
|
||||
static struct mlxsw_listener mlxsw_sp_listeners_arr[] = {
|
||||
@ -90,6 +112,8 @@ static struct mlxsw_listener mlxsw_sp_listeners_arr[] = {
|
||||
TRAP_EXCEPTION_TO_CPU),
|
||||
MLXSW_SP_RXL_EXCEPTION(DISCARD_ROUTER_LPM6, ROUTER_EXP,
|
||||
TRAP_EXCEPTION_TO_CPU),
|
||||
MLXSW_SP_RXL_DISCARD(ROUTER_IRIF_EN, L3_DISCARDS),
|
||||
MLXSW_SP_RXL_DISCARD(ROUTER_ERIF_EN, L3_DISCARDS),
|
||||
};
|
||||
|
||||
/* Mapping between hardware trap and devlink trap. Multiple hardware traps can
|
||||
@ -123,6 +147,8 @@ static u16 mlxsw_sp_listener_devlink_map[] = {
|
||||
DEVLINK_TRAP_GENERIC_ID_UNRESOLVED_NEIGH,
|
||||
DEVLINK_TRAP_GENERIC_ID_IPV4_LPM_UNICAST_MISS,
|
||||
DEVLINK_TRAP_GENERIC_ID_IPV6_LPM_UNICAST_MISS,
|
||||
DEVLINK_MLXSW_TRAP_ID_IRIF_DISABLED,
|
||||
DEVLINK_MLXSW_TRAP_ID_ERIF_DISABLED,
|
||||
};
|
||||
|
||||
static int mlxsw_sp_rx_listener(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
|
||||
|
@ -88,6 +88,8 @@ enum {
|
||||
MLXSW_TRAP_ID_DISCARD_ING_ROUTER_IPV4_SIP_BC = 0x16A,
|
||||
MLXSW_TRAP_ID_DISCARD_ING_ROUTER_IPV4_DIP_LOCAL_NET = 0x16B,
|
||||
MLXSW_TRAP_ID_DISCARD_ING_ROUTER_DIP_LINK_LOCAL = 0x16C,
|
||||
MLXSW_TRAP_ID_DISCARD_ROUTER_IRIF_EN = 0x178,
|
||||
MLXSW_TRAP_ID_DISCARD_ROUTER_ERIF_EN = 0x179,
|
||||
MLXSW_TRAP_ID_DISCARD_ROUTER_LPM4 = 0x17B,
|
||||
MLXSW_TRAP_ID_DISCARD_ROUTER_LPM6 = 0x17C,
|
||||
MLXSW_TRAP_ID_DISCARD_IPV6_MC_DIP_RESERVED_SCOPE = 0x1B0,
|
||||
|
Loading…
Reference in New Issue
Block a user