char *tcurpos;
SPLVAR;
- /*
- * Free any packets from the last call to ReadvProc/WritevProc.
- * We do not need the lock because the receiver threads only
- * touch the iovq when the RX_CALL_IOVEC_WAIT flag is set, and the
- * RX_CALL_IOVEC_WAIT is always cleared before returning from
- * ReadvProc/WritevProc.
- */
+ /* Free any packets from the last call to ReadvProc/WritevProc */
+ NETPRI;
+ MUTEX_ENTER(&call->lock);
if (!queue_IsEmpty(&call->iovq)) {
#ifdef RXDEBUG_PACKET
call->iovqc -=
#endif /* RXDEBUG_PACKET */
rxi_FreePackets(0, &call->iovq);
}
+ MUTEX_EXIT(&call->lock);
+ USERPRI;
/*
* Most common case, all of the data is in the current iovec.
char *tcurpos;
SPLVAR;
- /*
- * Free any packets from the last call to ReadvProc/WritevProc.
- * We do not need the lock because the receiver threads only
- * touch the iovq when the RX_CALL_IOVEC_WAIT flag is set, and the
- * RX_CALL_IOVEC_WAIT is always cleared before returning from
- * ReadvProc/WritevProc.
- */
+ /* Free any packets from the last call to ReadvProc/WritevProc */
+ NETPRI;
+ MUTEX_ENTER(&call->lock);
if (!queue_IsEmpty(&call->iovq)) {
#ifdef RXDEBUG_PACKET
call->iovqc -=
#endif /* RXDEBUG_PACKET */
rxi_FreePackets(0, &call->iovq);
}
+ MUTEX_EXIT(&call->lock);
+ USERPRI;
/*
* Most common case, all of the data is in the current iovec.
char *tcurpos;
SPLVAR;
- /*
- * Free any packets from the last call to ReadvProc/WritevProc.
- * We do not need the lock because the receiver threads only
- * touch the iovq when the RX_CALL_IOVEC_WAIT flag is set, and the
- * RX_CALL_IOVEC_WAIT is always cleared before returning from
- * ReadvProc/WritevProc.
- */
+ /* Free any packets from the last call to ReadvProc/WritevProc */
+ NETPRI;
+ MUTEX_ENTER(&call->lock);
if (queue_IsNotEmpty(&call->iovq)) {
#ifdef RXDEBUG_PACKET
call->iovqc -=
#endif /* RXDEBUG_PACKET */
rxi_FreePackets(0, &call->iovq);
}
+ MUTEX_EXIT(&call->lock);
+ USERPRI;
/*
* Most common case: all of the data fits in the current iovec.
char *tcurpos;
SPLVAR;
- /*
- * Free any packets from the last call to ReadvProc/WritevProc.
- * We do not need the lock because the receiver threads only
- * touch the iovq when the RX_CALL_IOVEC_WAIT flag is set, and the
- * RX_CALL_IOVEC_WAIT is always cleared before returning from
- * ReadvProc/WritevProc.
- */
+ /* Free any packets from the last call to ReadvProc/WritevProc */
+ NETPRI;
+ MUTEX_ENTER(&call->lock);
if (queue_IsNotEmpty(&call->iovq)) {
#ifdef RXDEBUG_PACKET
call->iovqc -=
#endif /* RXDEBUG_PACKET */
rxi_FreePackets(0, &call->iovq);
}
+ MUTEX_EXIT(&call->lock);
+ USERPRI;
/*
* Most common case: all of the data fits in the current iovec.