Message ID | 1631063741-28631-3-git-send-email-nicolas.chautru@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | akhil goyal |
Headers | show |
Series | bbdev update related to CRC usage | expand |
Context | Check | Description |
---|---|---|
ci/checkpatch | warning | coding style issues |
On 9/7/21 6:15 PM, Nicolas Chautru wrote: > This is to support the case for operation > where CRC16 is to be appended or checked. > > Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com> > --- > 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; > } Thanks for the else-if() change. Looks good. Reviewed-by: Tom Rix <trix@redhat.com> > > #ifdef RTE_BBDEV_OFFLOAD_COST
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
This is to support the case for operation where CRC16 is to be appended or checked. Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com> --- doc/guides/rel_notes/release_21_11.rst | 3 +++ drivers/baseband/turbo_sw/bbdev_turbo_software.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+)