Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 315456
b: refs/heads/master
c: ac802f5
h: refs/heads/master
v: v3
  • Loading branch information
Alexander Duyck authored and Jeff Kirsher committed Jul 18, 2012
1 parent 34addd7 commit 8edc874
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 57 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: de3d5b94bc891c405b8d91d3c112681a0654613f
refs/heads/master: ac802f5dfe56139a288df50c89c820412863cd8a
58 changes: 14 additions & 44 deletions trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ static bool ixgbe_set_rss_queues(struct ixgbe_adapter *adapter)
* fallthrough conditions.
*
**/
static int ixgbe_set_num_queues(struct ixgbe_adapter *adapter)
static void ixgbe_set_num_queues(struct ixgbe_adapter *adapter)
{
/* Start with base case */
adapter->num_rx_queues = 1;
Expand All @@ -358,29 +358,14 @@ static int ixgbe_set_num_queues(struct ixgbe_adapter *adapter)
adapter->num_rx_queues_per_pool = 1;

if (ixgbe_set_sriov_queues(adapter))
goto done;
return;

#ifdef CONFIG_IXGBE_DCB
if (ixgbe_set_dcb_queues(adapter))
goto done;
return;

#endif
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_rss_queues(adapter);
}

static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
Expand Down Expand Up @@ -710,11 +695,10 @@ static void ixgbe_reset_interrupt_capability(struct ixgbe_adapter *adapter)
* Attempt to configure the interrupts using the best available
* capabilities of the hardware and the kernel.
**/
static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
static void ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
{
struct ixgbe_hw *hw = &adapter->hw;
int err = 0;
int vector, v_budget;
int vector, v_budget, err;

/*
* It's easy to be greedy for MSI-X vectors, but it really
Expand Down Expand Up @@ -747,7 +731,7 @@ static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
ixgbe_acquire_msix_vectors(adapter, v_budget);

if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED)
goto out;
return;
}

adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED;
Expand All @@ -762,25 +746,17 @@ static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
ixgbe_disable_sriov(adapter);

err = ixgbe_set_num_queues(adapter);
if (err)
return err;

ixgbe_set_num_queues(adapter);
adapter->num_q_vectors = 1;

err = pci_enable_msi(adapter->pdev);
if (!err) {
adapter->flags |= IXGBE_FLAG_MSI_ENABLED;
} else {
if (err) {
netif_printk(adapter, hw, KERN_DEBUG, adapter->netdev,
"Unable to allocate MSI interrupt, "
"falling back to legacy. Error: %d\n", err);
/* reset err */
err = 0;
return;
}

out:
return err;
adapter->flags |= IXGBE_FLAG_MSI_ENABLED;
}

/**
Expand All @@ -798,15 +774,10 @@ int ixgbe_init_interrupt_scheme(struct ixgbe_adapter *adapter)
int err;

/* Number of supported queues */
err = ixgbe_set_num_queues(adapter);
if (err)
return err;
ixgbe_set_num_queues(adapter);

err = ixgbe_set_interrupt_capability(adapter);
if (err) {
e_dev_err("Unable to setup interrupt capabilities\n");
goto err_set_interrupt;
}
/* Set interrupt mode */
ixgbe_set_interrupt_capability(adapter);

err = ixgbe_alloc_q_vectors(adapter);
if (err) {
Expand All @@ -826,7 +797,6 @@ int ixgbe_init_interrupt_scheme(struct ixgbe_adapter *adapter)

err_alloc_q_vectors:
ixgbe_reset_interrupt_capability(adapter);
err_set_interrupt:
return err;
}

Expand Down
36 changes: 24 additions & 12 deletions trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4798,10 +4798,26 @@ static int ixgbe_open(struct net_device *netdev)
if (err)
goto err_req_irq;

/* Notify the stack of the actual queue counts. */
err = netif_set_real_num_tx_queues(netdev,
adapter->num_rx_pools > 1 ? 1 :
adapter->num_tx_queues);
if (err)
goto err_set_queues;


err = netif_set_real_num_rx_queues(netdev,
adapter->num_rx_pools > 1 ? 1 :
adapter->num_rx_queues);
if (err)
goto err_set_queues;

ixgbe_up_complete(adapter);

return 0;

err_set_queues:
ixgbe_free_irq(adapter);
err_req_irq:
ixgbe_free_all_rx_resources(adapter);
err_setup_rx:
Expand Down Expand Up @@ -4864,23 +4880,19 @@ static int ixgbe_resume(struct pci_dev *pdev)

pci_wake_from_d3(pdev, false);

rtnl_lock();
err = ixgbe_init_interrupt_scheme(adapter);
rtnl_unlock();
if (err) {
e_dev_err("Cannot initialize interrupts for device\n");
return err;
}

ixgbe_reset(adapter);

IXGBE_WRITE_REG(&adapter->hw, IXGBE_WUS, ~0);

if (netif_running(netdev)) {
rtnl_lock();
err = ixgbe_init_interrupt_scheme(adapter);
if (!err && netif_running(netdev))
err = ixgbe_open(netdev);
if (err)
return err;
}

rtnl_unlock();

if (err)
return err;

netif_device_attach(netdev);

Expand Down

0 comments on commit 8edc874

Please sign in to comment.