search for: netif_stop_subqueue

Displaying 20 results from an estimated 83 matches for "netif_stop_subqueue".

2015 Mar 15
2
virtio-net: tx queue was stopped
...lt; 2+MAX_SKB_FRAGS) { ---> at this point, skb_xmit_done runs. this does: /* Suppress further interrupts. */ virtqueue_disable_cb(vq); /* We were probably waiting for more output buffers. */ netif_wake_subqueue(vi->dev, vq2txq(vq)); ---> netif_stop_subqueue(dev, qnum); ---> queue is now stopped if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { ----> this re-enables interrupts, after an interrupt skb_xmit_done will run again. /* More just got used, free them then recheck. * */...
2015 Mar 15
2
virtio-net: tx queue was stopped
...lt; 2+MAX_SKB_FRAGS) { ---> at this point, skb_xmit_done runs. this does: /* Suppress further interrupts. */ virtqueue_disable_cb(vq); /* We were probably waiting for more output buffers. */ netif_wake_subqueue(vi->dev, vq2txq(vq)); ---> netif_stop_subqueue(dev, qnum); ---> queue is now stopped if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { ----> this re-enables interrupts, after an interrupt skb_xmit_done will run again. /* More just got used, free them then recheck. * */...
2015 Mar 16
1
virtio-net: tx queue was stopped
...able_cb(vq); > > /* We were probably waiting for more output buffers. */ > netif_wake_subqueue(vi->dev, vq2txq(vq)); > ---> > > > Because i use vhost-user(poll mode) with virtio_net so at this time vhost had received all packets. > netif_stop_subqueue(dev, qnum); > > ---> queue is now stopped > > if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > > ----> this re-enables interrupts, after an interrupt skb_xmit_done > will run again. > Before netif_stop_subqueue called vhost had received...
2015 Mar 16
1
virtio-net: tx queue was stopped
...able_cb(vq); > > /* We were probably waiting for more output buffers. */ > netif_wake_subqueue(vi->dev, vq2txq(vq)); > ---> > > > Because i use vhost-user(poll mode) with virtio_net so at this time vhost had received all packets. > netif_stop_subqueue(dev, qnum); > > ---> queue is now stopped > > if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > > ----> this re-enables interrupts, after an interrupt skb_xmit_done > will run again. > Before netif_stop_subqueue called vhost had received...
2015 Mar 16
0
virtio-net: tx queue was stopped
...rs. */ > > netif_wake_subqueue(vi->dev, vq2txq(vq)); > > ---> > > > > > > > > Because i use vhost-user(poll mode) with virtio_net so at this time vhost > had received all packets. Must likely a vhost-user bug then. > > netif_stop_subqueue(dev, qnum); > > > > ---> queue is now stopped > > > > if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > > > > ----> this re-enables interrupts, after an interrupt skb_xmit_done > > will run again. > > > > Bef...
2015 Mar 16
0
virtio-net: tx queue was stopped
...rs. */ > > netif_wake_subqueue(vi->dev, vq2txq(vq)); > > ---> > > > > > > > > Because i use vhost-user(poll mode) with virtio_net so at this time vhost > had received all packets. Must likely a vhost-user bug then. > > netif_stop_subqueue(dev, qnum); > > > > ---> queue is now stopped > > > > if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > > > > ----> this re-enables interrupts, after an interrupt skb_xmit_done > > will run again. > > > > Bef...
2015 Mar 24
3
[PATCH net-next] virtio: change comment in transmit
...ueue if running out of space + * instead of forcing queuing layer to requeue the skb + * by returning TX_BUSY (and cause a BUG message). + * Since most packets only take 1 or 2 ring slots + * this means 16 slots are typically wasted. + */ if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { netif_stop_subqueue(dev, qnum); if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) {
2015 Mar 24
3
[PATCH net-next] virtio: change comment in transmit
...ueue if running out of space + * instead of forcing queuing layer to requeue the skb + * by returning TX_BUSY (and cause a BUG message). + * Since most packets only take 1 or 2 ring slots + * this means 16 slots are typically wasted. + */ if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { netif_stop_subqueue(dev, qnum); if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) {
2023 Mar 06
4
[PATCH net 0/2] add checking sq is full inside xdp xmit
If the queue of xdp xmit is not an independent queue, then when the xdp xmit used all the desc, the xmit from the __dev_queue_xmit() may encounter the following error. net ens4: Unexpected TXQ (0) queue failure: -28 This patch adds a check whether sq is full in XDP Xmit. Thanks. Xuan Zhuo (2): virtio_net: separate the logic of checking whether sq is full virtio_net: add checking sq is full
2014 Dec 19
1
[PATCH RFC v4 net-next 1/5] virtio_net: enable tx interrupt
...gt; - nf_reset(skb); > - > /* Apparently nice girls don't return TX_BUSY; stop the queue > * before it gets out of hand. Naturally, this wastes entries. */ > - if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { > + if (sq->vq->num_free < 2+MAX_SKB_FRAGS) > netif_stop_subqueue(dev, qnum); > - if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > - /* More just got used, free them then recheck. */ > - free_old_xmit_skbs(sq); > - if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) { > - netif_start_subqueue(dev, qnum); > - virtqueue_disabl...
2014 Dec 19
1
[PATCH RFC v4 net-next 1/5] virtio_net: enable tx interrupt
...gt; - nf_reset(skb); > - > /* Apparently nice girls don't return TX_BUSY; stop the queue > * before it gets out of hand. Naturally, this wastes entries. */ > - if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { > + if (sq->vq->num_free < 2+MAX_SKB_FRAGS) > netif_stop_subqueue(dev, qnum); > - if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > - /* More just got used, free them then recheck. */ > - free_old_xmit_skbs(sq); > - if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) { > - netif_start_subqueue(dev, qnum); > - virtqueue_disabl...
2023 Mar 08
3
[PATCH net, stable v1 0/3] add checking sq is full inside xdp xmit
If the queue of xdp xmit is not an independent queue, then when the xdp xmit used all the desc, the xmit from the __dev_queue_xmit() may encounter the following error. net ens4: Unexpected TXQ (0) queue failure: -28 This patch adds a check whether sq is full in XDP Xmit. Thanks. v1: 1. rename to check_sq_full_and_disable 2. reorder some funcs to avoid declaration Xuan Zhuo (3):
2019 Oct 24
1
[PATCH] virtio_ring: fix packed ring event may missing
...Tx queue will sleep for a while until >> used index go over event offset. >> >> >> Ok, but what if the backend is almost as fast as guest driver? E.g in >> virtio-net we had: >> >> ??? if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { >> ??? ??? netif_stop_subqueue(dev, qnum); >> ??? ??? if (!use_napi && >> ??? ??? ??? unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { >> ??? ??? ??? /* More just got used, free them then recheck. */ >> ??? ??? ??? free_old_xmit_skbs(sq, false); >> ??? ??? ??? if (sq->vq-&gt...
2023 Mar 24
1
[External] Re: [PATCH] virtio_ring: Suppress tx interrupt when napi_tx disable
...e_cb_prepare > > > > > > if we disable the napi_tx, It will only be called when the tx ring > > > buffer is relatively small: > > > virtio_net->start_xmit: > > > if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { > > > netif_stop_subqueue(dev, qnum); > > > if (!use_napi && > > > unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > > > /* More just got used, free them then recheck. */ > > > free_old_xmit_s...
2015 Mar 25
0
[PATCH net-next] virtio: change comment in transmit
...* instead of forcing queuing layer to requeue the skb > + * by returning TX_BUSY (and cause a BUG message). > + * Since most packets only take 1 or 2 ring slots > + * this means 16 slots are typically wasted. > + */ > if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { > netif_stop_subqueue(dev, qnum); > if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
2015 Mar 25
0
[PATCH net-next] virtio: change comment in transmit
...* instead of forcing queuing layer to requeue the skb > + * by returning TX_BUSY (and cause a BUG message). > + * Since most packets only take 1 or 2 ring slots > + * this means 16 slots are typically wasted. > + */ > if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { > netif_stop_subqueue(dev, qnum); > if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
2023 Mar 22
0
[PATCH] virtio_ring: Suppress tx interrupt when napi_tx disable
...tly call virtqueue_enable_cb_delayed > or virtqueue_enable_cb_prepare > > if we disable the napi_tx, It will only be called when the tx ring > buffer is relatively small: > virtio_net->start_xmit: > if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { > netif_stop_subqueue(dev, qnum); > if (!use_napi && > unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { > /* More just got used, free them then recheck. */ > free_old_xmit_skbs(sq, false); >...
2014 Oct 14
4
[PATCH RFC] virtio_net: enable tx interrupt
...t;vq); - /* Don't wait up for transmitted skbs to be freed. */ - skb_orphan(skb); - nf_reset(skb); - /* Apparently nice girls don't return TX_BUSY; stop the queue * before it gets out of hand. Naturally, this wastes entries. */ if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { netif_stop_subqueue(dev, qnum); if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { /* More just got used, free them then recheck. */ - free_old_xmit_skbs(sq); + free_old_xmit_skbs(sq, qsize); if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) { netif_start_subqueue(dev, qnum); virtqueue_d...
2014 Oct 14
4
[PATCH RFC] virtio_net: enable tx interrupt
...t;vq); - /* Don't wait up for transmitted skbs to be freed. */ - skb_orphan(skb); - nf_reset(skb); - /* Apparently nice girls don't return TX_BUSY; stop the queue * before it gets out of hand. Naturally, this wastes entries. */ if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { netif_stop_subqueue(dev, qnum); if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { /* More just got used, free them then recheck. */ - free_old_xmit_skbs(sq); + free_old_xmit_skbs(sq, qsize); if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) { netif_start_subqueue(dev, qnum); virtqueue_d...
2019 Oct 22
0
[PATCH] virtio_ring: fix packed ring event may missing
...is enough for next around xmit. > If backend was slow, most likely Tx queue will sleep for a while until used index go over event offset. Ok, but what if the backend is almost as fast as guest driver? E.g in virtio-net we had: ??? if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { ??? ??? netif_stop_subqueue(dev, qnum); ??? ??? if (!use_napi && ??? ??? ??? unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { ??? ??? ??? /* More just got used, free them then recheck. */ ??? ??? ??? free_old_xmit_skbs(sq, false); ??? ??? ??? if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) { ??? ??? ??? ??...