Thread (22 messages) 22 messages, 3 authors, 2016-09-27

Re: [RFC][PATCH V2 1/3] examples/vhost: Add vswitch (generic switch) framework

From: Tan, Jianfeng <hidden>
Date: 2016-09-19 12:42:17

Hi Pankaj,
quoted
Can we hide queues inside struct vswitch_port? I mean:
For VMDQ switch, treat (port_id, queue_id) as a vswitch_port, so far
you've already stored "struct vhost_dev *" into vswitch_port.priv when
it's a virtual port, how about store queue_id into vswitch_port.priv
when it's a physical port.
For arp_learning switch, make (port_id, all_enabled_queues) as a
vswitch_port.
Summarize above two: we treat (port_id, all_enabled_queues[]) as a
vswitch_port.

How about it?
Thanks for wonderful suggestion! Yes it should be possible, instead of 
having one vs_port for physical device we could create one vs_port for 
each phys device + queue_id combination.

Then we can bind the vs_ports to the cores, and do away with binding 
vdevs to the cores.

In order to add extra vs_ports (port + queue_id) there are two methods:

1. vhost/main.c (or vswitch_common.c) queries the underlying switch 
about how many rx queues to support thourgh a new accessor. VMDQ will 
return the number of vmdq queues, in this case. After getting the 
number of rx queues, vhost/main.c creates the extra ports i.e one 
vs_port for each physical port and queue id combination.

2. Second method is that the switch implementation for example vmdq.c 
create the extra ports (port + queue_id) as part of vs_port->add_port 
operation for the physical port.

Which method do you think we should follow? I think #1 should be done 
so that same logic can be used for other switches also.
Although VMDQs are created at initialization, we will not connect all of 
them to switch until a virtio device is added. So how about creating 
extra vs_ports (port + queue_id) as part of vmdq_add_port_virtio()?

Another thing, why we need the accessor, port_start()? For physical 
ports, it's initialized and started at port_init(); for virtual ports, 
no need to get started, right?

Thanks,
Jianfeng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help