All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shaopeng He <shaopeng.he@intel.com>
To: dev@dpdk.org
Subject: [PATCH] fm10k: enable PCIe port level Loopback Suppression
Date: Thu, 28 Jan 2016 13:48:39 +0800	[thread overview]
Message-ID: <1453960119-31558-1-git-send-email-shaopeng.he@intel.com> (raw)

A PCIe port may represent within it multiple logical ports
(for example when SR-IOV is enabled, or when a VMDQ type logical
port scheme is employed assigning ports to sets of queues).
For this reason each RX queue in each PCIe port is given a source
GLORT that is used for loopback suppression.
This patch assigns a SGLORT for each RX queue, and enables PCIe
port level Loopback Suppression.

Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
---
 drivers/net/fm10k/fm10k_ethdev.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index f6eb05d..60f821a 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -690,12 +690,15 @@ static int
 fm10k_dev_rx_init(struct rte_eth_dev *dev)
 {
 	struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct fm10k_macvlan_filter_info *macvlan;
 	int i, ret;
 	struct fm10k_rx_queue *rxq;
 	uint64_t base_addr;
 	uint32_t size;
 	uint32_t rxdctl = FM10K_RXDCTL_WRITE_BACK_MIN_DELAY;
+	uint32_t logic_port = hw->mac.dglort_map;
 	uint16_t buf_size;
+	uint16_t queue_stride = 0;
 
 	/* Disable RXINT to avoid possible interrupt */
 	for (i = 0; i < hw->mac.max_queues; i++)
@@ -735,7 +738,8 @@ fm10k_dev_rx_init(struct rte_eth_dev *dev)
 		buf_size -= FM10K_RX_DATABUF_ALIGN;
 
 		FM10K_WRITE_REG(hw, FM10K_SRRCTL(i),
-				buf_size >> FM10K_SRRCTL_BSIZEPKT_SHIFT);
+				(buf_size >> FM10K_SRRCTL_BSIZEPKT_SHIFT) |
+				FM10K_SRRCTL_LOOPBACK_SUPPRESS);
 
 		/* It adds dual VLAN length for supporting dual VLAN */
 		if ((dev->data->dev_conf.rxmode.max_rx_pkt_len +
@@ -762,6 +766,18 @@ fm10k_dev_rx_init(struct rte_eth_dev *dev)
 	/* Decide the best RX function */
 	fm10k_set_rx_function(dev);
 
+	/* update RX_SGLORT for loopback suppress*/
+	if (hw->mac.type != fm10k_mac_pf)
+		return 0;
+	macvlan = FM10K_DEV_PRIVATE_TO_MACVLAN(dev->data->dev_private);
+	if (macvlan->nb_queue_pools)
+		queue_stride = dev->data->nb_rx_queues / macvlan->nb_queue_pools;
+	for (i = 0; i < dev->data->nb_rx_queues; ++i) {
+		if (i && queue_stride && !(i % queue_stride))
+			logic_port++;
+		FM10K_WRITE_REG(hw, FM10K_RX_SGLORT(i), logic_port);
+	}
+
 	return 0;
 }
 
-- 
1.9.3

             reply	other threads:[~2016-01-28  5:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-28  5:48 Shaopeng He [this message]
2016-02-03  7:18 ` [PATCH] fm10k: enable PCIe port level Loopback Suppression Chen, Jing D
2016-02-04  0:40   ` He, Shaopeng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1453960119-31558-1-git-send-email-shaopeng.he@intel.com \
    --to=shaopeng.he@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.