[PATCH requirements v4 0/7] virtio net requirements for 1.4

From
Heng Qi <>
Date
2023-08-17T05:15:00+00:00
ID
Thread
[PATCH requirements v4 0/7] virtio net requirements for 1.4
? 2023/8/17 ??12:52, Parav Pandit ??:
>
>>
From: Heng Qi <>
>> Sent: Wednesday, August 16, 2023 5:12 PM
>>> +/* command 1 */
>>> +struct flow_filter_capabilities {
>>> +	le16 start_vq_index;
>>> +	le16 num_flow_filter_vqs;
>>> +	le16 max_flow_groups;
>>> +	le16 max_group_priorities; /* max priorities of the group */
>>> +	le32 max_flow_filters_per_group;
>>> +	le32 max_flow_filters; /* max flow_id in add/del
>>> +				* is equal = max_flow_filters - 1.
>>> +				*/
>>> +	u8 max_priorities_per_group;
>> + u8 padding[3];
>>
> Ack.
>
>>> +struct virtio_net_rff_group_add {
>>> +	le16 priority;
>> Please explicitly explain the relationship between the number and the priority,
>> for example, the smaller the number, the higher the priority :)
>>
> Right. Will do.
> I was thinking of higher the value higher the priority, so that one doesnt need to invert this in brain every time seeing the priority field. :)
>

It's ok :)

>>> +	le16 group_id;
>>> +};
>>> +
>>> +
>>> +struct virtio_net_rff_group_delete {
>>> +	le16 group_id;
>>> +
>>> +```
>>> +
>>> +3. Flow filter entry add/modify, delete over flow vq:
>>> +
>>> +```
>>> +struct virtio_net_rff_add_modify {
>>> +	u8 flow_op;
>>> +	u8 padding;
>> s/padding/priority
>>
> Ack.
>
>> Each rule needs a priority.
>>
>>> +	u16 group_id;
>>> +	le32 flow_id;
>>> +	struct match_criteria mc;
>>> +	struct destination dest;
>>> +	struct action action;
>>> +
>>> +	struct match_criteria mask;	/* optional */
>>> +};
>>> +
>>> +struct virtio_net_rff_delete {
>>> +	u8 flow_op;
>>> +	u8 padding[3];
>>> +	le32 flow_id;
>>> +};
>>> +
>>> +```
>>> +
>>> +4. Flow filter commands over cvq:
>>> +
>>> +```
>>> +
>>> +struct virtio_net_rff_cmd {
>>> +	u8 class; /* RFF class */
>>> +	u8 commands; /* RFF cmd = A */
>>> +	u8 command-specific-data[]; /* contains struct
>> virtio_net_rff_add_modify or
>>> +
* struct virtio_net_rff_delete
>> For flow vq, we no longer distinguish operations by command, but by flow_op.
>> But for ctrlq, this field will be carried. We should make it clear that when ctrlq is
>> delivered based on cmd, the flow_op field is ignored.
>>
> Since cvq is only the communication medium for delivering of command, it is better use the flow_op as is, and cvq commands field to be ignored.
> This way, software layers are more organized cvq or flow vq.

Agree.

Thanks!

>