get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 58928,
    "url": "http://patches.dpdk.org/api/patches/58928/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190907031629.34666-4-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-4-qi.z.zhang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190907031629.34666-4-qi.z.zhang@intel.com",
    "date": "2019-09-07T03:16:10",
    "name": "[v3,03/22] net/ice/base: add non-word aligned ip field support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "bf4c9a5354aa742ff76fd9514053fa5ef5986623",
    "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-4-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/58928/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/58928/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 DACB51F482;\n\tSat,  7 Sep 2019 05:14:04 +0200 (CEST)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby dpdk.org (Postfix) with ESMTP id AD7961F1B9\n\tfor <dev@dpdk.org>; Sat,  7 Sep 2019 05:13:54 +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:54 -0700",
            "from dpdk51.sh.intel.com ([10.67.110.245])\n\tby FMSMGA003.fm.intel.com with ESMTP; 06 Sep 2019 20:13:52 -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=\"191006823\"",
        "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:10 +0800",
        "Message-Id": "<20190907031629.34666-4-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 03/22] net/ice/base: add non-word aligned ip\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 ipv4 with ttl, tos and proto.\nAll these fields are one byte within one word. In order to match\nbytes within the IPv4 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 | 30 +++++++++++++++++++++++-------\n drivers/net/ice/base/ice_fdir.h |  4 ++++\n 2 files changed, 27 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/drivers/net/ice/base/ice_fdir.c b/drivers/net/ice/base/ice_fdir.c\nindex b92603e10..db5bbc6ad 100644\n--- a/drivers/net/ice/base/ice_fdir.c\n+++ b/drivers/net/ice/base/ice_fdir.c\n@@ -485,6 +485,17 @@ static void ice_pkt_insert_ipv6_addr(u8 *pkt, int offset, __be32 *addr)\n }\n \n /**\n+ * ice_pkt_insert_u8 - insert a u8 value into a memory buffer.\n+ * @pkt: packet buffer\n+ * @offset: offset into buffer\n+ * @data: 8 bit value to convert and insert into pkt at offset\n+ */\n+static void ice_pkt_insert_u8(u8 *pkt, int offset, u8 data)\n+{\n+\tice_memcpy(pkt + offset, &data, sizeof(data), 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@@ -534,11 +545,9 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\tcase ICE_IP_PROTO_SCTP:\n \t\t\tflow = ICE_FLTR_PTYPE_NONF_IPV4_SCTP;\n \t\t\tbreak;\n-\t\tcase ICE_IP_PROTO_IP:\n+\t\tdefault:\n \t\t\tflow = ICE_FLTR_PTYPE_NONF_IPV4_OTHER;\n \t\t\tbreak;\n-\t\tdefault:\n-\t\t\treturn ICE_ERR_PARAM;\n \t\t}\n \t} else if (input->flow_type == ICE_FLTR_PTYPE_NONF_IPV6_OTHER) {\n \t\tswitch (input->ip.v6.proto) {\n@@ -551,11 +560,9 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\tcase ICE_IP_PROTO_SCTP:\n \t\t\tflow = ICE_FLTR_PTYPE_NONF_IPV6_SCTP;\n \t\t\tbreak;\n-\t\tcase ICE_IP_PROTO_IP:\n+\t\tdefault:\n \t\t\tflow = ICE_FLTR_PTYPE_NONF_IPV6_OTHER;\n \t\t\tbreak;\n-\t\tdefault:\n-\t\t\treturn ICE_ERR_PARAM;\n \t\t}\n \t} else {\n \t\tflow = input->flow_type;\n@@ -592,6 +599,8 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\t\t\t   input->ip.v4.src_ip);\n \t\tice_pkt_insert_u16(loc, ICE_IPV4_TCP_SRC_PORT_OFFSET,\n \t\t\t\t   input->ip.v4.src_port);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);\n \t\tif (frag)\n \t\t\tloc[20] = ICE_FDIR_IPV4_PKT_FLAG_DF;\n \t\tbreak;\n@@ -604,6 +613,8 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\t\t\t   input->ip.v4.src_ip);\n \t\tice_pkt_insert_u16(loc, ICE_IPV4_UDP_SRC_PORT_OFFSET,\n \t\t\t\t   input->ip.v4.src_port);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);\n \t\tbreak;\n \tcase ICE_FLTR_PTYPE_NONF_IPV4_SCTP:\n \t\tice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,\n@@ -614,13 +625,18 @@ ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,\n \t\t\t\t   input->ip.v4.src_ip);\n \t\tice_pkt_insert_u16(loc, ICE_IPV4_SCTP_SRC_PORT_OFFSET,\n \t\t\t\t   input->ip.v4.src_port);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);\n \t\tbreak;\n \tcase ICE_FLTR_PTYPE_NONF_IPV4_OTHER:\n \t\tice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,\n \t\t\t\t   input->ip.v4.dst_ip);\n \t\tice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,\n \t\t\t\t   input->ip.v4.src_ip);\n-\t\tice_pkt_insert_u16(loc, ICE_IPV4_PROTO_OFFSET, 0);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);\n+\t\tice_pkt_insert_u8(loc, ICE_IPV4_PROTO_OFFSET,\n+\t\t\t\t  input->ip.v4.proto);\n \t\tbreak;\n \tcase ICE_FLTR_PTYPE_NONF_IPV6_TCP:\n \t\tice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,\ndiff --git a/drivers/net/ice/base/ice_fdir.h b/drivers/net/ice/base/ice_fdir.h\nindex 9e7e22033..e817057c8 100644\n--- a/drivers/net/ice/base/ice_fdir.h\n+++ b/drivers/net/ice/base/ice_fdir.h\n@@ -82,6 +82,9 @@ enum ice_status ice_clear_pf_fd_table(struct ice_hw *hw);\n #define ICE_IPV6_SCTP_SRC_PORT_OFFSET\t54\n #define ICE_IPV6_SCTP_DST_PORT_OFFSET\t56\n \n+#define ICE_IPV4_TOS_OFFSET\t\t15\n+#define ICE_IPV4_TTL_OFFSET\t\t22\n+\n #define ICE_FDIR_MAX_FLTRS\t\t16384\n \n /* IP v4 has 2 flag bits that enable fragment processing: DF and MF. DF\n@@ -123,6 +126,7 @@ struct ice_fdir_v4 {\n \tu8 tos;\n \tu8 ip_ver;\n \tu8 proto;\n+\tu8 ttl;\n };\n \n #define ICE_IPV6_ADDR_LEN_AS_U32\t\t4\n",
    "prefixes": [
        "v3",
        "03/22"
    ]
}