mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 14:56:43 +07:00
mlxsw: spectrum_flow: Promote binder-type dispatch to spectrum.c
Two RED qevents have been introduced recently. From the point of view of a driver, qevents are simply blocks with unusual binder types. However they need to be handled by different logic than ACL-like flows. Thus rename mlxsw_sp_setup_tc_block() to mlxsw_sp_setup_tc_block_clsact() and move the binder-type dispatch from there to spectrum.c into a new function of the original name. The new dispatcher is easier to extend with new binder types. Signed-off-by: Petr Machata <petrm@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b50f60a0c4
commit
f7a439cbf1
@ -1329,6 +1329,19 @@ static int mlxsw_sp_port_kill_vid(struct net_device *dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct flow_block_offload *f)
|
||||
{
|
||||
switch (f->binder_type) {
|
||||
case FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS:
|
||||
return mlxsw_sp_setup_tc_block_clsact(mlxsw_sp_port, f, true);
|
||||
case FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS:
|
||||
return mlxsw_sp_setup_tc_block_clsact(mlxsw_sp_port, f, false);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
|
||||
static int mlxsw_sp_setup_tc(struct net_device *dev, enum tc_setup_type type,
|
||||
void *type_data)
|
||||
{
|
||||
|
@ -767,8 +767,9 @@ mlxsw_sp_flow_block_is_mixed_bound(const struct mlxsw_sp_flow_block *block)
|
||||
struct mlxsw_sp_flow_block *mlxsw_sp_flow_block_create(struct mlxsw_sp *mlxsw_sp,
|
||||
struct net *net);
|
||||
void mlxsw_sp_flow_block_destroy(struct mlxsw_sp_flow_block *block);
|
||||
int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct flow_block_offload *f);
|
||||
int mlxsw_sp_setup_tc_block_clsact(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct flow_block_offload *f,
|
||||
bool ingress);
|
||||
|
||||
/* spectrum_acl.c */
|
||||
struct mlxsw_sp_acl_ruleset;
|
||||
|
@ -277,18 +277,10 @@ static void mlxsw_sp_setup_tc_block_unbind(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
}
|
||||
}
|
||||
|
||||
int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct flow_block_offload *f)
|
||||
int mlxsw_sp_setup_tc_block_clsact(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct flow_block_offload *f,
|
||||
bool ingress)
|
||||
{
|
||||
bool ingress;
|
||||
|
||||
if (f->binder_type == FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
|
||||
ingress = true;
|
||||
else if (f->binder_type == FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS)
|
||||
ingress = false;
|
||||
else
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
f->driver_block_list = &mlxsw_sp_block_cb_list;
|
||||
|
||||
switch (f->command) {
|
||||
|
Loading…
Reference in New Issue
Block a user