This is the result of this discussion: https://lkml.org/lkml/2020/6/2/203
RFC because there are still some TODO items: - I haven't added VCAP fields to Ocelot and to Seville, mostly because I don't understand how to derive the ENTRY_WIDTH setting. Would appreciate some help there. I've only tested this on Felix. - The selftests script is rather bare bones, not sure what to add to it to make it more comprehensive. Understanding that this is the go-to reference for any user, it would need to be pretty clear how the thing can be used. Comments appreciated. Vladimir Oltean (11): net: mscc: ocelot: introduce a new ocelot_target_{read,write} API net: mscc: ocelot: generalize existing code for VCAP net: mscc: ocelot: offload multiple tc-flower actions in same rule net: mscc: ocelot: add a new ocelot_vcap_block_find_filter_by_id function net: mscc: ocelot: look up the filters in flower_stats() and flower_destroy() net: mscc: ocelot: introduce conversion helpers between port and netdev net: mscc: ocelot: create TCAM skeleton from tc filter chains net: mscc: ocelot: only install TCAM entries into a specific lookup and PAG net: mscc: ocelot: relax ocelot_exclusive_mac_etype_filter_rules() net: mscc: ocelot: offload redirect action to VCAP IS2 selftests: ocelot: add some example VCAP IS1, IS2 and ES0 tc offloads Xiaoliang Yang (3): net: mscc: ocelot: change vcap to be compatible with full and quad entry net: mscc: ocelot: offload ingress skbedit and vlan actions to VCAP IS1 net: mscc: ocelot: offload egress VLAN rewriting to VCAP ES0 MAINTAINERS | 1 + drivers/net/dsa/ocelot/felix.c | 24 +- drivers/net/dsa/ocelot/felix.h | 5 +- drivers/net/dsa/ocelot/felix_vsc9959.c | 188 ++++- drivers/net/dsa/ocelot/seville_vsc9953.c | 27 +- drivers/net/ethernet/mscc/ocelot.c | 11 + drivers/net/ethernet/mscc/ocelot.h | 2 + drivers/net/ethernet/mscc/ocelot_flower.c | 485 ++++++++++- drivers/net/ethernet/mscc/ocelot_io.c | 17 + drivers/net/ethernet/mscc/ocelot_net.c | 30 + drivers/net/ethernet/mscc/ocelot_s2.h | 64 -- drivers/net/ethernet/mscc/ocelot_vcap.c | 794 ++++++++++++------ drivers/net/ethernet/mscc/ocelot_vcap.h | 98 ++- drivers/net/ethernet/mscc/ocelot_vsc7514.c | 27 +- include/soc/mscc/ocelot.h | 43 +- include/soc/mscc/ocelot_vcap.h | 200 ++++- .../drivers/net/ocelot/test_tc_chains.sh | 179 ++++ 17 files changed, 1800 insertions(+), 395 deletions(-) delete mode 100644 drivers/net/ethernet/mscc/ocelot_s2.h create mode 100755 tools/testing/selftests/drivers/net/ocelot/test_tc_chains.sh -- 2.25.1