fm10k/base: remove 1588 VF API
authorWang Xiao W <xiao.w.wang@intel.com>
Thu, 10 Sep 2015 04:38:33 +0000 (12:38 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 7 Oct 2015 11:25:07 +0000 (13:25 +0200)
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 <xiao.w.wang@intel.com>
drivers/net/fm10k/base/fm10k_pf.c
drivers/net/fm10k/base/fm10k_pf.h
drivers/net/fm10k/base/fm10k_type.h
drivers/net/fm10k/base/fm10k_vf.c
drivers/net/fm10k/base/fm10k_vf.h

index cc85adb..a198063 100644 (file)
@@ -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);
 }
index 5a40d5b..d6bc0cc 100644 (file)
@@ -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, \
index c3f1c63..5979632 100644 (file)
@@ -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 {
index 3fba007..295bae4 100644 (file)
@@ -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);
 
index 0438542..333b0d9 100644 (file)
@@ -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
 };