get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/133526/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 133526,
    "url": "http://patches.dpdk.org/api/patches/133526/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231027225728.563914-10-nicolas.chautru@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231027225728.563914-10-nicolas.chautru@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231027225728.563914-10-nicolas.chautru@intel.com",
    "date": "2023-10-27T22:57:27",
    "name": "[v2,09/10] test/bbdev: support new FFT capabilities",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "4d1691f8baa73fefd0565743d9c7a62996d28df0",
    "submitter": {
        "id": 1314,
        "url": "http://patches.dpdk.org/api/people/1314/?format=api",
        "name": "Chautru, Nicolas",
        "email": "nicolas.chautru@intel.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patches.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231027225728.563914-10-nicolas.chautru@intel.com/mbox/",
    "series": [
        {
            "id": 30034,
            "url": "http://patches.dpdk.org/api/series/30034/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30034",
            "date": "2023-10-27T22:57:18",
            "name": "test-bbdev changes for 23.11",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/30034/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/133526/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/133526/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6C3274321A;\n\tSat, 28 Oct 2023 01:05:19 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8C34E42E59;\n\tSat, 28 Oct 2023 01:04:25 +0200 (CEST)",
            "from mgamail.intel.com (mgamail.intel.com [198.175.65.9])\n by mails.dpdk.org (Postfix) with ESMTP id DF96C427DA;\n Sat, 28 Oct 2023 01:04:13 +0200 (CEST)",
            "from fmsmga008.fm.intel.com ([10.253.24.58])\n by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Oct 2023 16:04:13 -0700",
            "from spr-npg-bds1-eec2.sn.intel.com (HELO spr-npg-bds1-eec2..)\n ([10.233.181.123])\n by fmsmga008.fm.intel.com with ESMTP; 27 Oct 2023 16:04:12 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1698447855; x=1729983855;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=qeBe+OorzMD+82kbE/FVtOgyfO74ldImnrd3FdPKUx0=;\n b=bJ4IfugHCEerwwMu3IahDw7xQqFtIpDAOv06qTjkFGVx4LJUs7qGpijM\n 5NeVI106oEzyBEfsR6yiFJNvfdjoUZb7Qz60e3VVGM6e2ksXnwAge7FDX\n WtJxRnzYgdr5L9V8N/1E0/minqknlBD8+jDE1z4A/QXphj9chdfUtnVWE\n qFWpPWG4fmN4nQEtaCjfWsLXbUv+MOCpBhf5uy07umVzOpSmR61t6w/fm\n lR+AQBghDBiNK/v00sLlRnSK/Ul0eKSww6K3G6cXxShRj9z7gGE4OMiAW\n uEYhHAI20id8HpQJJDUFyYIU+DC9ohOlLXO8aw+fb2NjIDU6Yw3JfvAfw A==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10876\"; a=\"6494095\"",
            "E=Sophos;i=\"6.03,257,1694761200\";\n   d=\"scan'208\";a=\"6494095\"",
            "E=McAfee;i=\"6600,9927,10876\"; a=\"825496981\"",
            "E=Sophos;i=\"6.03,257,1694761200\"; d=\"scan'208\";a=\"825496981\""
        ],
        "X-ExtLoop1": "1",
        "From": "Nicolas Chautru <nicolas.chautru@intel.com>",
        "To": "dev@dpdk.org,\n\tmaxime.coquelin@redhat.com",
        "Cc": "hemant.agrawal@nxp.com, david.marchand@redhat.com,\n hernan.vargas@intel.com,\n stable@dpdk.org",
        "Subject": "[PATCH v2 09/10] test/bbdev: support new FFT capabilities",
        "Date": "Fri, 27 Oct 2023 22:57:27 +0000",
        "Message-Id": "<20231027225728.563914-10-nicolas.chautru@intel.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20231027225728.563914-1-nicolas.chautru@intel.com>",
        "References": "<20231027225728.563914-1-nicolas.chautru@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "From: Hernan Vargas <hernan.vargas@intel.com>\n\nAdding support to test new FFT capabilities.\nOptional frequency domain dewindowing, frequency resampling,\ntiming error correction and time offset per CS.\n\nSigned-off-by: Hernan Vargas <hernan.vargas@intel.com>\nReviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n app/test-bbdev/test_bbdev_perf.c   | 26 ++++++++++---\n app/test-bbdev/test_bbdev_vector.c | 61 ++++++++++++++++++++++++++++--\n 2 files changed, 78 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c\nindex 8a349fdb03..82deb9b1b4 100644\n--- a/app/test-bbdev/test_bbdev_perf.c\n+++ b/app/test-bbdev/test_bbdev_perf.c\n@@ -864,6 +864,7 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,\n \t\tconf.q_fft.num_qgroups = VRB_QMGR_NUM_QGS;\n \t\tconf.q_fft.first_qgroup_index = VRB_QMGR_INVALID_IDX;\n \t\tconf.q_fft.num_aqs_per_groups = VRB_QMGR_NUM_AQS;\n+\t\tconf.q_fft.aq_depth_log2 = VRB_QMGR_AQ_DEPTH;\n \t\tconf.q_mld.num_qgroups = VRB_QMGR_NUM_QGS;\n \t\tconf.q_mld.first_qgroup_index = VRB_QMGR_INVALID_IDX;\n \t\tconf.q_mld.num_aqs_per_groups = VRB_QMGR_NUM_AQS;\n@@ -1970,7 +1971,7 @@ static void\n copy_reference_fft_op(struct rte_bbdev_fft_op **ops, unsigned int n,\n \t\tunsigned int start_idx, struct rte_bbdev_op_data *inputs,\n \t\tstruct rte_bbdev_op_data *outputs, struct rte_bbdev_op_data *pwrouts,\n-\t\tstruct rte_bbdev_fft_op *ref_op)\n+\t\tstruct rte_bbdev_op_data *win_inputs, struct rte_bbdev_fft_op *ref_op)\n {\n \tunsigned int i, j;\n \tstruct rte_bbdev_op_fft *fft = &ref_op->fft;\n@@ -1982,6 +1983,11 @@ copy_reference_fft_op(struct rte_bbdev_fft_op **ops, unsigned int n,\n \t\t\t\tfft->output_leading_depadding;\n \t\tfor (j = 0; j < RTE_BBDEV_MAX_CS_2; j++)\n \t\t\tops[i]->fft.window_index[j] = fft->window_index[j];\n+\t\tfor (j = 0; j < RTE_BBDEV_MAX_CS; j++) {\n+\t\t\tops[i]->fft.cs_theta_0[j] = fft->cs_theta_0[j];\n+\t\t\tops[i]->fft.cs_theta_d[j] = fft->cs_theta_d[j];\n+\t\t\tops[i]->fft.time_offset[j] = fft->time_offset[j];\n+\t\t}\n \t\tops[i]->fft.cs_bitmap = fft->cs_bitmap;\n \t\tops[i]->fft.num_antennas_log2 = fft->num_antennas_log2;\n \t\tops[i]->fft.idft_log2 = fft->idft_log2;\n@@ -1992,8 +1998,12 @@ copy_reference_fft_op(struct rte_bbdev_fft_op **ops, unsigned int n,\n \t\tops[i]->fft.ncs_reciprocal = fft->ncs_reciprocal;\n \t\tops[i]->fft.power_shift = fft->power_shift;\n \t\tops[i]->fft.fp16_exp_adjust = fft->fp16_exp_adjust;\n+\t\tops[i]->fft.output_depadded_size = fft->output_depadded_size;\n+\t\tops[i]->fft.freq_resample_mode = fft->freq_resample_mode;\n \t\tops[i]->fft.base_output = outputs[start_idx + i];\n \t\tops[i]->fft.base_input = inputs[start_idx + i];\n+\t\tif (win_inputs != NULL)\n+\t\t\tops[i]->fft.dewindowing_input = win_inputs[start_idx + i];\n \t\tif (pwrouts != NULL)\n \t\t\tops[i]->fft.power_meas_output = pwrouts[start_idx + i];\n \t\tops[i]->fft.op_flags = fft->op_flags;\n@@ -2575,7 +2585,7 @@ validate_op_fft_chain(struct rte_bbdev_op_data *op, struct op_data_entries *orig\n {\n \tstruct rte_mbuf *m = op->data;\n \tuint8_t i, nb_dst_segments = orig_op->nb_segments;\n-\tint16_t delt, abs_delt, thres_hold = 3;\n+\tint16_t delt, abs_delt, thres_hold = 4;\n \tuint32_t j, data_len_iq, error_num;\n \tint16_t *ref_out, *op_out;\n \n@@ -2754,6 +2764,9 @@ create_reference_fft_op(struct rte_bbdev_fft_op *op)\n \tentry = &test_vector.entries[DATA_INPUT];\n \tfor (i = 0; i < entry->nb_segments; ++i)\n \t\top->fft.base_input.length += entry->segments[i].length;\n+\tentry = &test_vector.entries[DATA_HARQ_INPUT];\n+\tfor (i = 0; i < entry->nb_segments; ++i)\n+\t\top->fft.dewindowing_input.length += entry->segments[i].length;\n }\n \n static void\n@@ -3722,7 +3735,8 @@ throughput_intr_lcore_fft(void *arg)\n \t\t\tnum_to_process);\n \tif (test_vector.op_type != RTE_BBDEV_OP_NONE)\n \t\tcopy_reference_fft_op(ops, num_to_process, 0, bufs->inputs,\n-\t\t\t\tbufs->hard_outputs, bufs->soft_outputs, tp->op_params->ref_fft_op);\n+\t\t\t\tbufs->hard_outputs, bufs->soft_outputs, bufs->harq_inputs,\n+\t\t\t\ttp->op_params->ref_fft_op);\n \n \t/* Set counter to validate the ordering */\n \tfor (j = 0; j < num_to_process; ++j)\n@@ -4596,7 +4610,7 @@ throughput_pmd_lcore_fft(void *arg)\n \n \tif (test_vector.op_type != RTE_BBDEV_OP_NONE)\n \t\tcopy_reference_fft_op(ops_enq, num_ops, 0, bufs->inputs,\n-\t\t\t\tbufs->hard_outputs, bufs->soft_outputs, ref_op);\n+\t\t\t\tbufs->hard_outputs, bufs->soft_outputs, bufs->harq_inputs, ref_op);\n \n \t/* Set counter to validate the ordering */\n \tfor (j = 0; j < num_ops; ++j)\n@@ -5452,7 +5466,7 @@ latency_test_fft(struct rte_mempool *mempool,\n \t\tif (test_vector.op_type != RTE_BBDEV_OP_NONE)\n \t\t\tcopy_reference_fft_op(ops_enq, burst_sz, dequeued,\n \t\t\t\t\tbufs->inputs,\n-\t\t\t\t\tbufs->hard_outputs, bufs->soft_outputs,\n+\t\t\t\t\tbufs->hard_outputs, bufs->soft_outputs, bufs->harq_inputs,\n \t\t\t\t\tref_op);\n \n \t\t/* Set counter to validate the ordering */\n@@ -5714,7 +5728,7 @@ offload_latency_test_fft(struct rte_mempool *mempool, struct test_buffers *bufs,\n \t\tif (test_vector.op_type != RTE_BBDEV_OP_NONE)\n \t\t\tcopy_reference_fft_op(ops_enq, burst_sz, dequeued,\n \t\t\t\t\tbufs->inputs,\n-\t\t\t\t\tbufs->hard_outputs, bufs->soft_outputs,\n+\t\t\t\t\tbufs->hard_outputs, bufs->soft_outputs, bufs->harq_inputs,\n \t\t\t\t\tref_op);\n \n \t\t/* Start time meas for enqueue function offload latency */\ndiff --git a/app/test-bbdev/test_bbdev_vector.c b/app/test-bbdev/test_bbdev_vector.c\nindex 8f464db838..56b882533c 100644\n--- a/app/test-bbdev/test_bbdev_vector.c\n+++ b/app/test-bbdev/test_bbdev_vector.c\n@@ -215,7 +215,6 @@ op_ldpc_decoder_flag_strtoul(char *token, uint32_t *op_flag_value)\n \treturn 0;\n }\n \n-\n /* Convert FFT flag from string to unsigned long int. */\n static int\n op_fft_flag_strtoul(char *token, uint32_t *op_flag_value)\n@@ -236,6 +235,14 @@ op_fft_flag_strtoul(char *token, uint32_t *op_flag_value)\n \t\t*op_flag_value = RTE_BBDEV_FFT_FP16_INPUT;\n \telse if (!strcmp(token, \"RTE_BBDEV_FFT_FP16_OUTPUT\"))\n \t\t*op_flag_value = RTE_BBDEV_FFT_FP16_OUTPUT;\n+\telse if (!strcmp(token, \"RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS\"))\n+\t\t*op_flag_value = RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS;\n+\telse if (!strcmp(token, \"RTE_BBDEV_FFT_TIMING_ERROR\"))\n+\t\t*op_flag_value = RTE_BBDEV_FFT_TIMING_ERROR;\n+\telse if (!strcmp(token, \"RTE_BBDEV_FFT_DEWINDOWING\"))\n+\t\t*op_flag_value = RTE_BBDEV_FFT_DEWINDOWING;\n+\telse if (!strcmp(token, \"RTE_BBDEV_FFT_FREQ_RESAMPLING\"))\n+\t\t*op_flag_value = RTE_BBDEV_FFT_FREQ_RESAMPLING;\n \telse {\n \t\tprintf(\"The given value is not a FFT flag\\n\");\n \t\treturn -1;\n@@ -907,8 +914,7 @@ parse_ldpc_decoder_params(const char *key_token, char *token,\n \treturn 0;\n }\n \n-\n-/* Parse FFT parameters and assigns to global variable. */\n+/* Parses FFT parameters and assigns to global variable. */\n static int\n parse_fft_params(const char *key_token, char *token,\n \t\tstruct test_bbdev_vector *vector)\n@@ -923,6 +929,10 @@ parse_fft_params(const char *key_token, char *token,\n \t\tret = parse_data_entry(key_token, token, vector,\n \t\t\t\tDATA_INPUT,\n \t\t\t\top_data_prefixes[DATA_INPUT]);\n+\t} else if (starts_with(key_token, \"dewin_input\")) {\n+\t\tret = parse_data_entry(key_token, token, vector,\n+\t\t\t\tDATA_HARQ_INPUT,\n+\t\t\t\t\"dewin_input\");\n \t} else if (starts_with(key_token, \"output\")) {\n \t\tret = parse_data_entry(key_token, token, vector,\n \t\t\t\tDATA_HARD_OUTPUT,\n@@ -989,6 +999,51 @@ parse_fft_params(const char *key_token, char *token,\n \t\tfft->fp16_exp_adjust = (uint32_t) strtoul(token, &err, 0);\n \t\tprintf(\"%d\\n\", fft->fp16_exp_adjust);\n \t\tret = ((err == NULL) || (*err != '\\0')) ? -1 : 0;\n+\t} else if (!strcmp(key_token, \"freq_resample_mode\")) {\n+\t\tfft->freq_resample_mode = (uint32_t) strtoul(token, &err, 0);\n+\t\tret = ((err == NULL) || (*err != '\\0')) ? -1 : 0;\n+\t} else if (!strcmp(key_token, \"out_depadded_size\")) {\n+\t\tfft->output_depadded_size = (uint32_t) strtoul(token, &err, 0);\n+\t\tret = ((err == NULL) || (*err != '\\0')) ? -1 : 0;\n+\t} else if (!strcmp(key_token, \"cs_theta_0\")) {\n+\t\ttok = strtok(token, VALUE_DELIMITER);\n+\t\tif (tok == NULL)\n+\t\t\treturn -1;\n+\t\tfor (i = 0; i < FFT_WIN_SIZE; i++) {\n+\t\t\tfft->cs_theta_0[i] = (uint32_t) strtoul(tok, &err, 0);\n+\t\t\tif (i < (FFT_WIN_SIZE - 1)) {\n+\t\t\t\ttok = strtok(NULL, VALUE_DELIMITER);\n+\t\t\t\tif (tok == NULL)\n+\t\t\t\t\treturn -1;\n+\t\t\t}\n+\t\t}\n+\t\tret = ((err == NULL) || (*err != '\\0')) ? -1 : 0;\n+\t} else if (!strcmp(key_token, \"cs_theta_d\")) {\n+\t\ttok = strtok(token, VALUE_DELIMITER);\n+\t\tif (tok == NULL)\n+\t\t\treturn -1;\n+\t\tfor (i = 0; i < FFT_WIN_SIZE; i++) {\n+\t\t\tfft->cs_theta_d[i] = (uint32_t) strtoul(tok, &err, 0);\n+\t\t\tif (i < (FFT_WIN_SIZE - 1)) {\n+\t\t\t\ttok = strtok(NULL, VALUE_DELIMITER);\n+\t\t\t\tif (tok == NULL)\n+\t\t\t\t\treturn -1;\n+\t\t\t}\n+\t\t}\n+\t\tret = ((err == NULL) || (*err != '\\0')) ? -1 : 0;\n+\t} else if (!strcmp(key_token, \"time_offset\")) {\n+\t\ttok = strtok(token, VALUE_DELIMITER);\n+\t\tif (tok == NULL)\n+\t\t\treturn -1;\n+\t\tfor (i = 0; i < FFT_WIN_SIZE; i++) {\n+\t\t\tfft->time_offset[i] = (uint32_t) strtoul(tok, &err, 0);\n+\t\t\tif (i < (FFT_WIN_SIZE - 1)) {\n+\t\t\t\ttok = strtok(NULL, VALUE_DELIMITER);\n+\t\t\t\tif (tok == NULL)\n+\t\t\t\t\treturn -1;\n+\t\t\t}\n+\t\t}\n+\t\tret = ((err == NULL) || (*err != '\\0')) ? -1 : 0;\n \t} else if (!strcmp(key_token, \"op_flags\")) {\n \t\tvector->mask |= TEST_BBDEV_VF_OP_FLAGS;\n \t\tret = parse_turbo_flags(token, &op_flags, vector->op_type);\n",
    "prefixes": [
        "v2",
        "09/10"
    ]
}