assert(0);
BUG_ON(1);
static int recv(struct iscsi_conn *conn){	struct iscsi_cmnd *cmnd = conn->read_cmnd;	int hdigest, ddigest, res = 1;	if (!test_bit(CONN_ACTIVE, &conn->state))		return -EIO;	hdigest = conn->hdigest_type & DIGEST_NONE ? 0 : 1;	ddigest = conn->ddigest_type & DIGEST_NONE ? 0 : 1;	switch (conn->read_state) {	case RX_INIT_BHS:		assert(!cmnd);		cmnd = conn->read_cmnd = create_cmnd(conn);	case RX_BHS:		res = do_recv(conn, RX_INIT_AHS);		if (res <= 0 || conn->read_state != RX_INIT_AHS)			break;	case RX_INIT_AHS:		iscsi_cmnd_get_length(&cmnd->pdu);		if (cmnd->pdu.ahssize) {			iscsi_conn_read_ahs(conn, cmnd);			conn->read_state = RX_AHS;		} else			conn->read_state = hdigest ? RX_INIT_HDIGEST : RX_INIT_DATA;		if (conn->read_state != RX_AHS)			break;	case RX_AHS:		res = do_recv(conn, hdigest ? RX_INIT_HDIGEST : RX_INIT_DATA);		if (res <= 0 || conn->read_state != RX_INIT_HDIGEST)			break;	case RX_INIT_HDIGEST:		iscsi_conn_init_read(conn, &cmnd->hdigest, sizeof(u32));		conn->read_state = RX_HDIGEST;	case RX_HDIGEST:		res = do_recv(conn, RX_CHECK_HDIGEST);		if (res <= 0 || conn->read_state != RX_CHECK_HDIGEST)			break;	case RX_CHECK_HDIGEST:		rx_hdigest(conn, RX_INIT_DATA);		if (conn->read_state != RX_INIT_DATA)			break;	case RX_INIT_DATA:		cmnd_rx_start(cmnd);		conn->read_state = cmnd->pdu.datasize ? RX_DATA : RX_END;		if (conn->read_state != RX_DATA)			break;	case RX_DATA:		res = do_recv(conn, ddigest ? RX_INIT_DDIGEST : RX_END);		if (res <= 0 || conn->read_state != RX_INIT_DDIGEST)			break;	case RX_INIT_DDIGEST:		iscsi_conn_init_read(conn, &cmnd->ddigest, sizeof(u32));		conn->read_state = RX_DDIGEST;	case RX_DDIGEST:		res = do_recv(conn, RX_CHECK_DDIGEST);		if (res <= 0 || conn->read_state != RX_CHECK_DDIGEST)			break;	case RX_CHECK_DDIGEST:		rx_ddigest(conn, RX_END);		break;	default:		eprintk("%d %d %x\n", res, conn->read_state, cmnd_opcode(cmnd));		assert(0);	}	if (res <= 0)		return res;	if (conn->read_state != RX_END)		return res;	if (conn->read_size) {		eprintk("%d %x %d\n", res, cmnd_opcode(cmnd), conn->read_size);		assert(0);	}	cmnd_rx_end(cmnd);	if (conn->read_size) {		eprintk("%x %d\n", cmnd_opcode(cmnd), conn->read_size);		conn->read_state = RX_DATA;		return 1;	}	conn->read_cmnd = NULL;	conn->read_state = RX_INIT_BHS;	return 0;}