diff mbox series

[net] mlxsw: spectrum_trap: Push Ethernet header before reporting trap

Message ID 20191017071103.28744-1-idosch@idosch.org
State Accepted
Delegated to: David Miller
Headers show
Series [net] mlxsw: spectrum_trap: Push Ethernet header before reporting trap | expand

Commit Message

Ido Schimmel Oct. 17, 2019, 7:11 a.m. UTC
From: Ido Schimmel <idosch@mellanox.com>

devlink maintains packets and bytes statistics for each trap. Since
eth_type_trans() was called to set the skb's protocol, the data pointer
no longer points to the start of the packet and the bytes accounting is
off by 14 bytes.

Fix this by pushing the skb's data pointer to the start of the packet.

Fixes: b5ce611fd96e ("mlxsw: spectrum: Add devlink-trap support")
Reported-by: Alex Kushnarov <alexanderk@mellanox.com>
Tested-by: Alex Kushnarov <alexanderk@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c | 1 +
 1 file changed, 1 insertion(+)

Comments

David Miller Oct. 18, 2019, 5:15 p.m. UTC | #1
From: Ido Schimmel <idosch@idosch.org>
Date: Thu, 17 Oct 2019 10:11:03 +0300

> From: Ido Schimmel <idosch@mellanox.com>
> 
> devlink maintains packets and bytes statistics for each trap. Since
> eth_type_trans() was called to set the skb's protocol, the data pointer
> no longer points to the start of the packet and the bytes accounting is
> off by 14 bytes.
> 
> Fix this by pushing the skb's data pointer to the start of the packet.
> 
> Fixes: b5ce611fd96e ("mlxsw: spectrum: Add devlink-trap support")
> Reported-by: Alex Kushnarov <alexanderk@mellanox.com>
> Tested-by: Alex Kushnarov <alexanderk@mellanox.com>
> Acked-by: Jiri Pirko <jiri@mellanox.com>
> Signed-off-by: Ido Schimmel <idosch@mellanox.com>

Applied, thanks.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
index 899450b28621..7c03b661ae7e 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
@@ -99,6 +99,7 @@  static void mlxsw_sp_rx_drop_listener(struct sk_buff *skb, u8 local_port,
 	devlink = priv_to_devlink(mlxsw_sp->core);
 	in_devlink_port = mlxsw_core_port_devlink_port_get(mlxsw_sp->core,
 							   local_port);
+	skb_push(skb, ETH_HLEN);
 	devlink_trap_report(devlink, skb, trap_ctx, in_devlink_port);
 	consume_skb(skb);
 }