return;
        }
 
-       adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED;
+       /* disable DCB if number of TCs exceeds 1 */
+       if (netdev_get_num_tc(adapter->netdev) > 1) {
+               e_err(probe, "num TCs exceeds number of queues - disabling DCB\n");
+               netdev_reset_tc(adapter->netdev);
 
+               if (adapter->hw.mac.type == ixgbe_mac_82598EB)
+                       adapter->hw.fc.requested_mode = adapter->last_lfc_mode;
+
+               adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED;
+               adapter->temp_dcb_cfg.pfc_mode_enable = false;
+               adapter->dcb_cfg.pfc_mode_enable = false;
+       }
+       adapter->dcb_cfg.num_tcs.pg_tcs = 1;
+       adapter->dcb_cfg.num_tcs.pfc_tcs = 1;
+
+       /* disable SR-IOV */
        ixgbe_disable_sriov(adapter);
 
+       /* disable RSS */
        adapter->ring_feature[RING_F_RSS].limit = 1;
+
        ixgbe_set_num_queues(adapter);
        adapter->num_q_vectors = 1;
 
 
        struct ixgbe_adapter *adapter = netdev_priv(dev);
        struct ixgbe_hw *hw = &adapter->hw;
 
-       /* Multiple traffic classes requires multiple queues */
-       if (!(adapter->flags & IXGBE_FLAG_MSIX_ENABLED)) {
-               e_err(drv, "Enable failed, needs MSI-X\n");
-               return -EINVAL;
-       }
-
        /* Hardware supports up to 8 traffic classes */
        if (tc > adapter->dcb_cfg.num_tcs.pg_tcs ||
            (hw->mac.type == ixgbe_mac_82598EB &&