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 8092EC4332F for ; Fri, 10 Dec 2021 14:59:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242438AbhLJPD0 (ORCPT ); Fri, 10 Dec 2021 10:03:26 -0500 Received: from mga04.intel.com ([192.55.52.120]:14344 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235207AbhLJPDZ (ORCPT ); Fri, 10 Dec 2021 10:03:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1639148391; x=1670684391; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fTY5kgMckS1Tbs6QLxc/UosJTuA+NXT8tUZ0cny8vjI=; b=IpBsQ1r26SwwTVZkaeMhVmXdoFdcSIf4vAgbew+15ADkE6QAuYQlVt/9 sICRUol6lEzxHhYRzENa7A0U2Vt+AsutNKzNNjy/YvAXI/qzluiBPH3Cf UzblI8irG6iUQ3xx1Ol0NEhtigGoe3vCYT7DvXbfSqodUCnbokvF4X7Mi jepOcn/lTC1bpiueaGFsaUbjBONWAKB5oJQKeEKaH6ljeDeYXCtco0oDx EPdc6H82OxUNXip3zPGENBx1gxjpccAH2c1Pctbfz678wexyPnyR7jRxg Js6DIwKST3/7R0xFG0dcO9Mjmz3DfW/pi98VdnvrvVQDUyaBQXo6P43MC A==; X-IronPort-AV: E=McAfee;i="6200,9189,10193"; a="237093253" X-IronPort-AV: E=Sophos;i="5.88,195,1635231600"; d="scan'208";a="237093253" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Dec 2021 06:59:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,195,1635231600"; d="scan'208";a="680763701" Received: from boxer.igk.intel.com ([10.102.20.173]) by orsmga005.jf.intel.com with ESMTP; 10 Dec 2021 06:59:48 -0800 From: Maciej Fijalkowski To: intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, bpf@vger.kernel.org, anthony.l.nguyen@intel.com, kuba@kernel.org, davem@davemloft.net, magnus.karlsson@intel.com, elza.mathew@intel.com, Maciej Fijalkowski Subject: [PATCH intel-net 1/5] ice: xsk: return xsk buffers back to pool when cleaning the ring Date: Fri, 10 Dec 2021 15:59:37 +0100 Message-Id: <20211210145941.5865-2-maciej.fijalkowski@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211210145941.5865-1-maciej.fijalkowski@intel.com> References: <20211210145941.5865-1-maciej.fijalkowski@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently we only NULL the xdp_buff pointer in the internal SW ring but we never give it back to the xsk buffer pool. This means that buffers can be leaked out of the buff pool and never be used again. Add missing xsk_buff_free() call to the routine that is supposed to clean the entries that are left in the ring so that these buffers in the umem can be used by other sockets. Also, only go through the space that is actually left to be cleaned instead of a whole ring. Fixes: 2d4238f55697 ("ice: Add support for AF_XDP") Signed-off-by: Magnus Karlsson Signed-off-by: Maciej Fijalkowski --- drivers/net/ethernet/intel/ice/ice_xsk.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c index ff55cb415b11..75c3e98241e0 100644 --- a/drivers/net/ethernet/intel/ice/ice_xsk.c +++ b/drivers/net/ethernet/intel/ice/ice_xsk.c @@ -810,14 +810,14 @@ bool ice_xsk_any_rx_ring_ena(struct ice_vsi *vsi) */ void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring) { - u16 i; - - for (i = 0; i < rx_ring->count; i++) { - struct xdp_buff **xdp = &rx_ring->xdp_buf[i]; + u16 count_mask = rx_ring->count - 1; + u16 ntc = rx_ring->next_to_clean; + u16 ntu = rx_ring->next_to_use; - if (!xdp) - continue; + for ( ; ntc != ntu; ntc = (ntc + 1) & count_mask) { + struct xdp_buff **xdp = &rx_ring->xdp_buf[ntc]; + xsk_buff_free(*xdp); *xdp = NULL; } } -- 2.33.1