On Mon, Apr 8, 2013 at 1:14 PM, Duvvuru,Venkat Kumar <
venkatkumar.duvv...@emulex.com> wrote:

> Hi,
> In the transmit path, if enqueue mechanism is used instead of blocking on
> the lock, the throughput is not good in some scenarios (especially single
> queue, multiple connections).
> For example:
> if (TRY_LOCK(&wq->tx_lock)) {
>            status = oce_multiq_transmit(ifp, m, wq);
>            UNLOCK(&wq->tx_lock);
>      } else {
>            status = drbr_enqueue(ifp, wq->br, m);
>      }
>
> Instead of the above code where the request is enqueued if I use a normal
> LOCK and block on it, it is giving good performance.
>
> Any suggestions on why the throughput is low in case of enqueue mechanism.
>
> Thx,
> Venkat.
>

Shouldn't you be triggering a taskqueue to actually transmit the packet in
the "failed to acquire lock" case?  Otherwise it could be held in the drbr
indefinitely.
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to