Messages in this thread | | | Subject | Re: [PATCH v2 13/17] vdpa_sim: set vringh notify callback | From | Jason Wang <> | Date | Mon, 30 Nov 2020 11:27:51 +0800 |
| |
On 2020/11/26 下午10:49, Stefano Garzarella wrote: > Instead of calling the vq callback directly, we can leverage the > vringh_notify() function, adding vdpasim_vq_notify() and setting it > in the vringh notify callback. > > Suggested-by: Jason Wang <jasowang@redhat.com> > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- > drivers/vdpa/vdpa_sim/vdpa_sim.c | 21 +++++++++++++++++---- > 1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c > index 8b87ce0485b6..4327efd6d41e 100644 > --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c > +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c > @@ -120,6 +120,17 @@ static struct vdpasim *dev_to_sim(struct device *dev) > return vdpa_to_sim(vdpa); > } > > +static void vdpasim_vq_notify(struct vringh *vring) > +{ > + struct vdpasim_virtqueue *vq = > + container_of(vring, struct vdpasim_virtqueue, vring); > + > + if (!vq->cb) > + return; > + > + vq->cb(vq->private); > +} > + > static void vdpasim_queue_ready(struct vdpasim *vdpasim, unsigned int idx) > { > struct vdpasim_virtqueue *vq = &vdpasim->vqs[idx]; > @@ -131,6 +142,8 @@ static void vdpasim_queue_ready(struct vdpasim *vdpasim, unsigned int idx) > (uintptr_t)vq->driver_addr, > (struct vring_used *) > (uintptr_t)vq->device_addr); > + > + vq->vring.notify = vdpasim_vq_notify;
Do we need to clear notify during reset?
Other looks good.
> } > > static void vdpasim_vq_reset(struct vdpasim *vdpasim, > @@ -220,10 +233,10 @@ static void vdpasim_net_work(struct work_struct *work) > smp_wmb(); > > local_bh_disable(); > - if (txq->cb) > - txq->cb(txq->private); > - if (rxq->cb) > - rxq->cb(rxq->private); > + if (vringh_need_notify_iotlb(&txq->vring) > 0) > + vringh_notify(&txq->vring); > + if (vringh_need_notify_iotlb(&rxq->vring) > 0) > + vringh_notify(&rxq->vring); > local_bh_enable(); > > if (++pkts > 4) {
| |