/* MAX Length for cached SGL */
 #define MAX_SGLEN_FOR_CACHESGL ((1U << 16) - 1)
 
-#define MAX_NUM_MSIX_PF         8
-#define MIN_NUM_CPUS_MSIX(x)   min((x)->msix_count, num_online_cpus())
+#define MIN_NUM_CPUS_MSIX(x)   min_t(u32, x->dev_info.num_cqs, \
+                                       num_online_cpus())
 
 #define QEDI_LOCAL_PORT_MIN     60000
 #define QEDI_LOCAL_PORT_MAX     61024
        u16 bdq_prod_idx;
        u16 rq_num_entries;
 
-       u32 msix_count;
        u32 max_sqes;
        u8 num_queues;
        u32 max_active_conns;
 
        SET_FIELD(conn_info->tcp_flags, TCP_OFFLOAD_PARAMS_DA_CNT_EN, 1);
        SET_FIELD(conn_info->tcp_flags, TCP_OFFLOAD_PARAMS_KA_EN, 1);
 
-       conn_info->default_cq = (qedi_ep->fw_cid % 8);
+       conn_info->default_cq = (qedi_ep->fw_cid % qedi->num_queues);
 
        conn_info->ka_max_probe_cnt = DEF_KA_MAX_PROBE_COUNT;
        conn_info->dup_ack_theshold = 3;
 
        u32 log_page_size;
        int rval = 0;
 
-       QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_DISC, "Min number of MSIX %d\n",
-                 MIN_NUM_CPUS_MSIX(qedi));
 
        num_sq_pages = (MAX_OUSTANDING_TASKS_PER_CON * 8) / PAGE_SIZE;
 
        qedi->num_queues = MIN_NUM_CPUS_MSIX(qedi);
 
+       QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
+                 "Number of CQ count is %d\n", qedi->num_queues);
+
        memset(&qedi->pf_params.iscsi_pf_params, 0,
               sizeof(qedi->pf_params.iscsi_pf_params));
 
                goto free_host;
        }
 
-       qedi->msix_count = MAX_NUM_MSIX_PF;
        atomic_set(&qedi->link_state, QEDI_LINK_DOWN);
 
+       rc = qedi_ops->fill_dev_info(qedi->cdev, &qedi->dev_info);
+       if (rc)
+               goto free_host;
+
        if (mode != QEDI_MODE_RECOVERY) {
                rc = qedi_set_iscsi_pf_param(qedi);
                if (rc) {