igc: Remove no need declaration of the igc_configure_msix
We want to avoid forward-declarations of function if possible. Rearrange the igc_configure_msix function implementation. Signed-off-by: Sasha Neftin <sasha.neftin@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
86a4de661b
commit
a146ea022f
@ -59,7 +59,6 @@ static void igc_free_q_vector(struct igc_adapter *adapter, int v_idx);
|
|||||||
static void igc_free_q_vectors(struct igc_adapter *adapter);
|
static void igc_free_q_vectors(struct igc_adapter *adapter);
|
||||||
static void igc_irq_disable(struct igc_adapter *adapter);
|
static void igc_irq_disable(struct igc_adapter *adapter);
|
||||||
static void igc_irq_enable(struct igc_adapter *adapter);
|
static void igc_irq_enable(struct igc_adapter *adapter);
|
||||||
static void igc_configure_msix(struct igc_adapter *adapter);
|
|
||||||
|
|
||||||
enum latency_range {
|
enum latency_range {
|
||||||
lowest_latency = 0,
|
lowest_latency = 0,
|
||||||
@ -2200,6 +2199,50 @@ static void igc_configure(struct igc_adapter *adapter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* igc_configure_msix - Configure MSI-X hardware
|
||||||
|
* @adapter: Pointer to adapter structure
|
||||||
|
*
|
||||||
|
* igc_configure_msix sets up the hardware to properly
|
||||||
|
* generate MSI-X interrupts.
|
||||||
|
*/
|
||||||
|
static void igc_configure_msix(struct igc_adapter *adapter)
|
||||||
|
{
|
||||||
|
struct igc_hw *hw = &adapter->hw;
|
||||||
|
int i, vector = 0;
|
||||||
|
u32 tmp;
|
||||||
|
|
||||||
|
adapter->eims_enable_mask = 0;
|
||||||
|
|
||||||
|
/* set vector for other causes, i.e. link changes */
|
||||||
|
switch (hw->mac.type) {
|
||||||
|
case igc_i225:
|
||||||
|
/* Turn on MSI-X capability first, or our settings
|
||||||
|
* won't stick. And it will take days to debug.
|
||||||
|
*/
|
||||||
|
wr32(IGC_GPIE, IGC_GPIE_MSIX_MODE |
|
||||||
|
IGC_GPIE_PBA | IGC_GPIE_EIAME |
|
||||||
|
IGC_GPIE_NSICR);
|
||||||
|
|
||||||
|
/* enable msix_other interrupt */
|
||||||
|
adapter->eims_other = BIT(vector);
|
||||||
|
tmp = (vector++ | IGC_IVAR_VALID) << 8;
|
||||||
|
|
||||||
|
wr32(IGC_IVAR_MISC, tmp);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* do nothing, since nothing else supports MSI-X */
|
||||||
|
break;
|
||||||
|
} /* switch (hw->mac.type) */
|
||||||
|
|
||||||
|
adapter->eims_enable_mask |= adapter->eims_other;
|
||||||
|
|
||||||
|
for (i = 0; i < adapter->num_q_vectors; i++)
|
||||||
|
igc_assign_vector(adapter->q_vector[i], vector++);
|
||||||
|
|
||||||
|
wrfl();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* igc_up - Open the interface and prepare it to handle traffic
|
* igc_up - Open the interface and prepare it to handle traffic
|
||||||
* @adapter: board private structure
|
* @adapter: board private structure
|
||||||
@ -2837,50 +2880,6 @@ static void igc_assign_vector(struct igc_q_vector *q_vector, int msix_vector)
|
|||||||
q_vector->set_itr = 1;
|
q_vector->set_itr = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* igc_configure_msix - Configure MSI-X hardware
|
|
||||||
* @adapter: Pointer to adapter structure
|
|
||||||
*
|
|
||||||
* igc_configure_msix sets up the hardware to properly
|
|
||||||
* generate MSI-X interrupts.
|
|
||||||
*/
|
|
||||||
static void igc_configure_msix(struct igc_adapter *adapter)
|
|
||||||
{
|
|
||||||
struct igc_hw *hw = &adapter->hw;
|
|
||||||
int i, vector = 0;
|
|
||||||
u32 tmp;
|
|
||||||
|
|
||||||
adapter->eims_enable_mask = 0;
|
|
||||||
|
|
||||||
/* set vector for other causes, i.e. link changes */
|
|
||||||
switch (hw->mac.type) {
|
|
||||||
case igc_i225:
|
|
||||||
/* Turn on MSI-X capability first, or our settings
|
|
||||||
* won't stick. And it will take days to debug.
|
|
||||||
*/
|
|
||||||
wr32(IGC_GPIE, IGC_GPIE_MSIX_MODE |
|
|
||||||
IGC_GPIE_PBA | IGC_GPIE_EIAME |
|
|
||||||
IGC_GPIE_NSICR);
|
|
||||||
|
|
||||||
/* enable msix_other interrupt */
|
|
||||||
adapter->eims_other = BIT(vector);
|
|
||||||
tmp = (vector++ | IGC_IVAR_VALID) << 8;
|
|
||||||
|
|
||||||
wr32(IGC_IVAR_MISC, tmp);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
/* do nothing, since nothing else supports MSI-X */
|
|
||||||
break;
|
|
||||||
} /* switch (hw->mac.type) */
|
|
||||||
|
|
||||||
adapter->eims_enable_mask |= adapter->eims_other;
|
|
||||||
|
|
||||||
for (i = 0; i < adapter->num_q_vectors; i++)
|
|
||||||
igc_assign_vector(adapter->q_vector[i], vector++);
|
|
||||||
|
|
||||||
wrfl();
|
|
||||||
}
|
|
||||||
|
|
||||||
static irqreturn_t igc_msix_ring(int irq, void *data)
|
static irqreturn_t igc_msix_ring(int irq, void *data)
|
||||||
{
|
{
|
||||||
struct igc_q_vector *q_vector = data;
|
struct igc_q_vector *q_vector = data;
|
||||||
|
Loading…
Reference in New Issue
Block a user