Show a cover letter.

GET /api/covers/65545/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 65545,
    "url": "http://patches.dpdk.org/api/covers/65545/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/1580824721-21527-1-git-send-email-lbartosik@marvell.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": "<1580824721-21527-1-git-send-email-lbartosik@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1580824721-21527-1-git-send-email-lbartosik@marvell.com",
    "date": "2020-02-04T13:58:28",
    "name": "[v3,00/13] add eventmode to ipsec-secgw",
    "submitter": {
        "id": 1305,
        "url": "http://patches.dpdk.org/api/people/1305/?format=api",
        "name": "Lukas Bartosik [C]",
        "email": "lbartosik@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/1580824721-21527-1-git-send-email-lbartosik@marvell.com/mbox/",
    "series": [
        {
            "id": 8416,
            "url": "http://patches.dpdk.org/api/series/8416/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8416",
            "date": "2020-02-04T13:58:28",
            "name": "add eventmode to ipsec-secgw",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/8416/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/65545/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 69ACBA0534;\n\tTue,  4 Feb 2020 14:58:51 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A51901C121;\n\tTue,  4 Feb 2020 14:58:50 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 463CC1BF99\n for <dev@dpdk.org>; Tue,  4 Feb 2020 14:58:49 +0100 (CET)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id\n 014DtgU6012562; Tue, 4 Feb 2020 05:58:48 -0800",
            "from sc-exch04.marvell.com ([199.233.58.184])\n by mx0b-0016f401.pphosted.com with ESMTP id 2xw9qum07p-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Tue, 04 Feb 2020 05:58:48 -0800",
            "from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH04.marvell.com\n (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 4 Feb\n 2020 05:58:46 -0800",
            "from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com\n (10.93.176.81) with Microsoft SMTP Server id 15.0.1497.2 via Frontend\n Transport; Tue, 4 Feb 2020 05:58:45 -0800",
            "from luke.marvell.com (unknown [10.95.130.32])\n by maili.marvell.com (Postfix) with ESMTP id 586F33F70E7;\n Tue,  4 Feb 2020 05:58:42 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-type; s=pfpt0818; bh=3L85oqJermYi07Jnob017oW8Xt/mIE/pRePukwYkpME=;\n b=Glp5qwQ6Vb9U/eRh6UOv7hR2k9QNFjfrum8oIuXZklb2hOvWbrSTWLMHJJ0wnZGfejm1\n 73dFANLn9zVZHhvI+ir0+IRwtpuGfpBsmODWflyPBeZHQ+X1XusmxMerR9NZ+NtXK2T1\n t16DTXCUgaXMQrVLrUi5RGKC1D5XhHDa1jgewSel7z6SmVR6lzvJSt2yKGmWOBrd+hrE\n QL/roBe3GtVOqj3gEUOHwUT3WhTlDQDfSuBjDJha39Zfi1Nc6uPZKefsZ/awPGBSvQrr\n S6nw0Ikf0v2OHZ1YwH6kb+z5zWRm+7jxPB11/dgIGPcOJixStNm3jfsZ5AsqcZ+okYxg cw==",
        "From": "Lukasz Bartosik <lbartosik@marvell.com>",
        "To": "Akhil Goyal <akhil.goyal@nxp.com>, Radu Nicolau <radu.nicolau@intel.com>,\n Thomas Monjalon <thomas@monjalon.net>",
        "CC": "Jerin Jacob <jerinj@marvell.com>, Narayana Prasad <pathreya@marvell.com>,\n Ankur Dwivedi <adwivedi@marvell.com>, Anoob Joseph <anoobj@marvell.com>,\n Archana Muniganti <marchana@marvell.com>, Tejasree Kondoj\n <ktejasree@marvell.com>, Vamsi Attunuru <vattunuru@marvell.com>,\n \"Konstantin Ananyev\" <konstantin.ananyev@intel.com>, <dev@dpdk.org>",
        "Date": "Tue, 4 Feb 2020 14:58:28 +0100",
        "Message-ID": "<1580824721-21527-1-git-send-email-lbartosik@marvell.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1579527918-360-1-git-send-email-anoobj@marvell.com>",
        "References": "<1579527918-360-1-git-send-email-anoobj@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572\n definitions=2020-02-04_04:2020-02-04,\n 2020-02-04 signatures=0",
        "Subject": "[dpdk-dev] [PATCH v3 00/13] add eventmode to ipsec-secgw",
        "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 <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 <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This series introduces event-mode additions to ipsec-secgw.\n\nWith this series, ipsec-secgw would be able to run in eventmode. The\nworker thread (executing loop) would be receiving events and would be\nsubmitting it back to the eventdev after the processing. This way,\nmulticore scaling and h/w assisted scheduling is achieved by making use\nof the eventdev capabilities.\n\nSince the underlying event device would be having varying capabilities,\nthe worker thread could be drafted differently to maximize performance.\nThis series introduces usage of multiple worker threads, among which the\none to be used will be determined by the operating conditions and the\nunderlying device capabilities.\n\nFor example, if an event device - eth device pair has Tx internal port,\nthen application can do tx_adapter_enqueue() instead of regular\nevent_enqueue(). So a thread making an assumption that the device pair\nhas internal port will not be the right solution for another pair. The\ninfrastructure added with these patches aims to help application to have\nmultiple worker threads, there by extracting maximum performance from\nevery device without affecting existing paths/use cases.\n\nThe eventmode configuration is predefined. All packets reaching one eth\nport will hit one event queue. All event queues will be mapped to all\nevent ports. So all cores will be able to receive traffic from all ports.\nWhen schedule_type is set as RTE_SCHED_TYPE_ORDERED/ATOMIC, event device\nwill ensure the ordering. Ordering would be lost when tried in PARALLEL.\n\nFollowing command line options are introduced,\n\n--transfer-mode: to choose between poll mode & event mode\n--event-schedule-type: to specify the scheduling type\n                 (RTE_SCHED_TYPE_ORDERED/\n                  RTE_SCHED_TYPE_ATOMIC/\n                  RTE_SCHED_TYPE_PARALLEL)\n\nAdditionally the event mode introduces two modes of processing packets:\n\nDriver-mode: This mode will have bare minimum changes in the application\n             to support ipsec. There woudn't be any lookup etc done in\n             the application. And for inline-protocol use case, the\n             thread would resemble l2fwd as the ipsec processing would be\n             done entirely in the h/w. This mode can be used to benchmark\n             the raw performance of the h/w. All the application side\n             steps (like lookup) can be redone based on the requirement\n             of the end user. Hence the need for a mode which would\n             report the raw performance.\n\nApp-mode: This mode will have all the features currently implemented with\n          ipsec-secgw (non librte_ipsec mode). All the lookups etc\n          would follow the existing methods and would report numbers\n          that can be compared against regular ipsec-secgw benchmark\n          numbers.\n\nThe driver mode is selected with existing --single-sa option\n(used also by poll mode). When --single-sa option is used\nin conjution with event mode then index passed to --single-sa\nis ignored.\n\nExample commands to execute ipsec-secgw in various modes on OCTEON TX2 platform,\n\n#Inbound and outbound app mode\nipsec-secgw -w 0002:02:00.0,ipsec_in_max_spi=128 -w 0002:03:00.0,ipsec_in_max_spi=128 -w 0002:0e:00.0 -w 0002:10:00.1 --log-level=8 -c 0x1 -- -P -p 0x3 -u 0x1 --config \"(1,0,0),(0,0,0)\" -f aes-gcm.cfg --transfer-mode event --event-schedule-type parallel\n\n#Inbound and outbound driver mode\nipsec-secgw -w 0002:02:00.0,ipsec_in_max_spi=128 -w 0002:03:00.0,ipsec_in_max_spi=128 -w 0002:0e:00.0 -w 0002:10:00.1 --log-level=8 -c 0x1 -- -P -p 0x3 -u 0x1 --config \"(1,0,0),(0,0,0)\" -f aes-gcm.cfg --transfer-mode event --event-schedule-type parallel --single-sa 0\n\nThis series adds non burst tx internal port workers only. It provides infrastructure\nfor non internal port workers, however does not define any. Also, only inline ipsec\nprotocol mode is supported by the worker threads added.\n\nFollowing are planned features,\n1. Add burst mode workers.\n2. Add non internal port workers.\n3. Verify support for Rx core (the support is added but lack of h/w to verify).\n4. Add lookaside protocol support.\n\nFollowing are features that Marvell won't be attempting.\n1. Inline crypto support.\n2. Lookaside crypto support.\n\nFor the features that Marvell won't be attempting, new workers can be\nintroduced by the respective stake holders.\n\nThis series is tested on Marvell OCTEON TX2.\n\nDeferred to v4:\n* Update ipsec-secgw documentation to describe the new options as well as\n  event mode support.\n\nChanges in v3:\n* Move eh_conf_init() and eh_conf_uninit() functions to event_helper.c\n  including minor rework.\n* Rename --schedule-type option to --event-schedule-type.\n* Replace macro UNPROTECTED_PORT with static inline function\n  is_unprotected_port().\n* Move definitions of global variables used by multiple modules\n  to .c files and add externs in .h headers.\n* Add eh_check_conf() which validates ipsec-secgw configuration\n  for event mode.\n* Add dynamic calculation of number of buffers in a pool based \n  on number of cores, ports and crypto queues.\n* Fix segmentation fault in event mode driver worker which happens\n  when there are no inline outbound sessions configured.\n* Remove change related to updating number of crypto queues\n  in cryptodevs_init(). The update of crypto queues will be handled\n  in a separate patch.\n* Fix compilation error on 32-bit platforms by using userdata instead\n  of udata64 from rte_mbuf.\n\nChanges in v2:\n* Remove --process-dir option. Instead use existing unprotected port mask\n  option (-u) to decide wheter port handles inbound or outbound traffic.\n* Remove --process-mode option. Instead use existing --single-sa option\n  to select between app and driver modes.\n* Add handling of PKT_RX_SEC_OFFLOAD_FAIL result in app worker thread.\n* Fix passing of req_rx_offload flags to create_default_ipsec_flow().\n* Move destruction of flows to a location where eth ports are stopped\n  and closed.\n* Print error and exit when event mode --schedule-type option is used\n  in poll mode.\n* Reduce number of goto statements replacing them with loop constructs.\n* Remove sec_session_fixed table and replace it with locally build\n  table in driver worker thread. Table is indexed by port identifier\n  and holds first inline session pointer found for a given port.\n* Print error and exit when sessions other than inline are configured\n  in event mode.\n* When number of event queues is less than number of eth ports then\n  map all eth ports to one event queue.\n* Cleanup and minor improvements in code as suggested by Konstantin\n\nThis series depends on the PMD changes submitted in the following set,\nhttp://patches.dpdk.org/project/dpdk/list/?series=8411\n\nAnkur Dwivedi (1):\n  examples/ipsec-secgw: add default rte flow for inline Rx\n\nAnoob Joseph (5):\n  examples/ipsec-secgw: add framework for eventmode helper\n  examples/ipsec-secgw: add eventdev port-lcore link\n  examples/ipsec-secgw: add Rx adapter support\n  examples/ipsec-secgw: add Tx adapter support\n  examples/ipsec-secgw: add routines to display config\n\nLukasz Bartosik (7):\n  examples/ipsec-secgw: add routines to launch workers\n  examples/ipsec-secgw: add support for internal ports\n  examples/ipsec-secgw: add event helper config init/uninit\n  examples/ipsec-secgw: add eventmode to ipsec-secgw\n  examples/ipsec-secgw: add driver mode worker\n  examples/ipsec-secgw: add app mode worker\n  examples/ipsec-secgw: make number of buffers dynamic\n\n examples/ipsec-secgw/Makefile       |    2 +\n examples/ipsec-secgw/event_helper.c | 1818 +++++++++++++++++++++++++++++++++++\n examples/ipsec-secgw/event_helper.h |  335 +++++++\n examples/ipsec-secgw/ipsec-secgw.c  |  437 +++++++--\n examples/ipsec-secgw/ipsec-secgw.h  |   86 ++\n examples/ipsec-secgw/ipsec.c        |    7 +\n examples/ipsec-secgw/ipsec.h        |   40 +-\n examples/ipsec-secgw/ipsec_worker.c |  659 +++++++++++++\n examples/ipsec-secgw/ipsec_worker.h |   39 +\n examples/ipsec-secgw/meson.build    |    4 +-\n examples/ipsec-secgw/sa.c           |   19 +-\n 11 files changed, 3349 insertions(+), 97 deletions(-)\n create mode 100644 examples/ipsec-secgw/event_helper.c\n create mode 100644 examples/ipsec-secgw/event_helper.h\n create mode 100644 examples/ipsec-secgw/ipsec-secgw.h\n create mode 100644 examples/ipsec-secgw/ipsec_worker.c\n create mode 100644 examples/ipsec-secgw/ipsec_worker.h"
}