From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 48C0EA0543; Mon, 13 Jun 2022 19:23:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E9FBE40222; Mon, 13 Jun 2022 19:23:25 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 47ACA40150 for ; Mon, 13 Jun 2022 19:23:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655141004; x=1686677004; h=from:to:subject:date:message-id; bh=d5a92fm+zW5hLNGyWfTUe7eFOil/Vbm/gyMP054Y7r8=; b=W57iYZdKJrVbEF8N2+zZjKEUd+v3qljYdRX540jZeZhPENP4pK5/mMt0 PrMWDERf+26GtGMWoTcsFQf8O/BcRvgkXTOLJy3XMaEGAVwKboRTh+4um eLb/iWep4TbRmTcQax39Lg0eHB/OauuJ1WDr0SLO0iXJxF5gV3a1vemnl 8K3yPeK5ji1IvsgpoKKRuL64n9ScnUP1tPauIYXgyXZhZFqMXcL+L2hKv Hfe/K68WM2bIpDVO2RMWb7xZaXFkvhS7Y1tZIPtFpMwcuBz/3lgMn+Uki dmMzfoAdQzsgzCItuTVWnGWCd/GU827OmqPERR4QLs01ZLXflq1dJkRKg A==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="258184643" X-IronPort-AV: E=Sophos;i="5.91,297,1647327600"; d="scan'208";a="258184643" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 10:23:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,297,1647327600"; d="scan'208";a="587902555" Received: from silpixa00400573.ir.intel.com (HELO silpixa00400573.ger.corp.intel.com) ([10.237.223.107]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2022 10:23:21 -0700 From: Cristian Dumitrescu To: dev@dpdk.org Subject: [PATCH] pipeline: fix packet mirroring configuration Date: Mon, 13 Jun 2022 18:23:20 +0100 Message-Id: <20220613172320.85777-1-cristian.dumitrescu@intel.com> X-Mailer: git-send-email 2.17.1 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 Fix segmentation fault due to null pointer dereferencing inside the "mirror" instruction when number of mirroring slots is set to 0. This was taking place when the "mirror" instruction was used without the mirror feature being properly configured, i.e. the API function rte_swx_pipeline_mirroring_config was not called at initialization. Fixes: dac0ecd9098 (" pipeline: support packet mirroring") Signed-off-by: Cristian Dumitrescu --- lib/pipeline/rte_swx_pipeline.c | 5 ++--- lib/pipeline/rte_swx_pipeline.h | 10 ++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/pipeline/rte_swx_pipeline.c b/lib/pipeline/rte_swx_pipeline.c index 659d8726d1..066356684e 100644 --- a/lib/pipeline/rte_swx_pipeline.c +++ b/lib/pipeline/rte_swx_pipeline.c @@ -612,9 +612,6 @@ mirroring_build(struct rte_swx_pipeline *p) { uint32_t i; - if (!p->n_mirroring_slots || !p->n_mirroring_sessions) - return 0; - for (i = 0; i < RTE_SWX_PIPELINE_THREADS_MAX; i++) { struct thread *t = &p->threads[i]; @@ -9772,6 +9769,8 @@ rte_swx_pipeline_config(struct rte_swx_pipeline **p, int numa_node) TAILQ_INIT(&pipeline->metarrays); pipeline->n_structs = 1; /* Struct 0 is reserved for action_data. */ + pipeline->n_mirroring_slots = RTE_SWX_PACKET_MIRRORING_SLOTS_DEFAULT; + pipeline->n_mirroring_sessions = RTE_SWX_PACKET_MIRRORING_SESSIONS_DEFAULT; pipeline->numa_node = numa_node; status = port_in_types_register(pipeline); diff --git a/lib/pipeline/rte_swx_pipeline.h b/lib/pipeline/rte_swx_pipeline.h index adc7fa53b7..184027ba44 100644 --- a/lib/pipeline/rte_swx_pipeline.h +++ b/lib/pipeline/rte_swx_pipeline.h @@ -163,6 +163,16 @@ rte_swx_pipeline_port_out_config(struct rte_swx_pipeline *p, * Packet mirroring */ +/** Default number of packet mirroring slots. */ +#ifndef RTE_SWX_PACKET_MIRRORING_SLOTS_DEFAULT +#define RTE_SWX_PACKET_MIRRORING_SLOTS_DEFAULT 4 +#endif + +/** Default maxiumum number of packet mirroring sessions. */ +#ifndef RTE_SWX_PACKET_MIRRORING_SESSIONS_DEFAULT +#define RTE_SWX_PACKET_MIRRORING_SESSIONS_DEFAULT 64 +#endif + /** Packet mirroring parameters. */ struct rte_swx_pipeline_mirroring_params { /** Number of packet mirroring slots. */ -- 2.17.1