On 8/30/17 6:03 AM, Jiri Pirko wrote:
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c 
> b/drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
> index 5924e97..75da2ef 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
> @@ -386,8 +386,19 @@ mlxsw_sp_dpipe_table_host_match_action_prepare(struct 
> devlink_dpipe_match *match
>  
>       match = &matches[MLXSW_SP_DPIPE_TABLE_HOST_MATCH_DIP];
>       match->type = DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT;
> -     match->header = &devlink_dpipe_header_ipv4;
> -     match->field_id = DEVLINK_DPIPE_FIELD_IPV4_DST_IP;
> +     switch (type) {
> +     case AF_INET:
> +             match->header = &devlink_dpipe_header_ipv4;
> +             match->field_id = DEVLINK_DPIPE_FIELD_IPV4_DST_IP;
> +             break;
> +     case AF_INET6:
> +             match->header = &devlink_dpipe_header_ipv6;
> +             match->field_id = DEVLINK_DPIPE_FIELD_IPV6_DST_IP;
> +             break;
> +     default:
> +             WARN_ON(1);

Here as well.

> +             return;
> +     }
>  
>       action->type = DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY;
>       action->header = &devlink_dpipe_header_ethernet;
> @@ -424,7 +435,18 @@ mlxsw_sp_dpipe_table_host_entry_prepare(struct 
> devlink_dpipe_entry *entry,
>       match_value = &match_values[MLXSW_SP_DPIPE_TABLE_HOST_MATCH_DIP];
>  
>       match_value->match = match;
> -     match_value->value_size = sizeof(u32);
> +     switch (type) {
> +     case AF_INET:
> +             match_value->value_size = sizeof(u32);
> +             break;
> +     case AF_INET6:
> +             match_value->value_size = sizeof(struct in6_addr);
> +             break;
> +     default:
> +             WARN_ON(1);

And here. WARN_ON is overkill

> +             return -EINVAL;
> +     }
> +
>       match_value->value = kmalloc(match_value->value_size, GFP_KERNEL);
>       if (!match_value->value)
>               return -ENOMEM;

Reply via email to