mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-07 17:19:02 +00:00
ice: ignore protocol field in GTP offload
[ Upstream commitd4ea6f6373
] Commit34a897758e
("ice: Add support for inner etype in switchdev") added the ability to match on inner ethertype. A side effect of that change is that it is now impossible to add some filters for protocols which do not contain inner ethtype field. tc requires the protocol field to be specified when providing certain other options, e.g. src_ip. This is a problem in case of GTP - when user wants to specify e.g. src_ip, they also need to specify protocol in tc command (otherwise tc fails with: Illegal "src_ip"). Because GTP is a tunnel, the protocol field is treated as inner protocol. GTP does not contain inner ethtype field and the filter cannot be added. To fix this, ignore the ethertype field in case of GTP filters. Fixes:9a225f81f5
("ice: Support GTP-U and GTP-C offload in switchdev") Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com> Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
2c26478434
commit
fe3d9630f0
1 changed files with 3 additions and 1 deletions
|
@ -994,7 +994,9 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi,
|
|||
n_proto_key = ntohs(match.key->n_proto);
|
||||
n_proto_mask = ntohs(match.mask->n_proto);
|
||||
|
||||
if (n_proto_key == ETH_P_ALL || n_proto_key == 0) {
|
||||
if (n_proto_key == ETH_P_ALL || n_proto_key == 0 ||
|
||||
fltr->tunnel_type == TNL_GTPU ||
|
||||
fltr->tunnel_type == TNL_GTPC) {
|
||||
n_proto_key = 0;
|
||||
n_proto_mask = 0;
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue