get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 49867,
    "url": "http://patches.dpdk.org/api/patches/49867/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1547613775-58027-3-git-send-email-wei.zhao1@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": "<1547613775-58027-3-git-send-email-wei.zhao1@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1547613775-58027-3-git-send-email-wei.zhao1@intel.com",
    "date": "2019-01-16T04:42:54",
    "name": "[2/3] net/ixgbe: enable promiscous mode on PF host",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2c14f8dff7bb1a38aa237e26d47b63a983ce50c2",
    "submitter": {
        "id": 495,
        "url": "http://patches.dpdk.org/api/people/495/?format=api",
        "name": "Zhao1, Wei",
        "email": "wei.zhao1@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1547613775-58027-3-git-send-email-wei.zhao1@intel.com/mbox/",
    "series": [
        {
            "id": 3205,
            "url": "http://patches.dpdk.org/api/series/3205/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=3205",
            "date": "2019-01-16T04:42:52",
            "name": "promiscuous mode enable on VF",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/3205/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/49867/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/49867/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 D764F2B8B;\n\tWed, 16 Jan 2019 06:08:40 +0100 (CET)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby dpdk.org (Postfix) with ESMTP id E143E29AC;\n\tWed, 16 Jan 2019 06:08:38 +0100 (CET)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t15 Jan 2019 21:08:38 -0800",
            "from dpdk6.bj.intel.com ([172.16.182.192])\n\tby orsmga005.jf.intel.com with ESMTP; 15 Jan 2019 21:08:36 -0800"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.56,484,1539673200\"; d=\"scan'208\";a=\"291898622\"",
        "From": "Wei Zhao <wei.zhao1@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "stable@dpdk.org, wenzhuo.lu@intel.com, qi.z.zhang@intel.com,\n\tWei Zhao <wei.zhao1@intel.com>",
        "Date": "Wed, 16 Jan 2019 12:42:54 +0800",
        "Message-Id": "<1547613775-58027-3-git-send-email-wei.zhao1@intel.com>",
        "X-Mailer": "git-send-email 2.7.5",
        "In-Reply-To": "<1547613775-58027-1-git-send-email-wei.zhao1@intel.com>",
        "References": "<1547613775-58027-1-git-send-email-wei.zhao1@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 2/3] net/ixgbe: enable promiscous mode on PF host",
        "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": "There is need to PF host promiscous mode enable. For ixgbe,\nin order to support VF vlan promiscuous or unicast promiscuous,\nwe need to set PF host register PFVML2FLT of bit UPE and VPE.\nIt also align to ixgbe kernel code version 5.5.3.\n\nFixes: 72dec9e37a84 (\"ixgbe: support multicast promiscuous mode on VF\")\n\nSigned-off-by: Wei Zhao <wei.zhao1@intel.com>\n---\n drivers/net/ixgbe/ixgbe_ethdev.h |  1 +\n drivers/net/ixgbe/ixgbe_pf.c     | 78 ++++++++++++++++++++++++++++------------\n 2 files changed, 57 insertions(+), 22 deletions(-)",
    "diff": "diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h\nindex d0b9396..e81f152 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.h\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.h\n@@ -265,6 +265,7 @@ struct ixgbe_vf_info {\n \tuint8_t spoofchk_enabled;\n \tuint8_t api_version;\n \tuint16_t switch_domain_id;\n+\tuint16_t xcast_mode;\n };\n \n /*\ndiff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c\nindex 4b833ff..c9d1a1c 100644\n--- a/drivers/net/ixgbe/ixgbe_pf.c\n+++ b/drivers/net/ixgbe/ixgbe_pf.c\n@@ -408,23 +408,6 @@ ixgbe_vf_reset_msg(struct rte_eth_dev *dev, uint16_t vf)\n }\n \n static int\n-ixgbe_enable_vf_mc_promisc(struct rte_eth_dev *dev, uint32_t vf)\n-{\n-\tstruct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n-\tuint32_t vmolr;\n-\n-\tvmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf));\n-\n-\tRTE_LOG(INFO, PMD, \"VF %u: enabling multicast promiscuous\\n\", vf);\n-\n-\tvmolr |= IXGBE_VMOLR_MPE;\n-\n-\tIXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr);\n-\n-\treturn 0;\n-}\n-\n-static int\n ixgbe_disable_vf_mc_promisc(struct rte_eth_dev *dev, uint32_t vf)\n {\n \tstruct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n@@ -688,19 +671,70 @@ ixgbe_set_vf_mc_promisc(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)\n {\n \tstruct ixgbe_vf_info *vfinfo =\n \t\t*(IXGBE_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private));\n-\tbool enable = !!msgbuf[1];\t/* msgbuf contains the flag to enable */\n+\tstruct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tint xcast_mode = msgbuf[1];\t/* msgbuf contains the flag to enable */\n+\tu32 vmolr, fctrl, disable, enable;\n \n \tswitch (vfinfo[vf].api_version) {\n \tcase ixgbe_mbox_api_12:\n+\t\t/* promisc introduced in 1.3 version */\n+\t\tif (xcast_mode == IXGBEVF_XCAST_MODE_PROMISC)\n+\t\t\treturn -EOPNOTSUPP;\n+\t\tbreak;\n+\t\t/* Fall threw */\n+\tcase ixgbe_mbox_api_13:\n \t\tbreak;\n \tdefault:\n \t\treturn -1;\n \t}\n \n-\tif (enable)\n-\t\treturn ixgbe_enable_vf_mc_promisc(dev, vf);\n-\telse\n-\t\treturn ixgbe_disable_vf_mc_promisc(dev, vf);\n+\tif (vfinfo[vf].xcast_mode == xcast_mode)\n+\t\tgoto out;\n+\n+\tswitch (xcast_mode) {\n+\tcase IXGBEVF_XCAST_MODE_NONE:\n+\t\tdisable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |\n+\t\t\t  IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;\n+\t\tenable = 0;\n+\t\tbreak;\n+\tcase IXGBEVF_XCAST_MODE_MULTI:\n+\t\tdisable = IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;\n+\t\tenable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE;\n+\t\tbreak;\n+\tcase IXGBEVF_XCAST_MODE_ALLMULTI:\n+\t\tdisable = IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;\n+\t\tenable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE | IXGBE_VMOLR_MPE;\n+\t\tbreak;\n+\tcase IXGBEVF_XCAST_MODE_PROMISC:\n+\t\tif (hw->mac.type <= ixgbe_mac_82599EB)\n+\t\t\treturn -1;\n+\n+\t\tfctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL);\n+\t\tif (!(fctrl & IXGBE_FCTRL_UPE)) {\n+\t\t\t/* VF promisc requires PF in promisc */\n+\t\t\tRTE_LOG(ERR, PMD,\n+\t\t\t       \"Enabling VF promisc requires PF in promisc\\n\");\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\tdisable = 0;\n+\t\tenable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |\n+\t\t\t IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;\n+\t\tbreak;\n+\tdefault:\n+\t\treturn -1;\n+\t}\n+\n+\tvmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf));\n+\tvmolr &= ~disable;\n+\tvmolr |= enable;\n+\tIXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr);\n+\tvfinfo[vf].xcast_mode = xcast_mode;\n+\n+out:\n+\tmsgbuf[1] = xcast_mode;\n+\n+\treturn 0;\n }\n \n static int\n",
    "prefixes": [
        "2/3"
    ]
}