static void iscsi_start_tx ( struct iscsi_session *iscsi ) {
assert ( iscsi->tx_state == ISCSI_TX_IDLE );
- assert ( ! process_running ( &iscsi->process ) );
-
+
/* Initialise TX BHS */
memset ( &iscsi->tx_bhs, 0, sizeof ( iscsi->tx_bhs ) );
next_state = ISCSI_TX_IDLE;
break;
case ISCSI_TX_IDLE:
- /* Stop processing */
- iscsi_tx_done ( iscsi );
+ /* Nothing to do; pause processing */
+ iscsi_tx_pause ( iscsi );
return;
default:
assert ( 0 );
/* Move to next state */
iscsi->tx_state = next_state;
+
+ /* If we have moved to the idle state, mark
+ * transmission as complete
+ */
+ if ( iscsi->tx_state == ISCSI_TX_IDLE )
+ iscsi_tx_done ( iscsi );
}
}