if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_REQ_QUEUES)
                vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_REQ_QUEUES;
 
+       if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_CRC)
+               vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_CRC;
+
        if (vf->driver_caps & VIRTCHNL_VF_CAP_ADV_LINK_SPEED)
                vfres->vf_cap_flags |= VIRTCHNL_VF_CAP_ADV_LINK_SPEED;
 
                        vsi->rx_rings[i]->dma = qpi->rxq.dma_ring_addr;
                        vsi->rx_rings[i]->count = qpi->rxq.ring_len;
 
+                       if (qpi->rxq.crc_disable &&
+                           !(vf->driver_caps & VIRTCHNL_VF_OFFLOAD_CRC)) {
+                               goto error_param;
+                       }
+
+                       if (qpi->rxq.crc_disable)
+                               vsi->rx_rings[q_idx]->flags |=
+                                       ICE_RX_FLAGS_CRC_STRIP_DIS;
+                       else
+                               vsi->rx_rings[q_idx]->flags &=
+                                       ~ICE_RX_FLAGS_CRC_STRIP_DIS;
+
                        if (qpi->rxq.databuffer_size != 0 &&
                            (qpi->rxq.databuffer_size > ((16 * 1024) - 128) ||
                             qpi->rxq.databuffer_size < 1024))