From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CA2AC636F9 for ; Mon, 5 Dec 2022 21:25:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233960AbiLEVZH (ORCPT ); Mon, 5 Dec 2022 16:25:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233419AbiLEVYf (ORCPT ); Mon, 5 Dec 2022 16:24:35 -0500 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 794FC2CCA0 for ; Mon, 5 Dec 2022 13:24:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670275472; x=1701811472; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qjc2dkoqDB72Fmn18inb4ahL1Kq2cHM4/kWsEbIR+uc=; b=E1XkR/SDwVbTi5H44UBWnCp3m7DNkd9Ro5LPPiBkysBhgj2iMlRXQ+E3 kS2SjIShCBiSZ0dKkUcS5kUeUIjGWVRB4wD+jZadrkJBsQy/NL1fGF0NN EdSD8n2b2MHtZSnplq4Gpw1nfem1OcU2JntsJ3BEQPyGM6wGnLb84W9s7 pjlglkpoPUg1u0yYCTjsZ60jFmTcJ2mizD87wN17sibl+TU8VGEXiAPv5 J4O2YY1NTXYTxMR/1ZECmy25IjbLIxSLSoZdPXTxWsUQXmSY2c9fGsu9e umSDPuwgQTcq5DXJV1VDqfYsysyRWXUQ3BLQR07n8IlFboNIGyuX7hcPJ A==; X-IronPort-AV: E=McAfee;i="6500,9779,10552"; a="296157831" X-IronPort-AV: E=Sophos;i="5.96,220,1665471600"; d="scan'208";a="296157831" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 13:24:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10552"; a="734744970" X-IronPort-AV: E=Sophos;i="5.96,220,1665471600"; d="scan'208";a="734744970" Received: from anguy11-desk2.jf.intel.com ([10.166.244.147]) by FMSMGA003.fm.intel.com with ESMTP; 05 Dec 2022 13:24:30 -0800 From: Tony Nguyen To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com Cc: Tan Tee Min , netdev@vger.kernel.org, anthony.l.nguyen@intel.com, sasha.neftin@intel.com, Muhammad Husaini Zulkifli , Naama Meir Subject: [PATCH net-next 6/8] igc: Set Qbv start_time and end_time to end_time if not being configured in GCL Date: Mon, 5 Dec 2022 13:24:12 -0800 Message-Id: <20221205212414.3197525-7-anthony.l.nguyen@intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221205212414.3197525-1-anthony.l.nguyen@intel.com> References: <20221205212414.3197525-1-anthony.l.nguyen@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Tan Tee Min 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 Signed-off-by: Muhammad Husaini Zulkifli Tested-by: Naama Meir Signed-off-by: Tony Nguyen --- 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 480b814dc18c..e9cd306ac79c 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -5929,6 +5929,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; @@ -5949,7 +5950,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; @@ -5988,6 +5988,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.35.1