rx avoid discarding packets while tq is busy
authorDerrick Brashear <shadow@dementia.org>
Mon, 25 Jan 2010 21:02:23 +0000 (16:02 -0500)
committerDerrick Brashear <shadow|account-1000005@unknown>
Wed, 27 Jan 2010 16:47:03 +0000 (08:47 -0800)
we don't check here that no one else is working the tq *after* getting the
lock. do so.

Change-Id: I91d1ac020334b038a6a045734911335299613875
Reviewed-on: http://gerrit.openafs.org/1159
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/rx/rx.c

index afb3184..ec342d8 100755 (executable)
@@ -2219,6 +2219,7 @@ rxi_NewCall(struct rx_connection *conn, int channel)
        CLEAR_CALL_QUEUE_LOCK(call);
 #ifdef AFS_GLOBAL_RXLOCK_KERNEL
        /* Now, if TQ wasn't cleared earlier, do it now. */
+       rxi_WaitforTQBusy(call);
        if (call->flags & RX_CALL_TQ_CLEARME) {
            rxi_ClearTransmitQueue(call, 1);
            /*queue_Init(&call->tq);*/