]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40e: refactor interrupt enable
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Thu, 23 Jul 2015 20:54:41 +0000 (16:54 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 10 Mar 2016 16:32:06 +0000 (08:32 -0800)
Orabug: 22342532

The interrupt enable function was always making the caller add
the base_vector from the VSI struct which is already passed to
the function. Just collapse the math into the helper function.

Change-ID: I54ef33aa7ceebc3231c3cc48f7b39fd0c3ff5806
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 7845548de7e4b49451f0eed77f690e579c428417)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c

index fea3fd8eddb440a69a1c2ddff3dd9fc228910bb5..742ed74ccb660252ca4b94b0e48c1f9473dfc798 100644 (file)
@@ -3043,7 +3043,7 @@ void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf)
 /**
  * i40e_irq_dynamic_enable - Enable default interrupt generation settings
  * @vsi: pointer to a vsi
- * @vector: enable a particular Hw Interrupt vector
+ * @vector: enable a particular Hw Interrupt vector, without base_vector
  **/
 void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
 {
@@ -3054,7 +3054,7 @@ void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
        val = I40E_PFINT_DYN_CTLN_INTENA_MASK |
              I40E_PFINT_DYN_CTLN_CLEARPBA_MASK |
              (I40E_ITR_NONE << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT);
-       wr32(hw, I40E_PFINT_DYN_CTLN(vector - 1), val);
+       wr32(hw, I40E_PFINT_DYN_CTLN(vector + vsi->base_vector - 1), val);
        /* skip the flush */
 }
 
@@ -3197,8 +3197,7 @@ static int i40e_vsi_enable_irq(struct i40e_vsi *vsi)
        int i;
 
        if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
-               for (i = vsi->base_vector;
-                    i < (vsi->num_q_vectors + vsi->base_vector); i++)
+               for (i = 0; i < vsi->num_q_vectors; i++)
                        i40e_irq_dynamic_enable(vsi, i);
        } else {
                i40e_irq_dynamic_enable_icr0(pf);
@@ -3430,8 +3429,7 @@ static bool i40e_clean_fdir_tx_irq(struct i40e_ring *tx_ring, int budget)
        tx_ring->next_to_clean = i;
 
        if (vsi->back->flags & I40E_FLAG_MSIX_ENABLED) {
-               i40e_irq_dynamic_enable(vsi,
-                               tx_ring->q_vector->v_idx + vsi->base_vector);
+               i40e_irq_dynamic_enable(vsi, tx_ring->q_vector->v_idx);
        }
        return budget > 0;
 }
index 247b6bd5e0453d68f8e427a98f39431e54067dd4..819ff4984469eb0a14979ae9db8bfce44cb38ef0 100644 (file)
@@ -1785,8 +1785,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
                if (!test_bit(__I40E_DOWN, &vsi->state))
                        wr32(hw, I40E_PFINT_DYN_CTLN(vector - 1), val);
        } else {
-               i40e_irq_dynamic_enable(vsi,
-                                       q_vector->v_idx + vsi->base_vector);
+               i40e_irq_dynamic_enable(vsi, q_vector->v_idx);
        }
        if (ITR_IS_DYNAMIC(vsi->tx_itr_setting)) {
                old_itr = q_vector->tx.itr;
@@ -1808,8 +1807,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
                        wr32(hw, I40E_PFINT_DYN_CTLN(q_vector->v_idx +
                              vsi->base_vector - 1), val);
        } else {
-               i40e_irq_dynamic_enable(vsi,
-                                       q_vector->v_idx + vsi->base_vector);
+               i40e_irq_dynamic_enable(vsi, q_vector->v_idx);
        }
 }