if (p_vf_params) {
                p_cid->vfid = p_vf_params->vfid;
                p_cid->vf_qid = p_vf_params->vf_qid;
-               p_cid->b_legacy_vf = p_vf_params->vf_legacy;
+               p_cid->vf_legacy = p_vf_params->vf_legacy;
        } else {
                p_cid->vfid = QED_QUEUE_CID_SELF;
        }
        DMA_REGPAIR_LE(p_ramrod->cqe_pbl_addr, cqe_pbl_addr);
 
        if (p_cid->vfid != QED_QUEUE_CID_SELF) {
+               bool b_legacy_vf = !!(p_cid->vf_legacy &
+                                     QED_QCID_LEGACY_VF_RX_PROD);
+
                p_ramrod->vf_rx_prod_index = p_cid->vf_qid;
                DP_VERBOSE(p_hwfn, QED_MSG_SP,
                           "Queue%s is meant for VF rxq[%02x]\n",
-                          !!p_cid->b_legacy_vf ? " [legacy]" : "",
-                          p_cid->vf_qid);
-               p_ramrod->vf_rx_prod_use_zone_a = !!p_cid->b_legacy_vf;
+                          b_legacy_vf ? " [legacy]" : "", p_cid->vf_qid);
+               p_ramrod->vf_rx_prod_use_zone_a = b_legacy_vf;
        }
 
        return qed_spq_post(p_hwfn, p_ent, NULL);
 
 #include "qed_sriov.h"
 #include "qed_vf.h"
 
+static u8 qed_vf_calculate_legacy(struct qed_vf_info *p_vf)
+{
+       u8 legacy = QED_QCID_LEGACY_VF_CID;
+
+       if (p_vf->acquire.vfdev_info.eth_fp_hsi_minor ==
+           ETH_HSI_VER_NO_PKT_LEN_TUNN)
+               legacy |= QED_QCID_LEGACY_VF_RX_PROD;
+
+       return legacy;
+}
+
 /* IOV ramrods */
 static int qed_sp_vf_start(struct qed_hwfn *p_hwfn, struct qed_vf_info *p_vf)
 {
        struct qed_queue_cid_vf_params vf_params;
        struct qed_iov_vf_mbx *mbx = &vf->vf_mbx;
        u8 status = PFVF_STATUS_NO_RESOURCE;
+       u8 qid_usage_idx, vf_legacy = 0;
        struct qed_vf_q_info *p_queue;
        struct vfpf_start_rxq_tlv *req;
        struct qed_sb_info sb_dummy;
-       bool b_legacy_vf = false;
-       u8 qid_usage_idx;
        int rc;
 
        req = &mbx->req_virt->start_rxq;
        qid_usage_idx = qed_iov_vf_mbx_qid(p_hwfn, vf, false);
        p_queue = &vf->vf_queues[req->rx_qid];
 
-       if (vf->acquire.vfdev_info.eth_fp_hsi_minor ==
-           ETH_HSI_VER_NO_PKT_LEN_TUNN)
+       vf_legacy = qed_vf_calculate_legacy(vf);
 
        /* Acquire a new queue-cid */
        memset(¶ms, 0, sizeof(params));
        memset(&vf_params, 0, sizeof(vf_params));
        vf_params.vfid = vf->relative_vf_id;
        vf_params.vf_qid = (u8)req->rx_qid;
-       vf_params.vf_legacy = b_legacy_vf;
+       vf_params.vf_legacy = vf_legacy;
        vf_params.qid_usage_idx = qid_usage_idx;
        p_queue->p_rx_cid = qed_eth_queue_to_cid(p_hwfn, vf->opaque_fid,
                                                 ¶ms, &vf_params);
        /* Legacy VFs have their Producers in a different location, which they
         * calculate on their own and clean the producer prior to this.
         */
-       if (!b_legacy_vf)
+       if (!(vf_legacy & QED_QCID_LEGACY_VF_RX_PROD))
                REG_WR(p_hwfn,
                       GTT_BAR0_MAP_REG_MSDM_RAM +
                       MSTORM_ETH_VF_PRODS_OFFSET(vf->abs_vf_id, req->rx_qid),
        }
 
 out:
-       qed_iov_vf_mbx_start_rxq_resp(p_hwfn, p_ptt, vf, status, b_legacy_vf);
+       qed_iov_vf_mbx_start_rxq_resp(p_hwfn, p_ptt, vf, status,
+                                     !!(vf_legacy &
+                                        QED_QCID_LEGACY_VF_RX_PROD));
 }
 
 static void
        struct vfpf_start_txq_tlv *req;
        struct qed_vf_q_info *p_queue;
        struct qed_sb_info sb_dummy;
-       bool b_vf_legacy = false;
-       u8 qid_usage_idx;
+       u8 qid_usage_idx, vf_legacy;
        int rc;
        u16 pq;
 
        qid_usage_idx = qed_iov_vf_mbx_qid(p_hwfn, vf, true);
        p_queue = &vf->vf_queues[req->tx_qid];
 
-       if (vf->acquire.vfdev_info.eth_fp_hsi_minor ==
-           ETH_HSI_VER_NO_PKT_LEN_TUNN)
-               b_vf_legacy = true;
+       vf_legacy = qed_vf_calculate_legacy(vf);
 
        /* Acquire a new queue-cid */
        params.queue_id = p_queue->fw_tx_qid;
        memset(&vf_params, 0, sizeof(vf_params));
        vf_params.vfid = vf->relative_vf_id;
        vf_params.vf_qid = (u8)req->tx_qid;
-       vf_params.vf_legacy = b_vf_legacy;
+       vf_params.vf_legacy = vf_legacy;
        vf_params.qid_usage_idx = qid_usage_idx;
 
        p_queue->p_tx_cid = qed_eth_queue_to_cid(p_hwfn,