/** * ixgbe_set_num_queues: Allocate queues for device, feature dependent * @adapter: board private structure to initialize * * This is the top level queue allocation routine. The order here is very * important, starting with the "most" number of features turned on at once, * and ending with the smallest set of features. This way large combinations * can be allocated if they're turned on, and smaller combinations are the * fallthrough conditions. * **/ static int ixgbe_set_num_queues(struct ixgbe_adapter *adapter) { /* Start with base case */ adapter->num_rx_queues = 1; adapter->num_tx_queues = 1; adapter->num_rx_pools = adapter->num_rx_queues; adapter->num_rx_queues_per_pool = 1; if (ixgbe_set_sriov_queues(adapter)) goto done; #ifdef CONFIG_IXGBE_DCB if (ixgbe_set_dcb_queues(adapter)) goto done; #endif #ifdef IXGBE_FCOE if (ixgbe_set_fcoe_queues(adapter)) goto done; #endif /* IXGBE_FCOE */ if (ixgbe_set_fdir_queues(adapter)) goto done; if (ixgbe_set_rss_queues(adapter)) goto done; /* fallback to base case */ adapter->num_rx_queues = 1; adapter->num_tx_queues = 1; done: if ((adapter->netdev->reg_state == NETREG_UNREGISTERED) || (adapter->netdev->reg_state == NETREG_UNREGISTERING)) return 0; /* Notify the stack of the (possibly) reduced queue counts. */ netif_set_real_num_tx_queues(adapter->netdev, adapter->num_tx_queues); return netif_set_real_num_rx_queues(adapter->netdev, adapter->num_rx_queues); }
/** * ixgbe_set_num_queues - Allocate queues for device, feature dependent * @adapter: board private structure to initialize * * This is the top level queue allocation routine. The order here is very * important, starting with the "most" number of features turned on at once, * and ending with the smallest set of features. This way large combinations * can be allocated if they're turned on, and smaller combinations are the * fallthrough conditions. * **/ static void ixgbe_set_num_queues(struct ixgbe_adapter *adapter) { /* Start with base case */ adapter->num_rx_queues = 1; adapter->num_tx_queues = 1; adapter->num_rx_pools = adapter->num_rx_queues; adapter->num_rx_queues_per_pool = 1; #ifdef CONFIG_IXGBE_DCB if (ixgbe_set_dcb_sriov_queues(adapter)) return; if (ixgbe_set_dcb_queues(adapter)) return; #endif if (ixgbe_set_sriov_queues(adapter)) return; ixgbe_set_rss_queues(adapter); }