Skip to content

Commit fc53b4a

Browse files
pjvuurendavem330
authored andcommitted
nfp: add IPv6 ttl and tos match offloading support
Previously matching on IPv6 ttl and tos fields were not offloaded. This patch enables offloading IPv6 ttl and tos as match fields. Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent a1e9203 commit fc53b4a

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

drivers/net/ethernet/netronome/nfp/flower/match.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ nfp_flower_compile_ipv6(struct nfp_flower_ipv6 *frame,
194194
struct flow_dissector_key_ipv6_addrs *addr;
195195
struct flow_dissector_key_basic *basic;
196196

197-
/* Wildcard LABEL/TOS/TTL for now. */
198197
memset(frame, 0, sizeof(struct nfp_flower_ipv6));
199198

200199
if (dissector_uses_key(flow->dissector,
@@ -212,6 +211,16 @@ nfp_flower_compile_ipv6(struct nfp_flower_ipv6 *frame,
212211
target);
213212
frame->proto = basic->ip_proto;
214213
}
214+
215+
if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_IP)) {
216+
struct flow_dissector_key_ip *flow_ip;
217+
218+
flow_ip = skb_flow_dissector_target(flow->dissector,
219+
FLOW_DISSECTOR_KEY_IP,
220+
target);
221+
frame->tos = flow_ip->tos;
222+
frame->ttl = flow_ip->ttl;
223+
}
215224
}
216225

217226
static void

drivers/net/ethernet/netronome/nfp/flower/offload.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls,
135135
{
136136
struct flow_dissector_key_basic *mask_basic = NULL;
137137
struct flow_dissector_key_basic *key_basic = NULL;
138-
struct flow_dissector_key_ip *mask_ip = NULL;
139138
u32 key_layer_two;
140139
u8 key_layer;
141140
int key_size;
@@ -207,11 +206,6 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls,
207206
flow->key);
208207
}
209208

210-
if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_IP))
211-
mask_ip = skb_flow_dissector_target(flow->dissector,
212-
FLOW_DISSECTOR_KEY_IP,
213-
flow->mask);
214-
215209
if (mask_basic && mask_basic->n_proto) {
216210
/* Ethernet type is present in the key. */
217211
switch (key_basic->n_proto) {
@@ -221,10 +215,6 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls,
221215
break;
222216

223217
case cpu_to_be16(ETH_P_IPV6):
224-
if (mask_ip && mask_ip->tos)
225-
return -EOPNOTSUPP;
226-
if (mask_ip && mask_ip->ttl)
227-
return -EOPNOTSUPP;
228218
key_layer |= NFP_FLOWER_LAYER_IPV6;
229219
key_size += sizeof(struct nfp_flower_ipv6);
230220
break;

0 commit comments

Comments
 (0)