From 685e5fb30b4b3b01acc2934a58fec8122666b465 Mon Sep 17 00:00:00 2001 From: Wang Xiao W Date: Thu, 10 Sep 2015 12:38:33 +0800 Subject: [PATCH] fm10k/base: remove 1588 VF API Remove support for VF transmit timestamps. VFs should not write the timestamp bit in the Tx descriptor. Only one Tx timestamp can be realistically handled at once. It is expected that the switch manager use FFU logic to disable all timestamp requests except for those originating from a specific virtual port. It is not possible to correlate this timestamp accurately if more than one occurs out any given EPL at a time. Since the primary purpose of Tx timestamps is to implement PTP daemon, which also requires BAR4 access to change the clock, do not allow VFs to transmit timestamp. Remove the PF<->VF message for this behavior. Note, the VF already didn't have ability to request Tx timestamp mode, so it essentially wasn't allowed to timestamp before anyways under the old API. No longer support old API of request-response timestamp mode messages. New API only sends timestamp-response when the switch decides which port will be given control of timestamps. To simplify review of this code, completely remove the support and re-add support for the response message in a future patch. Signed-off-by: Wang Xiao W --- drivers/net/fm10k/base/fm10k_pf.c | 64 +---------------------------- drivers/net/fm10k/base/fm10k_pf.h | 13 ------ drivers/net/fm10k/base/fm10k_type.h | 2 - drivers/net/fm10k/base/fm10k_vf.c | 24 +---------- drivers/net/fm10k/base/fm10k_vf.h | 2 +- 5 files changed, 4 insertions(+), 101 deletions(-) diff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c index cc85adbef2..a19806318f 100644 --- a/drivers/net/fm10k/base/fm10k_pf.c +++ b/drivers/net/fm10k/base/fm10k_pf.c @@ -1189,19 +1189,6 @@ STATIC void fm10k_iov_update_stats_pf(struct fm10k_hw *hw, fm10k_update_hw_stats_q(hw, q, idx, qpp); } -STATIC s32 fm10k_iov_report_timestamp_pf(struct fm10k_hw *hw, - struct fm10k_vf_info *vf_info, - u64 timestamp) -{ - u32 msg[4]; - - /* generate port state response to notify VF it is not ready */ - fm10k_tlv_msg_init(msg, FM10K_VF_MSG_ID_1588); - fm10k_tlv_attr_put_u64(msg, FM10K_1588_MSG_TIMESTAMP, timestamp); - - return vf_info->mbx.ops.enqueue_tx(hw, &vf_info->mbx, msg); -} - /** * fm10k_iov_msg_msix_pf - Message handler for MSI-X request from VF * @hw: Pointer to hardware structure @@ -1857,59 +1844,14 @@ s32 fm10k_msg_err_pf(struct fm10k_hw *hw, u32 **results, return FM10K_SUCCESS; } +/* currently there is no shared 1588 timestamp handler */ + const struct fm10k_tlv_attr fm10k_1588_timestamp_msg_attr[] = { FM10K_TLV_ATTR_LE_STRUCT(FM10K_PF_ATTR_ID_1588_TIMESTAMP, sizeof(struct fm10k_swapi_1588_timestamp)), FM10K_TLV_ATTR_LAST }; -const struct fm10k_tlv_attr fm10k_tx_timestamp_mode_attr[] = { - FM10K_TLV_ATTR_LE_STRUCT(FM10K_PF_ATTR_ID_TIMESTAMP_MODE_RESP, - sizeof(struct fm10k_swapi_tx_timestamp_mode)), - FM10K_TLV_ATTR_LAST -}; - -/* currently there is no shared 1588 timestamp handler */ - -/** - * fm10k_request_tx_timestamp_mode_pf - Request a specific Tx timestamping mode - * @hw: pointer to hardware structure - * @glort: base resource tag for this request - * @mode: integer value indicating the requested mode - * - * This function will attempt to request a specific timestamp mode for the - * port so that it can receive Tx timestamp messages. - **/ -STATIC s32 fm10k_request_tx_timestamp_mode_pf(struct fm10k_hw *hw, - u16 glort, - u8 mode) -{ - struct fm10k_mbx_info *mbx = &hw->mbx; - u32 msg[3], timestamp_mode; - - DEBUGFUNC("fm10k_request_timestamp_mode_pf"); - - if (mode > FM10K_TIMESTAMP_MODE_PEP_TO_ANY) - return FM10K_ERR_PARAM; - - /* if glort is not valid return error */ - if (!fm10k_glort_valid_pf(hw, glort)) - return FM10K_ERR_PARAM; - - /* write timestamp mode as a single u32 value, - * lower 16 bits: glort - * upper 16 bits: mode - */ - timestamp_mode = ((u32)mode << 16) | glort; - - /* generate message requesting change to xcast mode */ - fm10k_tlv_msg_init(msg, FM10K_PF_MSG_ID_TX_TIMESTAMP_MODE); - fm10k_tlv_attr_put_u32(msg, FM10K_PF_ATTR_ID_TIMESTAMP_MODE_REQ, timestamp_mode); - - /* load onto outgoing mailbox */ - return mbx->ops.enqueue_tx(hw, mbx, msg); -} - /** * fm10k_adjust_systime_pf - Adjust systime frequency * @hw: pointer to hardware structure @@ -2033,7 +1975,6 @@ s32 fm10k_init_ops_pf(struct fm10k_hw *hw) mac->ops.get_host_state = &fm10k_get_host_state_pf; mac->ops.adjust_systime = &fm10k_adjust_systime_pf; mac->ops.read_systime = &fm10k_read_systime_pf; - mac->ops.request_tx_timestamp_mode = &fm10k_request_tx_timestamp_mode_pf; mac->max_msix_vectors = fm10k_get_pcie_msix_count_generic(hw); @@ -2045,7 +1986,6 @@ s32 fm10k_init_ops_pf(struct fm10k_hw *hw) iov->ops.set_lport = &fm10k_iov_set_lport_pf; iov->ops.reset_lport = &fm10k_iov_reset_lport_pf; iov->ops.update_stats = &fm10k_iov_update_stats_pf; - iov->ops.report_timestamp = &fm10k_iov_report_timestamp_pf; return fm10k_sm_mbx_init(hw, &hw->mbx, fm10k_msg_data_pf); } diff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h index 5a40d5b913..d6bc0cc0ce 100644 --- a/drivers/net/fm10k/base/fm10k_pf.h +++ b/drivers/net/fm10k/base/fm10k_pf.h @@ -57,7 +57,6 @@ enum fm10k_pf_tlv_msg_id_v1 { FM10K_PF_MSG_ID_SET_FLOW_STATE = 0x505, FM10K_PF_MSG_ID_GET_1588_INFO = 0x506, FM10K_PF_MSG_ID_1588_TIMESTAMP = 0x701, - FM10K_PF_MSG_ID_TX_TIMESTAMP_MODE = 0x702, }; enum fm10k_pf_tlv_attr_id_v1 { @@ -76,8 +75,6 @@ enum fm10k_pf_tlv_attr_id_v1 { FM10K_PF_ATTR_ID_PORT = 0x0C, FM10K_PF_ATTR_ID_UPDATE_PVID = 0x0D, FM10K_PF_ATTR_ID_1588_TIMESTAMP = 0x10, - FM10K_PF_ATTR_ID_TIMESTAMP_MODE_REQ = 0x11, - FM10K_PF_ATTR_ID_TIMESTAMP_MODE_RESP = 0x12, }; #define FM10K_MSG_LPORT_MAP_GLORT_SHIFT 0 @@ -118,11 +115,6 @@ struct fm10k_swapi_1588_timestamp { __le16 sglort; }; -struct fm10k_swapi_tx_timestamp_mode { - __le16 glort; - __le16 maxmode; - __le32 status; -}; #define FM10K_PF_MSG_LPORT_CREATE_HANDLER(func) \ FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_LPORT_CREATE, NULL, func) @@ -145,11 +137,6 @@ extern const struct fm10k_tlv_attr fm10k_err_msg_attr[]; #define FM10K_PF_MSG_ERR_HANDLER(msg, func) \ FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_##msg, fm10k_err_msg_attr, func) -extern const struct fm10k_tlv_attr fm10k_tx_timestamp_mode_attr[]; -#define FM10K_PF_MSG_TIMESTAMP_MODE_HANDLER(func) \ - FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_TX_TIMESTAMP_MODE, \ - fm10k_tx_timestamp_mode_attr, func) - extern const struct fm10k_tlv_attr fm10k_1588_timestamp_msg_attr[]; #define FM10K_PF_MSG_1588_TIMESTAMP_HANDLER(func) \ FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_1588_TIMESTAMP, \ diff --git a/drivers/net/fm10k/base/fm10k_type.h b/drivers/net/fm10k/base/fm10k_type.h index c3f1c63a75..59796326b4 100644 --- a/drivers/net/fm10k/base/fm10k_type.h +++ b/drivers/net/fm10k/base/fm10k_type.h @@ -676,7 +676,6 @@ struct fm10k_mac_ops { void (*request_lport_map)(struct fm10k_hw *); s32 (*adjust_systime)(struct fm10k_hw *, s32 ppb); u64 (*read_systime)(struct fm10k_hw *); - s32 (*request_tx_timestamp_mode)(struct fm10k_hw *, u16, u8); }; enum fm10k_mac_type { @@ -776,7 +775,6 @@ struct fm10k_iov_ops { s32 (*set_lport)(struct fm10k_hw *, struct fm10k_vf_info *, u16, u8); void (*reset_lport)(struct fm10k_hw *, struct fm10k_vf_info *); void (*update_stats)(struct fm10k_hw *, struct fm10k_hw_stats_q *, u16); - s32 (*report_timestamp)(struct fm10k_hw *, struct fm10k_vf_info *, u64); }; struct fm10k_iov_info { diff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c index 3fba007646..295bae4e83 100644 --- a/drivers/net/fm10k/base/fm10k_vf.c +++ b/drivers/net/fm10k/base/fm10k_vf.c @@ -497,11 +497,10 @@ STATIC s32 fm10k_update_xcast_mode_vf(struct fm10k_hw *hw, u16 glort, u8 mode) } const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = { - FM10K_TLV_ATTR_U64(FM10K_1588_MSG_TIMESTAMP), FM10K_TLV_ATTR_LAST }; -/* currently there is no shared 1588 timestamp handler */ +/* currently there is no shared 1588 message handler */ /** * fm10k_update_hw_stats_vf - Updates hardware related statistics of VF @@ -561,26 +560,6 @@ STATIC s32 fm10k_configure_dglort_map_vf(struct fm10k_hw *hw, return FM10K_SUCCESS; } -/** - * fm10k_request_tx_timestamp_mode_vf - Request Tx timestamp mode - * @hw: pointer to hardware structure - * @glort: glort to request Tx timestamps for - * @mode: timestamp mode to request - * - * This function takes the requested timestamp mode and verifies that it was - * requested as none since the VF cannot support receipt of Tx timestamps. - * - * If the mode is non-zero ERR_PARAM, else success - **/ -STATIC s32 fm10k_request_tx_timestamp_mode_vf(struct fm10k_hw *hw, - u16 glort, - u8 mode) -{ - UNREFERENCED_2PARAMETER(hw, glort); - - return mode ? FM10K_ERR_PARAM : FM10K_SUCCESS; -} - /** * fm10k_adjust_systime_vf - Adjust systime frequency * @hw: pointer to hardware structure @@ -670,7 +649,6 @@ s32 fm10k_init_ops_vf(struct fm10k_hw *hw) mac->ops.get_host_state = &fm10k_get_host_state_generic; mac->ops.adjust_systime = &fm10k_adjust_systime_vf; mac->ops.read_systime = &fm10k_read_systime_vf; - mac->ops.request_tx_timestamp_mode = &fm10k_request_tx_timestamp_mode_vf; mac->max_msix_vectors = fm10k_get_pcie_msix_count_generic(hw); diff --git a/drivers/net/fm10k/base/fm10k_vf.h b/drivers/net/fm10k/base/fm10k_vf.h index 04385428b7..333b0d9b79 100644 --- a/drivers/net/fm10k/base/fm10k_vf.h +++ b/drivers/net/fm10k/base/fm10k_vf.h @@ -63,7 +63,7 @@ enum fm10k_tlv_lport_state_attr_id { }; enum fm10k_tlv_1588_attr_id { - FM10K_1588_MSG_TIMESTAMP, + FM10K_1588_MSG_TIMESTAMP = 0, /* deprecated */ FM10K_1588_MSG_MAX }; -- 2.20.1