get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 58929,
    "url": "http://patches.dpdk.org/api/patches/58929/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190907031629.34666-5-qi.z.zhang@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": "<20190907031629.34666-5-qi.z.zhang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190907031629.34666-5-qi.z.zhang@intel.com",
    "date": "2019-09-07T03:16:11",
    "name": "[v3,04/22] net/ice/base: add non-word aligned ipv6 field support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "82f6710c6b4fefc55f761bef9513e3f8828175f1",
    "submitter": {
        "id": 504,
        "url": "http://patches.dpdk.org/api/people/504/?format=api",
        "name": "Qi Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "delegate": {
        "id": 31221,
        "url": "http://patches.dpdk.org/api/users/31221/?format=api",
        "username": "yexl",
        "first_name": "xiaolong",
        "last_name": "ye",
        "email": "xiaolong.ye@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20190907031629.34666-5-qi.z.zhang@intel.com/mbox/",
    "series": [
        {
            "id": 6321,
            "url": "http://patches.dpdk.org/api/series/6321/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=6321",
            "date": "2019-09-07T03:16:07",
            "name": "net/ice/base: share code update secend batch.",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/6321/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/58929/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/58929/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 0BB861F492;\n\tSat,  7 Sep 2019 05:14:08 +0200 (CEST)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby dpdk.org (Postfix) with ESMTP id BBFFE1F3F7\n\tfor <dev@dpdk.org>; Sat,  7 Sep 2019 05:13:56 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n\tby fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t06 Sep 2019 20:13:56 -0700",
            "from dpdk51.sh.intel.com ([10.67.110.245])\n\tby FMSMGA003.fm.intel.com with ESMTP; 06 Sep 2019 20:13:54 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.64,474,1559545200\"; d=\"scan'208\";a=\"191006826\"",
        "From": "Qi Zhang <qi.z.zhang@intel.com>",
        "To": "wenzhuo.lu@intel.com,\n\tqiming.yang@intel.com",
        "Cc": "dev@dpdk.org, xiaolong.ye@intel.com, Qi Zhang <qi.z.zhang@intel.com>,\n\tJunfeng Guo <junfeng.guo@intel.com>,\n\tPaul M Stillwell Jr <paul.m.stillwell.jr@intel.com>",
        "Date": "Sat,  7 Sep 2019 11:16:11 +0800",
        "Message-Id": "<20190907031629.34666-5-qi.z.zhang@intel.com>",
        "X-Mailer": "git-send-email 2.13.6",
        "In-Reply-To": "<20190907031629.34666-1-qi.z.zhang@intel.com>",
        "References": "<20190902035551.16852-1-qi.z.zhang@intel.com>\n\t<20190907031629.34666-1-qi.z.zhang@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v3 04/22] net/ice/base: add non-word aligned ipv6\n\tfield support",
        "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": "Add non-word aligned field support for IPv6 with hlim, tc and proto.\nAll these fields are one byte within one word. In order to match\nbytes within the IPv6 header for flow director we need to use a mask.\n\nSigned-off-by: Junfeng Guo <junfeng.guo@intel.com>\nSigned-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>\nSigned-off-by: Qi Zhang <qi.z.zhang@intel.com>\n---\n drivers/net/ice/base/ice_fdir.c | 32 ++++++++++++++++++++++++++++++++\n drivers/net/ice/base/ice_fdir.h |  4 ++++\n 2 files changed, 36 insertions(+)",
    "diff": "diff --git a/drivers/net/ice/base/ice_fdir.c b/drivers/net/ice/base/ice_fdir.c\nindex db5bbc6ad..e35506006 100644\n--- a/drivers/net/ice/base/ice_fdir.c\n+++ b/drivers/net/ice/base/ice_fdir.c\n@@ -496,6 +496,28 @@ static void ice_pkt_insert_u8(u8 *pkt, int offset, u8 data)\n }\n \n /**\n+ * ice_pkt_insert_u8_tc - insert a u8 value into a memory buffer for tc ipv6.\n+ * @pkt: packet buffer\n+ * @offset: offset into buffer\n+ * @data: 8 bit value to convert and insert into pkt at offset\n+ *\n+ * This function is designed for inserting Traffic Class (tc) for IPv6,\n+ * since that tc is not aligned in number of bytes. Here we split it out\n+ * into two part and fill each byte with data copy from pkt, then insert\n+ * the two bytes data one by one.\n+ */\n+static void ice_pkt_insert_u8_tc(u8 *pkt, int offset, u8 data)\n+{\n+\tu8 high, low;\n+\n+\thigh = (data >> 4) + (*(pkt + offset) & 0xF0);\n+\tice_memcpy(pkt + offset, &high, sizeof(high), ICE_NONDMA_TO_NONDMA);\n+\n+\tlow = (*(pkt + offset + 1) & 0x0F) + ((data & 0x0F) << 4);\n+\tice_memcpy(pkt + offset + 1, &low, sizeof(low), ICE_NONDMA_TO_NONDMA);\n+}\n+\n+/**\n  * ice_pkt_insert_u16 - insert a be16 value into a memory buffer.\n  * @pkt: packet buffer\n  * @offset: offset into buffer\n@@ -647,6 +669,8 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\t\t\t   input->ip.v6.dst_port);\n \t\tice_pkt_insert_u16(loc, ICE_IPV6_TCP_SRC_PORT_OFFSET,\n \t\t\t\t   input->ip.v6.src_port);\n+\t\tice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);\n \t\tbreak;\n \tcase ICE_FLTR_PTYPE_NONF_IPV6_UDP:\n \t\tice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,\n@@ -657,6 +681,8 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\t\t\t   input->ip.v6.dst_port);\n \t\tice_pkt_insert_u16(loc, ICE_IPV6_UDP_SRC_PORT_OFFSET,\n \t\t\t\t   input->ip.v6.src_port);\n+\t\tice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);\n \t\tbreak;\n \tcase ICE_FLTR_PTYPE_NONF_IPV6_SCTP:\n \t\tice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,\n@@ -667,12 +693,18 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\t\t\t   input->ip.v6.dst_port);\n \t\tice_pkt_insert_u16(loc, ICE_IPV6_SCTP_SRC_PORT_OFFSET,\n \t\t\t\t   input->ip.v6.src_port);\n+\t\tice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);\n \t\tbreak;\n \tcase ICE_FLTR_PTYPE_NONF_IPV6_OTHER:\n \t\tice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,\n \t\t\t\t\t input->ip.v6.dst_ip);\n \t\tice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,\n \t\t\t\t\t input->ip.v6.src_ip);\n+\t\tice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV6_PROTO_OFFSET,\n+\t\t\t\t  input->ip.v6.proto);\n \t\tbreak;\n \tdefault:\n \t\treturn ICE_ERR_PARAM;\ndiff --git a/drivers/net/ice/base/ice_fdir.h b/drivers/net/ice/base/ice_fdir.h\nindex e817057c8..e0f3cd481 100644\n--- a/drivers/net/ice/base/ice_fdir.h\n+++ b/drivers/net/ice/base/ice_fdir.h\n@@ -84,6 +84,9 @@ enum ice_status ice_clear_pf_fd_table(struct ice_hw *hw);\n \n #define ICE_IPV4_TOS_OFFSET\t\t15\n #define ICE_IPV4_TTL_OFFSET\t\t22\n+#define ICE_IPV6_TC_OFFSET\t\t14\n+#define ICE_IPV6_HLIM_OFFSET\t\t21\n+#define ICE_IPV6_PROTO_OFFSET\t\t20\n \n #define ICE_FDIR_MAX_FLTRS\t\t16384\n \n@@ -140,6 +143,7 @@ struct ice_fdir_v6 {\n \t__be32 sec_parm_idx; /* security parameter index */\n \tu8 tc;\n \tu8 proto;\n+\tu8 hlim;\n };\n \n struct ice_fdir_extra {\n",
    "prefixes": [
        "v3",
        "04/22"
    ]
}