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 0C4C8C433FE for ; Wed, 2 Mar 2022 17:59:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244325AbiCBSAG (ORCPT ); Wed, 2 Mar 2022 13:00:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229674AbiCBSAE (ORCPT ); Wed, 2 Mar 2022 13:00:04 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0A9CCA717; Wed, 2 Mar 2022 09:59:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646243960; x=1677779960; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rPMujRl9AqKpP9nfKsB/gdAI2aH+AOH5pxmfQc9C+FQ=; b=Jg1WHcxXRzidvmpa2pX5V4H54CybfOEV/9pMk3mo/RulDJyYHI0EVzAv GzsxyuJanjFeVDl5PbZ90D4M5qDTXmb2UAYznaNm/+IGc2oi4XLPI1MIS 2XuQJPBwaYA9yIcmBQjhXmQuC9f7EcPqUhe4w2AdoznpTxn9Mfe9NElJJ VsS4LS29gIROmfHhw5j9ODpFfItL81lIZ+DNfYJ9DKJzhxOdEU7xnqlpE wPjvP/K4CTA8rmlMN8zhTgy8ijFLLaAj2kbN+90AB7Y7S9J2KYzHR711p faImwn3ITOdDxripftG3NLgGCNaX/DPmJiYv5a8nP1hEPA3YVDQxF2LUr Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10274"; a="251041190" X-IronPort-AV: E=Sophos;i="5.90,149,1643702400"; d="scan'208";a="251041190" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Mar 2022 09:59:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,149,1643702400"; d="scan'208";a="630492508" Received: from anguy11-desk2.jf.intel.com ([10.166.244.147]) by FMSMGA003.fm.intel.com with ESMTP; 02 Mar 2022 09:59:19 -0800 From: Tony Nguyen To: davem@davemloft.net, kuba@kernel.org Cc: Maciej Fijalkowski , netdev@vger.kernel.org, anthony.l.nguyen@intel.com, magnus.karlsson@intel.com, ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, bpf@vger.kernel.org, andrii@kernel.org, kpsingh@kernel.org, kafai@fb.com, yhs@fb.com, songliubraving@fb.com, Maurice Baijens , Sandeep Penigalapati Subject: [PATCH net 1/2] ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc() Date: Wed, 2 Mar 2022 09:59:27 -0800 Message-Id: <20220302175928.4129098-2-anthony.l.nguyen@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220302175928.4129098-1-anthony.l.nguyen@intel.com> References: <20220302175928.4129098-1-anthony.l.nguyen@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org From: Maciej Fijalkowski Commit c685c69fba71 ("ixgbe: don't do any AF_XDP zero-copy transmit if netif is not OK") addressed the ring transient state when MEM_TYPE_XSK_BUFF_POOL was being configured which in turn caused the interface to through down/up. Maurice reported that when carrier is not ok and xsk_pool is present on ring pair, ksoftirqd will consume 100% CPU cycles due to the constant NAPI rescheduling as ixgbe_poll() states that there is still some work to be done. To fix this, do not set work_done to false for a !netif_carrier_ok(). Fixes: c685c69fba71 ("ixgbe: don't do any AF_XDP zero-copy transmit if netif is not OK") Reported-by: Maurice Baijens Tested-by: Maurice Baijens Signed-off-by: Maciej Fijalkowski Tested-by: Sandeep Penigalapati Signed-off-by: Tony Nguyen --- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c index b3fd8e5cd85b..6a5e9cf6b5da 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c @@ -390,12 +390,14 @@ static bool ixgbe_xmit_zc(struct ixgbe_ring *xdp_ring, unsigned int budget) u32 cmd_type; while (budget-- > 0) { - if (unlikely(!ixgbe_desc_unused(xdp_ring)) || - !netif_carrier_ok(xdp_ring->netdev)) { + if (unlikely(!ixgbe_desc_unused(xdp_ring))) { work_done = false; break; } + if (!netif_carrier_ok(xdp_ring->netdev)) + break; + if (!xsk_tx_peek_desc(pool, &desc)) break; -- 2.31.1