return (device == PCI_DEVICE_ID_QLOGIC_QLE824X) ? true : false;
 }
 
+static inline bool qlcnic_84xx_check(struct qlcnic_adapter *adapter)
+{
+       unsigned short device = adapter->pdev->device;
+
+       return ((device == PCI_DEVICE_ID_QLOGIC_QLE844X) ||
+               (device == PCI_DEVICE_ID_QLOGIC_VF_QLE844X)) ? true : false;
+}
+
 static inline bool qlcnic_83xx_check(struct qlcnic_adapter *adapter)
 {
        unsigned short device = adapter->pdev->device;
 
 }
 
 static int qlcnic_sriov_set_pvid_mode(struct qlcnic_adapter *adapter,
-                                     struct qlcnic_cmd_args *cmd, u32 cap)
+                                     struct qlcnic_cmd_args *cmd)
 {
-       if (cap & QLC_83XX_PVID_STRIP_CAPABILITY) {
-               adapter->rx_pvid = 0;
-       } else {
-               adapter->rx_pvid = (cmd->rsp.arg[1] >> 16) & 0xffff;
-               adapter->flags &= ~QLCNIC_TAGGING_ENABLED;
-       }
+       adapter->rx_pvid = MSW(cmd->rsp.arg[1]) & 0xffff;
+       adapter->flags &= ~QLCNIC_TAGGING_ENABLED;
        return 0;
 }
 
 {
        struct qlcnic_sriov *sriov = adapter->ahw->sriov;
        struct qlcnic_cmd_args cmd;
-       int ret, cap;
+       int ret = 0;
 
-       cap = info->capabilities;
        ret = qlcnic_sriov_alloc_bc_mbx_args(&cmd, QLCNIC_BC_CMD_GET_ACL);
        if (ret)
                return ret;
                        ret = qlcnic_sriov_set_guest_vlan_mode(adapter, &cmd);
                        break;
                case QLC_PVID_MODE:
-                       ret = qlcnic_sriov_set_pvid_mode(adapter, &cmd, cap);
+                       ret = qlcnic_sriov_set_pvid_mode(adapter, &cmd);
                        break;
                }
        }
 
        struct qlcnic_vf_info *vf = trans->vf;
        struct qlcnic_vport *vp = vf->vp;
        u8 cmd_op, mode = vp->vlan_mode;
+       struct qlcnic_adapter *adapter;
+
+       adapter = vf->adapter;
 
        cmd_op = trans->req_hdr->cmd_op;
        cmd->rsp.arg[0] |= 1 << 25;
 
+       /* For 84xx adapter in case of PVID , PFD should send vlan mode as
+        * QLC_NO_VLAN_MODE to VFD which is zero in mailbox response
+        */
+       if (qlcnic_84xx_check(adapter) && mode == QLC_PVID_MODE)
+               return 0;
+
        switch (mode) {
        case QLC_GUEST_VLAN_MODE:
                cmd->rsp.arg[1] = mode | 1 << 8;