All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinicius Costa Gomes <vinicius.gomes@intel.com>
To: netdev@vger.kernel.org
Cc: Vinicius Costa Gomes <vinicius.gomes@intel.com>,
	jhs@mojatatu.com, xiyou.wangcong@gmail.com, jiri@resnulli.us,
	kuba@kernel.org, m-karicheri2@ti.com, vladimir.oltean@nxp.com,
	Jose.Abreu@synopsys.com, po.liu@nxp.com,
	intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com
Subject: [PATCH net-next v1 7/9] igc: Add support for Frame Preemption offload
Date: Tue,  1 Dec 2020 20:53:23 -0800	[thread overview]
Message-ID: <20201202045325.3254757-8-vinicius.gomes@intel.com> (raw)
In-Reply-To: <20201202045325.3254757-1-vinicius.gomes@intel.com>

After the set of queues that are marked as preemptible are exposed to
the driver we can configure the hardware to enable the frame
preemption functionality.

Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
---
 drivers/net/ethernet/intel/igc/igc_main.c | 32 +++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 3af54fd9cc0d..763f39082f91 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -4817,6 +4817,23 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
 	return 0;
 }
 
+static int igc_save_frame_preemption(struct igc_adapter *adapter,
+				     struct tc_preempt_qopt_offload *qopt)
+{
+	u32 preempt;
+	int i;
+
+	preempt = qopt->preemptible_queues;
+
+	for (i = 0; i < adapter->num_tx_queues; i++) {
+		struct igc_ring *ring = adapter->tx_ring[i];
+
+		ring->preemptible = preempt & BIT(i);
+	}
+
+	return 0;
+}
+
 static int igc_tsn_enable_qbv_scheduling(struct igc_adapter *adapter,
 					 struct tc_taprio_qopt_offload *qopt)
 {
@@ -4833,6 +4850,18 @@ static int igc_tsn_enable_qbv_scheduling(struct igc_adapter *adapter,
 	return igc_tsn_offload_apply(adapter);
 }
 
+static int igc_tsn_enable_frame_preemption(struct igc_adapter *adapter,
+					   struct tc_preempt_qopt_offload *qopt)
+{
+	int err;
+
+	err = igc_save_frame_preemption(adapter, qopt);
+	if (err)
+		return err;
+
+	return igc_tsn_offload_apply(adapter);
+}
+
 static int igc_setup_tc(struct net_device *dev, enum tc_setup_type type,
 			void *type_data)
 {
@@ -4845,6 +4874,9 @@ static int igc_setup_tc(struct net_device *dev, enum tc_setup_type type,
 	case TC_SETUP_QDISC_ETF:
 		return igc_tsn_enable_launchtime(adapter, type_data);
 
+	case TC_SETUP_PREEMPT:
+		return igc_tsn_enable_frame_preemption(adapter, type_data);
+
 	default:
 		return -EOPNOTSUPP;
 	}
-- 
2.29.2


WARNING: multiple messages have this Message-ID (diff)
From: Vinicius Costa Gomes <vinicius.gomes@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v1 7/9] igc: Add support for Frame Preemption offload
Date: Tue,  1 Dec 2020 20:53:23 -0800	[thread overview]
Message-ID: <20201202045325.3254757-8-vinicius.gomes@intel.com> (raw)
In-Reply-To: <20201202045325.3254757-1-vinicius.gomes@intel.com>

After the set of queues that are marked as preemptible are exposed to
the driver we can configure the hardware to enable the frame
preemption functionality.

Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
---
 drivers/net/ethernet/intel/igc/igc_main.c | 32 +++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 3af54fd9cc0d..763f39082f91 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -4817,6 +4817,23 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
 	return 0;
 }
 
+static int igc_save_frame_preemption(struct igc_adapter *adapter,
+				     struct tc_preempt_qopt_offload *qopt)
+{
+	u32 preempt;
+	int i;
+
+	preempt = qopt->preemptible_queues;
+
+	for (i = 0; i < adapter->num_tx_queues; i++) {
+		struct igc_ring *ring = adapter->tx_ring[i];
+
+		ring->preemptible = preempt & BIT(i);
+	}
+
+	return 0;
+}
+
 static int igc_tsn_enable_qbv_scheduling(struct igc_adapter *adapter,
 					 struct tc_taprio_qopt_offload *qopt)
 {
@@ -4833,6 +4850,18 @@ static int igc_tsn_enable_qbv_scheduling(struct igc_adapter *adapter,
 	return igc_tsn_offload_apply(adapter);
 }
 
+static int igc_tsn_enable_frame_preemption(struct igc_adapter *adapter,
+					   struct tc_preempt_qopt_offload *qopt)
+{
+	int err;
+
+	err = igc_save_frame_preemption(adapter, qopt);
+	if (err)
+		return err;
+
+	return igc_tsn_offload_apply(adapter);
+}
+
 static int igc_setup_tc(struct net_device *dev, enum tc_setup_type type,
 			void *type_data)
 {
@@ -4845,6 +4874,9 @@ static int igc_setup_tc(struct net_device *dev, enum tc_setup_type type,
 	case TC_SETUP_QDISC_ETF:
 		return igc_tsn_enable_launchtime(adapter, type_data);
 
+	case TC_SETUP_PREEMPT:
+		return igc_tsn_enable_frame_preemption(adapter, type_data);
+
 	default:
 		return -EOPNOTSUPP;
 	}
-- 
2.29.2


  parent reply	other threads:[~2020-12-02  4:54 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-02  4:53 [PATCH net-next v1 0/9] ethtool: Add support for frame preemption Vinicius Costa Gomes
2020-12-02  4:53 ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 1/9] ethtool: Add support for configuring " Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-03  1:53   ` Jakub Kicinski
2020-12-03  1:53     ` [Intel-wired-lan] " Jakub Kicinski
2020-12-05 17:43   ` Jakub Kicinski
2020-12-05 17:43     ` [Intel-wired-lan] " Jakub Kicinski
2020-12-07 22:11     ` Vinicius Costa Gomes
2020-12-07 22:11       ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-07 23:21       ` Jakub Kicinski
2020-12-07 23:21         ` [Intel-wired-lan] " Jakub Kicinski
2020-12-08  0:24         ` Vinicius Costa Gomes
2020-12-08  0:24           ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-08  0:27           ` Vladimir Oltean
2020-12-08  0:27             ` [Intel-wired-lan] " Vladimir Oltean
2020-12-08  0:48             ` Jakub Kicinski
2020-12-08  0:48               ` [Intel-wired-lan] " Jakub Kicinski
2020-12-08  6:22       ` Michal Kubecek
2020-12-08  6:22         ` [Intel-wired-lan] " Michal Kubecek
2020-12-02  4:53 ` [PATCH net-next v1 2/9] taprio: Add support for frame preemption offload Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 3/9] igc: Set the RX packet buffer size for TSN mode Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 4/9] igc: Only dump registers if configured to dump HW information Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 5/9] igc: Avoid TX Hangs because long cycles Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 6/9] igc: Add support for tuning frame preemption via ethtool Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-05 18:00   ` Jakub Kicinski
2020-12-05 18:00     ` [Intel-wired-lan] " Jakub Kicinski
2020-12-07 22:15     ` Vinicius Costa Gomes
2020-12-07 22:15       ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-07 23:22       ` Jakub Kicinski
2020-12-07 23:22         ` [Intel-wired-lan] " Jakub Kicinski
2020-12-02  4:53 ` Vinicius Costa Gomes [this message]
2020-12-02  4:53   ` [Intel-wired-lan] [PATCH net-next v1 7/9] igc: Add support for Frame Preemption offload Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 8/9] igc: Add support for exposing frame preemption stats registers Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-05 17:59   ` Jakub Kicinski
2020-12-05 17:59     ` [Intel-wired-lan] " Jakub Kicinski
2020-12-07 22:29     ` Vinicius Costa Gomes
2020-12-07 22:29       ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-02  4:53 ` [PATCH net-next v1 9/9] igc: Separate TSN configurations that can be updated Vinicius Costa Gomes
2020-12-02  4:53   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-05 17:50 ` [PATCH net-next v1 0/9] ethtool: Add support for frame preemption Jakub Kicinski
2020-12-05 17:50   ` [Intel-wired-lan] " Jakub Kicinski
2020-12-07 22:49   ` Vinicius Costa Gomes
2020-12-07 22:49     ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-12-07 23:12     ` Vladimir Oltean
2020-12-07 23:12       ` [Intel-wired-lan] " Vladimir Oltean
2020-12-08  0:34       ` Vinicius Costa Gomes
2020-12-08  0:34         ` [Intel-wired-lan] " Vinicius Costa Gomes

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=20201202045325.3254757-8-vinicius.gomes@intel.com \
    --to=vinicius.gomes@intel.com \
    --cc=Jose.Abreu@synopsys.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=m-karicheri2@ti.com \
    --cc=netdev@vger.kernel.org \
    --cc=po.liu@nxp.com \
    --cc=vladimir.oltean@nxp.com \
    --cc=xiyou.wangcong@gmail.com \
    /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.