On 2023/10/02 20:41, Simon Horman wrote:
> + Mike Pattrick <mpatt...@redhat.com>
> 
> On Mon, Sep 25, 2023 at 06:09:00PM +0900, Nobuhiro MIKI wrote:
>> A conjunctive flow consists of two or more multiple flows with
>> conjunction actions. When input to the ofproto/trace command
>> matches a conjunctive flow, it outputs flows of all dimensions.
>>
>> Signed-off-by: Nobuhiro MIKI <nm...@yahoo-corp.jp>
>> ---
>> v3:
>> * Remove struct flow changes.
>> * Use struct 'cls_rule' instead of struct 'flow'.
>> * Add priority and id conditionals for 'soft' arrays.
>> * Use 'minimask' in struct 'cls_rule' as mask.
> 
> Hi Miki-san,
> 

Hi Simon-san,

Thanks for your review.

> I am not seeing minimask used in this patch.
Sorry, it was a mistake.
By the way, the test results seem to indicate that
the mask is working correctly in the trace output.

> 
>> * Use hmapx instead of ovs_list to store conj flows.
>> * Passe 'conj_flows' as an argument only when tracing.
> 
> Other than the minimask question above, it seems to me that
> Ilya's review of v2 has been addressed.
> 
> ...
> 
>> diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> 
> ...
> 
>> @@ -918,6 +941,8 @@ xlate_report_table(const struct xlate_ctx *ctx, struct 
>> rule_dpif *rule,
>>      ctx->xin->trace = &oftrace_report(ctx->xin->trace, OFT_TABLE,
>>                                        ds_cstr(&s))->subs;
>>      ds_destroy(&s);
>> +
>> +    xlate_report_conj_matches(ctx);
>>  }
>>  
>>  /* If tracing is enabled in 'ctx', adds an OFT_DETAIL trace node to 'ctx'
> 
>> @@ -4653,7 +4678,8 @@ xlate_table_action(struct xlate_ctx *ctx, ofp_port_t 
>> in_port, uint8_t table_id,
>>                                             ctx->xin->resubmit_stats,
>>                                             &ctx->table_id, in_port,
>>                                             may_packet_in, honor_table_miss,
>> -                                           ctx->xin->xcache);
>> +                                           ctx->xin->xcache,
>> +                                           &ctx->xout->conj_flows);
> 
> As per my comment here [1] on another patch, I'm concerned about functions
> with too many (say more than 6 arguments). For one thing. AFAIK, there is
> the overhead of needing to pass arguments the stack rather than purely in
> registers. For another, I think there are questions of readability and
> maintainability.
> 
> It is already the case before this patch, although this patch does
> make it slightly worse.
> 
> [1] Re: [PATCH v3] ofproto-dpif-mirror: Add support for pre-selection filter
>     https://mail.openvswitch.org/pipermail/ovs-dev/2023-October/408228.html
> 
> ...

Agreed.

It seems to me that there are approaches such as grouping arguments together
as some kind of structure, or separating responsibilities by dividing one
function into multiple functions.

I will do some digging.
But, any refactoring requires knowledge of existing data structures, so
if you have any insights, I would appreciate your comments.

Best Regards,
Nobuhiro Miki
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to