From patchwork Mon May 10 08:47:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Loftus, Ciara" X-Patchwork-Id: 93083 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 88F36A0548; Mon, 10 May 2021 10:48:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 06B5640140; Mon, 10 May 2021 10:48:05 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 2126C4003E for ; Mon, 10 May 2021 10:48:02 +0200 (CEST) IronPort-SDR: 9vcJPlosOjdrszLABOBfWzeJY5jH/IYEOtnKtPSz0ye8g3jrhucHarASC3YP2yTQNkDxH90fl9 rVH4HCLsxZmA== X-IronPort-AV: E=McAfee;i="6200,9189,9979"; a="220087161" X-IronPort-AV: E=Sophos;i="5.82,287,1613462400"; d="scan'208";a="220087161" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 May 2021 01:48:00 -0700 IronPort-SDR: vIrfD843NC/ebj8dvEWXA6WCHbAFTIl6aSOyvIE0EvhABubaY5tfwhd2V1nM7iTCUFKU6kmNoV FRAH+80CvBGw== X-IronPort-AV: E=Sophos;i="5.82,287,1613462400"; d="scan'208";a="433719713" Received: from silpixa00399839.ir.intel.com (HELO silpixa00399839.ger.corp.intel.com) ([10.237.222.249]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 May 2021 01:47:59 -0700 From: Ciara Loftus To: dev@dpdk.org Date: Mon, 10 May 2021 09:47:54 +0100 Message-Id: <20210510084754.48771-1-ciara.loftus@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH] net/af_xdp: fix build warning for kernels < 5.4 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Prior to this change, two implementations of rx_syscall_handler existed although only one was needed (for the zero copy path which is only available from kernel 5.4 and onwards). Remove the second definition from compat.h and move the first definition back to where it is called in the Rx function. Doing this removes a build warning on kernels before 5.4 which complained about the second function being defined but not used. Fixes: 2aa51cdd559e ("net/af_xdp: fix trigger for syscall on Tx") Signed-off-by: Ciara Loftus --- drivers/net/af_xdp/compat.h | 25 ------------------------- drivers/net/af_xdp/rte_eth_af_xdp.c | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/drivers/net/af_xdp/compat.h b/drivers/net/af_xdp/compat.h index 52fd447b69..3880dc7dd7 100644 --- a/drivers/net/af_xdp/compat.h +++ b/drivers/net/af_xdp/compat.h @@ -42,37 +42,12 @@ create_shared_socket(struct xsk_socket **xsk_ptr __rte_unused, #endif #ifdef XDP_USE_NEED_WAKEUP -static void -rx_syscall_handler(struct xsk_ring_prod *q, uint32_t busy_budget, - struct pollfd *fds, struct xsk_socket *xsk) -{ - /* we can assume a kernel >= 5.11 is in use if busy polling is enabled - * and thus we can safely use the recvfrom() syscall which is only - * supported for AF_XDP sockets in kernels >= 5.11. - */ - if (busy_budget) { - (void)recvfrom(xsk_socket__fd(xsk), NULL, 0, - MSG_DONTWAIT, NULL, NULL); - return; - } - - if (xsk_ring_prod__needs_wakeup(q)) - (void)poll(fds, 1, 1000); -} static int tx_syscall_needed(struct xsk_ring_prod *q) { return xsk_ring_prod__needs_wakeup(q); } #else -static void -rx_syscall_handler(struct xsk_ring_prod *q __rte_unused, uint32_t busy_budget, - struct pollfd *fds __rte_unused, struct xsk_socket *xsk) -{ - if (busy_budget) - (void)recvfrom(xsk_socket__fd(xsk), NULL, 0, - MSG_DONTWAIT, NULL, NULL); -} static int tx_syscall_needed(struct xsk_ring_prod *q __rte_unused) { diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index 0c91a40c4a..dd429969a3 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -272,8 +272,18 @@ af_xdp_rx_zc(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) nb_pkts = xsk_ring_cons__peek(rx, nb_pkts, &idx_rx); if (nb_pkts == 0) { - rx_syscall_handler(&rxq->fq, rxq->busy_budget, &rxq->fds[0], - rxq->xsk); + /* we can assume a kernel >= 5.11 is in use if busy polling is + * enabled and thus we can safely use the recvfrom() syscall + * which is only supported for AF_XDP sockets in kernels >= + * 5.11. + */ + if (rxq->busy_budget) { + (void)recvfrom(xsk_socket__fd(rxq->xsk), NULL, 0, + MSG_DONTWAIT, NULL, NULL); + } else if (xsk_ring_prod__needs_wakeup(fq)) { + (void)poll(&rxq->fds[0], 1, 1000); + } + return 0; }