* [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping
@ 2022-10-30 4:53 Muhammad Husaini Zulkifli
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv Muhammad Husaini Zulkifli
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Muhammad Husaini Zulkifli @ 2022-10-30 4:53 UTC (permalink / raw)
To: intel-wired-lan; +Cc: muhammad.husaini.zulkifli, tee.min.tan
Hello!
This patch series improve the Time-Sensitive Networking(TSN) Qbv Scheduling
features. Since the previous I225 stepping had some hardware
restrictions, this new stepping enables us to further enhance the driver
code and offer more Qbv capabilities.
An overview of each patch series is given below:
Patch 1: Allow configuring the basetime with a value of zero.
Patch 2: To enable basetime scheduling in the future, remove the existing
restriction for i226 stepping while maintain the restriction for i225.
Patch 3: Handle the Qbv end time correctly if cycle time parameter is
configured during the Gate Control List. Applicable for both i225 and i226.
Patch 4: Remove the restriction which require a controller reset when
setting the basetime register for new i226 steps and enable the second
GCL configuration.
Patch 5: Setting the Qbv start time and end time properly if the particular
gate is close in the Gate Control List due to hardware bug.
Test Procedure:
Talker: udp_tai application is being used to generate the Qbv packet.
Receiver : Capture using tcpdump to analyze the packet using wireshark.
Muhammad Husaini Zulkifli (1):
igc: remove I226 Qbv BaseTime restriction
Tan Tee Min (4):
igc: allow BaseTime 0 enrollment for Qbv
igc: recalculate Qbv end_time by considering cycle time
igc: enable Qbv configuration for 2nd GCL
igc: Set Qbv start_time and end_time to end_time if not being
configured in GCL
drivers/net/ethernet/intel/igc/igc.h | 1 +
drivers/net/ethernet/intel/igc/igc_base.c | 29 +++++++++++
drivers/net/ethernet/intel/igc/igc_base.h | 2 +
drivers/net/ethernet/intel/igc/igc_defines.h | 1 +
drivers/net/ethernet/intel/igc/igc_main.c | 45 +++++++++++++---
drivers/net/ethernet/intel/igc/igc_tsn.c | 55 +++++++++++++-------
drivers/net/ethernet/intel/igc/igc_tsn.h | 2 +-
7 files changed, 110 insertions(+), 25 deletions(-)
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv
2022-10-30 4:53 [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping Muhammad Husaini Zulkifli
@ 2022-10-30 4:53 ` Muhammad Husaini Zulkifli
2022-11-13 7:28 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction Muhammad Husaini Zulkifli
` (3 subsequent siblings)
4 siblings, 1 reply; 13+ messages in thread
From: Muhammad Husaini Zulkifli @ 2022-10-30 4:53 UTC (permalink / raw)
To: intel-wired-lan; +Cc: muhammad.husaini.zulkifli, tee.min.tan
From: Tan Tee Min <tee.min.tan@linux.intel.com>
Introduce qbv_enable flag in igc_adapter struct to store the Qbv on/off.
So this allow the BaseTime to enroll with zero value.
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
---
drivers/net/ethernet/intel/igc/igc.h | 1 +
drivers/net/ethernet/intel/igc/igc_main.c | 2 ++
drivers/net/ethernet/intel/igc/igc_tsn.c | 2 +-
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
index 1e7e7071f64d..c816623dc521 100644
--- a/drivers/net/ethernet/intel/igc/igc.h
+++ b/drivers/net/ethernet/intel/igc/igc.h
@@ -182,6 +182,7 @@ struct igc_adapter {
ktime_t base_time;
ktime_t cycle_time;
+ bool qbv_enable;
/* OS defined structs */
struct pci_dev *pdev;
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 671255edf3c2..cea7f4cc1eb7 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -5925,6 +5925,8 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
u32 start_time = 0, end_time = 0;
size_t n;
+ adapter->qbv_enable = qopt->enable;
+
if (!qopt->enable)
return igc_tsn_clear_schedule(adapter);
diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.c b/drivers/net/ethernet/intel/igc/igc_tsn.c
index f975ed807da1..b63736176709 100644
--- a/drivers/net/ethernet/intel/igc/igc_tsn.c
+++ b/drivers/net/ethernet/intel/igc/igc_tsn.c
@@ -36,7 +36,7 @@ static unsigned int igc_tsn_new_flags(struct igc_adapter *adapter)
{
unsigned int new_flags = adapter->flags & ~IGC_FLAG_TSN_ANY_ENABLED;
- if (adapter->base_time)
+ if (adapter->qbv_enable)
new_flags |= IGC_FLAG_TSN_QBV_ENABLED;
if (is_any_launchtime(adapter))
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction
2022-10-30 4:53 [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping Muhammad Husaini Zulkifli
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv Muhammad Husaini Zulkifli
@ 2022-10-30 4:53 ` Muhammad Husaini Zulkifli
2022-11-03 18:26 ` Tony Nguyen
2022-11-13 7:29 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 3/5] igc: recalculate Qbv end_time by considering cycle time Muhammad Husaini Zulkifli
` (2 subsequent siblings)
4 siblings, 2 replies; 13+ messages in thread
From: Muhammad Husaini Zulkifli @ 2022-10-30 4:53 UTC (permalink / raw)
To: intel-wired-lan; +Cc: muhammad.husaini.zulkifli, tee.min.tan
Remove the Qbv BaseTime restriction for I226 so that the BaseTime can be
scheduled to the future time. A new register bit of Tx Qav Control
(Bit-7: FutScdDis) was introduced to allow I226 scheduling future time as
Qbv BaseTime and not having the Tx hang timeout issue.
Besides, according to datasheet section 7.5.2.9.3.3, FutScdDis bit has to
be configured first before the cycle time and base time.
Indeed the FutScdDis bit is only active on re-configuration, thus we have
to set the BASET_L to zero and then only set it to the desired value.
Please also note that the Qbv configuration flow is moved around based on
the Qbv programming guideline that is documented in the latest datasheet.
Co-Developed-by : Tan Tee Min <tee.min.tan@linux.intel.com>
Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
---
drivers/net/ethernet/intel/igc/igc_base.c | 29 +++++++++++++
drivers/net/ethernet/intel/igc/igc_base.h | 2 +
drivers/net/ethernet/intel/igc/igc_defines.h | 1 +
drivers/net/ethernet/intel/igc/igc_main.c | 5 ++-
drivers/net/ethernet/intel/igc/igc_tsn.c | 44 +++++++++++++-------
5 files changed, 65 insertions(+), 16 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_base.c b/drivers/net/ethernet/intel/igc/igc_base.c
index a15927e77272..a1d815af507d 100644
--- a/drivers/net/ethernet/intel/igc/igc_base.c
+++ b/drivers/net/ethernet/intel/igc/igc_base.c
@@ -396,6 +396,35 @@ void igc_rx_fifo_flush_base(struct igc_hw *hw)
rd32(IGC_MPC);
}
+bool igc_is_device_id_i225(struct igc_hw *hw)
+{
+ switch (hw->device_id) {
+ case IGC_DEV_ID_I225_LM:
+ case IGC_DEV_ID_I225_V:
+ case IGC_DEV_ID_I225_I:
+ case IGC_DEV_ID_I225_K:
+ case IGC_DEV_ID_I225_K2:
+ case IGC_DEV_ID_I225_LMVP:
+ case IGC_DEV_ID_I225_IT:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool igc_is_device_id_i226(struct igc_hw *hw)
+{
+ switch (hw->device_id) {
+ case IGC_DEV_ID_I226_LM:
+ case IGC_DEV_ID_I226_V:
+ case IGC_DEV_ID_I226_K:
+ case IGC_DEV_ID_I226_IT:
+ return true;
+ default:
+ return false;
+ }
+}
+
static struct igc_mac_operations igc_mac_ops_base = {
.init_hw = igc_init_hw_base,
.check_for_link = igc_check_for_copper_link,
diff --git a/drivers/net/ethernet/intel/igc/igc_base.h b/drivers/net/ethernet/intel/igc/igc_base.h
index ce530f5fd7bd..7a992befca24 100644
--- a/drivers/net/ethernet/intel/igc/igc_base.h
+++ b/drivers/net/ethernet/intel/igc/igc_base.h
@@ -7,6 +7,8 @@
/* forward declaration */
void igc_rx_fifo_flush_base(struct igc_hw *hw);
void igc_power_down_phy_copper_base(struct igc_hw *hw);
+bool igc_is_device_id_i225(struct igc_hw *hw);
+bool igc_is_device_id_i226(struct igc_hw *hw);
/* Transmit Descriptor - Advanced */
union igc_adv_tx_desc {
diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h
index f7311aeb293b..25ba10f5df96 100644
--- a/drivers/net/ethernet/intel/igc/igc_defines.h
+++ b/drivers/net/ethernet/intel/igc/igc_defines.h
@@ -520,6 +520,7 @@
/* Transmit Scheduling */
#define IGC_TQAVCTRL_TRANSMIT_MODE_TSN 0x00000001
#define IGC_TQAVCTRL_ENHANCED_QAV 0x00000008
+#define IGC_TQAVCTRL_FUTSCDDIS 0x00000080
#define IGC_TXQCTL_QUEUE_MODE_LAUNCHT 0x00000001
#define IGC_TXQCTL_STRICT_CYCLE 0x00000002
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index cea7f4cc1eb7..b321e0b2ddbd 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -5839,6 +5839,7 @@ static bool validate_schedule(struct igc_adapter *adapter,
const struct tc_taprio_qopt_offload *qopt)
{
int queue_uses[IGC_MAX_TX_QUEUES] = { };
+ struct igc_hw *hw = &adapter->hw;
struct timespec64 now;
size_t n;
@@ -5851,8 +5852,10 @@ static bool validate_schedule(struct igc_adapter *adapter,
* in the future, it will hold all the packets until that
* time, causing a lot of TX Hangs, so to avoid that, we
* reject schedules that would start in the future.
+ * Note: Limitation above is no longer in i226.
*/
- if (!is_base_time_past(qopt->base_time, &now))
+ if (!is_base_time_past(qopt->base_time, &now) &&
+ igc_is_device_id_i225(hw))
return false;
for (n = 0; n < qopt->num_entries; n++) {
diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.c b/drivers/net/ethernet/intel/igc/igc_tsn.c
index b63736176709..d7832cf1bc5b 100644
--- a/drivers/net/ethernet/intel/igc/igc_tsn.c
+++ b/drivers/net/ethernet/intel/igc/igc_tsn.c
@@ -2,6 +2,7 @@
/* Copyright (c) 2019 Intel Corporation */
#include "igc.h"
+#include "igc_hw.h"
#include "igc_tsn.h"
static bool is_any_launchtime(struct igc_adapter *adapter)
@@ -92,7 +93,8 @@ static int igc_tsn_disable_offload(struct igc_adapter *adapter)
tqavctrl = rd32(IGC_TQAVCTRL);
tqavctrl &= ~(IGC_TQAVCTRL_TRANSMIT_MODE_TSN |
- IGC_TQAVCTRL_ENHANCED_QAV);
+ IGC_TQAVCTRL_ENHANCED_QAV | IGC_TQAVCTRL_FUTSCDDIS);
+
wr32(IGC_TQAVCTRL, tqavctrl);
for (i = 0; i < adapter->num_tx_queues; i++) {
@@ -117,20 +119,10 @@ static int igc_tsn_enable_offload(struct igc_adapter *adapter)
ktime_t base_time, systim;
int i;
- cycle = adapter->cycle_time;
- base_time = adapter->base_time;
-
wr32(IGC_TSAUXC, 0);
wr32(IGC_DTXMXPKTSZ, IGC_DTXMXPKTSZ_TSN);
wr32(IGC_TXPBS, IGC_TXPBSIZE_TSN);
- tqavctrl = rd32(IGC_TQAVCTRL);
- tqavctrl |= IGC_TQAVCTRL_TRANSMIT_MODE_TSN | IGC_TQAVCTRL_ENHANCED_QAV;
- wr32(IGC_TQAVCTRL, tqavctrl);
-
- wr32(IGC_QBVCYCLET_S, cycle);
- wr32(IGC_QBVCYCLET, cycle);
-
for (i = 0; i < adapter->num_tx_queues; i++) {
struct igc_ring *ring = adapter->tx_ring[i];
u32 txqctl = 0;
@@ -240,21 +232,43 @@ static int igc_tsn_enable_offload(struct igc_adapter *adapter)
wr32(IGC_TXQCTL(i), txqctl);
}
+ tqavctrl = rd32(IGC_TQAVCTRL);
+ tqavctrl |= IGC_TQAVCTRL_TRANSMIT_MODE_TSN | IGC_TQAVCTRL_ENHANCED_QAV;
+
+ cycle = adapter->cycle_time;
+ base_time = adapter->base_time;
+
nsec = rd32(IGC_SYSTIML);
sec = rd32(IGC_SYSTIMH);
systim = ktime_set(sec, nsec);
-
if (ktime_compare(systim, base_time) > 0) {
- s64 n;
+ s64 n = div64_s64(ktime_sub_ns(systim, base_time), cycle);
- n = div64_s64(ktime_sub_ns(systim, base_time), cycle);
base_time = ktime_add_ns(base_time, (n + 1) * cycle);
+ } else {
+ /* According to datasheet section 7.5.2.9.3.3, FutScdDis bit
+ * has to be configured before the cycle time and base time.
+ */
+ if (igc_is_device_id_i226(hw))
+ tqavctrl |= IGC_TQAVCTRL_FUTSCDDIS;
}
- baset_h = div_s64_rem(base_time, NSEC_PER_SEC, &baset_l);
+ wr32(IGC_TQAVCTRL, tqavctrl);
+
+ wr32(IGC_QBVCYCLET_S, cycle);
+ wr32(IGC_QBVCYCLET, cycle);
+ baset_h = div_s64_rem(base_time, NSEC_PER_SEC, &baset_l);
wr32(IGC_BASET_H, baset_h);
+
+ /* In i226, Future base time is only supported when FutScdDis bit
+ * is enabled and only active for re-configuration.
+ * In this case, initialize the base time with zero to create
+ * "re-configuration" scenario then only set the desired base time.
+ */
+ if (tqavctrl & IGC_TQAVCTRL_FUTSCDDIS)
+ wr32(IGC_BASET_L, 0);
wr32(IGC_BASET_L, baset_l);
return 0;
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Intel-wired-lan] [PATCH 3/5] igc: recalculate Qbv end_time by considering cycle time
2022-10-30 4:53 [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping Muhammad Husaini Zulkifli
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv Muhammad Husaini Zulkifli
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction Muhammad Husaini Zulkifli
@ 2022-10-30 4:53 ` Muhammad Husaini Zulkifli
2022-11-13 7:31 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 4/5] igc: enable Qbv configuration for 2nd GCL Muhammad Husaini Zulkifli
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 5/5] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL Muhammad Husaini Zulkifli
4 siblings, 1 reply; 13+ messages in thread
From: Muhammad Husaini Zulkifli @ 2022-10-30 4:53 UTC (permalink / raw)
To: intel-wired-lan; +Cc: muhammad.husaini.zulkifli, tee.min.tan
From: Tan Tee Min <tee.min.tan@linux.intel.com>
Qbv users can specify a cycle time that is not equal to the total GCL
intervals. Hence, recalculation is necessary here to exclude the time
interval that exceeds the cycle time. As those GCL which exceeds the
cycle time will be truncated.
According to IEEE Std. 802.1Q-2018 section 8.6.9.2, once the end of
the list is reached, it will switch to the END_OF_CYCLE state and
leave the gates in the same state until the next cycle is started.
Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index b321e0b2ddbd..9784af3afc57 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -5948,6 +5948,21 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
end_time += e->interval;
+ /* If any of the conditions below are true, we need to manually
+ * control the end time of the cycle.
+ * 1. Qbv users can specify a cycle time that is not equal
+ * to the total GCL intervals. Hence, recalculation is
+ * necessary here to exclude the time interval that
+ * exceeds the cycle time.
+ * 2. According to IEEE Std. 802.1Q-2018 section 8.6.9.2,
+ * once the end of the list is reached, it will switch
+ * to the END_OF_CYCLE state and leave the gates in the
+ * same state until the next cycle is started.
+ */
+ if (end_time > adapter->cycle_time ||
+ n + 1 == qopt->num_entries)
+ end_time = adapter->cycle_time;
+
for (i = 0; i < adapter->num_tx_queues; i++) {
struct igc_ring *ring = adapter->tx_ring[i];
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Intel-wired-lan] [PATCH 4/5] igc: enable Qbv configuration for 2nd GCL
2022-10-30 4:53 [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping Muhammad Husaini Zulkifli
` (2 preceding siblings ...)
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 3/5] igc: recalculate Qbv end_time by considering cycle time Muhammad Husaini Zulkifli
@ 2022-10-30 4:53 ` Muhammad Husaini Zulkifli
2022-11-13 7:32 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 5/5] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL Muhammad Husaini Zulkifli
4 siblings, 1 reply; 13+ messages in thread
From: Muhammad Husaini Zulkifli @ 2022-10-30 4:53 UTC (permalink / raw)
To: intel-wired-lan; +Cc: muhammad.husaini.zulkifli, tee.min.tan
From: Tan Tee Min <tee.min.tan@linux.intel.com>
Make reset task only executes for i225 and Qbv disabling to allow
i226 configure for 2nd GCL without resetting the adapter.
In i226, Tx won't hang if there is a GCL is already running, so in
this case we don't need to set FutScdDis bit.
Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 9 +++++----
drivers/net/ethernet/intel/igc/igc_tsn.c | 13 +++++++++----
drivers/net/ethernet/intel/igc/igc_tsn.h | 2 +-
3 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 9784af3afc57..0b05d889db7d 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -5901,7 +5901,7 @@ static int igc_tsn_enable_launchtime(struct igc_adapter *adapter,
if (err)
return err;
- return igc_tsn_offload_apply(adapter);
+ return igc_tsn_offload_apply(adapter, qopt->enable);
}
static int igc_tsn_clear_schedule(struct igc_adapter *adapter)
@@ -5925,6 +5925,7 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
struct tc_taprio_qopt_offload *qopt)
{
bool queue_configured[IGC_MAX_TX_QUEUES] = { };
+ struct igc_hw *hw = &adapter->hw;
u32 start_time = 0, end_time = 0;
size_t n;
@@ -5933,7 +5934,7 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
if (!qopt->enable)
return igc_tsn_clear_schedule(adapter);
- if (adapter->base_time)
+ if (igc_is_device_id_i225(hw) && adapter->base_time)
return -EALREADY;
if (!validate_schedule(adapter, qopt))
@@ -5999,7 +6000,7 @@ static int igc_tsn_enable_qbv_scheduling(struct igc_adapter *adapter,
if (err)
return err;
- return igc_tsn_offload_apply(adapter);
+ return igc_tsn_offload_apply(adapter, qopt->enable);
}
static int igc_save_cbs_params(struct igc_adapter *adapter, int queue,
@@ -6067,7 +6068,7 @@ static int igc_tsn_enable_cbs(struct igc_adapter *adapter,
if (err)
return err;
- return igc_tsn_offload_apply(adapter);
+ return igc_tsn_offload_apply(adapter, qopt->enable);
}
static int igc_setup_tc(struct net_device *dev, enum tc_setup_type type,
diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.c b/drivers/net/ethernet/intel/igc/igc_tsn.c
index d7832cf1bc5b..fffea07fa05e 100644
--- a/drivers/net/ethernet/intel/igc/igc_tsn.c
+++ b/drivers/net/ethernet/intel/igc/igc_tsn.c
@@ -232,7 +232,7 @@ static int igc_tsn_enable_offload(struct igc_adapter *adapter)
wr32(IGC_TXQCTL(i), txqctl);
}
- tqavctrl = rd32(IGC_TQAVCTRL);
+ tqavctrl = rd32(IGC_TQAVCTRL) & ~(IGC_TQAVCTRL_FUTSCDDIS);
tqavctrl |= IGC_TQAVCTRL_TRANSMIT_MODE_TSN | IGC_TQAVCTRL_ENHANCED_QAV;
cycle = adapter->cycle_time;
@@ -249,8 +249,11 @@ static int igc_tsn_enable_offload(struct igc_adapter *adapter)
} else {
/* According to datasheet section 7.5.2.9.3.3, FutScdDis bit
* has to be configured before the cycle time and base time.
+ * Tx won't hang if there is a GCL is already running,
+ * so in this case we don't need to set FutScdDis.
*/
- if (igc_is_device_id_i226(hw))
+ if (igc_is_device_id_i226(hw) &&
+ !(rd32(IGC_BASET_H) || rd32(IGC_BASET_L)))
tqavctrl |= IGC_TQAVCTRL_FUTSCDDIS;
}
@@ -293,11 +296,13 @@ int igc_tsn_reset(struct igc_adapter *adapter)
return err;
}
-int igc_tsn_offload_apply(struct igc_adapter *adapter)
+int igc_tsn_offload_apply(struct igc_adapter *adapter, bool enable)
{
+ struct igc_hw *hw = &adapter->hw;
int err;
- if (netif_running(adapter->netdev)) {
+ if (netif_running(adapter->netdev) &&
+ (igc_is_device_id_i225(hw) || !enable)) {
schedule_work(&adapter->reset_task);
return 0;
}
diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.h b/drivers/net/ethernet/intel/igc/igc_tsn.h
index b53e6af560b7..631222bb6eb5 100644
--- a/drivers/net/ethernet/intel/igc/igc_tsn.h
+++ b/drivers/net/ethernet/intel/igc/igc_tsn.h
@@ -4,7 +4,7 @@
#ifndef _IGC_TSN_H_
#define _IGC_TSN_H_
-int igc_tsn_offload_apply(struct igc_adapter *adapter);
+int igc_tsn_offload_apply(struct igc_adapter *adapter, bool enable);
int igc_tsn_reset(struct igc_adapter *adapter);
void igc_tsn_adjust_txtime_offset(struct igc_adapter *adapter);
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Intel-wired-lan] [PATCH 5/5] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL
2022-10-30 4:53 [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping Muhammad Husaini Zulkifli
` (3 preceding siblings ...)
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 4/5] igc: enable Qbv configuration for 2nd GCL Muhammad Husaini Zulkifli
@ 2022-10-30 4:53 ` Muhammad Husaini Zulkifli
2022-11-13 7:33 ` naamax.meir
4 siblings, 1 reply; 13+ messages in thread
From: Muhammad Husaini Zulkifli @ 2022-10-30 4:53 UTC (permalink / raw)
To: intel-wired-lan; +Cc: muhammad.husaini.zulkifli, tee.min.tan
From: Tan Tee Min <tee.min.tan@linux.intel.com>
The default setting of end_time minus start_time is whole 1 second.
Thus, if it's not being configured in any GCL entry then it will be
staying at original 1 second.
This patch is changing the start_time and end_time to be end_time as
if setting zero will be having weird HW behavior where the gate will
not be fully closed.
Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 0b05d889db7d..3dfed282f726 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -5928,6 +5928,7 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
struct igc_hw *hw = &adapter->hw;
u32 start_time = 0, end_time = 0;
size_t n;
+ int i;
adapter->qbv_enable = qopt->enable;
@@ -5945,7 +5946,6 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
for (n = 0; n < qopt->num_entries; n++) {
struct tc_taprio_sched_entry *e = &qopt->entries[n];
- int i;
end_time += e->interval;
@@ -5984,6 +5984,18 @@ static int igc_save_qbv_schedule(struct igc_adapter *adapter,
start_time += e->interval;
}
+ /* Check whether a queue gets configured.
+ * If not, set the start and end time to be end time.
+ */
+ for (i = 0; i < adapter->num_tx_queues; i++) {
+ if (!queue_configured[i]) {
+ struct igc_ring *ring = adapter->tx_ring[i];
+
+ ring->start_time = end_time;
+ ring->end_time = end_time;
+ }
+ }
+
return 0;
}
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction Muhammad Husaini Zulkifli
@ 2022-11-03 18:26 ` Tony Nguyen
2022-11-04 8:28 ` Zulkifli, Muhammad Husaini
2022-11-13 7:29 ` naamax.meir
1 sibling, 1 reply; 13+ messages in thread
From: Tony Nguyen @ 2022-11-03 18:26 UTC (permalink / raw)
To: Muhammad Husaini Zulkifli, intel-wired-lan; +Cc: tee.min.tan
On 10/29/2022 9:53 PM, Muhammad Husaini Zulkifli wrote:
> Remove the Qbv BaseTime restriction for I226 so that the BaseTime can be
> scheduled to the future time. A new register bit of Tx Qav Control
> (Bit-7: FutScdDis) was introduced to allow I226 scheduling future time as
> Qbv BaseTime and not having the Tx hang timeout issue.
>
> Besides, according to datasheet section 7.5.2.9.3.3, FutScdDis bit has to
> be configured first before the cycle time and base time.
>
> Indeed the FutScdDis bit is only active on re-configuration, thus we have
> to set the BASET_L to zero and then only set it to the desired value.
>
> Please also note that the Qbv configuration flow is moved around based on
> the Qbv programming guideline that is documented in the latest datasheet.
>
> Co-Developed-by : Tan Tee Min <tee.min.tan@linux.intel.com>
Nit: no space after the -by i.e. 'Co-Developed-by:'
However, if this doesn't need a revision outside of this, I'll fix it up
myself.
> Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> ---
<snip>
> @@ -240,21 +232,43 @@ static int igc_tsn_enable_offload(struct igc_adapter *adapter)
> wr32(IGC_TXQCTL(i), txqctl);
> }
>
> + tqavctrl = rd32(IGC_TQAVCTRL);
> + tqavctrl |= IGC_TQAVCTRL_TRANSMIT_MODE_TSN | IGC_TQAVCTRL_ENHANCED_QAV;
> +
> + cycle = adapter->cycle_time;
> + base_time = adapter->base_time;
> +
> nsec = rd32(IGC_SYSTIML);
> sec = rd32(IGC_SYSTIMH);
>
> systim = ktime_set(sec, nsec);
> -
> if (ktime_compare(systim, base_time) > 0) {
> - s64 n;
> + s64 n = div64_s64(ktime_sub_ns(systim, base_time), cycle);
>
> - n = div64_s64(ktime_sub_ns(systim, base_time), cycle);
> base_time = ktime_add_ns(base_time, (n + 1) * cycle);
> + } else {
> + /* According to datasheet section 7.5.2.9.3.3, FutScdDis bit
> + * has to be configured before the cycle time and base time.
> + */
> + if (igc_is_device_id_i226(hw))
> + tqavctrl |= IGC_TQAVCTRL_FUTSCDDIS;
> }
>
> - baset_h = div_s64_rem(base_time, NSEC_PER_SEC, &baset_l);
> + wr32(IGC_TQAVCTRL, tqavctrl);
> +
> + wr32(IGC_QBVCYCLET_S, cycle);
> + wr32(IGC_QBVCYCLET, cycle);
>
> + baset_h = div_s64_rem(base_time, NSEC_PER_SEC, &baset_l);
> wr32(IGC_BASET_H, baset_h);
> +
> + /* In i226, Future base time is only supported when FutScdDis bit
> + * is enabled and only active for re-configuration.
> + * In this case, initialize the base time with zero to create
> + * "re-configuration" scenario then only set the desired base time.
> + */
> + if (tqavctrl & IGC_TQAVCTRL_FUTSCDDIS)
> + wr32(IGC_BASET_L, 0);
> wr32(IGC_BASET_L, baset_l);
Do you need to flush the registers?
> return 0;
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction
2022-11-03 18:26 ` Tony Nguyen
@ 2022-11-04 8:28 ` Zulkifli, Muhammad Husaini
0 siblings, 0 replies; 13+ messages in thread
From: Zulkifli, Muhammad Husaini @ 2022-11-04 8:28 UTC (permalink / raw)
To: Nguyen, Anthony L, intel-wired-lan@osuosl.org; +Cc: tee.min.tan@linux.intel.com
Hello,
Thanks for you review. Replied inline
> -----Original Message-----
> From: Nguyen, Anthony L <anthony.l.nguyen@intel.com>
> Sent: Friday, 4 November, 2022 2:26 AM
> To: Zulkifli, Muhammad Husaini <muhammad.husaini.zulkifli@intel.com>;
> intel-wired-lan@osuosl.org
> Cc: Gomes, Vinicius <vinicius.gomes@intel.com>;
> tee.min.tan@linux.intel.com
> Subject: Re: [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction
>
> On 10/29/2022 9:53 PM, Muhammad Husaini Zulkifli wrote:
> > Remove the Qbv BaseTime restriction for I226 so that the BaseTime can
> > be scheduled to the future time. A new register bit of Tx Qav Control
> > (Bit-7: FutScdDis) was introduced to allow I226 scheduling future time
> > as Qbv BaseTime and not having the Tx hang timeout issue.
> >
> > Besides, according to datasheet section 7.5.2.9.3.3, FutScdDis bit has
> > to be configured first before the cycle time and base time.
> >
> > Indeed the FutScdDis bit is only active on re-configuration, thus we
> > have to set the BASET_L to zero and then only set it to the desired value.
> >
> > Please also note that the Qbv configuration flow is moved around based
> > on the Qbv programming guideline that is documented in the latest
> datasheet.
> >
> > Co-Developed-by : Tan Tee Min <tee.min.tan@linux.intel.com>
>
> Nit: no space after the -by i.e. 'Co-Developed-by:'
> However, if this doesn't need a revision outside of this, I'll fix it up myself.
>
> > Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> > Signed-off-by: Muhammad Husaini Zulkifli
> > <muhammad.husaini.zulkifli@intel.com>
> > ---
>
> <snip>
>
> > @@ -240,21 +232,43 @@ static int igc_tsn_enable_offload(struct
> igc_adapter *adapter)
> > wr32(IGC_TXQCTL(i), txqctl);
> > }
> >
> > + tqavctrl = rd32(IGC_TQAVCTRL);
> > + tqavctrl |= IGC_TQAVCTRL_TRANSMIT_MODE_TSN |
> > +IGC_TQAVCTRL_ENHANCED_QAV;
> > +
> > + cycle = adapter->cycle_time;
> > + base_time = adapter->base_time;
> > +
> > nsec = rd32(IGC_SYSTIML);
> > sec = rd32(IGC_SYSTIMH);
> >
> > systim = ktime_set(sec, nsec);
> > -
> > if (ktime_compare(systim, base_time) > 0) {
> > - s64 n;
> > + s64 n = div64_s64(ktime_sub_ns(systim, base_time), cycle);
> >
> > - n = div64_s64(ktime_sub_ns(systim, base_time), cycle);
> > base_time = ktime_add_ns(base_time, (n + 1) * cycle);
> > + } else {
> > + /* According to datasheet section 7.5.2.9.3.3, FutScdDis bit
> > + * has to be configured before the cycle time and base time.
> > + */
> > + if (igc_is_device_id_i226(hw))
> > + tqavctrl |= IGC_TQAVCTRL_FUTSCDDIS;
> > }
> >
> > - baset_h = div_s64_rem(base_time, NSEC_PER_SEC, &baset_l);
> > + wr32(IGC_TQAVCTRL, tqavctrl);
> > +
> > + wr32(IGC_QBVCYCLET_S, cycle);
> > + wr32(IGC_QBVCYCLET, cycle);
> >
> > + baset_h = div_s64_rem(base_time, NSEC_PER_SEC, &baset_l);
> > wr32(IGC_BASET_H, baset_h);
> > +
> > + /* In i226, Future base time is only supported when FutScdDis bit
> > + * is enabled and only active for re-configuration.
> > + * In this case, initialize the base time with zero to create
> > + * "re-configuration" scenario then only set the desired base time.
> > + */
> > + if (tqavctrl & IGC_TQAVCTRL_FUTSCDDIS)
> > + wr32(IGC_BASET_L, 0);
> > wr32(IGC_BASET_L, baset_l);
>
> Do you need to flush the registers?
Yes. TQAVCTRL[7] (FutScdDis) is only active on re-configuration instead of
first time configuration. The BASET_L must be set to zero in order to make the
initial configuration effective before the FutScdDis bit to actually function to
allow for the configuration of the Future base time. This has been confirmed by
Hardware Team.
>
> > return 0;
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv Muhammad Husaini Zulkifli
@ 2022-11-13 7:28 ` naamax.meir
0 siblings, 0 replies; 13+ messages in thread
From: naamax.meir @ 2022-11-13 7:28 UTC (permalink / raw)
To: Muhammad Husaini Zulkifli, intel-wired-lan; +Cc: tee.min.tan
On 10/30/2022 06:53, Muhammad Husaini Zulkifli wrote:
> From: Tan Tee Min <tee.min.tan@linux.intel.com>
>
> Introduce qbv_enable flag in igc_adapter struct to store the Qbv on/off.
> So this allow the BaseTime to enroll with zero value.
>
> Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc.h | 1 +
> drivers/net/ethernet/intel/igc/igc_main.c | 2 ++
> drivers/net/ethernet/intel/igc/igc_tsn.c | 2 +-
> 3 files changed, 4 insertions(+), 1 deletion(-)
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction Muhammad Husaini Zulkifli
2022-11-03 18:26 ` Tony Nguyen
@ 2022-11-13 7:29 ` naamax.meir
1 sibling, 0 replies; 13+ messages in thread
From: naamax.meir @ 2022-11-13 7:29 UTC (permalink / raw)
To: Muhammad Husaini Zulkifli, intel-wired-lan; +Cc: tee.min.tan
On 10/30/2022 06:53, Muhammad Husaini Zulkifli wrote:
> Remove the Qbv BaseTime restriction for I226 so that the BaseTime can be
> scheduled to the future time. A new register bit of Tx Qav Control
> (Bit-7: FutScdDis) was introduced to allow I226 scheduling future time as
> Qbv BaseTime and not having the Tx hang timeout issue.
>
> Besides, according to datasheet section 7.5.2.9.3.3, FutScdDis bit has to
> be configured first before the cycle time and base time.
>
> Indeed the FutScdDis bit is only active on re-configuration, thus we have
> to set the BASET_L to zero and then only set it to the desired value.
>
> Please also note that the Qbv configuration flow is moved around based on
> the Qbv programming guideline that is documented in the latest datasheet.
>
> Co-Developed-by : Tan Tee Min <tee.min.tan@linux.intel.com>
> Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_base.c | 29 +++++++++++++
> drivers/net/ethernet/intel/igc/igc_base.h | 2 +
> drivers/net/ethernet/intel/igc/igc_defines.h | 1 +
> drivers/net/ethernet/intel/igc/igc_main.c | 5 ++-
> drivers/net/ethernet/intel/igc/igc_tsn.c | 44 +++++++++++++-------
> 5 files changed, 65 insertions(+), 16 deletions(-)
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 3/5] igc: recalculate Qbv end_time by considering cycle time
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 3/5] igc: recalculate Qbv end_time by considering cycle time Muhammad Husaini Zulkifli
@ 2022-11-13 7:31 ` naamax.meir
0 siblings, 0 replies; 13+ messages in thread
From: naamax.meir @ 2022-11-13 7:31 UTC (permalink / raw)
To: Muhammad Husaini Zulkifli, intel-wired-lan; +Cc: tee.min.tan
On 10/30/2022 06:53, Muhammad Husaini Zulkifli wrote:
> From: Tan Tee Min <tee.min.tan@linux.intel.com>
>
> Qbv users can specify a cycle time that is not equal to the total GCL
> intervals. Hence, recalculation is necessary here to exclude the time
> interval that exceeds the cycle time. As those GCL which exceeds the
> cycle time will be truncated.
>
> According to IEEE Std. 802.1Q-2018 section 8.6.9.2, once the end of
> the list is reached, it will switch to the END_OF_CYCLE state and
> leave the gates in the same state until the next cycle is started.
>
> Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_main.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 4/5] igc: enable Qbv configuration for 2nd GCL
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 4/5] igc: enable Qbv configuration for 2nd GCL Muhammad Husaini Zulkifli
@ 2022-11-13 7:32 ` naamax.meir
0 siblings, 0 replies; 13+ messages in thread
From: naamax.meir @ 2022-11-13 7:32 UTC (permalink / raw)
To: Muhammad Husaini Zulkifli, intel-wired-lan; +Cc: tee.min.tan
On 10/30/2022 06:53, Muhammad Husaini Zulkifli wrote:
> From: Tan Tee Min <tee.min.tan@linux.intel.com>
>
> Make reset task only executes for i225 and Qbv disabling to allow
> i226 configure for 2nd GCL without resetting the adapter.
>
> In i226, Tx won't hang if there is a GCL is already running, so in
> this case we don't need to set FutScdDis bit.
>
> Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_main.c | 9 +++++----
> drivers/net/ethernet/intel/igc/igc_tsn.c | 13 +++++++++----
> drivers/net/ethernet/intel/igc/igc_tsn.h | 2 +-
> 3 files changed, 15 insertions(+), 9 deletions(-)
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH 5/5] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 5/5] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL Muhammad Husaini Zulkifli
@ 2022-11-13 7:33 ` naamax.meir
0 siblings, 0 replies; 13+ messages in thread
From: naamax.meir @ 2022-11-13 7:33 UTC (permalink / raw)
To: Muhammad Husaini Zulkifli, intel-wired-lan; +Cc: tee.min.tan
On 10/30/2022 06:53, Muhammad Husaini Zulkifli wrote:
> From: Tan Tee Min <tee.min.tan@linux.intel.com>
>
> The default setting of end_time minus start_time is whole 1 second.
> Thus, if it's not being configured in any GCL entry then it will be
> staying at original 1 second.
>
> This patch is changing the start_time and end_time to be end_time as
> if setting zero will be having weird HW behavior where the gate will
> not be fully closed.
>
> Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_main.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-11-13 7:33 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-30 4:53 [Intel-wired-lan] [PATCH 0/5] igc: TSN Qbv Improvement for I226 Stepping Muhammad Husaini Zulkifli
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 1/5] igc: allow BaseTime 0 enrollment for Qbv Muhammad Husaini Zulkifli
2022-11-13 7:28 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 2/5] igc: remove I226 Qbv BaseTime restriction Muhammad Husaini Zulkifli
2022-11-03 18:26 ` Tony Nguyen
2022-11-04 8:28 ` Zulkifli, Muhammad Husaini
2022-11-13 7:29 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 3/5] igc: recalculate Qbv end_time by considering cycle time Muhammad Husaini Zulkifli
2022-11-13 7:31 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 4/5] igc: enable Qbv configuration for 2nd GCL Muhammad Husaini Zulkifli
2022-11-13 7:32 ` naamax.meir
2022-10-30 4:53 ` [Intel-wired-lan] [PATCH 5/5] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL Muhammad Husaini Zulkifli
2022-11-13 7:33 ` naamax.meir
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox