OSDN Git Service

i40e/i40evf: set headwb Tx context flags and use them
authorAshish Shah <ashish.n.shah@intel.com>
Thu, 22 May 2014 06:31:25 +0000 (06:31 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 11 Jun 2014 15:46:19 +0000 (08:46 -0700)
Set appropriate fields in Tx queue configuration virtchnl message
to pf to enable headwb and setup headwb addr.
Then use that info from the VF to set headwb and headwb_addr instead of
always enabling them.

Change-ID: I7d393d1b2b07f0f3355b3a4f7c2d3c6ee3b0d622
Signed-off-by: Ashish Shah <ashish.n.shah@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c

index 385a46f..d9d0456 100644 (file)
@@ -248,9 +248,8 @@ static int i40e_config_vsi_tx_queue(struct i40e_vf *vf, u16 vsi_idx,
        tx_ctx.qlen = info->ring_len;
        tx_ctx.rdylist = le16_to_cpu(pf->vsi[vsi_idx]->info.qs_handle[0]);
        tx_ctx.rdylist_act = 0;
-       tx_ctx.head_wb_ena = 1;
-       tx_ctx.head_wb_addr = info->dma_ring_addr +
-                             (info->ring_len * sizeof(struct i40e_tx_desc));
+       tx_ctx.head_wb_ena = info->headwb_enabled;
+       tx_ctx.head_wb_addr = info->dma_headwb_addr;
 
        /* clear the context in the HMC */
        ret = i40e_clear_lan_tx_queue_context(hw, pf_queue_id);
index cd414da..6d76f29 100644 (file)
@@ -233,6 +233,9 @@ void i40evf_configure_queues(struct i40evf_adapter *adapter)
                vqpi->txq.queue_id = i;
                vqpi->txq.ring_len = adapter->tx_rings[i]->count;
                vqpi->txq.dma_ring_addr = adapter->tx_rings[i]->dma;
+               vqpi->txq.headwb_enabled = 1;
+               vqpi->txq.dma_headwb_addr = vqpi->txq.dma_ring_addr +
+                   (vqpi->txq.ring_len * sizeof(struct i40e_tx_desc));
 
                vqpi->rxq.vsi_id = vqci->vsi_id;
                vqpi->rxq.queue_id = i;