net/mlx5e: Support header re-write of partial fields in TC pedit offload
authorOr Gerlitz <ogerlitz@mellanox.com>
Wed, 10 May 2017 17:14:16 +0000 (20:14 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 8 Jun 2017 11:12:00 +0000 (14:12 +0300)
commit2b64beba025109f64e688ae675985bbf72196b8c
treeb1b2c47b129ed3b8a26761b2e21cabe2b0381e10
parent3099eb5a8ee2e46d57302932165fe4f86232a812
net/mlx5e: Support header re-write of partial fields in TC pedit offload

Using a per field mask field, the TC pedit action supports modifying
partial fields. E.g if using the TC tool, the following example would
make the kernel to only re-write two bytes of the src ip address:

tc filter add dev enp1s0 protocol ip parent ffff: prio 30
flower skip_sw ip_proto udp dst_port 8001
action pedit ex munge ip src set 10.1.0.0 retain 0xffff0000

We add driver support for offload these partial re-writes, by setting
the per FW action offset-in-field and length-from-offset attributes.

The 1st bit set in the mask specifies both the offset and the right
shift to apply on the value such that the 1st bit which needs to be
set will reside in bit 0 of the FW data field.

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Paul Blakey <paulb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c