netfilter: flowtable: support for FLOW_ACTION_PPPOE_PUSH
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 24 Mar 2021 01:30:50 +0000 (02:30 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Mar 2021 19:48:39 +0000 (12:48 -0700)
Add a PPPoE push action if layer 2 protocol is ETH_P_PPP_SES to add
PPPoE flowtable hardware offload support.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netfilter/nf_flow_table_offload.c

index 9326ba7..7d0d128 100644 (file)
@@ -600,9 +600,18 @@ nf_flow_rule_route_common(struct net *net, const struct flow_offload *flow,
                        continue;
 
                entry = flow_action_entry_next(flow_rule);
-               entry->id = FLOW_ACTION_VLAN_PUSH;
-               entry->vlan.vid = other_tuple->encap[i].id;
-               entry->vlan.proto = other_tuple->encap[i].proto;
+
+               switch (other_tuple->encap[i].proto) {
+               case htons(ETH_P_PPP_SES):
+                       entry->id = FLOW_ACTION_PPPOE_PUSH;
+                       entry->pppoe.sid = other_tuple->encap[i].id;
+                       break;
+               case htons(ETH_P_8021Q):
+                       entry->id = FLOW_ACTION_VLAN_PUSH;
+                       entry->vlan.vid = other_tuple->encap[i].id;
+                       entry->vlan.proto = other_tuple->encap[i].proto;
+                       break;
+               }
        }
 
        return 0;