hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/qlogic/qed/qed_ptp.c
....@@ -1,40 +1,16 @@
1
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
12 /* QLogic qed NIC Driver
23 * Copyright (c) 2015-2017 QLogic Corporation
3
- *
4
- * This software is available to you under a choice of one of two
5
- * licenses. You may choose to be licensed under the terms of the GNU
6
- * General Public License (GPL) Version 2, available from the file
7
- * COPYING in the main directory of this source tree, or the
8
- * OpenIB.org BSD license below:
9
- *
10
- * Redistribution and use in source and binary forms, with or
11
- * without modification, are permitted provided that the following
12
- * conditions are met:
13
- *
14
- * - Redistributions of source code must retain the above
15
- * copyright notice, this list of conditions and the following
16
- * disclaimer.
17
- *
18
- * - Redistributions in binary form must reproduce the above
19
- * copyright notice, this list of conditions and the following
20
- * disclaimer in the documentation and /or other materials
21
- * provided with the distribution.
22
- *
23
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
- * SOFTWARE.
4
+ * Copyright (c) 2019-2020 Marvell International Ltd.
315 */
6
+
327 #include <linux/types.h>
338 #include "qed.h"
349 #include "qed_dev_api.h"
3510 #include "qed_hw.h"
3611 #include "qed_l2.h"
3712 #include "qed_mcp.h"
13
+#include "qed_ptp.h"
3814 #include "qed_reg_addr.h"
3915
4016 /* 16 nano second time quantas to wait before making a Drift adjustment */
....@@ -44,10 +20,12 @@
4420 /* Add/subtract the Adjustment_Value when making a Drift adjustment */
4521 #define QED_DRIFT_CNTR_DIRECTION_SHIFT 31
4622 #define QED_TIMESTAMP_MASK BIT(16)
23
+/* Param mask for Hardware to detect/timestamp the L2/L4 unicast PTP packets */
24
+#define QED_PTP_UCAST_PARAM_MASK 0x70F
4725
4826 static enum qed_resc_lock qed_ptcdev_to_resc(struct qed_hwfn *p_hwfn)
4927 {
50
- switch (qed_device_get_port_id(p_hwfn->cdev)) {
28
+ switch (MFW_PORT(p_hwfn)) {
5129 case 0:
5230 return QED_RESC_LOCK_PTP_PORT0;
5331 case 1:
....@@ -157,7 +135,8 @@
157135 *timestamp = 0;
158136 val = qed_rd(p_hwfn, p_ptt, NIG_REG_TX_LLH_PTP_BUF_SEQID);
159137 if (!(val & QED_TIMESTAMP_MASK)) {
160
- DP_INFO(p_hwfn, "Invalid Tx timestamp, buf_seqid = %d\n", val);
138
+ DP_VERBOSE(p_hwfn, QED_MSG_DEBUG,
139
+ "Invalid Tx timestamp, buf_seqid = %08x\n", val);
161140 return -EINVAL;
162141 }
163142
....@@ -242,7 +221,8 @@
242221 return -EINVAL;
243222 }
244223
245
- qed_wr(p_hwfn, p_ptt, NIG_REG_LLH_PTP_PARAM_MASK, 0);
224
+ qed_wr(p_hwfn, p_ptt, NIG_REG_LLH_PTP_PARAM_MASK,
225
+ QED_PTP_UCAST_PARAM_MASK);
246226 qed_wr(p_hwfn, p_ptt, NIG_REG_LLH_PTP_RULE_MASK, rule_mask);
247227 qed_wr(p_hwfn, p_ptt, NIG_REG_RX_PTP_EN, enable_cfg);
248228
....@@ -252,7 +232,8 @@
252232 qed_wr(p_hwfn, p_ptt, NIG_REG_TX_LLH_PTP_RULE_MASK, 0x3FFF);
253233 } else {
254234 qed_wr(p_hwfn, p_ptt, NIG_REG_TX_PTP_EN, enable_cfg);
255
- qed_wr(p_hwfn, p_ptt, NIG_REG_TX_LLH_PTP_PARAM_MASK, 0);
235
+ qed_wr(p_hwfn, p_ptt, NIG_REG_TX_LLH_PTP_PARAM_MASK,
236
+ QED_PTP_UCAST_PARAM_MASK);
256237 qed_wr(p_hwfn, p_ptt, NIG_REG_TX_LLH_PTP_RULE_MASK, rule_mask);
257238 }
258239