* [PATCH nf-next 1/3] netfilter: nft_payload: fix C-VLAN offload support
@ 2021-04-12 13:12 Pablo Neira Ayuso
2021-04-12 13:12 ` [PATCH nf-next 2/3] netfilter: nftables_offload: VLAN id needs host byteorder in flow dissector Pablo Neira Ayuso
2021-04-12 13:12 ` [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN Pablo Neira Ayuso
0 siblings, 2 replies; 5+ messages in thread
From: Pablo Neira Ayuso @ 2021-04-12 13:12 UTC (permalink / raw)
To: netfilter-devel; +Cc: wenxu
- add another struct flow_dissector_key_vlan for C-VLAN
- update layer 3 dependency to allow to match on IPv4/IPv6
Fixes: 89d8fd44abfb ("netfilter: nft_payload: add C-VLAN offload support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
include/net/netfilter/nf_tables_offload.h | 1 +
net/netfilter/nft_payload.c | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/net/netfilter/nf_tables_offload.h b/include/net/netfilter/nf_tables_offload.h
index 1d34fe154fe0..b4d080061399 100644
--- a/include/net/netfilter/nf_tables_offload.h
+++ b/include/net/netfilter/nf_tables_offload.h
@@ -45,6 +45,7 @@ struct nft_flow_key {
struct flow_dissector_key_ports tp;
struct flow_dissector_key_ip ip;
struct flow_dissector_key_vlan vlan;
+ struct flow_dissector_key_vlan cvlan;
struct flow_dissector_key_eth_addrs eth_addrs;
struct flow_dissector_key_meta meta;
} __aligned(BITS_PER_LONG / 8); /* Ensure that we can do comparisons as longs. */
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c
index cb1c8c231880..a990f37e0a60 100644
--- a/net/netfilter/nft_payload.c
+++ b/net/netfilter/nft_payload.c
@@ -241,7 +241,7 @@ static int nft_payload_offload_ll(struct nft_offload_ctx *ctx,
if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16)))
return -EOPNOTSUPP;
- NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, vlan,
+ NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, cvlan,
vlan_tci, sizeof(__be16), reg);
break;
case offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto) +
@@ -249,8 +249,9 @@ static int nft_payload_offload_ll(struct nft_offload_ctx *ctx,
if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16)))
return -EOPNOTSUPP;
- NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, vlan,
+ NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, cvlan,
vlan_tpid, sizeof(__be16), reg);
+ nft_offload_set_dependency(ctx, NFT_OFFLOAD_DEP_NETWORK);
break;
default:
return -EOPNOTSUPP;
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH nf-next 2/3] netfilter: nftables_offload: VLAN id needs host byteorder in flow dissector
2021-04-12 13:12 [PATCH nf-next 1/3] netfilter: nft_payload: fix C-VLAN offload support Pablo Neira Ayuso
@ 2021-04-12 13:12 ` Pablo Neira Ayuso
2021-04-12 13:12 ` [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN Pablo Neira Ayuso
1 sibling, 0 replies; 5+ messages in thread
From: Pablo Neira Ayuso @ 2021-04-12 13:12 UTC (permalink / raw)
To: netfilter-devel; +Cc: wenxu
The flow dissector representation expects the VLAN id in host byteorder.
Add the NFT_OFFLOAD_F_NETWORK2HOST flag to swap the bytes from nft_cmp.
Fixes: a82055af5959 ("netfilter: nft_payload: add VLAN offload support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
include/net/netfilter/nf_tables_offload.h | 11 +++++-
net/netfilter/nft_cmp.c | 41 +++++++++++++++++++++--
net/netfilter/nft_payload.c | 10 +++---
3 files changed, 55 insertions(+), 7 deletions(-)
diff --git a/include/net/netfilter/nf_tables_offload.h b/include/net/netfilter/nf_tables_offload.h
index b4d080061399..434a6158852f 100644
--- a/include/net/netfilter/nf_tables_offload.h
+++ b/include/net/netfilter/nf_tables_offload.h
@@ -4,11 +4,16 @@
#include <net/flow_offload.h>
#include <net/netfilter/nf_tables.h>
+enum nft_offload_reg_flags {
+ NFT_OFFLOAD_F_NETWORK2HOST = (1 << 0),
+};
+
struct nft_offload_reg {
u32 key;
u32 len;
u32 base_offset;
u32 offset;
+ u32 flags;
struct nft_data data;
struct nft_data mask;
};
@@ -72,13 +77,17 @@ struct nft_flow_rule *nft_flow_rule_create(struct net *net, const struct nft_rul
void nft_flow_rule_destroy(struct nft_flow_rule *flow);
int nft_flow_rule_offload_commit(struct net *net);
-#define NFT_OFFLOAD_MATCH(__key, __base, __field, __len, __reg) \
+#define NFT_OFFLOAD_MATCH_FLAGS(__key, __base, __field, __len, __reg, __flags) \
(__reg)->base_offset = \
offsetof(struct nft_flow_key, __base); \
(__reg)->offset = \
offsetof(struct nft_flow_key, __base.__field); \
(__reg)->len = __len; \
(__reg)->key = __key; \
+ (__reg)->flags = __flags;
+
+#define NFT_OFFLOAD_MATCH(__key, __base, __field, __len, __reg) \
+ NFT_OFFLOAD_MATCH_FLAGS(__key, __base, __field, __len, __reg, 0)
#define NFT_OFFLOAD_MATCH_EXACT(__key, __base, __field, __len, __reg) \
NFT_OFFLOAD_MATCH(__key, __base, __field, __len, __reg) \
diff --git a/net/netfilter/nft_cmp.c b/net/netfilter/nft_cmp.c
index eb6a43a180bb..47b6d05f1ae6 100644
--- a/net/netfilter/nft_cmp.c
+++ b/net/netfilter/nft_cmp.c
@@ -114,19 +114,56 @@ static int nft_cmp_dump(struct sk_buff *skb, const struct nft_expr *expr)
return -1;
}
+union nft_cmp_offload_data {
+ u16 val16;
+ u32 val32;
+ u64 val64;
+};
+
+static void nft_payload_n2h(union nft_cmp_offload_data *data,
+ const u8 *val, u32 len)
+{
+ switch (len) {
+ case 2:
+ data->val16 = ntohs(*((u16 *)val));
+ break;
+ case 4:
+ data->val32 = ntohl(*((u32 *)val));
+ break;
+ case 8:
+ data->val64 = be64_to_cpu(*((u64 *)val));
+ break;
+ default:
+ WARN_ON_ONCE(1);
+ break;
+ }
+}
+
static int __nft_cmp_offload(struct nft_offload_ctx *ctx,
struct nft_flow_rule *flow,
const struct nft_cmp_expr *priv)
{
struct nft_offload_reg *reg = &ctx->regs[priv->sreg];
+ union nft_cmp_offload_data _data, _datamask;
u8 *mask = (u8 *)&flow->match.mask;
u8 *key = (u8 *)&flow->match.key;
+ u8 *data, *datamask;
if (priv->op != NFT_CMP_EQ || priv->len > reg->len)
return -EOPNOTSUPP;
- memcpy(key + reg->offset, &priv->data, reg->len);
- memcpy(mask + reg->offset, ®->mask, reg->len);
+ if (reg->flags & NFT_OFFLOAD_F_NETWORK2HOST) {
+ nft_payload_n2h(&_data, (u8 *)&priv->data, reg->len);
+ nft_payload_n2h(&_datamask, (u8 *)®->mask, reg->len);
+ data = (u8 *)&_data;
+ datamask = (u8 *)&_datamask;
+ } else {
+ data = (u8 *)&priv->data;
+ datamask = (u8 *)®->mask;
+ }
+
+ memcpy(key + reg->offset, data, reg->len);
+ memcpy(mask + reg->offset, datamask, reg->len);
flow->match.dissector.used_keys |= BIT(reg->key);
flow->match.dissector.offset[reg->key] = reg->base_offset;
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c
index a990f37e0a60..501c5b24cc39 100644
--- a/net/netfilter/nft_payload.c
+++ b/net/netfilter/nft_payload.c
@@ -226,8 +226,9 @@ static int nft_payload_offload_ll(struct nft_offload_ctx *ctx,
if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16)))
return -EOPNOTSUPP;
- NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_VLAN, vlan,
- vlan_tci, sizeof(__be16), reg);
+ NFT_OFFLOAD_MATCH_FLAGS(FLOW_DISSECTOR_KEY_VLAN, vlan,
+ vlan_tci, sizeof(__be16), reg,
+ NFT_OFFLOAD_F_NETWORK2HOST);
break;
case offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto):
if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16)))
@@ -241,8 +242,9 @@ static int nft_payload_offload_ll(struct nft_offload_ctx *ctx,
if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16)))
return -EOPNOTSUPP;
- NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, cvlan,
- vlan_tci, sizeof(__be16), reg);
+ NFT_OFFLOAD_MATCH_FLAGS(FLOW_DISSECTOR_KEY_CVLAN, cvlan,
+ vlan_tci, sizeof(__be16), reg,
+ NFT_OFFLOAD_F_NETWORK2HOST);
break;
case offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto) +
sizeof(struct vlan_hdr):
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN
2021-04-12 13:12 [PATCH nf-next 1/3] netfilter: nft_payload: fix C-VLAN offload support Pablo Neira Ayuso
2021-04-12 13:12 ` [PATCH nf-next 2/3] netfilter: nftables_offload: VLAN id needs host byteorder in flow dissector Pablo Neira Ayuso
@ 2021-04-12 13:12 ` Pablo Neira Ayuso
2021-04-12 16:46 ` kernel test robot
1 sibling, 1 reply; 5+ messages in thread
From: Pablo Neira Ayuso @ 2021-04-12 13:12 UTC (permalink / raw)
To: netfilter-devel; +Cc: wenxu
The nftables offload parser sets FLOW_DISSECTOR_KEY_BASIC .n_proto to the
ethertype field in in the ethertype frame. However:
- FLOW_DISSECTOR_KEY_BASIC .n_proto field always stores either IPv4 or IPv6
ethertypes.
- FLOW_DISSECTOR_KEY_VLAN .vlan_tpid stores either the 802.1q and 802.1ad
ethertypes. Same as for C-VLAN.
This function adjusts the flow dissector to handle three scenarios:
1) FLOW_DISSECTOR_KEY_VLAN and FLOW_DISSECTOR_KEY_CVLAN are set. Then,
transfer the .n_proto field to FLOW_DISSECTOR_KEY_VLAN .tpid, and
FLOW_DISSECTOR_KEY_VLAN .tpid to FLOW_DISSECTOR_KEY_CVLAN .tpid.
Finally set .n_proto to FLOW_DISSECTOR_KEY_CVLAN .tpid.
2) FLOW_DISSECTOR_KEY_VLAN is set. Swap the .n_proto and the
FLOW_DISSECTOR_KEY_VLAN .tpid fields.
3) ethertype is set to 802.1q or 802.1ad, in this case, transfer the .n_proto
field to FLOW_DISSECTOR_KEY_VLAN .vlan_tpid.
Fixes: a82055af5959 ("netfilter: nft_payload: add VLAN offload support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nf_tables_offload.c | 41 +++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
index 43b56eff3b04..41bd6b67f92c 100644
--- a/net/netfilter/nf_tables_offload.c
+++ b/net/netfilter/nf_tables_offload.c
@@ -47,6 +47,45 @@ void nft_flow_rule_set_addr_type(struct nft_flow_rule *flow,
offsetof(struct nft_flow_key, control);
}
+struct nft_offload_ethertype {
+ __be16 value;
+ __be16 mask;
+};
+
+void nft_flow_rule_transfer_vlan(struct nft_offload_ctx *ctx,
+ struct nft_flow_rule *flow)
+{
+ struct nft_flow_match *match = &flow->match;
+ struct nft_offload_ethertype ethertype = {
+ .value = match->key.basic.n_proto,
+ .mask = match->mask.basic.n_proto,
+ };
+
+ if ((flow->match.dissector.used_keys &
+ (BIT(FLOW_DISSECTOR_KEY_VLAN) | BIT(FLOW_DISSECTOR_KEY_CVLAN))) ==
+ (BIT(FLOW_DISSECTOR_KEY_VLAN) | BIT(FLOW_DISSECTOR_KEY_CVLAN))) {
+ match->key.basic.n_proto = match->key.cvlan.vlan_tpid;
+ match->mask.basic.n_proto = match->mask.cvlan.vlan_tpid;
+ match->key.cvlan.vlan_tpid = match->key.vlan.vlan_tpid;
+ match->mask.cvlan.vlan_tpid = match->mask.vlan.vlan_tpid;
+ match->key.vlan.vlan_tpid = ethertype.value;
+ match->mask.vlan.vlan_tpid = ethertype.mask;
+ } else if (flow->match.dissector.used_keys & (BIT(FLOW_DISSECTOR_KEY_VLAN))) {
+ match->key.basic.n_proto = match->key.vlan.vlan_tpid;
+ match->mask.basic.n_proto = match->mask.vlan.vlan_tpid;
+ match->key.vlan.vlan_tpid = ethertype.value;
+ match->mask.vlan.vlan_tpid = ethertype.mask;
+ } else if (match->key.basic.n_proto == htons(ETH_P_8021Q) ||
+ match->key.basic.n_proto == htons(ETH_P_8021AD)) {
+ match->key.vlan.vlan_tpid = ethertype.value;
+ match->mask.vlan.vlan_tpid = ethertype.mask;
+ match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_VLAN);
+ match->key.basic.n_proto = 0;
+ match->mask.basic.n_proto = 0;
+ match->dissector.used_keys &= ~BIT(FLOW_DISSECTOR_KEY_BASIC);
+ }
+}
+
struct nft_flow_rule *nft_flow_rule_create(struct net *net,
const struct nft_rule *rule)
{
@@ -91,6 +130,8 @@ struct nft_flow_rule *nft_flow_rule_create(struct net *net,
expr = nft_expr_next(expr);
}
+ nft_flow_rule_transfer_vlan(ctx, flow);
+
flow->proto = ctx->dep.l3num;
kfree(ctx);
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN
2021-04-12 13:12 ` [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN Pablo Neira Ayuso
@ 2021-04-12 16:46 ` kernel test robot
0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2021-04-12 16:46 UTC (permalink / raw)
To: Pablo Neira Ayuso, netfilter-devel; +Cc: kbuild-all, wenxu
[-- Attachment #1: Type: text/plain, Size: 3371 bytes --]
Hi Pablo,
I love your patch! Perhaps something to improve:
[auto build test WARNING on nf-next/master]
url: https://github.com/0day-ci/linux/commits/Pablo-Neira-Ayuso/netfilter-nft_payload-fix-C-VLAN-offload-support/20210412-211319
base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/09978fe09a0a0b8a4dcdd065502b6bd73f1d3e5d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Pablo-Neira-Ayuso/netfilter-nft_payload-fix-C-VLAN-offload-support/20210412-211319
git checkout 09978fe09a0a0b8a4dcdd065502b6bd73f1d3e5d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> net/netfilter/nf_tables_offload.c:55:6: warning: no previous prototype for 'nft_flow_rule_transfer_vlan' [-Wmissing-prototypes]
55 | void nft_flow_rule_transfer_vlan(struct nft_offload_ctx *ctx,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/nft_flow_rule_transfer_vlan +55 net/netfilter/nf_tables_offload.c
54
> 55 void nft_flow_rule_transfer_vlan(struct nft_offload_ctx *ctx,
56 struct nft_flow_rule *flow)
57 {
58 struct nft_flow_match *match = &flow->match;
59 struct nft_offload_ethertype ethertype = {
60 .value = match->key.basic.n_proto,
61 .mask = match->mask.basic.n_proto,
62 };
63
64 if ((flow->match.dissector.used_keys &
65 (BIT(FLOW_DISSECTOR_KEY_VLAN) | BIT(FLOW_DISSECTOR_KEY_CVLAN))) ==
66 (BIT(FLOW_DISSECTOR_KEY_VLAN) | BIT(FLOW_DISSECTOR_KEY_CVLAN))) {
67 match->key.basic.n_proto = match->key.cvlan.vlan_tpid;
68 match->mask.basic.n_proto = match->mask.cvlan.vlan_tpid;
69 match->key.cvlan.vlan_tpid = match->key.vlan.vlan_tpid;
70 match->mask.cvlan.vlan_tpid = match->mask.vlan.vlan_tpid;
71 match->key.vlan.vlan_tpid = ethertype.value;
72 match->mask.vlan.vlan_tpid = ethertype.mask;
73 } else if (flow->match.dissector.used_keys & (BIT(FLOW_DISSECTOR_KEY_VLAN))) {
74 match->key.basic.n_proto = match->key.vlan.vlan_tpid;
75 match->mask.basic.n_proto = match->mask.vlan.vlan_tpid;
76 match->key.vlan.vlan_tpid = ethertype.value;
77 match->mask.vlan.vlan_tpid = ethertype.mask;
78 } else if (match->key.basic.n_proto == htons(ETH_P_8021Q) ||
79 match->key.basic.n_proto == htons(ETH_P_8021AD)) {
80 match->key.vlan.vlan_tpid = ethertype.value;
81 match->mask.vlan.vlan_tpid = ethertype.mask;
82 match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_VLAN);
83 match->key.basic.n_proto = 0;
84 match->mask.basic.n_proto = 0;
85 match->dissector.used_keys &= ~BIT(FLOW_DISSECTOR_KEY_BASIC);
86 }
87 }
88
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 59895 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN
@ 2021-04-12 16:46 ` kernel test robot
0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2021-04-12 16:46 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 3444 bytes --]
Hi Pablo,
I love your patch! Perhaps something to improve:
[auto build test WARNING on nf-next/master]
url: https://github.com/0day-ci/linux/commits/Pablo-Neira-Ayuso/netfilter-nft_payload-fix-C-VLAN-offload-support/20210412-211319
base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/09978fe09a0a0b8a4dcdd065502b6bd73f1d3e5d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Pablo-Neira-Ayuso/netfilter-nft_payload-fix-C-VLAN-offload-support/20210412-211319
git checkout 09978fe09a0a0b8a4dcdd065502b6bd73f1d3e5d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> net/netfilter/nf_tables_offload.c:55:6: warning: no previous prototype for 'nft_flow_rule_transfer_vlan' [-Wmissing-prototypes]
55 | void nft_flow_rule_transfer_vlan(struct nft_offload_ctx *ctx,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/nft_flow_rule_transfer_vlan +55 net/netfilter/nf_tables_offload.c
54
> 55 void nft_flow_rule_transfer_vlan(struct nft_offload_ctx *ctx,
56 struct nft_flow_rule *flow)
57 {
58 struct nft_flow_match *match = &flow->match;
59 struct nft_offload_ethertype ethertype = {
60 .value = match->key.basic.n_proto,
61 .mask = match->mask.basic.n_proto,
62 };
63
64 if ((flow->match.dissector.used_keys &
65 (BIT(FLOW_DISSECTOR_KEY_VLAN) | BIT(FLOW_DISSECTOR_KEY_CVLAN))) ==
66 (BIT(FLOW_DISSECTOR_KEY_VLAN) | BIT(FLOW_DISSECTOR_KEY_CVLAN))) {
67 match->key.basic.n_proto = match->key.cvlan.vlan_tpid;
68 match->mask.basic.n_proto = match->mask.cvlan.vlan_tpid;
69 match->key.cvlan.vlan_tpid = match->key.vlan.vlan_tpid;
70 match->mask.cvlan.vlan_tpid = match->mask.vlan.vlan_tpid;
71 match->key.vlan.vlan_tpid = ethertype.value;
72 match->mask.vlan.vlan_tpid = ethertype.mask;
73 } else if (flow->match.dissector.used_keys & (BIT(FLOW_DISSECTOR_KEY_VLAN))) {
74 match->key.basic.n_proto = match->key.vlan.vlan_tpid;
75 match->mask.basic.n_proto = match->mask.vlan.vlan_tpid;
76 match->key.vlan.vlan_tpid = ethertype.value;
77 match->mask.vlan.vlan_tpid = ethertype.mask;
78 } else if (match->key.basic.n_proto == htons(ETH_P_8021Q) ||
79 match->key.basic.n_proto == htons(ETH_P_8021AD)) {
80 match->key.vlan.vlan_tpid = ethertype.value;
81 match->mask.vlan.vlan_tpid = ethertype.mask;
82 match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_VLAN);
83 match->key.basic.n_proto = 0;
84 match->mask.basic.n_proto = 0;
85 match->dissector.used_keys &= ~BIT(FLOW_DISSECTOR_KEY_BASIC);
86 }
87 }
88
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 59895 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-04-12 16:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-12 13:12 [PATCH nf-next 1/3] netfilter: nft_payload: fix C-VLAN offload support Pablo Neira Ayuso
2021-04-12 13:12 ` [PATCH nf-next 2/3] netfilter: nftables_offload: VLAN id needs host byteorder in flow dissector Pablo Neira Ayuso
2021-04-12 13:12 ` [PATCH nf-next 3/3] netfilter: nftables_offload: special ethertype handling for VLAN Pablo Neira Ayuso
2021-04-12 16:46 ` kernel test robot
2021-04-12 16:46 ` kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.