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 4FEB3A0C56; Wed, 8 Sep 2021 03:16:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 56CE841142; Wed, 8 Sep 2021 03:16:05 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id AD20E4003C for ; Wed, 8 Sep 2021 03:16:00 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10100"; a="281368118" X-IronPort-AV: E=Sophos;i="5.85,276,1624345200"; d="scan'208";a="281368118" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Sep 2021 18:15:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,276,1624345200"; d="scan'208";a="693000843" Received: from unknown (HELO icx-npg-scs1-cp1.localdomain) ([10.233.180.245]) by fmsmga006.fm.intel.com with ESMTP; 07 Sep 2021 18:15:58 -0700 From: Nicolas Chautru To: dev@dpdk.org, gakhil@marvell.com Cc: thomas@monjalon.net, trix@redhat.com, hemant.agrawal@nxp.com, mingshan.zhang@intel.com, arun.joshi@intel.com, Nicolas Chautru Date: Tue, 7 Sep 2021 18:15:37 -0700 Message-Id: <1631063741-28631-3-git-send-email-nicolas.chautru@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1631063741-28631-1-git-send-email-nicolas.chautru@intel.com> References: <1631063741-28631-1-git-send-email-nicolas.chautru@intel.com> Subject: [dpdk-dev] [PATCH v3 2/6] baseband/turbo_sw: add support for CRC16 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" This is to support the case for operation where CRC16 is to be appended or checked. Signed-off-by: Nicolas Chautru --- doc/guides/rel_notes/release_21_11.rst | 3 +++ drivers/baseband/turbo_sw/bbdev_turbo_software.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 69dd518..8ca59b7 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -55,6 +55,9 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Updated the turbo_sw bbdev PMD.** + + Added support for more comprehensive CRC options. Removed Items ------------- diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c b/drivers/baseband/turbo_sw/bbdev_turbo_software.c index 77e9a2e..e1db2bf 100644 --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c @@ -199,6 +199,7 @@ struct turbo_sw_queue { .cap.ldpc_enc = { .capability_flags = RTE_BBDEV_LDPC_RATE_MATCH | + RTE_BBDEV_LDPC_CRC_16_ATTACH | RTE_BBDEV_LDPC_CRC_24A_ATTACH | RTE_BBDEV_LDPC_CRC_24B_ATTACH, .num_buffers_src = @@ -211,6 +212,7 @@ struct turbo_sw_queue { .type = RTE_BBDEV_OP_LDPC_DEC, .cap.ldpc_dec = { .capability_flags = + RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK | RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK | RTE_BBDEV_LDPC_CRC_TYPE_24A_CHECK | RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP | @@ -880,6 +882,12 @@ struct turbo_sw_queue { crc_req.len = in_length_in_bits - 24; crc_resp.data = q->enc_in; bblib_lte_crc24b_gen(&crc_req, &crc_resp); + } else if (enc->op_flags & RTE_BBDEV_LDPC_CRC_16_ATTACH) { + rte_memcpy(q->enc_in, in, in_length_in_bytes - 2); + crc_req.data = in; + crc_req.len = in_length_in_bits - 16; + crc_resp.data = q->enc_in; + bblib_lte_crc16_gen(&crc_req, &crc_resp); } else rte_memcpy(q->enc_in, in, in_length_in_bytes); @@ -1491,6 +1499,14 @@ struct turbo_sw_queue { bblib_lte_crc24a_check(&crc_req, &crc_resp); if (!crc_resp.check_passed) op->status |= 1 << RTE_BBDEV_CRC_ERROR; + } else if (check_bit(dec->op_flags, RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK)) { + crc_req.data = adapter_input; + crc_req.len = K - dec->n_filler - 16; + crc_resp.check_passed = false; + crc_resp.data = adapter_input; + bblib_lte_crc16_check(&crc_req, &crc_resp); + if (!crc_resp.check_passed) + op->status |= 1 << RTE_BBDEV_CRC_ERROR; } #ifdef RTE_BBDEV_OFFLOAD_COST -- 1.8.3.1