On 11/27/2019 5:55 PM, Marcelo Ricardo Leitner wrote:
> On Wed, Nov 27, 2019 at 02:55:16PM +0200, Roi Dayan wrote:
>> @@ -1367,7 +1387,7 @@ netdev_tc_flow_put(struct netdev *netdev, struct match 
>> *match,
>>       uint32_t block_id = 0;
>>       struct nlattr *nla;
>>       struct tc_id id;
>> -    uint32_t chain;
>> +    uint32_t chain = 0;
>>       size_t left;
>>       int prio = 0;
>>       int ifindex;
>> @@ -1382,7 +1402,13 @@ netdev_tc_flow_put(struct netdev *netdev, struct 
>> match *match,
>>   
>>       memset(&flower, 0, sizeof flower);
>>   
>> -    chain = key->recirc_id;
>> +    if (key->recirc_id) {
>> +        if (recirc_id_sharing_support(info->dpif)) {
>> +            chain = key->recirc_id;
>> +        } else {
>> +            return EOPNOTSUPP;
>> +        }
>> +    }
>>       mask->recirc_id = 0;
> It may be a personal preference, but I find this easier to read:
>
>       chain = key->recirc_id;
>       mask->recirc_id = 0;
> +    if (unlikely(chain && !recirc_id_sharing_support(info->dpif))) {
> +        return EOPNOTSUPP;
> +    }
>
> As it avoids the cascading conditions. Just a suggestion..

Will do.

This reminds me I should probably move this patch before the chains 
support patch.

Thanks for the review. will post V3 soon.

>
>>   
>>       if (flow_tnl_dst_is_set(&key->tunnel)) {
>> @@ -1630,7 +1656,8 @@ netdev_tc_flow_put(struct netdev *netdev, struct match 
>> *match,
>>           action = &flower.actions[flower.action_count];
>>           if (nl_attr_type(nla) == OVS_ACTION_ATTR_OUTPUT) {
>>               odp_port_t port = nl_attr_get_odp_port(nla);
>> -            struct netdev *outdev = netdev_ports_get(port, 
>> info->dpif_class);
>> +            struct netdev *outdev = netdev_ports_get(port,
>> +                                                     
>> info->dpif->dpif_class);
>>   
>>               action->out.ifindex_out = netdev_get_ifindex(outdev);
>>               action->out.ingress = 
>> is_internal_port(netdev_get_type(outdev));
>> @@ -1696,6 +1723,9 @@ netdev_tc_flow_put(struct netdev *netdev, struct match 
>> *match,
>>               action->ct.clear = true;
>>               flower.action_count++;
>>           } else if (nl_attr_type(nla) == OVS_ACTION_ATTR_RECIRC) {
>> +            if (!recirc_id_sharing_support(info->dpif)) {
>> +                return EOPNOTSUPP;
>> +            }
>>               action->type = TC_ACT_GOTO;
>>               action->chain = nl_attr_get_u32(nla);
>>               flower.action_count++;
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to