MUTEX_ENTER(&conn->conn_data_lock);
conn->refCount--;
MUTEX_EXIT(&conn->conn_data_lock);
+ MUTEX_ENTER(&rx_stats_mutex);
+ rx_stats.nBusies++;
+ MUTEX_EXIT(&rx_stats_mutex);
return tp;
}
rxi_KeepAliveOn(call);
if (!(call->flags & RX_CALL_TQ_BUSY)) {
call->flags |= RX_CALL_TQ_BUSY;
do {
+#endif /* AFS_GLOBAL_RXLOCK_KERNEL */
+ restart:
+#ifdef AFS_GLOBAL_RXLOCK_KERNEL
call->flags &= ~RX_CALL_NEED_START;
#endif /* AFS_GLOBAL_RXLOCK_KERNEL */
nXmitPackets = 0;
/* Transmit the packet if it needs to be sent. */
if (!clock_Lt(&now, &p->retryTime)) {
if (nXmitPackets == maxXmitPackets) {
- osi_Panic("rxi_Start: xmit list overflowed");
+ rxi_SendXmitList(call, xmitList, nXmitPackets,
+ istack, &now, &retryTime,
+ resending);
+ osi_Free(xmitList, maxXmitPackets *
+ sizeof(struct rx_packet *));
+ goto restart;
}
xmitList[nXmitPackets++] = p;
}