get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 7006,
    "url": "http://patches.dpdk.org/api/patches/7006/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1441859917-26475-29-git-send-email-xiao.w.wang@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": "<1441859917-26475-29-git-send-email-xiao.w.wang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1441859917-26475-29-git-send-email-xiao.w.wang@intel.com",
    "date": "2015-09-10T04:38:37",
    "name": "[dpdk-dev,28/28] fm10k: add support for MASTER_CLK_OFFSET message",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "bc7729117be00079a3f0cd1f912ddacfb9fd96be",
    "submitter": {
        "id": 281,
        "url": "http://patches.dpdk.org/api/people/281/?format=api",
        "name": "Xiao Wang",
        "email": "xiao.w.wang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1441859917-26475-29-git-send-email-xiao.w.wang@intel.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/7006/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/7006/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id A5EB79222;\n\tThu, 10 Sep 2015 06:39:52 +0200 (CEST)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n\tby dpdk.org (Postfix) with ESMTP id 8928A8E8E\n\tfor <dev@dpdk.org>; Thu, 10 Sep 2015 06:39:49 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n\tby orsmga102.jf.intel.com with ESMTP; 09 Sep 2015 21:39:50 -0700",
            "from shvmail01.sh.intel.com ([10.239.29.42])\n\tby FMSMGA003.fm.intel.com with ESMTP; 09 Sep 2015 21:39:48 -0700",
            "from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com\n\t[10.239.29.89])\n\tby shvmail01.sh.intel.com with ESMTP id t8A4dkPD007931;\n\tThu, 10 Sep 2015 12:39:46 +0800",
            "from shecgisg004.sh.intel.com (localhost [127.0.0.1])\n\tby shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP\n\tid t8A4dh9v026712; Thu, 10 Sep 2015 12:39:45 +0800",
            "(from xiaowan1@localhost)\n\tby shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id t8A4dghD026708; \n\tThu, 10 Sep 2015 12:39:42 +0800"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.17,501,1437462000\"; d=\"scan'208\";a=\"558781553\"",
        "From": "Wang Xiao W <xiao.w.wang@intel.com>",
        "To": "dev@dpdk.org",
        "Date": "Thu, 10 Sep 2015 12:38:37 +0800",
        "Message-Id": "<1441859917-26475-29-git-send-email-xiao.w.wang@intel.com>",
        "X-Mailer": "git-send-email 1.7.4.1",
        "In-Reply-To": "<1441859917-26475-1-git-send-email-xiao.w.wang@intel.com>",
        "References": "<1441859917-26475-1-git-send-email-xiao.w.wang@intel.com>",
        "Cc": "Wang Xiao W <xiao.w.wang@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 28/28] fm10k: add support for MASTER_CLK_OFFSET\n\tmessage",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://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": "<http://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": "Add support for clock offset message from switch manager. Each PEP will\nbe responsible for notifying its own VFs, and the originating PEP must\nnotify its own VFs prior or in addition to sending, as it will not\nreceive a copy of its own message. Base drivers are expected to need\ncustom implementations so no message handler is provided in shared code.\n\nSigned-off-by: Wang Xiao W <xiao.w.wang@intel.com>\n---\n drivers/net/fm10k/base/fm10k_api.c  | 14 ++++++++++\n drivers/net/fm10k/base/fm10k_api.h  |  1 +\n drivers/net/fm10k/base/fm10k_pf.c   | 56 +++++++++++++++++++++++++++++++++++++\n drivers/net/fm10k/base/fm10k_pf.h   |  7 +++++\n drivers/net/fm10k/base/fm10k_type.h |  2 ++\n drivers/net/fm10k/base/fm10k_vf.c   |  3 ++\n drivers/net/fm10k/base/fm10k_vf.h   |  1 +\n 7 files changed, 84 insertions(+)",
    "diff": "diff --git a/drivers/net/fm10k/base/fm10k_api.c b/drivers/net/fm10k/base/fm10k_api.c\nindex a1ab6b1..eb5bdaa 100644\n--- a/drivers/net/fm10k/base/fm10k_api.c\n+++ b/drivers/net/fm10k/base/fm10k_api.c\n@@ -345,3 +345,17 @@ s32 fm10k_adjust_systime(struct fm10k_hw *hw, s32 ppb)\n \treturn fm10k_call_func(hw, hw->mac.ops.adjust_systime,\n \t\t\t       (hw, ppb), FM10K_NOT_IMPLEMENTED);\n }\n+\n+/**\n+ *  fm10k_notify_offset - Notify switch of change in PTP offset\n+ *  @hw: pointer to hardware structure\n+ *  @offset: 64bit unsigned offset from hardware SYSTIME value\n+ *\n+ *  This function is meant to notify switch of change in the PTP offset for\n+ *  the hardware SYSTIME registers.\n+ **/\n+s32 fm10k_notify_offset(struct fm10k_hw *hw, u64 offset)\n+{\n+\treturn fm10k_call_func(hw, hw->mac.ops.notify_offset,\n+\t\t\t       (hw, offset), FM10K_NOT_IMPLEMENTED);\n+}\ndiff --git a/drivers/net/fm10k/base/fm10k_api.h b/drivers/net/fm10k/base/fm10k_api.h\nindex 343d750..113aef5 100644\n--- a/drivers/net/fm10k/base/fm10k_api.h\n+++ b/drivers/net/fm10k/base/fm10k_api.h\n@@ -58,4 +58,5 @@ s32 fm10k_update_uc_addr(struct fm10k_hw *hw, u16 lport,\n s32 fm10k_update_mc_addr(struct fm10k_hw *hw, u16 lport,\n \t\t\t const u8 *mac, u16 vid, bool add);\n s32 fm10k_adjust_systime(struct fm10k_hw *hw, s32 ppb);\n+s32 fm10k_notify_offset(struct fm10k_hw *hw, u64 offset);\n #endif /* _FM10K_API_H_ */\ndiff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c\nindex 3148a90..6e6d71e 100644\n--- a/drivers/net/fm10k/base/fm10k_pf.c\n+++ b/drivers/net/fm10k/base/fm10k_pf.c\n@@ -1858,6 +1858,33 @@ const struct fm10k_tlv_attr fm10k_1588_clock_owner_attr[] = {\n \tFM10K_TLV_ATTR_LAST\n };\n \n+const struct fm10k_tlv_attr fm10k_master_clk_offset_attr[] = {\n+\tFM10K_TLV_ATTR_U64(FM10K_PF_ATTR_ID_MASTER_CLK_OFFSET),\n+\tFM10K_TLV_ATTR_LAST\n+};\n+\n+/**\n+ *  fm10k_iov_notify_offset_pf - Notify VF of change in PTP offset\n+ *  @hw: pointer to hardware structure\n+ *  @vf_info: pointer to the vf info structure\n+ *  @offset: 64bit unsigned offset from hardware SYSTIME\n+ *\n+ *  This function sends a message to a given VF to notify it of PTP offset\n+ *  changes.\n+ **/\n+STATIC void fm10k_iov_notify_offset_pf(struct fm10k_hw *hw,\n+\t\t\t\t       struct fm10k_vf_info *vf_info,\n+\t\t\t\t       u64 offset)\n+{\n+\tu32 msg[4];\n+\n+\tfm10k_tlv_msg_init(msg, FM10K_VF_MSG_ID_1588);\n+\tfm10k_tlv_attr_put_u64(msg, FM10K_1588_MSG_CLK_OFFSET, offset);\n+\n+\tif (vf_info->mbx.ops.enqueue_tx)\n+\t\tvf_info->mbx.ops.enqueue_tx(hw, &vf_info->mbx, msg);\n+}\n+\n /**\n  *  fm10k_msg_1588_clock_owner_pf - Message handler for clock ownership from SM\n  *  @hw: pointer to hardware structure\n@@ -1951,6 +1978,33 @@ STATIC s32 fm10k_adjust_systime_pf(struct fm10k_hw *hw, s32 ppb)\n }\n \n /**\n+ *  fm10k_notify_offset_pf - Notify switch of change in PTP offset\n+ *  @hw: pointer to hardware structure\n+ *  @offset: 64bit unsigned offset of SYSTIME\n+ *\n+ *  This function sends a message to the switch to indicate a change in the\n+ *  offset of the hardware SYSTIME registers. The switch manager is\n+ *  responsible for transmitting this message to other hosts.\n+ */\n+STATIC s32 fm10k_notify_offset_pf(struct fm10k_hw *hw, u64 offset)\n+{\n+\tstruct fm10k_mbx_info *mbx = &hw->mbx;\n+\tu32 msg[4];\n+\n+\tDEBUGFUNC(\"fm10k_notify_offset_pf\");\n+\n+\t/* ensure that we control the clock */\n+\tif (!(hw->flags & FM10K_HW_FLAG_CLOCK_OWNER))\n+\t\treturn FM10K_ERR_DEVICE_NOT_SUPPORTED;\n+\n+\tfm10k_tlv_msg_init(msg, FM10K_PF_MSG_ID_MASTER_CLK_OFFSET);\n+\tfm10k_tlv_attr_put_u64(msg, FM10K_PF_ATTR_ID_MASTER_CLK_OFFSET, offset);\n+\n+\t/* load onto outgoing mailbox */\n+\treturn mbx->ops.enqueue_tx(hw, mbx, msg);\n+}\n+\n+/**\n  *  fm10k_read_systime_pf - Reads value of systime registers\n  *  @hw: pointer to the hardware structure\n  *\n@@ -2021,6 +2075,7 @@ s32 fm10k_init_ops_pf(struct fm10k_hw *hw)\n \tmac->ops.get_fault = &fm10k_get_fault_pf;\n \tmac->ops.get_host_state = &fm10k_get_host_state_pf;\n \tmac->ops.adjust_systime = &fm10k_adjust_systime_pf;\n+\tmac->ops.notify_offset = &fm10k_notify_offset_pf;\n \tmac->ops.read_systime = &fm10k_read_systime_pf;\n \n \tmac->max_msix_vectors = fm10k_get_pcie_msix_count_generic(hw);\n@@ -2033,6 +2088,7 @@ s32 fm10k_init_ops_pf(struct fm10k_hw *hw)\n \tiov->ops.set_lport = &fm10k_iov_set_lport_pf;\n \tiov->ops.reset_lport = &fm10k_iov_reset_lport_pf;\n \tiov->ops.update_stats = &fm10k_iov_update_stats_pf;\n+\tiov->ops.notify_offset = &fm10k_iov_notify_offset_pf;\n \n \treturn fm10k_sm_mbx_init(hw, &hw->mbx, fm10k_msg_data_pf);\n }\ndiff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h\nindex ae8a737..44bd193 100644\n--- a/drivers/net/fm10k/base/fm10k_pf.h\n+++ b/drivers/net/fm10k/base/fm10k_pf.h\n@@ -58,6 +58,7 @@ enum fm10k_pf_tlv_msg_id_v1 {\n \tFM10K_PF_MSG_ID_GET_1588_INFO\t\t= 0x506,\n \tFM10K_PF_MSG_ID_1588_TIMESTAMP\t\t= 0x701,\n \tFM10K_PF_MSG_ID_1588_CLOCK_OWNER\t= 0x702,\n+\tFM10K_PF_MSG_ID_MASTER_CLK_OFFSET\t= 0x703,\n };\n \n enum fm10k_pf_tlv_attr_id_v1 {\n@@ -77,6 +78,7 @@ enum fm10k_pf_tlv_attr_id_v1 {\n \tFM10K_PF_ATTR_ID_UPDATE_PVID\t\t= 0x0D,\n \tFM10K_PF_ATTR_ID_1588_TIMESTAMP\t\t= 0x10,\n \tFM10K_PF_ATTR_ID_1588_CLOCK_OWNER\t= 0x12,\n+\tFM10K_PF_ATTR_ID_MASTER_CLK_OFFSET\t= 0x14,\n };\n \n #define FM10K_MSG_LPORT_MAP_GLORT_SHIFT\t0\n@@ -171,6 +173,11 @@ extern const struct fm10k_tlv_attr fm10k_1588_clock_owner_attr[];\n \tFM10K_MSG_HANDLER(FM10K_PF_MSG_ID_1588_CLOCK_OWNER, \\\n \t\t\t  fm10k_1588_clock_owner_attr, func)\n \n+extern const struct fm10k_tlv_attr fm10k_master_clk_offset_attr[];\n+#define FM10K_PF_MSG_MASTER_CLK_OFFSET_HANDLER(func) \\\n+\tFM10K_MSG_HANDLER(FM10K_PF_MSG_ID_MASTER_CLK_OFFSET, \\\n+\t\t\t  fm10k_master_clk_offset_attr, func)\n+\n s32 fm10k_iov_msg_msix_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);\n s32 fm10k_iov_msg_mac_vlan_pf(struct fm10k_hw *, u32 **,\n \t\t\t      struct fm10k_mbx_info *);\ndiff --git a/drivers/net/fm10k/base/fm10k_type.h b/drivers/net/fm10k/base/fm10k_type.h\nindex e0fc08d..df1d276 100644\n--- a/drivers/net/fm10k/base/fm10k_type.h\n+++ b/drivers/net/fm10k/base/fm10k_type.h\n@@ -681,6 +681,7 @@ struct fm10k_mac_ops {\n \ts32 (*get_fault)(struct fm10k_hw *, int, struct fm10k_fault *);\n \tvoid (*request_lport_map)(struct fm10k_hw *);\n \ts32 (*adjust_systime)(struct fm10k_hw *, s32 ppb);\n+\ts32 (*notify_offset)(struct fm10k_hw *, u64 offset);\n \tu64 (*read_systime)(struct fm10k_hw *);\n };\n \n@@ -781,6 +782,7 @@ struct fm10k_iov_ops {\n \ts32 (*set_lport)(struct fm10k_hw *, struct fm10k_vf_info *, u16, u8);\n \tvoid (*reset_lport)(struct fm10k_hw *, struct fm10k_vf_info *);\n \tvoid (*update_stats)(struct fm10k_hw *, struct fm10k_hw_stats_q *, u16);\n+\tvoid (*notify_offset)(struct fm10k_hw *, struct fm10k_vf_info*, u64);\n };\n \n struct fm10k_iov_info {\ndiff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c\nindex 295bae4..a46b488 100644\n--- a/drivers/net/fm10k/base/fm10k_vf.c\n+++ b/drivers/net/fm10k/base/fm10k_vf.c\n@@ -414,6 +414,8 @@ const struct fm10k_tlv_attr fm10k_lport_state_msg_attr[] = {\n \tFM10K_TLV_ATTR_LAST\n };\n \n+extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[];\n+\n /**\n  *  fm10k_msg_lport_state_vf - Message handler for lport_state message from PF\n  *  @hw: Pointer to hardware structure\n@@ -497,6 +499,7 @@ STATIC s32 fm10k_update_xcast_mode_vf(struct fm10k_hw *hw, u16 glort, u8 mode)\n }\n \n const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = {\n+\tFM10K_TLV_ATTR_U64(FM10K_1588_MSG_CLK_OFFSET),\n \tFM10K_TLV_ATTR_LAST\n };\n \ndiff --git a/drivers/net/fm10k/base/fm10k_vf.h b/drivers/net/fm10k/base/fm10k_vf.h\nindex 333b0d9..116c56f 100644\n--- a/drivers/net/fm10k/base/fm10k_vf.h\n+++ b/drivers/net/fm10k/base/fm10k_vf.h\n@@ -64,6 +64,7 @@ enum fm10k_tlv_lport_state_attr_id {\n \n enum fm10k_tlv_1588_attr_id {\n \tFM10K_1588_MSG_TIMESTAMP = 0, /* deprecated */\n+\tFM10K_1588_MSG_CLK_OFFSET,\n \tFM10K_1588_MSG_MAX\n };\n \n",
    "prefixes": [
        "dpdk-dev",
        "28/28"
    ]
}