i40e: associate VMDq queue with VM type
authorShannon Nelson <shannon.nelson@intel.com>
Tue, 14 Jan 2014 08:49:50 +0000 (00:49 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Jan 2014 02:56:00 +0000 (18:56 -0800)
Fix a bug where the queue was not associated with the right set-up
within the hardware.  The fix is to use the right QTX_CTL VSI type
when associating it to the VSI.

Change-ID: I65ef6c5a8205601c640a6593e4b7e78d6ba45545
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40e/Module.symvers [new file with mode: 0644]
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_type.h

diff --git a/drivers/net/ethernet/intel/i40e/Module.symvers b/drivers/net/ethernet/intel/i40e/Module.symvers
new file mode 100644 (file)
index 0000000..e69de29
index ad04da288f5d291a70c595b70c44875590b33b92..14e4f4a4fd55ef1d4204da904cb37b6bb9997025 100644 (file)
@@ -2206,7 +2206,10 @@ static int i40e_configure_tx_ring(struct i40e_ring *ring)
        }
 
        /* Now associate this queue with this PCI function */
-       qtx_ctl = I40E_QTX_CTL_PF_QUEUE;
+       if (vsi->type == I40E_VSI_VMDQ2)
+               qtx_ctl = I40E_QTX_CTL_VM_QUEUE;
+       else
+               qtx_ctl = I40E_QTX_CTL_PF_QUEUE;
        qtx_ctl |= ((hw->pf_id << I40E_QTX_CTL_PF_INDX_SHIFT) &
                    I40E_QTX_CTL_PF_INDX_MASK);
        wr32(hw, I40E_QTX_CTL(pf_q), qtx_ctl);
index 80cf24020f1704f51f084bad807675dfdda21499..ccfc52debb1968d570c6d878eec351e3e7a3e711 100644 (file)
@@ -75,6 +75,7 @@ typedef void (*I40E_ADMINQ_CALLBACK)(struct i40e_hw *, struct i40e_aq_desc *);
 
 /* bitfields for Tx queue mapping in QTX_CTL */
 #define I40E_QTX_CTL_VF_QUEUE  0x0
+#define I40E_QTX_CTL_VM_QUEUE  0x1
 #define I40E_QTX_CTL_PF_QUEUE  0x2
 
 /* debug masks - set these bits in hw->debug_mask to control output */