Skip to content

Commit 5a2e106

Browse files
jpirkodavem330
authored andcommitted
devlink: extend devlink_trap_report() to accept cookie and pass
Add cookie argument to devlink_trap_report() allowing driver to pass in the user cookie. Pass on the cookie down to drop monitor code. Signed-off-by: Jiri Pirko <[email protected]> Signed-off-by: Ido Schimmel <[email protected]> Reviewed-by: Jakub Kicinski <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 742b8cc commit 5a2e106

File tree

4 files changed

+15
-9
lines changed

4 files changed

+15
-9
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ static void mlxsw_sp_rx_drop_listener(struct sk_buff *skb, u8 local_port,
7171
in_devlink_port = mlxsw_core_port_devlink_port_get(mlxsw_sp->core,
7272
local_port);
7373
skb_push(skb, ETH_HLEN);
74-
devlink_trap_report(devlink, skb, trap_ctx, in_devlink_port);
74+
devlink_trap_report(devlink, skb, trap_ctx, in_devlink_port, NULL);
7575
consume_skb(skb);
7676
}
7777

@@ -95,7 +95,7 @@ static void mlxsw_sp_rx_exception_listener(struct sk_buff *skb, u8 local_port,
9595
in_devlink_port = mlxsw_core_port_devlink_port_get(mlxsw_sp->core,
9696
local_port);
9797
skb_push(skb, ETH_HLEN);
98-
devlink_trap_report(devlink, skb, trap_ctx, in_devlink_port);
98+
devlink_trap_report(devlink, skb, trap_ctx, in_devlink_port, NULL);
9999
skb_pull(skb, ETH_HLEN);
100100
skb->offload_fwd_mark = 1;
101101
netif_receive_skb(skb);

drivers/net/netdevsim/dev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ static void nsim_dev_trap_report(struct nsim_dev_port *nsim_dev_port)
385385
*/
386386
local_bh_disable();
387387
devlink_trap_report(devlink, skb, nsim_trap_item->trap_ctx,
388-
&nsim_dev_port->devlink_port);
388+
&nsim_dev_port->devlink_port, NULL);
389389
local_bh_enable();
390390
consume_skb(skb);
391391
}

include/net/devlink.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <linux/workqueue.h>
1717
#include <linux/refcount.h>
1818
#include <net/net_namespace.h>
19+
#include <net/flow_offload.h>
1920
#include <uapi/linux/devlink.h>
2021

2122
struct devlink_ops;
@@ -1050,9 +1051,9 @@ int devlink_traps_register(struct devlink *devlink,
10501051
void devlink_traps_unregister(struct devlink *devlink,
10511052
const struct devlink_trap *traps,
10521053
size_t traps_count);
1053-
void devlink_trap_report(struct devlink *devlink,
1054-
struct sk_buff *skb, void *trap_ctx,
1055-
struct devlink_port *in_devlink_port);
1054+
void devlink_trap_report(struct devlink *devlink, struct sk_buff *skb,
1055+
void *trap_ctx, struct devlink_port *in_devlink_port,
1056+
const struct flow_action_cookie *fa_cookie);
10561057
void *devlink_trap_ctx_priv(void *trap_ctx);
10571058

10581059
#if IS_ENABLED(CONFIG_NET_DEVLINK)

net/core/devlink.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8205,12 +8205,14 @@ devlink_trap_stats_update(struct devlink_stats __percpu *trap_stats,
82058205
static void
82068206
devlink_trap_report_metadata_fill(struct net_dm_hw_metadata *hw_metadata,
82078207
const struct devlink_trap_item *trap_item,
8208-
struct devlink_port *in_devlink_port)
8208+
struct devlink_port *in_devlink_port,
8209+
const struct flow_action_cookie *fa_cookie)
82098210
{
82108211
struct devlink_trap_group_item *group_item = trap_item->group_item;
82118212

82128213
hw_metadata->trap_group_name = group_item->group->name;
82138214
hw_metadata->trap_name = trap_item->trap->name;
8215+
hw_metadata->fa_cookie = fa_cookie;
82148216

82158217
spin_lock(&in_devlink_port->type_lock);
82168218
if (in_devlink_port->type == DEVLINK_PORT_TYPE_ETH)
@@ -8224,9 +8226,12 @@ devlink_trap_report_metadata_fill(struct net_dm_hw_metadata *hw_metadata,
82248226
* @skb: Trapped packet.
82258227
* @trap_ctx: Trap context.
82268228
* @in_devlink_port: Input devlink port.
8229+
* @fa_cookie: Flow action cookie. Could be NULL.
82278230
*/
82288231
void devlink_trap_report(struct devlink *devlink, struct sk_buff *skb,
8229-
void *trap_ctx, struct devlink_port *in_devlink_port)
8232+
void *trap_ctx, struct devlink_port *in_devlink_port,
8233+
const struct flow_action_cookie *fa_cookie)
8234+
82308235
{
82318236
struct devlink_trap_item *trap_item = trap_ctx;
82328237
struct net_dm_hw_metadata hw_metadata = {};
@@ -8235,7 +8240,7 @@ void devlink_trap_report(struct devlink *devlink, struct sk_buff *skb,
82358240
devlink_trap_stats_update(trap_item->group_item->stats, skb->len);
82368241

82378242
devlink_trap_report_metadata_fill(&hw_metadata, trap_item,
8238-
in_devlink_port);
8243+
in_devlink_port, fa_cookie);
82398244
net_dm_hw_report(skb, &hw_metadata);
82408245
}
82418246
EXPORT_SYMBOL_GPL(devlink_trap_report);

0 commit comments

Comments
 (0)