diff options
author | David S. Miller <davem@davemloft.net> | 2019-07-08 15:50:06 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-07-08 15:50:06 -0700 |
commit | 11aef3c6da1712fa3847599196f78f406814d2f1 (patch) | |
tree | 73a9b16d4347d2f9a3e65bd249ac7cd5daa8d635 | |
parent | Merge branch 'vsock-virtio-fixes' (diff) | |
parent | net: mvpp2: cls: Add support for ETHER_FLOW (diff) | |
download | linux-dev-11aef3c6da1712fa3847599196f78f406814d2f1.tar.xz linux-dev-11aef3c6da1712fa3847599196f78f406814d2f1.zip |
Merge branch 'mvpp2-cls-ether'
Maxime Chevallier says:
====================
net: mvpp2: Add classification based on the ETHER flow
This series adds support for classification of the ETHER flow in the
mvpp2 driver.
The first patch allows detecting when a user specifies a flow_type that
isn't supported by the driver, while the second adds support for this
flow_type by adding the mapping between the ETHER_FLOW enum value and
the relevant classifier flow entries.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c index b195fb5d61f4..35478cba2aa5 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c @@ -548,6 +548,8 @@ void mvpp2_cls_c2_read(struct mvpp2 *priv, int index, static int mvpp2_cls_ethtool_flow_to_type(int flow_type) { switch (flow_type & ~(FLOW_EXT | FLOW_MAC_EXT | FLOW_RSS)) { + case ETHER_FLOW: + return MVPP22_FLOW_ETHERNET; case TCP_V4_FLOW: return MVPP22_FLOW_TCP4; case TCP_V6_FLOW: @@ -1373,6 +1375,10 @@ int mvpp2_ethtool_cls_rule_ins(struct mvpp2_port *port, efs->rule.flow = ethtool_rule->rule; efs->rule.flow_type = mvpp2_cls_ethtool_flow_to_type(info->fs.flow_type); + if (efs->rule.flow_type < 0) { + ret = efs->rule.flow_type; + goto clean_rule; + } ret = mvpp2_cls_rfs_parse_rule(&efs->rule); if (ret) |