firmware: bcm47xx_nvram: add helper checking for NVRAM
[linux-2.6-microblaze.git] / drivers / scsi / iscsi_tcp.c
index a9ce629..dd33ce0 100644 (file)
@@ -847,6 +847,7 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
        struct iscsi_session *session;
        struct iscsi_sw_tcp_host *tcp_sw_host;
        struct Scsi_Host *shost;
+       int rc;
 
        if (ep) {
                printk(KERN_ERR "iscsi_tcp: invalid ep %p.\n", ep);
@@ -864,6 +865,11 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
        shost->max_channel = 0;
        shost->max_cmd_len = SCSI_MAX_VARLEN_CDB_SIZE;
 
+       rc = iscsi_host_get_max_scsi_cmds(shost, cmds_max);
+       if (rc < 0)
+               goto free_host;
+       shost->can_queue = rc;
+
        if (iscsi_host_add(shost, NULL))
                goto free_host;
 
@@ -878,7 +884,6 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
        tcp_sw_host = iscsi_host_priv(shost);
        tcp_sw_host->session = session;
 
-       shost->can_queue = session->scsi_cmds_max;
        if (iscsi_tcp_r2tpool_alloc(session))
                goto remove_session;
        return cls_session;
@@ -981,7 +986,7 @@ static struct scsi_host_template iscsi_sw_tcp_sht = {
        .name                   = "iSCSI Initiator over TCP/IP",
        .queuecommand           = iscsi_queuecommand,
        .change_queue_depth     = scsi_change_queue_depth,
-       .can_queue              = ISCSI_DEF_XMIT_CMDS_MAX - 1,
+       .can_queue              = ISCSI_TOTAL_CMDS_MAX,
        .sg_tablesize           = 4096,
        .max_sectors            = 0xFFFF,
        .cmd_per_lun            = ISCSI_DEF_CMD_PER_LUN,