get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40703,
    "url": "https://patches.dpdk.org/api/patches/40703/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1528339208-89160-2-git-send-email-beilei.xing@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": "<1528339208-89160-2-git-send-email-beilei.xing@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1528339208-89160-2-git-send-email-beilei.xing@intel.com",
    "date": "2018-06-07T02:40:07",
    "name": "[dpdk-dev,1/2] net/i40e: print real global changes",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a30842e02b7b0e04420ddd2bdc65ae3941593175",
    "submitter": {
        "id": 410,
        "url": "https://patches.dpdk.org/api/people/410/?format=api",
        "name": "Xing, Beilei",
        "email": "beilei.xing@intel.com"
    },
    "delegate": {
        "id": 1540,
        "url": "https://patches.dpdk.org/api/users/1540/?format=api",
        "username": "qzhan15",
        "first_name": "Qi",
        "last_name": "Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1528339208-89160-2-git-send-email-beilei.xing@intel.com/mbox/",
    "series": [
        {
            "id": 22,
            "url": "https://patches.dpdk.org/api/series/22/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=22",
            "date": "2018-06-07T02:40:06",
            "name": "net/i40e: print real global changes",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/22/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/40703/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/40703/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 806211B3C8;\n\tThu,  7 Jun 2018 04:40:27 +0200 (CEST)",
            "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n\tby dpdk.org (Postfix) with ESMTP id 8803C1B2A7\n\tfor <dev@dpdk.org>; Thu,  7 Jun 2018 04:40:24 +0200 (CEST)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n\tby orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t06 Jun 2018 19:40:23 -0700",
            "from unknown (HELO dpdk9.sh.intel.com) ([10.67.118.52])\n\tby fmsmga006.fm.intel.com with ESMTP; 06 Jun 2018 19:40:22 -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,485,1520924400\"; d=\"scan'208\";a=\"235341817\"",
        "From": "Beilei Xing <beilei.xing@intel.com>",
        "To": "qi.z.zhang@intel.com",
        "Cc": "dev@dpdk.org",
        "Date": "Thu,  7 Jun 2018 10:40:07 +0800",
        "Message-Id": "<1528339208-89160-2-git-send-email-beilei.xing@intel.com>",
        "X-Mailer": "git-send-email 2.5.5",
        "In-Reply-To": "<1528339208-89160-1-git-send-email-beilei.xing@intel.com>",
        "References": "<1528339208-89160-1-git-send-email-beilei.xing@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 1/2] net/i40e: print real global changes",
        "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": "Currently no matter if there's global change, the global\nconfiguration will be always logged. But there's no value\nto log the info if the configuration is not changed.\nThis patch prints only real global changes.\nAlso, change log level from DEBUG to WARNING.\n\nSigned-off-by: Beilei Xing <beilei.xing@intel.com>\n---\n drivers/net/i40e/i40e_ethdev.c | 124 +++++++++++++++++++++++++++--------------\n drivers/net/i40e/i40e_ethdev.h |  12 +++-\n 2 files changed, 91 insertions(+), 45 deletions(-)",
    "diff": "diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 7d4f1c9..e81b47e 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -698,12 +698,16 @@ i40e_write_global_rx_ctl(struct i40e_hw *hw, uint32_t reg_addr,\n \t\t\t uint32_t reg_val)\n {\n \tuint32_t ori_reg_val;\n+\tstruct rte_eth_dev *dev;\n \n \tori_reg_val = i40e_read_rx_ctl(hw, reg_addr);\n+\tdev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \ti40e_write_rx_ctl(hw, reg_addr, reg_val);\n-\tPMD_DRV_LOG(DEBUG,\n-\t\t    \"Global register [0x%08x] original: 0x%08x, after: 0x%08x\",\n-\t\t    reg_addr, ori_reg_val, reg_val);\n+\tif (ori_reg_val != reg_val)\n+\t\tPMD_DRV_LOG(WARNING,\n+\t\t\t    \"i40e device %s changed global register [0x%08x].\"\n+\t\t\t    \" original: 0x%08x, new: 0x%08x\",\n+\t\t\t    dev->device->name, reg_addr, ori_reg_val, reg_val);\n }\n \n RTE_PMD_REGISTER_PCI(net_i40e, rte_i40e_pmd);\n@@ -1165,6 +1169,7 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,\n \t\t\t\t    struct i40e_asq_cmd_details *cmd_details)\n {\n \tuint64_t ori_reg_val;\n+\tstruct rte_eth_dev *dev;\n \tint ret;\n \n \tret = i40e_aq_debug_read_register(hw, reg_addr, &ori_reg_val, NULL);\n@@ -1174,11 +1179,13 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,\n \t\t\t    reg_addr);\n \t\treturn -EIO;\n \t}\n+\tdev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \n-\tPMD_DRV_LOG(DEBUG,\n-\t\t    \"Global register [0x%08x] original: 0x%\"PRIx64\n-\t\t    \", after: 0x%\"PRIx64,\n-\t\t    reg_addr, ori_reg_val, reg_val);\n+\tif (ori_reg_val != reg_val)\n+\t\tPMD_DRV_LOG(WARNING,\n+\t\t\t    \"i40e device %s changed global register [0x%08x].\"\n+\t\t\t    \" original: 0x%\"PRIx64\", after: 0x%\"PRIx64,\n+\t\t\t    dev->device->name, reg_addr, ori_reg_val, reg_val);\n \n \treturn i40e_aq_debug_write_register(hw, reg_addr, reg_val, cmd_details);\n }\n@@ -7565,6 +7572,7 @@ i40e_status_code i40e_replace_mpls_l1_filter(struct i40e_pf *pf)\n \tstruct i40e_aqc_replace_cloud_filters_cmd  filter_replace;\n \tstruct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;\n \tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n+\tstruct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \tenum i40e_status_code status = I40E_SUCCESS;\n \n \tif (pf->support_multi_driver) {\n@@ -7608,10 +7616,12 @@ i40e_status_code i40e_replace_mpls_l1_filter(struct i40e_pf *pf)\n \n \tstatus = i40e_aq_replace_cloud_filters(hw, &filter_replace,\n \t\t\t\t\t       &filter_replace_buf);\n-\tif (!status) {\n+\tif (!status && (filter_replace.old_filter_type !=\n+\t\t\tfilter_replace.new_filter_type)) {\n \t\ti40e_global_cfg_warning(I40E_WARNING_RPL_CLD_FILTER);\n-\t\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t\t    \"cloud l1 type is changed from 0x%x to 0x%x\",\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud l1 type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n \t\t\t    filter_replace.old_filter_type,\n \t\t\t    filter_replace.new_filter_type);\n \t}\n@@ -7624,6 +7634,7 @@ i40e_status_code i40e_replace_mpls_cloud_filter(struct i40e_pf *pf)\n \tstruct i40e_aqc_replace_cloud_filters_cmd  filter_replace;\n \tstruct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;\n \tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n+\tstruct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \tenum i40e_status_code status = I40E_SUCCESS;\n \n \tif (pf->support_multi_driver) {\n@@ -7652,10 +7663,13 @@ i40e_status_code i40e_replace_mpls_cloud_filter(struct i40e_pf *pf)\n \t\t\t\t\t       &filter_replace_buf);\n \tif (status < 0)\n \t\treturn status;\n-\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t    \"cloud filter type is changed from 0x%x to 0x%x\",\n-\t\t    filter_replace.old_filter_type,\n-\t\t    filter_replace.new_filter_type);\n+\tif (filter_replace.old_filter_type !=\n+\t    filter_replace.new_filter_type)\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud filter type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n+\t\t\t    filter_replace.old_filter_type,\n+\t\t\t    filter_replace.new_filter_type);\n \n \t/* For MPLSoGRE */\n \tmemset(&filter_replace, 0,\n@@ -7678,10 +7692,12 @@ i40e_status_code i40e_replace_mpls_cloud_filter(struct i40e_pf *pf)\n \n \tstatus = i40e_aq_replace_cloud_filters(hw, &filter_replace,\n \t\t\t\t\t       &filter_replace_buf);\n-\tif (!status) {\n+\tif (!status && (filter_replace.old_filter_type !=\n+\t\t\tfilter_replace.new_filter_type)) {\n \t\ti40e_global_cfg_warning(I40E_WARNING_RPL_CLD_FILTER);\n-\t\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t\t    \"cloud filter type is changed from 0x%x to 0x%x\",\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud filter type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n \t\t\t    filter_replace.old_filter_type,\n \t\t\t    filter_replace.new_filter_type);\n \t}\n@@ -7694,6 +7710,7 @@ i40e_replace_gtp_l1_filter(struct i40e_pf *pf)\n \tstruct i40e_aqc_replace_cloud_filters_cmd  filter_replace;\n \tstruct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;\n \tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n+\tstruct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \tenum i40e_status_code status = I40E_SUCCESS;\n \n \tif (pf->support_multi_driver) {\n@@ -7729,10 +7746,13 @@ i40e_replace_gtp_l1_filter(struct i40e_pf *pf)\n \t\t\t\t\t       &filter_replace_buf);\n \tif (status < 0)\n \t\treturn status;\n-\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t    \"cloud l1 type is changed from 0x%x to 0x%x\",\n-\t\t    filter_replace.old_filter_type,\n-\t\t    filter_replace.new_filter_type);\n+\tif (filter_replace.old_filter_type !=\n+\t    filter_replace.new_filter_type)\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud l1 type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n+\t\t\t    filter_replace.old_filter_type,\n+\t\t\t    filter_replace.new_filter_type);\n \n \t/* for GTP-U */\n \tmemset(&filter_replace, 0,\n@@ -7761,10 +7781,12 @@ i40e_replace_gtp_l1_filter(struct i40e_pf *pf)\n \n \tstatus = i40e_aq_replace_cloud_filters(hw, &filter_replace,\n \t\t\t\t\t       &filter_replace_buf);\n-\tif (!status) {\n+\tif (!status && (filter_replace.old_filter_type !=\n+\t\t\tfilter_replace.new_filter_type)) {\n \t\ti40e_global_cfg_warning(I40E_WARNING_RPL_CLD_FILTER);\n-\t\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t\t    \"cloud l1 type is changed from 0x%x to 0x%x\",\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud l1 type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n \t\t\t    filter_replace.old_filter_type,\n \t\t\t    filter_replace.new_filter_type);\n \t}\n@@ -7777,6 +7799,7 @@ i40e_status_code i40e_replace_gtp_cloud_filter(struct i40e_pf *pf)\n \tstruct i40e_aqc_replace_cloud_filters_cmd  filter_replace;\n \tstruct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;\n \tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n+\tstruct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \tenum i40e_status_code status = I40E_SUCCESS;\n \n \tif (pf->support_multi_driver) {\n@@ -7804,10 +7827,13 @@ i40e_status_code i40e_replace_gtp_cloud_filter(struct i40e_pf *pf)\n \t\t\t\t\t       &filter_replace_buf);\n \tif (status < 0)\n \t\treturn status;\n-\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t    \"cloud filter type is changed from 0x%x to 0x%x\",\n-\t\t    filter_replace.old_filter_type,\n-\t\t    filter_replace.new_filter_type);\n+\tif (filter_replace.old_filter_type !=\n+\t    filter_replace.new_filter_type)\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud filter type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n+\t\t\t    filter_replace.old_filter_type,\n+\t\t\t    filter_replace.new_filter_type);\n \n \t/* for GTP-U */\n \tmemset(&filter_replace, 0,\n@@ -7829,10 +7855,12 @@ i40e_status_code i40e_replace_gtp_cloud_filter(struct i40e_pf *pf)\n \n \tstatus = i40e_aq_replace_cloud_filters(hw, &filter_replace,\n \t\t\t\t\t       &filter_replace_buf);\n-\tif (!status) {\n+\tif (!status && (filter_replace.old_filter_type !=\n+\t\t\tfilter_replace.new_filter_type)) {\n \t\ti40e_global_cfg_warning(I40E_WARNING_RPL_CLD_FILTER);\n-\t\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t\t    \"cloud filter type is changed from 0x%x to 0x%x\",\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud filter type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n \t\t\t    filter_replace.old_filter_type,\n \t\t\t    filter_replace.new_filter_type);\n \t}\n@@ -9280,12 +9308,17 @@ void\n i40e_check_write_global_reg(struct i40e_hw *hw, uint32_t addr, uint32_t val)\n {\n \tuint32_t reg = i40e_read_rx_ctl(hw, addr);\n+\tstruct rte_eth_dev *dev;\n \n-\tif (reg != val)\n+\tdev = ((struct i40e_adapter *)hw->back)->eth_dev;\n+\tif (reg != val) {\n \t\ti40e_write_rx_ctl(hw, addr, val);\n-\tPMD_DRV_LOG(DEBUG,\n-\t\t    \"Global register [0x%08x] original: 0x%08x, after: 0x%08x\",\n-\t\t    addr, reg, (uint32_t)i40e_read_rx_ctl(hw, addr));\n+\t\tPMD_DRV_LOG(WARNING,\n+\t\t\t    \"i40e device %s changed global register [0x%08x].\"\n+\t\t\t    \" original: 0x%08x, new: 0x%08x\",\n+\t\t\t    dev->device->name, addr, reg,\n+\t\t\t    (uint32_t)i40e_read_rx_ctl(hw, addr));\n+\t}\n }\n \n static void\n@@ -12214,6 +12247,7 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)\n \tstruct i40e_aqc_replace_cloud_filters_cmd  filter_replace;\n \tstruct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;\n \tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n+\tstruct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;\n \n \tif (pf->support_multi_driver) {\n \t\tPMD_DRV_LOG(ERR, \"Replace cloud filter is not supported.\");\n@@ -12250,10 +12284,14 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)\n \t\t\t&filter_replace_buf);\n \tif (ret != I40E_SUCCESS)\n \t\treturn ret;\n-\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t    \"cloud l1 type is changed from 0x%x to 0x%x\",\n-\t\t    filter_replace.old_filter_type,\n-\t\t    filter_replace.new_filter_type);\n+\n+\tif (filter_replace.old_filter_type !=\n+\t    filter_replace.new_filter_type)\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud l1 type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n+\t\t\t    filter_replace.old_filter_type,\n+\t\t\t    filter_replace.new_filter_type);\n \n \t/* Apply the second L2 cloud filter */\n \tmemset(&filter_replace, 0,\n@@ -12275,10 +12313,12 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)\n \t\tI40E_AQC_REPLACE_CLOUD_CMD_INPUT_VALIDATED;\n \tret = i40e_aq_replace_cloud_filters(hw, &filter_replace,\n \t\t\t&filter_replace_buf);\n-\tif (!ret) {\n+\tif (!ret && (filter_replace.old_filter_type !=\n+\t\t     filter_replace.new_filter_type)) {\n \t\ti40e_global_cfg_warning(I40E_WARNING_RPL_CLD_FILTER);\n-\t\tPMD_DRV_LOG(DEBUG, \"Global configuration modification: \"\n-\t\t\t    \"cloud filter type is changed from 0x%x to 0x%x\",\n+\t\tPMD_DRV_LOG(WARNING, \"i40e device %s changed cloud filter type.\"\n+\t\t\t    \" original: 0x%x, new: 0x%x\",\n+\t\t\t    dev->device->name,\n \t\t\t    filter_replace.old_filter_type,\n \t\t\t    filter_replace.new_filter_type);\n \t}\ndiff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h\nindex 362303f..0bf3330 100644\n--- a/drivers/net/i40e/i40e_ethdev.h\n+++ b/drivers/net/i40e/i40e_ethdev.h\n@@ -87,12 +87,18 @@\n #define I40E_WRITE_GLB_REG(hw, reg, value)\t\t\t\t\\\n \tdo {\t\t\t\t\t\t\t\t\\\n \t\tuint32_t ori_val;\t\t\t\t\t\\\n+\t\tstruct rte_eth_dev *dev;\t\t\t\t\\\n \t\tori_val = I40E_READ_REG((hw), (reg));\t\t\t\\\n+\t\tdev = ((struct i40e_adapter *)hw->back)->eth_dev;\t\\\n \t\tI40E_PCI_REG_WRITE(I40E_PCI_REG_ADDR((hw),\t\t\\\n \t\t\t\t\t\t     (reg)), (value));\t\\\n-\t\tPMD_DRV_LOG(DEBUG, \"global register [0x%08x] \"\t\t\\\n-\t\t\t    \"original: 0x%08x, after: 0x%08x \",\t\t\\\n-\t\t\t    (reg), (ori_val), (value));\t\t\t\\\n+\t\tif (ori_val != value)\t\t\t\t\t\\\n+\t\t\tPMD_DRV_LOG(WARNING,\t\t\t\t\\\n+\t\t\t\t    \"i40e device %s changed global \"\t\\\n+\t\t\t\t    \"register [0x%08x]. original: 0x%08x, \" \\\n+\t\t\t\t    \"new: 0x%08x \",\t\t\t\\\n+\t\t\t\t    (dev->device->name), (reg),\t\t\\\n+\t\t\t\t    (ori_val), (value));\t\t\\\n \t} while (0)\n \n /* index flex payload per layer */\n",
    "prefixes": [
        "dpdk-dev",
        "1/2"
    ]
}