Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2424/?format=api
https://patches.dpdk.org/api/patches/2424/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/20150121134921.GA2592@bricha3-MOBL3/", "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": "<20150121134921.GA2592@bricha3-MOBL3>", "list_archive_url": "https://inbox.dpdk.org/dev/20150121134921.GA2592@bricha3-MOBL3", "date": "2015-01-21T13:49:21", "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": "525962c950182f4a6dffdf6cf455dfe0d3f47024", "submitter": { "id": 20, "url": "https://patches.dpdk.org/api/people/20/?format=api", "name": "Bruce Richardson", "email": "bruce.richardson@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dpdk/patch/20150121134921.GA2592@bricha3-MOBL3/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/2424/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/2424/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 BF76A5A31;\n\tWed, 21 Jan 2015 14:51:46 +0100 (CET)", "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 0A8C85A15\n\tfor <dev@dpdk.org>; Wed, 21 Jan 2015 14:51:42 +0100 (CET)", "from fmsmga002.fm.intel.com ([10.253.24.26])\n\tby orsmga101.jf.intel.com with ESMTP; 21 Jan 2015 05:49:24 -0800", "from bricha3-mobl3.ger.corp.intel.com ([10.243.20.28])\n\tby fmsmga002.fm.intel.com with SMTP; 21 Jan 2015 05:49:22 -0800", "by (sSMTP sendmail emulation); Wed, 21 Jan 2015 13:49:21 +0025" ], "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.09,442,1418112000\"; d=\"scan'208\";a=\"665222679\"", "Date": "Wed, 21 Jan 2015 13:49:21 +0000", "From": "Bruce Richardson <bruce.richardson@intel.com>", "To": "Martin Weiser <martin.weiser@allegro-packets.com>", "Message-ID": "<20150121134921.GA2592@bricha3-MOBL3>", "References": "<54BCDBF1.8020909@allegro-packets.com>\n\t<54BE3047.9060909@allegro-packets.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=us-ascii", "Content-Disposition": "inline", "In-Reply-To": "<54BE3047.9060909@allegro-packets.com>", "Organization": "Intel Shannon Ltd.", "User-Agent": "Mutt/1.5.23 (2014-03-12)", "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": "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> \nHi Martin, Prashant,\n\nI've managed to reproduce the issue here and had a look at it. Could you\nboth perhaps try the proposed change below and see if it fixes the problem for\nyou and gives you a working system? If so, I'll submit this as a patch fix \nofficially - or go back to the drawing board, if not. :-)\n\n\n\nRegards,\n/Bruce", "diff": "diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c b/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, 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", "prefixes": [ "dpdk-dev" ] }{ "id": 2424, "url": "