get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2498,
    "url": "https://patches.dpdk.org/api/patches/2498/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/54C23265.8090403@allegro-packets.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<54C23265.8090403@allegro-packets.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/54C23265.8090403@allegro-packets.com",
    "date": "2015-01-23T11:37:09",
    "name": "[dpdk-dev] Segmentation fault in ixgbe_rxtx_vec.c:444 with 1.8.0",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": true,
    "hash": "574db6051e95039f119ba2ecfb02241eb5397611",
    "submitter": {
        "id": 163,
        "url": "https://patches.dpdk.org/api/people/163/?format=api",
        "name": "Martin Weiser",
        "email": "martin.weiser@allegro-packets.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/54C23265.8090403@allegro-packets.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/2498/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/2498/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 7789B5B01;\n\tFri, 23 Jan 2015 12:37:14 +0100 (CET)",
            "from smtprelay03.ispgateway.de (smtprelay03.ispgateway.de\n\t[80.67.29.28]) by dpdk.org (Postfix) with ESMTP id 572F65AFF\n\tfor <dev@dpdk.org>; Fri, 23 Jan 2015 12:37:12 +0100 (CET)",
            "from [87.172.153.118] (helo=nb-mweiser.local)\n\tby smtprelay03.ispgateway.de with esmtpsa\n\t(TLSv1.2:DHE-RSA-AES128-SHA:128)\n\t(Exim 4.84) (envelope-from <martin.weiser@allegro-packets.com>)\n\tid 1YEcY3-0007al-6q; Fri, 23 Jan 2015 12:37:11 +0100"
        ],
        "Message-ID": "<54C23265.8090403@allegro-packets.com>",
        "Date": "Fri, 23 Jan 2015 12:37:09 +0100",
        "From": "Martin Weiser <martin.weiser@allegro-packets.com>",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10;\n\trv:31.0) Gecko/20100101 Thunderbird/31.4.0",
        "MIME-Version": "1.0",
        "To": "Bruce Richardson <bruce.richardson@intel.com>",
        "References": "<54BCDBF1.8020909@allegro-packets.com>\n\t<54BE3047.9060909@allegro-packets.com>\n\t<20150121134921.GA2592@bricha3-MOBL3>",
        "In-Reply-To": "<20150121134921.GA2592@bricha3-MOBL3>",
        "X-Df-Sender": "bWFydGluLndlaXNlckBhbGxlZ3JvLXBhY2tldHMuY29t",
        "Content-Type": "text/plain; charset=windows-1252",
        "Content-Transfer-Encoding": "quoted-printable",
        "X-Content-Filtered-By": "Mailman/MimeDel 2.1.15",
        "Cc": "dev@dpdk.org",
        "Subject": "Re: [dpdk-dev] Segmentation fault in ixgbe_rxtx_vec.c:444 with 1.8.0",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Hi Bruce,\n\nI now had the chance to reproduce the issue we are seeing with a DPDK\nexample app.\nI started out with a vanilla DPDK 1.8.0 and only made the following changes:\n\n                        end->next = rx_bufs[buf_idx];\n@@ -448,7 +448,6 @@ reassemble_packets(struct igb_rx_queue *rxq, struct\nrte_mbuf **rx_bufs,\n                        rx_bufs[buf_idx]->data_len += rxq->crc_len;\n                        rx_bufs[buf_idx]->pkt_len += rxq->crc_len;\n                }\n-               buf_idx++;\n        }\n \n        /* save the partial packet for next time */\n\n\nThis includes your previously posted fix and makes a small modification\nto the l2fwd example app to enable jumbo frames of up to 9000 bytes.\nThe system is equipped with a two port Intel 82599 card and both ports\nare hooked up to a packet generator. The packet generator produces\nsimple Ethernet/IPv4/UDP packets.\nI started the l2fwd app with the following command line:\n\n$ ./build/l2fwd -c f -n 4 -- -q 8 -p 3\n\nBoth build variants that I have tested (CONFIG_RTE_IXGBE_INC_VECTOR=y\nand CONFIG_RTE_IXGBE_INC_VECTOR=n) now give me the same result:\nAs long as the packet size is <= 2048 bytes the application behaves\nnormally and all packets are forwarded as expected.\nAs soon as the packet size exceeds 2048 bytes the application will only\nforward some packets and then stop forwarding altogether. Even small\npackets will not be forwarded anymore.\n\nIf you want me to try out anything else just let me know.\n\n\nBest regards,\nMartin\n\n\n\n\nOn 21.01.15 14:49, Bruce Richardson wrote:\n> On Tue, Jan 20, 2015 at 11:39:03AM +0100, Martin Weiser wrote:\n>> Hi again,\n>>\n>> I did some further testing and it seems like this issue is linked to\n>> jumbo frames. I think a similar issue has already been reported by\n>> Prashant Upadhyaya with the subject 'Packet Rx issue with DPDK1.8'.\n>> In our application we use the following rxmode port configuration:\n>>\n>> .mq_mode    = ETH_MQ_RX_RSS,\n>> .split_hdr_size = 0,\n>> .header_split   = 0,\n>> .hw_ip_checksum = 1,\n>> .hw_vlan_filter = 0,\n>> .jumbo_frame    = 1,\n>> .hw_strip_crc   = 1,\n>> .max_rx_pkt_len = 9000,\n>>\n>> and the mbuf size is calculated like the following:\n>>\n>> (2048 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)\n>>\n>> This works fine with DPDK 1.7 and jumbo frames are split into buffer\n>> chains and can be forwarded on another port without a problem.\n>> With DPDK 1.8 and the default configuration (CONFIG_RTE_IXGBE_INC_VECTOR\n>> enabled) the application sometimes crashes like described in my first\n>> mail and sometimes packet receiving stops with subsequently arriving\n>> packets counted as rx errors. When CONFIG_RTE_IXGBE_INC_VECTOR is\n>> disabled the packet processing also comes to a halt as soon as jumbo\n>> frames arrive with a the slightly different effect that now\n>> rte_eth_tx_burst refuses to send any previously received packets.\n>>\n>> Is there anything special to consider regarding jumbo frames when moving\n>> from DPDK 1.7 to 1.8 that we might have missed?\n>>\n>> Martin\n>>\n>>\n>>\n>> On 19.01.15 11:26, Martin Weiser wrote:\n>>> Hi everybody,\n>>>\n>>> we quite recently updated one of our applications to DPDK 1.8.0 and are\n>>> now seeing a segmentation fault in ixgbe_rxtx_vec.c:444 after a few minutes.\n>>> I just did some quick debugging and I only have a very limited\n>>> understanding of the code in question but it seems that the 'continue'\n>>> in line 445 without increasing 'buf_idx' might cause the problem. In one\n>>> debugging session when the crash occurred the value of 'buf_idx' was 2\n>>> and the value of 'pkt_idx' was 8965.\n>>> Any help with this issue would be greatly appreciated. If you need any\n>>> further information just let me know.\n>>>\n>>> Martin\n>>>\n>>>\n> Hi Martin, Prashant,\n>\n> I've managed to reproduce the issue here and had a look at it. Could you\n> both perhaps try the proposed change below and see if it fixes the problem for\n> you and gives you a working system? If so, I'll submit this as a patch fix \n> officially - or go back to the drawing board, if not. :-)\n>\n> diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\n> index b54cb19..dfaccee 100644\n> --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\n> +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\n> @@ -402,10 +402,10 @@ reassemble_packets(struct igb_rx_queue *rxq, struct rte_mbuf **rx_bufs,\n>         struct rte_mbuf *pkts[RTE_IXGBE_VPMD_RX_BURST]; /*finished pkts*/\n>         struct rte_mbuf *start = rxq->pkt_first_seg;\n>         struct rte_mbuf *end =  rxq->pkt_last_seg;\n> -       unsigned pkt_idx = 0, buf_idx = 0;\n> +       unsigned pkt_idx, buf_idx;\n>\n>\n> -       while (buf_idx < nb_bufs) {\n> +       for (buf_idx = 0, pkt_idx = 0; buf_idx < nb_bufs; buf_idx++) {\n>                 if (end != NULL) {\n>                         /* processing a split packet */\n>                         end->next = rx_bufs[buf_idx];\n> @@ -448,7 +448,6 @@ reassemble_packets(struct igb_rx_queue *rxq, struct rte_mbuf **rx_bufs,\n>                         rx_bufs[buf_idx]->data_len += rxq->crc_len;\n>                         rx_bufs[buf_idx]->pkt_len += rxq->crc_len;\n>                 }\n> -               buf_idx++;\n>         }\n>\n>         /* save the partial packet for next time */\n>\n>\n> Regards,\n> /Bruce\n>",
    "diff": "diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c\nindex e684234..48e6b7c 100644\n--- a/examples/l2fwd/main.c\n+++ b/examples/l2fwd/main.c\n@@ -118,8 +118,9 @@ static const struct rte_eth_conf port_conf = {\n                .header_split   = 0, /**< Header Split disabled */\n                .hw_ip_checksum = 0, /**< IP checksum offload disabled */\n                .hw_vlan_filter = 0, /**< VLAN filtering disabled */\n-               .jumbo_frame    = 0, /**< Jumbo Frame Support disabled */\n+               .jumbo_frame    = 1, /**< Jumbo Frame Support disabled */\n                .hw_strip_crc   = 0, /**< CRC stripped by hardware */\n+               .max_rx_pkt_len = 9000,\n        },\n        .txmode = {\n                .mq_mode = ETH_MQ_TX_NONE,\ndiff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\nb/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\nindex b54cb19..dfaccee 100644\n--- a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\n+++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\n@@ -402,10 +402,10 @@ reassemble_packets(struct igb_rx_queue *rxq,\nstruct rte_mbuf **rx_bufs,\n        struct rte_mbuf *pkts[RTE_IXGBE_VPMD_RX_BURST]; /*finished pkts*/\n        struct rte_mbuf *start = rxq->pkt_first_seg;\n        struct rte_mbuf *end =  rxq->pkt_last_seg;\n-       unsigned pkt_idx = 0, buf_idx = 0;\n+       unsigned pkt_idx, buf_idx;\n \n \n-       while (buf_idx < nb_bufs) {\n+       for (buf_idx = 0, pkt_idx = 0; buf_idx < nb_bufs; buf_idx++) {\n                if (end != NULL) {\n                        /* processing a split packet */\n",
    "prefixes": [
        "dpdk-dev"
    ]
}