net/sched: cls_flower: Add offload support using egress Hardware device
authorHadar Hen Zion <hadarh@mellanox.com>
Thu, 1 Dec 2016 12:06:37 +0000 (14:06 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 2 Dec 2016 18:28:37 +0000 (13:28 -0500)
commit7091d8c7055d7310339435ae3af2fb490a92524d
tree530dd68dfea5c36052d56c8d2527af8af4397889
parent255cb30425c0ced57d6d85f3e7cddb99b9576046
net/sched: cls_flower: Add offload support using egress Hardware device

In order to support hardware offloading when the device given by the tc
rule is different from the Hardware underline device, extract the mirred
(egress) device from the tc action when a filter is added, using the new
tc_action_ops, get_dev().

Flower caches the information about the mirred device and use it for
calling ndo_setup_tc in filter change, update stats and delete.

Calling ndo_setup_tc of the mirred (egress) device instead of the
ingress device will allow a resolution between the software ingress
device and the underline hardware device.

The resolution will take place inside the offloading driver using
'egress_device' flag added to tc_to_netdev struct which is provided to
the offloading driver.

Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
include/net/pkt_cls.h
net/sched/cls_api.c
net/sched/cls_flower.c