https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227100

            Bug ID: 227100
           Summary: [epair] epair interface stops working when it reaches
                    the hardware queue limit
           Product: Base System
           Version: CURRENT
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: reshadpatu...@gmail.com

Created attachment 191964
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=191964&action=edit
the output of netstat and dtrace

When the epair interface reaches the hardware queue limit, epairs stop
transferring data.

This bug refers to this mailing list conversation
https://lists.freebsd.org/pipermail/freebsd-net/2018-March/050077.html

So far using the patch/if_epair source file attached to this bug we can tell
that the error occurs in this block of code

```
        if ((epair_dpcpu->epair_drv_flags & IFF_DRV_OACTIVE) != 0) {
                /*
                 * Our hardware queue is full, try to fall back
                 * queuing to the ifq but do not call ifp->if_start.
                 * Either we are lucky or the packet is gone.
                 */
                IFQ_ENQUEUE(&ifp->if_snd, m, error);
                if (!error)
                        (void)epair_add_ifp_for_draining(ifp);

                SDT_PROBE3(if_epair, transmit, epair_transmit_locked, enqueued,
                                ifp, m, error);
                return (error);
        }
```

Where the value of the 'error' is 55.

Setting 'net.link.epair.netisr_maxqlen' to a very small value makes this occur
faster.

This issue seems to be happening in the wild only on one of my servers.
Other servers under more load in different environments do not seem to exhibit
this behaviour.

@Kristof please chime in if I have missed something out.

Attached:
- commands.txt
- epair-sdt-diff.patch 
- epair_transmit_locked:enqueued-error-code.d
- if_epair.c

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to