On Wed, Aug 31, 2016 at 6:13 PM, Timmons C. Player
<timmons.pla...@spirent.com> wrote:
> This commit fixes two observed issues with the vmxnet3 driver:
>
> * Handle both missing SOP and EOP descriptors in the rx loop. ESXi
>   drops descriptors under load.
> * Always leave at least one Tx descriptor available.  The driver
>   appears to hang when it runs out of them.
>
> Signed-off-by: Timmons C. Player <timmons.pla...@spirent.com>

Let's CC Takuya who wrote the driver.

> ---
>  drivers/vmxnet3.cc | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/vmxnet3.cc b/drivers/vmxnet3.cc
> index 926d1b0..0739303 100644
> --- a/drivers/vmxnet3.cc
> +++ b/drivers/vmxnet3.cc
> @@ -537,7 +537,7 @@ int vmxnet3_txqueue::try_xmit_one_locked(void *req)
>
>  int vmxnet3_txqueue::try_xmit_one_locked(vmxnet3_req *req)
>  {
> -    auto count = req->count;
> +    auto count = req->count + 1;
>      if (_avail < count) {
>          gc();
>          if (_avail < count)
> @@ -830,6 +830,17 @@ void vmxnet3_rxqueue::receive()
>              goto next;
>          }
>
> +        /* Check and handle SOP/EOP state errors */
> +        if (rxcd->layout->sop && _m_currpkt_head) {
> +            m_freem(_m_currpkt_head);
> +            _m_currpkt_head = _m_currpkt_tail = nullptr;
> +            stats.rx_drops++;
> +        } else if (!rxcd->layout->sop && !_m_currpkt_head) {
> +            stats.rx_drops++;
> +            discard(rid, idx);
> +            goto next;
> +        }
> +
>          if (rxcd->layout->sop) {
>              assert(rxd->layout->btype == btype::head);
>              assert((idx % 1) == 0);
> --
> 2.7.4
>
> --
> You received this message because you are subscribed to the Google Groups 
> "OSv Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to osv-dev+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to