get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40230,
    "url": "https://patches.dpdk.org/api/patches/40230/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1526724679-54877-1-git-send-email-wei.dai@intel.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": "<1526724679-54877-1-git-send-email-wei.dai@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1526724679-54877-1-git-send-email-wei.dai@intel.com",
    "date": "2018-05-19T10:11:19",
    "name": "[dpdk-dev,v5] net/ixgbe: fix to config VLAN strip on the fly",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "1ed7785b7142a1d1e258a593a5c5074069d3b5bd",
    "submitter": {
        "id": 490,
        "url": "https://patches.dpdk.org/api/people/490/?format=api",
        "name": "Wei Dai",
        "email": "wei.dai@intel.com"
    },
    "delegate": {
        "id": 24,
        "url": "https://patches.dpdk.org/api/users/24/?format=api",
        "username": "helin_zhang",
        "first_name": "Helin",
        "last_name": "Zhang",
        "email": "helin.zhang@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1526724679-54877-1-git-send-email-wei.dai@intel.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/40230/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/40230/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 D796A8D3C;\n\tSat, 19 May 2018 12:31:13 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby dpdk.org (Postfix) with ESMTP id BCD022BD8;\n\tSat, 19 May 2018 12:31:09 +0200 (CEST)",
            "from fmsmga004.fm.intel.com ([10.253.24.48])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t19 May 2018 03:31:08 -0700",
            "from dpdk6.bj.intel.com ([172.16.182.201])\n\tby fmsmga004.fm.intel.com with ESMTP; 19 May 2018 03:31:06 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.49,417,1520924400\"; d=\"scan'208\";a=\"55762170\"",
        "From": "Wei Dai <wei.dai@intel.com>",
        "To": "qi.z.zhang@intel.com, ferruh.yigit@intel.com, wenzhuo.lu@intel.com,\n\tkonstantin.ananyev@intel.com, yanglong.wu@intel.com",
        "Cc": "dev@dpdk.org, Wei Dai <wei.dai@intel.com>, stable@dpdk.org,\n\tWei Dai <weid.dai@intel.com>",
        "Date": "Sat, 19 May 2018 18:11:19 +0800",
        "Message-Id": "<1526724679-54877-1-git-send-email-wei.dai@intel.com>",
        "X-Mailer": "git-send-email 2.7.5",
        "In-Reply-To": "<1526659710-24420-1-git-send-email-wei.dai@intel.com>",
        "References": "<1526659710-24420-1-git-send-email-wei.dai@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v5] net/ixgbe: fix to config VLAN strip on the fly",
        "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://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": "<https://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": "The old ixgbe_vlan_offload_set() is called by\nrte_eth_dev_set_vlan_offload() which is meant to config VLAN\nstrip/filter/extend on all queues.\nThis old function is also called by rte_eth_dev_start()/ixgbe_dev_start()\nwhich need support per-queue VALN strip on only parts of queues.\n\nSo add new function ixgbe_vlan_offload_config() =\nold ixgbe_vlan_offload_set().\nThis new function is called by ixgbe_dev_start() to support VLAN strip\nper-queue configuration.\n\nNew ixgbe_vlan_offload_set() = codes to align VLAN strip flags on all\nqueues with port level setting + new ixgbe_vlan_offload_configure().\nThe 2nd function is called by rte_eth_dev_set_vlan_offload to support\nconfigure VLAN strip on all queues of whole port.\n\nFixes: 216f78f4d53f (\"net/ixgbe: support VLAN strip per queue offloading in PF\")\nFixes: 860a94d3c692 (\"net/ixgbe: support VLAN strip per queue offloading in VF\")\n\nCc: stable@dpdk.org\n\nSigned-off-by: Wei Dai <weid.dai@intel.com>\nSigned-off-by: Yanglong Wu <yanglong.wu@intel.com>\n\nAcked-by: Qi Zhang <qi.z.zhang@intel.com>\n\n---\nv5:\n  reduce redundant codes\n  add Fixes in git log message\n\nv4:\n  fix typo error in git log message\n\nv3:\n  keep vlan strip as per-queue capability\n  and support config vlan on port level on the fly\n\nv2:\n  rework as comments asked\n---\n drivers/net/ixgbe/ixgbe_ethdev.c | 61 ++++++++++++++++++++++++++++++++++++----\n 1 file changed, 55 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex 7219f02..0b150cb 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -189,6 +189,9 @@ static void ixgbe_vlan_hw_strip_bitmap_set(struct rte_eth_dev *dev,\n \t\tuint16_t queue, bool on);\n static void ixgbe_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue,\n \t\tint on);\n+static void ixgbe_config_vlan_strip_on_all_queues(struct rte_eth_dev *dev,\n+\t\t\t\t\t\t  int mask);\n+static int ixgbe_vlan_offload_config(struct rte_eth_dev *dev, int mask);\n static int ixgbe_vlan_offload_set(struct rte_eth_dev *dev, int mask);\n static void ixgbe_vlan_hw_strip_enable(struct rte_eth_dev *dev, uint16_t queue);\n static void ixgbe_vlan_hw_strip_disable(struct rte_eth_dev *dev, uint16_t queue);\n@@ -246,6 +249,7 @@ static int ixgbevf_vlan_filter_set(struct rte_eth_dev *dev,\n \t\tuint16_t vlan_id, int on);\n static void ixgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev,\n \t\tuint16_t queue, int on);\n+static int ixgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask);\n static int ixgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask);\n static void ixgbevf_set_vfta_all(struct rte_eth_dev *dev, bool on);\n static int ixgbevf_dev_rx_queue_intr_enable(struct rte_eth_dev *dev,\n@@ -1974,10 +1978,13 @@ ixgbe_vlan_hw_strip_bitmap_set(struct rte_eth_dev *dev, uint16_t queue, bool on)\n \n \trxq = dev->data->rx_queues[queue];\n \n-\tif (on)\n+\tif (on) {\n \t\trxq->vlan_flags = PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;\n-\telse\n+\t\trxq->offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;\n+\t} else {\n \t\trxq->vlan_flags = PKT_RX_VLAN;\n+\t\trxq->offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;\n+\t}\n }\n \n static void\n@@ -2129,8 +2136,30 @@ ixgbe_vlan_hw_strip_config(struct rte_eth_dev *dev)\n \t}\n }\n \n+static void\n+ixgbe_config_vlan_strip_on_all_queues(struct rte_eth_dev *dev, int mask)\n+{\n+\tuint16_t i;\n+\tstruct rte_eth_rxmode *rxmode;\n+\tstruct ixgbe_rx_queue *rxq;\n+\n+\tif (mask & ETH_VLAN_STRIP_MASK) {\n+\t\trxmode = &dev->data->dev_conf.rxmode;\n+\t\tif (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_STRIP)\n+\t\t\tfor (i = 0; i < dev->data->nb_rx_queues; i++) {\n+\t\t\t\trxq = dev->data->rx_queues[i];\n+\t\t\t\trxq->offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;\n+\t\t\t}\n+\t\telse\n+\t\t\tfor (i = 0; i < dev->data->nb_rx_queues; i++) {\n+\t\t\t\trxq = dev->data->rx_queues[i];\n+\t\t\t\trxq->offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;\n+\t\t\t}\n+\t}\n+}\n+\n static int\n-ixgbe_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n+ixgbe_vlan_offload_config(struct rte_eth_dev *dev, int mask)\n {\n \tstruct rte_eth_rxmode *rxmode;\n \trxmode = &dev->data->dev_conf.rxmode;\n@@ -2156,6 +2185,16 @@ ixgbe_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n \treturn 0;\n }\n \n+static int\n+ixgbe_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n+{\n+\tixgbe_config_vlan_strip_on_all_queues(dev, mask);\n+\n+\tixgbe_vlan_offload_config(dev, mask);\n+\n+\treturn 0;\n+}\n+\n static void\n ixgbe_vmdq_vlan_hw_filter_enable(struct rte_eth_dev *dev)\n {\n@@ -2577,7 +2616,7 @@ ixgbe_dev_start(struct rte_eth_dev *dev)\n \n \tmask = ETH_VLAN_STRIP_MASK | ETH_VLAN_FILTER_MASK |\n \t\tETH_VLAN_EXTEND_MASK;\n-\terr = ixgbe_vlan_offload_set(dev, mask);\n+\terr = ixgbe_vlan_offload_config(dev, mask);\n \tif (err) {\n \t\tPMD_INIT_LOG(ERR, \"Unable to set VLAN offload\");\n \t\tgoto error;\n@@ -5022,7 +5061,7 @@ ixgbevf_dev_start(struct rte_eth_dev *dev)\n \t/* Set HW strip */\n \tmask = ETH_VLAN_STRIP_MASK | ETH_VLAN_FILTER_MASK |\n \t\tETH_VLAN_EXTEND_MASK;\n-\terr = ixgbevf_vlan_offload_set(dev, mask);\n+\terr = ixgbevf_vlan_offload_config(dev, mask);\n \tif (err) {\n \t\tPMD_INIT_LOG(ERR, \"Unable to set VLAN offload (%d)\", err);\n \t\tixgbe_dev_clear_queues(dev);\n@@ -5220,7 +5259,7 @@ ixgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)\n }\n \n static int\n-ixgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n+ixgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)\n {\n \tstruct ixgbe_rx_queue *rxq;\n \tuint16_t i;\n@@ -5238,6 +5277,16 @@ ixgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n \treturn 0;\n }\n \n+static int\n+ixgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n+{\n+\tixgbe_config_vlan_strip_on_all_queues(dev, mask);\n+\n+\tixgbevf_vlan_offload_config(dev, mask);\n+\n+\treturn 0;\n+}\n+\n int\n ixgbe_vt_check(struct ixgbe_hw *hw)\n {\n",
    "prefixes": [
        "dpdk-dev",
        "v5"
    ]
}