mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
net: dsa: clean up dsa_user_add_cls_matchall()
The body is a bit hard to read, hard to extend, and has duplicated conditions. Clean up the "if (many conditions) else if (many conditions, some of them repeated)" pattern by: - Moving the repeated conditions out - Replacing the repeated tests for the same variable with a switch/case - Moving the protocol check inside the dsa_user_add_cls_matchall_mirred() function call. This is pure refactoring, no logic has been changed, though some tests were reordered. The order does not matter - they are independent things to be tested for. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Link: https://patch.msgid.link/20241023135251.1752488-3-vladimir.oltean@nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
2748697225
commit
a0af7162cc
@ -1376,6 +1376,9 @@ dsa_user_add_cls_matchall_mirred(struct net_device *dev,
|
||||
struct dsa_port *to_dp;
|
||||
int err;
|
||||
|
||||
if (cls->common.protocol != htons(ETH_P_ALL))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (!ds->ops->port_mirror_add)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@ -1485,17 +1488,21 @@ static int dsa_user_add_cls_matchall(struct net_device *dev,
|
||||
struct tc_cls_matchall_offload *cls,
|
||||
bool ingress)
|
||||
{
|
||||
int err = -EOPNOTSUPP;
|
||||
const struct flow_action *action = &cls->rule->action;
|
||||
|
||||
if (cls->common.protocol == htons(ETH_P_ALL) &&
|
||||
flow_offload_has_one_action(&cls->rule->action) &&
|
||||
cls->rule->action.entries[0].id == FLOW_ACTION_MIRRED)
|
||||
err = dsa_user_add_cls_matchall_mirred(dev, cls, ingress);
|
||||
else if (flow_offload_has_one_action(&cls->rule->action) &&
|
||||
cls->rule->action.entries[0].id == FLOW_ACTION_POLICE)
|
||||
err = dsa_user_add_cls_matchall_police(dev, cls, ingress);
|
||||
if (!flow_offload_has_one_action(action))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return err;
|
||||
switch (action->entries[0].id) {
|
||||
case FLOW_ACTION_MIRRED:
|
||||
return dsa_user_add_cls_matchall_mirred(dev, cls, ingress);
|
||||
case FLOW_ACTION_POLICE:
|
||||
return dsa_user_add_cls_matchall_police(dev, cls, ingress);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static void dsa_user_del_cls_matchall(struct net_device *dev,
|
||||
|
Loading…
Reference in New Issue
Block a user