summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/net/tcp/iscsi.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/net/tcp/iscsi.c b/src/net/tcp/iscsi.c
index 878155992..8beeb8777 100644
--- a/src/net/tcp/iscsi.c
+++ b/src/net/tcp/iscsi.c
@@ -1333,8 +1333,7 @@ static void iscsi_tx_resume ( struct iscsi_session *iscsi ) {
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 ) );
@@ -1476,8 +1475,8 @@ static void iscsi_tx_step ( struct iscsi_session *iscsi ) {
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 );
@@ -1504,6 +1503,12 @@ static void iscsi_tx_step ( struct iscsi_session *iscsi ) {
/* 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 );
}
}