mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 10:01:43 +00:00
Merge branch 'nfp-flower-bugs'
John Hurley says: ==================== Fix bugs in NFP flower match offload This patchset contains bug fixes for corner cases in the match fields of flower offloads. The patches ensure that flows that should not be supported are not (incorrectly) offloaded. These include rules that match on layer 3 and/or 4 data without specified ethernet or ip protocol fields. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
be4d2a5b07
@ -368,15 +368,12 @@ nfp_flower_calculate_key_layers(struct nfp_app *app,
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Other ethtype - we need check the masks for the
|
||||
* remainder of the key to ensure we can offload.
|
||||
*/
|
||||
if (nfp_flower_check_higher_than_mac(flow)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: non IPv4/IPv6 offload with L3/L4 matches not supported");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
break;
|
||||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: match on given EtherType is not supported");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
} else if (nfp_flower_check_higher_than_mac(flow)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: cannot match above L2 without specified EtherType");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (basic.mask && basic.mask->ip_proto) {
|
||||
@ -389,18 +386,15 @@ nfp_flower_calculate_key_layers(struct nfp_app *app,
|
||||
key_layer |= NFP_FLOWER_LAYER_TP;
|
||||
key_size += sizeof(struct nfp_flower_tp_ports);
|
||||
break;
|
||||
default:
|
||||
/* Other ip proto - we need check the masks for the
|
||||
* remainder of the key to ensure we can offload.
|
||||
*/
|
||||
if (nfp_flower_check_higher_than_l3(flow)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: unknown IP protocol with L4 matches not supported");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(key_layer & NFP_FLOWER_LAYER_TP) &&
|
||||
nfp_flower_check_higher_than_l3(flow)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: cannot match on L4 information without specified IP protocol type");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
|
||||
struct flow_match_tcp tcp;
|
||||
u32 tcp_flags;
|
||||
|
Loading…
Reference in New Issue
Block a user