virtio-net: why not always to set avail->flags to VRING_AVAIL_F_NO_INTERRUPT
Subsystems (3)
Hi,
I'm a newbie and have a question about vring_new_virtqueue function.
Why we set avail->flags to VRING_AVAIL_F_NO_INTERRUPT when no callbacks? I think we should set avail->flags to VRING_AVAIL_F_NO_INTERRUPT even if no callbacks.
Quoted 6 lines · Linhaifeng
Hi,
I'm a newbie and have a question about
vring_new_virtqueuefunction.Why we set
avail->flagstoVRING_AVAIL_F_NO_INTERRUPTwhen no callbacks? I think we should setavail->flagstoVRING_AVAIL_F_NO_INTERRUPTeven if no callbacks.
Hi Linhaifeng,
Not sure I understand your question, but I'll try to answer.
We don't set VRING_AVAIL_F_NO_INTERRUPT if there's a callback because we want that callback called. Otherwise callback will never be used.
Cheers,
Rusty.
Quoted 6 lines · Linhaifeng
Hi,
I'm a newbie and have a question about
vring_new_virtqueuefunction.Why we set
avail->flagstoVRING_AVAIL_F_NO_INTERRUPTwhen no callbacks? I think we should setavail->flagstoVRING_AVAIL_F_NO_INTERRUPTeven if no callbacks.
Hi Linhaifeng,
Not sure I understand your question, but I'll try to answer.
We don't set VRING_AVAIL_F_NO_INTERRUPT if there's a callback because we want that callback called. Otherwise callback will never be used.
Cheers,
Rusty.
Quoted 10 lines · Rusty Russell
Quoted 6 lines · Linhaifeng
Hi,
I'm a newbie and have a question about
vring_new_virtqueuefunction.Why we set
avail->flagstoVRING_AVAIL_F_NO_INTERRUPTwhen no callbacks? I think we should setavail->flagstoVRING_AVAIL_F_NO_INTERRUPTeven if no callbacks.Hi Linhaifeng,
Quoted 9 lines
Not sure I understand your question, but I'll try to answer.
We don't set
VRING_AVAIL_F_NO_INTERRUPTif there's a callback because we want that callback called. Otherwise callback will never be used.Cheers,
Rusty.
Hi Rusty,
Thank you for your response.
I mean should we set VRING_AVAIL_F_NO_INTERRUPT when virtqueue is initialized whether there is callback or not? As it would be set in function virtqueue_disable_cb and virtqueue_enable_cb_prepare later.
Regards,
Haifeng
Quoted 10 lines · Rusty Russell
Quoted 6 lines · Linhaifeng
Hi,
I'm a newbie and have a question about
vring_new_virtqueuefunction.Why we set
avail->flagstoVRING_AVAIL_F_NO_INTERRUPTwhen no callbacks? I think we should setavail->flagstoVRING_AVAIL_F_NO_INTERRUPTeven if no callbacks.Hi Linhaifeng,
Quoted 9 lines
Not sure I understand your question, but I'll try to answer.
We don't set
VRING_AVAIL_F_NO_INTERRUPTif there's a callback because we want that callback called. Otherwise callback will never be used.Cheers,
Rusty.
Hi Rusty,
Thank you for your response.
I mean should we set VRING_AVAIL_F_NO_INTERRUPT when virtqueue is initialized whether there is callback or not? As it would be set in function virtqueue_disable_cb and virtqueue_enable_cb_prepare later.
Regards,
Haifeng
Quoted 21 lines · Linhaifeng
Quoted 10 lines · Rusty Russell
Quoted 6 lines · Linhaifeng
Hi,
I'm a newbie and have a question about
vring_new_virtqueuefunction.Why we set
avail->flagstoVRING_AVAIL_F_NO_INTERRUPTwhen no callbacks? I think we should setavail->flagstoVRING_AVAIL_F_NO_INTERRUPTeven if no callbacks.Hi Linhaifeng,
Quoted 9 lines
Not sure I understand your question, but I'll try to answer.
We don't set
VRING_AVAIL_F_NO_INTERRUPTif there's a callback because we want that callback called. Otherwise callback will never be used.Cheers,
Rusty.
Quoted 6 lines
Hi Rusty,
Thank you for your response.
I mean should we set
VRING_AVAIL_F_NO_INTERRUPTwhen virtqueue is initialized whether there is callback or not? As it would be set in functionvirtqueue_disable_cbandvirtqueue_enable_cb_preparelater.
You're right, the callers could virtqueue_enable() specifically, but I think most callers will want the virtqueue enabled immediately.
And remember, the VRING_AVAIL_F_NO_INTERRUPT is just a *hint*: the device is allows to ignore it (this can happen due to race conditions, for example).
Thanks,
Rusty.