Show a cover letter.

GET /api/covers/44462/?format=api
Content-Type: application/json
Vary: Accept

    "id": 44462,
    "url": "",
    "web_url": "",
    "project": {
        "id": 1,
        "url": "",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "",
        "list_email": "",
        "web_url": "",
        "scm_url": "git://",
        "webscm_url": ""
    "msgid": "<>",
    "date": "2018-09-10T05:45:44",
    "name": "[0/3] segment sanity checks",
    "submitter": {
        "id": 3,
        "url": "",
        "name": "David Marchand",
        "email": ""
    "mbox": "",
    "series": [
            "id": 1241,
            "url": "",
            "web_url": "",
            "date": "2018-09-10T05:45:44",
            "name": "segment sanity checks",
            "version": 1,
            "mbox": ""
    "comments": "",
    "headers": {
        "X-Mailer": "git-send-email 2.17.1",
        "List-Id": "DPDK patches and discussions <>",
        "From": "David Marchand <>",
        "List-Help": "<>",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\; s=20150623;\n\th=from:to:cc:subject:date:message-id;\n\tbh=QVudE9bsYQOHVkSTvJ4mCYyM6bUHd4/py26IsTlr/jA=;\n\tb=deVx34gZTt1ruHEPG+771CceLTuQbranJ8tJPz3sbkK0KG7T5I1Bu8c6WpXWtPPi6y\n\tr02/1KpQNIUdLLn78zZUBJRJBzn0A45bc0410qu+cWki//Smjy0K7mcAWl/mg6sNp+wA\n\tVa9RrVX2DGd0Dw4xqs2EXCKQMpw49UA/sJIg2+AZaO+nVreYf/BXV9+vQv11xHJwPBEr\n\tKOlv+s7MHNQbYv/CjNPHPW1oq9rKMFuIZck5AeVDY9gn0+Rl2EJaSSPTaeHdeVgL3wdP\n\tL/ISGpwBlD8Z6Pq5fK5PptEnysApmclJVZcb01/7Man16G7Ti/2EkBgPc22AVuRCglte\n\tFHSQ==",
        "X-Mailman-Version": "2.1.15",
        "Delivered-To": "",
        "X-Gm-Message-State": "APzg51AbBdrGzuABgLQJAjv43sgOefpQ3IJACTdE9jF8BaCWHXUOxAvn\n\tSEpN8YTHCsXmeQaHyNgI2exngOlgU9o=",
        "List-Archive": "<>",
        "List-Subscribe": "<>,\n\t<>",
        "Cc": ",,,\n\",
        "To": "",
        "Errors-To": "",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=QVudE9bsYQOHVkSTvJ4mCYyM6bUHd4/py26IsTlr/jA=;\n\tb=TvamcS051hUl6OSdvEno5CAxpuMToerFkGhv7C089LGOVUIszjxOZHRtu7zEYqr6G4\n\tBDknHO06ng6MkYNKwELDrMRioXh+QSeOhf3Yo9ZlVVtWcWGlxg4BKeVbWZAc8m7wzCmn\n\tg86uMywGcfnfO3yjDYftEas0pMbETK61Fnqc9R12OVe/4Z3DwboVdgCg6o/cysDwpE/d\n\thC6Jt2fX66FI1LOYYm/UQSBJteu255ZuYgatYlZy8eeGHzqzHD5uit2io6BvziSFX5KH\n\txPT0BJHyzToSzq3SyHaQIjp/H+gmr8uBvX0f3biZ28k16TFq/N1GA2fxXYBS5RQm4WOW\n\tbAUg==",
        "Return-Path": "<>",
        "X-BeenThere": "",
        "List-Post": "<>",
        "Received": [
            "from [] (localhost [])\n\tby (Postfix) with ESMTP id 88CAD1559;\n\tMon, 10 Sep 2018 07:45:54 +0200 (CEST)",
            "from (\n\t[]) by (Postfix) with ESMTP id 9131610BD\n\tfor <>; Mon, 10 Sep 2018 07:45:53 +0200 (CEST)",
            "by with SMTP id s12-v6so20149435wmc.0\n\tfor <>; Sun, 09 Sep 2018 22:45:53 -0700 (PDT)",
            "from ([]) by with ESMTPSA id\n\tt4-v6sm14667473wrb.45.2018.\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tSun, 09 Sep 2018 22:45:52 -0700 (PDT)"
        "Date": "Mon, 10 Sep 2018 07:45:44 +0200",
        "X-Received": "by 2002:a1c:230f:: with SMTP id\n\tj15-v6mr11681201wmj.124.1536558352847; \n\tSun, 09 Sep 2018 22:45:52 -0700 (PDT)",
        "Sender": "\"dev\" <>",
        "Subject": "[dpdk-dev] [PATCH 0/3] segment sanity checks",
        "Message-Id": "<>",
        "Precedence": "list",
        "List-Unsubscribe": "<>,\n\t<>",
        "X-Original-To": "",
        "X-Google-Smtp-Source": "ANB0Vdawf1HcEB7wUT2phdRltRsgrO/ddclwQk9TEUX1SeHReFBUe1nyZ2meZsy9kIJMwPNanPJRCA=="
    "content": "Here is a little series which helped me identify a multi segment issue.\nHope it can help others.\n\nThe difference since the RFC patches I sent some time ago is that, rather\nthan force the user to build the dpdk with CONFIG_RTE_LIBRTE_MBUF_DEBUG\nenabled, it uses rx/tx callbacks to apply checks on the mbufs.\n\nThis is not perfect, since when an invalid mbuf is detected, we try to free\nit and a crash is possible at this time (depends on what went wrong).\n\nOn the rx side, this is better than let this packet go through the\napplication and we end up with harder to identify issues.\nOn the tx side, this is more about validating that the application did not\nbreak the mbuf before passing it to the driver.\n\nExample:\n./testpmd -l 2,14 --socket-mem 2048,0 -w 0000:03:00.0 -w 0000:03:00.1 -- -i\n[...]\ntestpmd> port stop all\ntestpmd> port config all sanity_check rx+tx\ntestpmd> port config all scatter on\ntestpmd> port start all\nConfiguring Port 0 (socket 0)\nPort 0: F4:E9:D4:ED:B4:06\nConfiguring Port 1 (socket 0)\nPort 1: F4:E9:D4:ED:B4:07\nChecking link statuses...\nDone\ntestpmd> port config mtu 0 9000\ntestpmd> port config mtu 1 9000\ntestpmd> start\ntestpmd: invalid rx mbuf on port 1 queue 0: data length too big in mbuf segment\n\ntestpmd> set verbose 1\nChange verbose level from 0 to 1\ndump mbuf at 0x7f48db9fa740, iova=2291fa7c0, buf_len=2176\n  pkt_len=8014, ol_flags=180, nb_segs=4, in_port=1\n  segment at 0x7f48db9fa740, data=0x7f48db9fa840, data_len=2112\n  segment at 0x7f48db9fb080, data=0x7f48db9fb180, data_len=2112\n  segment at 0x7f48db9fb9c0, data=0x7f48db9fbac0, data_len=2112\n  segment at 0x7f48db9fc300, data=0x7f48db9fc400, data_len=1678\ntestpmd: invalid rx mbuf on port 1 queue 0: data length too big in mbuf segment"