get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 58395,
    "url": "http://patches.dpdk.org/api/patches/58395/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190902121734.926-12-akhil.goyal@nxp.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": "<20190902121734.926-12-akhil.goyal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190902121734.926-12-akhil.goyal@nxp.com",
    "date": "2019-09-02T12:17:25",
    "name": "[11/20] crypto/dpaa2_sec/hw: Support 18-bit PDCP enc-auth cases",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "5cdc2ebc0d726a16ff2ac67c5683f0ec0445c290",
    "submitter": {
        "id": 517,
        "url": "http://patches.dpdk.org/api/people/517/?format=api",
        "name": "Akhil Goyal",
        "email": "akhil.goyal@nxp.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20190902121734.926-12-akhil.goyal@nxp.com/mbox/",
    "series": [
        {
            "id": 6199,
            "url": "http://patches.dpdk.org/api/series/6199/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=6199",
            "date": "2019-09-02T12:17:14",
            "name": "crypto/dpaaX_sec: Support Wireless algos",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/6199/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/58395/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/58395/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id BF9451E9AE;\n\tMon,  2 Sep 2019 14:32:48 +0200 (CEST)",
            "from inva020.nxp.com (inva020.nxp.com [92.121.34.13])\n\tby dpdk.org (Postfix) with ESMTP id 061151D448\n\tfor <dev@dpdk.org>; Mon,  2 Sep 2019 14:32:10 +0200 (CEST)",
            "from inva020.nxp.com (localhost [127.0.0.1])\n\tby inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id DB3711A0649;\n\tMon,  2 Sep 2019 14:32:09 +0200 (CEST)",
            "from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com\n\t[165.114.16.14])\n\tby inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 444261A069C;\n\tMon,  2 Sep 2019 14:32:07 +0200 (CEST)",
            "from GDB1.ap.freescale.net (GDB1.ap.freescale.net [10.232.132.179])\n\tby invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id E1196402BE;\n\tMon,  2 Sep 2019 20:32:02 +0800 (SGT)"
        ],
        "From": "Akhil Goyal <akhil.goyal@nxp.com>",
        "To": "dev@dpdk.org",
        "Cc": "hemant.agrawal@nxp.com, vakul.garg@nxp.com,\n\tAkhil Goyal <akhil.goyal@nxp.com>",
        "Date": "Mon,  2 Sep 2019 17:47:25 +0530",
        "Message-Id": "<20190902121734.926-12-akhil.goyal@nxp.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20190902121734.926-1-akhil.goyal@nxp.com>",
        "References": "<20190902121734.926-1-akhil.goyal@nxp.com>",
        "X-Virus-Scanned": "ClamAV using ClamSMTP",
        "Subject": "[dpdk-dev] [PATCH 11/20] crypto/dpaa2_sec/hw: Support 18-bit PDCP\n\tenc-auth cases",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Vakul Garg <vakul.garg@nxp.com>\n\nThis patch support following algo combinations(ENC-AUTH).\n- AES-SNOW\n- SNOW-AES\n- AES-ZUC\n- ZUC-AES\n- SNOW-ZUC\n- ZUC-SNOW\n\nSigned-off-by: Vakul Garg <vakul.garg@nxp.com>\nSigned-off-by: Akhil Goyal <akhil.goyal@nxp.com>\n---\n drivers/crypto/dpaa2_sec/hw/desc/pdcp.h | 211 ++++++++++++++++--------\n 1 file changed, 140 insertions(+), 71 deletions(-)",
    "diff": "diff --git a/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h b/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h\nindex 0b074ec80..764daf21c 100644\n--- a/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h\n+++ b/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h\n@@ -1021,21 +1021,21 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \tJUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM);\n \tMATHB(p, MATH0, AND, sn_mask, MATH1, 8, IFB | IMMED2);\n \tMATHB(p, MATH1, SHLD, MATH1, MATH1, 8, 0);\n-\tMOVE(p, DESCBUF, 4, MATH2, 0, 0x08, WAITCOMP | IMMED);\n+\tMOVEB(p, DESCBUF, 4, MATH2, 0, 0x08, WAITCOMP | IMMED);\n \tMATHB(p, MATH1, OR, MATH2, MATH2, 8, 0);\n \tSEQSTORE(p, MATH0, offset, length, 0);\n \tif (dir == OP_TYPE_ENCAP_PROTOCOL) {\n \t\tif (rta_sec_era > RTA_SEC_ERA_2 ||\n \t\t    (rta_sec_era == RTA_SEC_ERA_2 &&\n \t\t\t\t   era_2_sw_hfn_ovrd == 0)) {\n-\t\t\tSEQINPTR(p, 0, 1, RTO);\n+\t\t\tSEQINPTR(p, 0, length, RTO);\n \t\t} else {\n \t\t\tSEQINPTR(p, 0, 5, RTO);\n \t\t\tSEQFIFOLOAD(p, SKIP, 4, 0);\n \t\t}\n \t\tKEY(p, KEY1, authdata->key_enc_flags, authdata->key,\n \t\t    authdata->keylen, INLINE_KEY(authdata));\n-\t\tMOVE(p, MATH2, 0, IFIFOAB1, 0, 0x08, IMMED);\n+\t\tMOVEB(p, MATH2, 0, IFIFOAB1, 0, 0x08, IMMED);\n \n \t\tif (rta_sec_era > RTA_SEC_ERA_2) {\n \t\t\tMATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0);\n@@ -1088,7 +1088,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \t\t\t      ICV_CHECK_DISABLE,\n \t\t\t      DIR_DEC);\n \t\tSEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1);\n-\t\tMOVE(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED);\n+\t\tMOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED);\n \t\tif (rta_sec_era <= RTA_SEC_ERA_3)\n \t\t\tLOAD(p, CLRW_CLR_C1KEY |\n \t\t\t     CLRW_CLR_C1CTX |\n@@ -1111,7 +1111,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \t\tKEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key,\n \t\t    cipherdata->keylen, INLINE_KEY(cipherdata));\n \t\tSET_LABEL(p, local_offset);\n-\t\tMOVE(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n+\t\tMOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n \t\tSEQINPTR(p, 0, 0, RTO);\n \n \t\tif (rta_sec_era == RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) {\n@@ -1119,7 +1119,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \t\t\tMATHB(p, SEQINSZ, ADD, ONE, SEQINSZ, 4, 0);\n \t\t}\n \n-\t\tMATHB(p, SEQINSZ, SUB, ONE, VSEQINSZ, 4, 0);\n+\t\tMATHB(p, SEQINSZ, SUB, length, VSEQINSZ, 4, IMMED2);\n \t\tALG_OPERATION(p, OP_ALG_ALGSEL_SNOW_F8,\n \t\t\t      OP_ALG_AAI_F8,\n \t\t\t      OP_ALG_AS_INITFINAL,\n@@ -1130,14 +1130,14 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \t\tif (rta_sec_era > RTA_SEC_ERA_2 ||\n \t\t    (rta_sec_era == RTA_SEC_ERA_2 &&\n \t\t\t\t   era_2_sw_hfn_ovrd == 0))\n-\t\t\tSEQFIFOLOAD(p, SKIP, 1, 0);\n+\t\t\tSEQFIFOLOAD(p, SKIP, length, 0);\n \n \t\tSEQFIFOLOAD(p, MSG1, 0, VLF);\n-\t\tMOVE(p, MATH3, 0, IFIFOAB1, 0, 4, LAST1 | FLUSH1 | IMMED);\n+\t\tMOVEB(p, MATH3, 0, IFIFOAB1, 0, 4, LAST1 | FLUSH1 | IMMED);\n \t\tPATCH_MOVE(p, seqin_ptr_read, local_offset);\n \t\tPATCH_MOVE(p, seqin_ptr_write, local_offset);\n \t} else {\n-\t\tMOVE(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n+\t\tMOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n \n \t\tif (rta_sec_era >= RTA_SEC_ERA_5)\n \t\t\tMOVE(p, CONTEXT1, 0, CONTEXT2, 0, 8, IMMED);\n@@ -1147,7 +1147,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \t\telse\n \t\t\tMATHB(p, SEQINSZ, SUB, MATH3, VSEQINSZ, 4, 0);\n \n-\t\tMATHB(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2);\n+\t\tMATHI(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2);\n /*\n  * TODO: To be changed when proper support is added in RTA (can't load a\n  * command that is also written by RTA (or patch it for that matter).\n@@ -1237,7 +1237,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p,\n \t\t\t      DIR_DEC);\n \n \t\t/* Read the # of bytes written in the output buffer + 1 (HDR) */\n-\t\tMATHB(p, VSEQOUTSZ, ADD, ONE, VSEQINSZ, 4, 0);\n+\t\tMATHI(p, VSEQOUTSZ, ADD, length, VSEQINSZ, 4, IMMED2);\n \n \t\tif (rta_sec_era <= RTA_SEC_ERA_3)\n \t\t\tMOVE(p, MATH3, 0, IFIFOAB1, 0, 8, IMMED);\n@@ -1340,24 +1340,24 @@ pdcp_insert_cplane_aes_snow_op(struct program *p,\n \t}\n \n \tif (dir == OP_TYPE_ENCAP_PROTOCOL)\n-\t\tMATHB(p, SEQINSZ, SUB, ONE, VSEQINSZ, 4, 0);\n+\t\tMATHB(p, SEQINSZ, SUB, length, VSEQINSZ, 4, IMMED2);\n \n \tSEQLOAD(p, MATH0, offset, length, 0);\n \tJUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM);\n-\tMOVE(p, MATH0, 7, IFIFOAB2, 0, 1, IMMED);\n+\tMOVEB(p, MATH0, offset, IFIFOAB2, 0, length, IMMED);\n \tMATHB(p, MATH0, AND, sn_mask, MATH1, 8, IFB | IMMED2);\n \n \tSEQSTORE(p, MATH0, offset, length, 0);\n \tMATHB(p, MATH1, SHLD, MATH1, MATH1, 8, 0);\n-\tMOVE(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n+\tMOVEB(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n \tMATHB(p, MATH1, OR, MATH2, MATH1, 8, 0);\n-\tMOVE(p, MATH1, 0, CONTEXT1, 16, 8, IMMED);\n-\tMOVE(p, MATH1, 0, CONTEXT2, 0, 4, IMMED);\n+\tMOVEB(p, MATH1, 0, CONTEXT1, 16, 8, IMMED);\n+\tMOVEB(p, MATH1, 0, CONTEXT2, 0, 4, IMMED);\n \tif (swap == false) {\n-\t\tMATHB(p, MATH1, AND, lower_32_bits(PDCP_BEARER_MASK), MATH2, 4,\n-\t\t\tIMMED2);\n-\t\tMATHB(p, MATH1, AND, upper_32_bits(PDCP_DIR_MASK), MATH3, 4,\n-\t\t\tIMMED2);\n+\t\tMATHB(p, MATH1, AND, upper_32_bits(PDCP_BEARER_MASK), MATH2, 4,\n+\t\t      IMMED2);\n+\t\tMATHB(p, MATH1, AND, lower_32_bits(PDCP_DIR_MASK), MATH3, 4,\n+\t\t      IMMED2);\n \t} else {\n \t\tMATHB(p, MATH1, AND, lower_32_bits(PDCP_BEARER_MASK_BE), MATH2,\n \t\t\t4, IMMED2);\n@@ -1365,7 +1365,7 @@ pdcp_insert_cplane_aes_snow_op(struct program *p,\n \t\t\t4, IMMED2);\n \t}\n \tMATHB(p, MATH3, SHLD, MATH3, MATH3, 8, 0);\n-\tMOVE(p, MATH2, 4, OFIFO, 0, 12, IMMED);\n+\tMOVEB(p, MATH2, 4, OFIFO, 0, 12, IMMED);\n \tMOVE(p, OFIFO, 0, CONTEXT2, 4, 12, IMMED);\n \tif (dir == OP_TYPE_ENCAP_PROTOCOL) {\n \t\tMATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2);\n@@ -1485,14 +1485,14 @@ pdcp_insert_cplane_snow_zuc_op(struct program *p,\n \n \tSEQLOAD(p, MATH0, offset, length, 0);\n \tJUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM);\n-\tMOVE(p, MATH0, 7, IFIFOAB2, 0, 1, IMMED);\n+\tMOVEB(p, MATH0, offset, IFIFOAB2, 0, length, IMMED);\n \tMATHB(p, MATH0, AND, sn_mask, MATH1, 8, IFB | IMMED2);\n \n \tMATHB(p, MATH1, SHLD, MATH1, MATH1, 8, 0);\n-\tMOVE(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n+\tMOVEB(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n \tMATHB(p, MATH1, OR, MATH2, MATH2, 8, 0);\n-\tMOVE(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n-\tMOVE(p, MATH2, 0, CONTEXT2, 0, 8, WAITCOMP | IMMED);\n+\tMOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n+\tMOVEB(p, MATH2, 0, CONTEXT2, 0, 8, WAITCOMP | IMMED);\n \n \tif (dir == OP_TYPE_ENCAP_PROTOCOL)\n \t\tMATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2);\n@@ -1606,14 +1606,14 @@ pdcp_insert_cplane_aes_zuc_op(struct program *p,\n \tSET_LABEL(p, keyjump);\n \tSEQLOAD(p, MATH0, offset, length, 0);\n \tJUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM);\n-\tMOVE(p, MATH0, 7, IFIFOAB2, 0, 1, IMMED);\n+\tMOVEB(p, MATH0, offset, IFIFOAB2, 0, length, IMMED);\n \tMATHB(p, MATH0, AND, sn_mask, MATH1, 8, IFB | IMMED2);\n \n \tMATHB(p, MATH1, SHLD, MATH1, MATH1, 8, 0);\n-\tMOVE(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n+\tMOVEB(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n \tMATHB(p, MATH1, OR, MATH2, MATH2, 8, 0);\n-\tMOVE(p, MATH2, 0, CONTEXT1, 16, 8, IMMED);\n-\tMOVE(p, MATH2, 0, CONTEXT2, 0, 8, WAITCOMP | IMMED);\n+\tMOVEB(p, MATH2, 0, CONTEXT1, 16, 8, IMMED);\n+\tMOVEB(p, MATH2, 0, CONTEXT2, 0, 8, WAITCOMP | IMMED);\n \n \tif (dir == OP_TYPE_ENCAP_PROTOCOL)\n \t\tMATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2);\n@@ -1729,19 +1729,19 @@ pdcp_insert_cplane_zuc_snow_op(struct program *p,\n \tSET_LABEL(p, keyjump);\n \tSEQLOAD(p, MATH0, offset, length, 0);\n \tJUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM);\n-\tMOVE(p, MATH0, 7, IFIFOAB2, 0, 1, IMMED);\n+\tMOVEB(p, MATH0, offset, IFIFOAB2, 0, length, IMMED);\n \tMATHB(p, MATH0, AND, sn_mask, MATH1, 8, IFB | IMMED2);\n \n \tMATHB(p, MATH1, SHLD, MATH1, MATH1, 8, 0);\n-\tMOVE(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n+\tMOVEB(p, DESCBUF, 4, MATH2, 0, 8, WAITCOMP | IMMED);\n \tMATHB(p, MATH1, OR, MATH2, MATH1, 8, 0);\n-\tMOVE(p, MATH1, 0, CONTEXT1, 0, 8, IMMED);\n-\tMOVE(p, MATH1, 0, CONTEXT2, 0, 4, IMMED);\n+\tMOVEB(p, MATH1, 0, CONTEXT1, 0, 8, IMMED);\n+\tMOVEB(p, MATH1, 0, CONTEXT2, 0, 4, IMMED);\n \tif (swap == false) {\n-\t\tMATHB(p, MATH1, AND, lower_32_bits(PDCP_BEARER_MASK), MATH2,\n-\t\t\t4, IMMED2);\n-\t\tMATHB(p, MATH1, AND, upper_32_bits(PDCP_DIR_MASK), MATH3,\n-\t\t\t4, IMMED2);\n+\t\tMATHB(p, MATH1, AND, upper_32_bits(PDCP_BEARER_MASK), MATH2,\n+\t\t      4, IMMED2);\n+\t\tMATHB(p, MATH1, AND, lower_32_bits(PDCP_DIR_MASK), MATH3,\n+\t\t      4, IMMED2);\n \t} else {\n \t\tMATHB(p, MATH1, AND, lower_32_bits(PDCP_BEARER_MASK_BE), MATH2,\n \t\t\t4, IMMED2);\n@@ -1749,7 +1749,7 @@ pdcp_insert_cplane_zuc_snow_op(struct program *p,\n \t\t\t4, IMMED2);\n \t}\n \tMATHB(p, MATH3, SHLD, MATH3, MATH3, 8, 0);\n-\tMOVE(p, MATH2, 4, OFIFO, 0, 12, IMMED);\n+\tMOVEB(p, MATH2, 4, OFIFO, 0, 12, IMMED);\n \tMOVE(p, OFIFO, 0, CONTEXT2, 4, 12, IMMED);\n \n \tif (dir == OP_TYPE_ENCAP_PROTOCOL) {\n@@ -1798,13 +1798,13 @@ pdcp_insert_cplane_zuc_snow_op(struct program *p,\n \t\t\tLOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED);\n \n \t\t/* Put ICV to M0 before sending it to C2 for comparison. */\n-\t\tMOVE(p, OFIFO, 0, MATH0, 0, 4, WAITCOMP | IMMED);\n+\t\tMOVEB(p, OFIFO, 0, MATH0, 0, 4, WAITCOMP | IMMED);\n \n \t\tLOAD(p, NFIFOENTRY_STYPE_ALTSOURCE |\n \t\t     NFIFOENTRY_DEST_CLASS2 |\n \t\t     NFIFOENTRY_DTYPE_ICV |\n \t\t     NFIFOENTRY_LC2 | 4, NFIFO_SZL, 0, 4, IMMED);\n-\t\tMOVE(p, MATH0, 0, ALTSOURCE, 0, 4, IMMED);\n+\t\tMOVEB(p, MATH0, 0, ALTSOURCE, 0, 4, IMMED);\n \t}\n \n \tPATCH_JUMP(p, pkeyjump, keyjump);\n@@ -1871,14 +1871,14 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p,\n \tMATHB(p, MATH0, AND, sn_mask, MATH1, 8, IFB | IMMED2);\n \n \tMATHB(p, MATH1, SHLD, MATH1, MATH1, 8, 0);\n-\tMOVE(p, DESCBUF, 4, MATH2, 0, 0x08, WAITCOMP | IMMED);\n+\tMOVEB(p, DESCBUF, 4, MATH2, 0, 0x08, WAITCOMP | IMMED);\n \tMATHB(p, MATH1, OR, MATH2, MATH2, 8, 0);\n \tSEQSTORE(p, MATH0, offset, length, 0);\n \tif (dir == OP_TYPE_ENCAP_PROTOCOL) {\n \t\tKEY(p, KEY1, authdata->key_enc_flags, authdata->key,\n \t\t    authdata->keylen, INLINE_KEY(authdata));\n-\t\tMOVE(p, MATH2, 0, IFIFOAB1, 0, 0x08, IMMED);\n-\t\tMOVE(p, MATH0, 7, IFIFOAB1, 0, 1, IMMED);\n+\t\tMOVEB(p, MATH2, 0, IFIFOAB1, 0, 0x08, IMMED);\n+\t\tMOVEB(p, MATH0, offset, IFIFOAB1, 0, length, IMMED);\n \n \t\tMATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0);\n \t\tMATHB(p, VSEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2);\n@@ -1889,7 +1889,7 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p,\n \t\t\t      ICV_CHECK_DISABLE,\n \t\t\t      DIR_DEC);\n \t\tSEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1);\n-\t\tMOVE(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED);\n+\t\tMOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED);\n \t\tLOAD(p, CLRW_RESET_CLS1_CHA |\n \t\t     CLRW_CLR_C1KEY |\n \t\t     CLRW_CLR_C1CTX |\n@@ -1901,7 +1901,7 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p,\n \t\tKEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key,\n \t\t    cipherdata->keylen, INLINE_KEY(cipherdata));\n \n-\t\tMOVE(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n+\t\tMOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n \t\tSEQINPTR(p, 0, PDCP_NULL_MAX_FRAME_LEN, RTO);\n \n \t\tALG_OPERATION(p, OP_ALG_ALGSEL_ZUCE,\n@@ -1911,12 +1911,12 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p,\n \t\t\t      DIR_ENC);\n \t\tSEQFIFOSTORE(p, MSG, 0, 0, VLF);\n \n-\t\tSEQFIFOLOAD(p, SKIP, 1, 0);\n+\t\tSEQFIFOLOAD(p, SKIP, length, 0);\n \n \t\tSEQFIFOLOAD(p, MSG1, 0, VLF);\n-\t\tMOVE(p, MATH3, 0, IFIFOAB1, 0, 4, LAST1 | FLUSH1 | IMMED);\n+\t\tMOVEB(p, MATH3, 0, IFIFOAB1, 0, 4, LAST1 | FLUSH1 | IMMED);\n \t} else {\n-\t\tMOVE(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n+\t\tMOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED);\n \n \t\tMOVE(p, CONTEXT1, 0, CONTEXT2, 0, 8, IMMED);\n \n@@ -1937,7 +1937,7 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p,\n \t\tSEQFIFOSTORE(p, MSG, 0, 0, VLF | CONT);\n \t\tSEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1);\n \n-\t\tMOVE(p, OFIFO, 0, MATH3, 0, 4, IMMED);\n+\t\tMOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED);\n \n \t\tLOAD(p, CLRW_RESET_CLS1_CHA |\n \t\t     CLRW_CLR_C1KEY |\n@@ -1969,7 +1969,7 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p,\n \t\t     NFIFOENTRY_DTYPE_ICV |\n \t\t     NFIFOENTRY_LC1 |\n \t\t     NFIFOENTRY_FC1 | 4, NFIFO_SZL, 0, 4, IMMED);\n-\t\tMOVE(p, MATH3, 0, ALTSOURCE, 0, 4, IMMED);\n+\t\tMOVEB(p, MATH3, 0, ALTSOURCE, 0, 4, IMMED);\n \t}\n \n \treturn 0;\n@@ -2080,6 +2080,8 @@ insert_hfn_ov_op(struct program *p,\n {\n \tuint32_t imm = PDCP_DPOVRD_HFN_OV_EN;\n \tuint16_t hfn_pdb_offset;\n+\tLABEL(keyjump);\n+\tREFERENCE(pkeyjump);\n \n \tif (rta_sec_era == RTA_SEC_ERA_2 && !era_2_sw_hfn_ovrd)\n \t\treturn 0;\n@@ -2115,13 +2117,10 @@ insert_hfn_ov_op(struct program *p,\n \t\tSEQSTORE(p, MATH0, 4, 4, 0);\n \t}\n \n-\tif (rta_sec_era >= RTA_SEC_ERA_8)\n-\t\tJUMP(p, 6, LOCAL_JUMP, ALL_TRUE, MATH_Z);\n-\telse\n-\t\tJUMP(p, 5, LOCAL_JUMP, ALL_TRUE, MATH_Z);\n+\tpkeyjump = JUMP(p, keyjump, LOCAL_JUMP, ALL_TRUE, MATH_Z);\n \n \tif (rta_sec_era > RTA_SEC_ERA_2)\n-\t\tMATHB(p, DPOVRD, LSHIFT, shift, MATH0, 4, IMMED2);\n+\t\tMATHI(p, DPOVRD, LSHIFT, shift, MATH0, 4, IMMED2);\n \telse\n \t\tMATHB(p, MATH0, LSHIFT, shift, MATH0, 4, IMMED2);\n \n@@ -2136,6 +2135,8 @@ insert_hfn_ov_op(struct program *p,\n \t\t */\n \t\tMATHB(p, DPOVRD, AND, ZERO, DPOVRD, 4, STL);\n \n+\tSET_LABEL(p, keyjump);\n+\tPATCH_JUMP(p, pkeyjump, keyjump);\n \treturn 0;\n }\n \n@@ -2271,14 +2272,45 @@ cnstr_pdcp_c_plane_pdb(struct program *p,\n /*\n  * PDCP UPlane PDB creation function\n  */\n-static inline int\n+static inline enum pdb_type_e\n cnstr_pdcp_u_plane_pdb(struct program *p,\n \t\t       enum pdcp_sn_size sn_size,\n \t\t       uint32_t hfn, unsigned short bearer,\n \t\t       unsigned short direction,\n-\t\t       uint32_t hfn_threshold)\n+\t\t       uint32_t hfn_threshold,\n+\t\t       struct alginfo *cipherdata,\n+\t\t       struct alginfo *authdata)\n {\n \tstruct pdcp_pdb pdb;\n+\tenum pdb_type_e pdb_type = PDCP_PDB_TYPE_FULL_PDB;\n+\tenum pdb_type_e\n+\t\tpdb_mask[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID] = {\n+\t\t\t{\t/* NULL */\n+\t\t\t\tPDCP_PDB_TYPE_NO_PDB,\t\t/* NULL */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* SNOW f9 */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* AES CMAC */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB\t\t/* ZUC-I */\n+\t\t\t},\n+\t\t\t{\t/* SNOW f8 */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* NULL */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* SNOW f9 */\n+\t\t\t\tPDCP_PDB_TYPE_REDUCED_PDB,\t/* AES CMAC */\n+\t\t\t\tPDCP_PDB_TYPE_REDUCED_PDB\t/* ZUC-I */\n+\t\t\t},\n+\t\t\t{\t/* AES CTR */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* NULL */\n+\t\t\t\tPDCP_PDB_TYPE_REDUCED_PDB,\t/* SNOW f9 */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* AES CMAC */\n+\t\t\t\tPDCP_PDB_TYPE_REDUCED_PDB\t/* ZUC-I */\n+\t\t\t},\n+\t\t\t{\t/* ZUC-E */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB,\t\t/* NULL */\n+\t\t\t\tPDCP_PDB_TYPE_REDUCED_PDB,\t/* SNOW f9 */\n+\t\t\t\tPDCP_PDB_TYPE_REDUCED_PDB,\t/* AES CMAC */\n+\t\t\t\tPDCP_PDB_TYPE_FULL_PDB\t\t/* ZUC-I */\n+\t\t\t},\n+\t};\n+\n \t/* Read options from user */\n \t/* Depending on sequence number length, the HFN and HFN threshold\n \t * have different lengths.\n@@ -2312,6 +2344,12 @@ cnstr_pdcp_u_plane_pdb(struct program *p,\n \t\tpdb.hfn_res = hfn << PDCP_U_PLANE_PDB_18BIT_SN_HFN_SHIFT;\n \t\tpdb.hfn_thr_res =\n \t\t\thfn_threshold<<PDCP_U_PLANE_PDB_18BIT_SN_HFN_THR_SHIFT;\n+\n+\t\tif (rta_sec_era <= RTA_SEC_ERA_8) {\n+\t\t\tif (cipherdata && authdata)\n+\t\t\t\tpdb_type = pdb_mask[cipherdata->algtype]\n+\t\t\t\t\t\t   [authdata->algtype];\n+\t\t}\n \t\tbreak;\n \n \tdefault:\n@@ -2323,13 +2361,29 @@ cnstr_pdcp_u_plane_pdb(struct program *p,\n \t\t\t\t((bearer << PDCP_U_PLANE_PDB_BEARER_SHIFT) |\n \t\t\t\t (direction << PDCP_U_PLANE_PDB_DIR_SHIFT));\n \n-\t/* copy PDB in descriptor*/\n-\t__rta_out32(p, pdb.opt_res.opt);\n-\t__rta_out32(p, pdb.hfn_res);\n-\t__rta_out32(p, pdb.bearer_dir_res);\n-\t__rta_out32(p, pdb.hfn_thr_res);\n+\tswitch (pdb_type) {\n+\tcase PDCP_PDB_TYPE_NO_PDB:\n+\t\tbreak;\n+\n+\tcase PDCP_PDB_TYPE_REDUCED_PDB:\n+\t\t__rta_out32(p, pdb.hfn_res);\n+\t\t__rta_out32(p, pdb.bearer_dir_res);\n+\t\tbreak;\n \n-\treturn 0;\n+\tcase PDCP_PDB_TYPE_FULL_PDB:\n+\t\t/* copy PDB in descriptor*/\n+\t\t__rta_out32(p, pdb.opt_res.opt);\n+\t\t__rta_out32(p, pdb.hfn_res);\n+\t\t__rta_out32(p, pdb.bearer_dir_res);\n+\t\t__rta_out32(p, pdb.hfn_thr_res);\n+\n+\t\tbreak;\n+\n+\tdefault:\n+\t\treturn PDCP_PDB_TYPE_INVALID;\n+\t}\n+\n+\treturn pdb_type;\n }\n /**\n  * cnstr_shdsc_pdcp_c_plane_encap - Function for creating a PDCP Control Plane\n@@ -2736,6 +2790,7 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf,\n \tstruct program prg;\n \tstruct program *p = &prg;\n \tint err;\n+\tenum pdb_type_e pdb_type;\n \tstatic enum rta_share_type\n \t\tdesc_share[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID] = {\n \t\t{\t/* NULL */\n@@ -2785,15 +2840,16 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf,\n \t\tSHR_HDR(p, desc_share[cipherdata->algtype][authdata->algtype], 0, 0);\n \telse\n \t\tSHR_HDR(p, SHR_ALWAYS, 0, 0);\n-\tif (cnstr_pdcp_u_plane_pdb(p, sn_size, hfn, bearer, direction,\n-\t\t\t\t   hfn_threshold)) {\n+\tpdb_type = cnstr_pdcp_u_plane_pdb(p, sn_size, hfn,\n+\t\t\t\t\t  bearer, direction, hfn_threshold,\n+\t\t\t\t\t  cipherdata, authdata);\n+\tif (pdb_type == PDCP_PDB_TYPE_INVALID) {\n \t\tpr_err(\"Error creating PDCP UPlane PDB\\n\");\n \t\treturn -EINVAL;\n \t}\n \tSET_LABEL(p, pdb_end);\n \n-\terr = insert_hfn_ov_op(p, sn_size, PDCP_PDB_TYPE_FULL_PDB,\n-\t\t\t       era_2_sw_hfn_ovrd);\n+\terr = insert_hfn_ov_op(p, sn_size, pdb_type, era_2_sw_hfn_ovrd);\n \tif (err)\n \t\treturn err;\n \n@@ -2820,6 +2876,12 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf,\n \t\t\t\t\treturn err;\n \t\t\t\tbreak;\n \t\t\t}\n+\n+\t\t\tif (pdb_type != PDCP_PDB_TYPE_FULL_PDB) {\n+\t\t\t\tpr_err(\"PDB type must be FULL for PROTO desc\\n\");\n+\t\t\t\treturn -EINVAL;\n+\t\t\t}\n+\n \t\t\t/* Insert auth key if requested */\n \t\t\tif (authdata && authdata->algtype) {\n \t\t\t\tKEY(p, KEY2, authdata->key_enc_flags,\n@@ -2931,6 +2993,7 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf,\n \tstruct program prg;\n \tstruct program *p = &prg;\n \tint err;\n+\tenum pdb_type_e pdb_type;\n \tstatic enum rta_share_type\n \t\tdesc_share[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID] = {\n \t\t{\t/* NULL */\n@@ -2981,15 +3044,16 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf,\n \telse\n \t\tSHR_HDR(p, SHR_ALWAYS, 0, 0);\n \n-\tif (cnstr_pdcp_u_plane_pdb(p, sn_size, hfn, bearer, direction,\n-\t\t\t\t   hfn_threshold)) {\n+\tpdb_type = cnstr_pdcp_u_plane_pdb(p, sn_size, hfn, bearer,\n+\t\t\t\t\t  direction, hfn_threshold,\n+\t\t\t\t\t  cipherdata, authdata);\n+\tif (pdb_type == PDCP_PDB_TYPE_INVALID) {\n \t\tpr_err(\"Error creating PDCP UPlane PDB\\n\");\n \t\treturn -EINVAL;\n \t}\n \tSET_LABEL(p, pdb_end);\n \n-\terr = insert_hfn_ov_op(p, sn_size, PDCP_PDB_TYPE_FULL_PDB,\n-\t\t\t       era_2_sw_hfn_ovrd);\n+\terr = insert_hfn_ov_op(p, sn_size, pdb_type, era_2_sw_hfn_ovrd);\n \tif (err)\n \t\treturn err;\n \n@@ -3006,6 +3070,11 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf,\n \t\tcase PDCP_CIPHER_TYPE_AES:\n \t\tcase PDCP_CIPHER_TYPE_SNOW:\n \t\tcase PDCP_CIPHER_TYPE_NULL:\n+\t\t\tif (pdb_type != PDCP_PDB_TYPE_FULL_PDB) {\n+\t\t\t\tpr_err(\"PDB type must be FULL for PROTO desc\\n\");\n+\t\t\t\treturn -EINVAL;\n+\t\t\t}\n+\n \t\t\t/* Insert auth key if requested */\n \t\t\tif (authdata && authdata->algtype)\n \t\t\t\tKEY(p, KEY2, authdata->key_enc_flags,\n",
    "prefixes": [
        "11/20"
    ]
}