1/* SPDX-License-Identifier: GPL-2.0 */
2/* Marvell RVU Admin Function Devlink
3 *
4 * Copyright (C) 2020 Marvell.
5 *
6 */
7
8#ifndef RVU_DEVLINK_H
9#define RVU_DEVLINK_H
10
11#define RVU_REPORTERS(_name) \
12static const struct devlink_health_reporter_ops rvu_ ## _name ## _reporter_ops = { \
13 .name = #_name, \
14 .recover = rvu_ ## _name ## _recover, \
15 .dump = rvu_ ## _name ## _dump, \
16}
17
18enum npa_af_rvu_health {
19 NPA_AF_RVU_INTR,
20 NPA_AF_RVU_GEN,
21 NPA_AF_RVU_ERR,
22 NPA_AF_RVU_RAS,
23};
24
25struct rvu_npa_event_ctx {
26 u64 npa_af_rvu_int;
27 u64 npa_af_rvu_gen;
28 u64 npa_af_rvu_err;
29 u64 npa_af_rvu_ras;
30};
31
32struct rvu_npa_health_reporters {
33 struct rvu_npa_event_ctx *npa_event_ctx;
34 struct devlink_health_reporter *rvu_hw_npa_intr_reporter;
35 struct work_struct intr_work;
36 struct devlink_health_reporter *rvu_hw_npa_gen_reporter;
37 struct work_struct gen_work;
38 struct devlink_health_reporter *rvu_hw_npa_err_reporter;
39 struct work_struct err_work;
40 struct devlink_health_reporter *rvu_hw_npa_ras_reporter;
41 struct work_struct ras_work;
42};
43
44enum nix_af_rvu_health {
45 NIX_AF_RVU_INTR,
46 NIX_AF_RVU_GEN,
47 NIX_AF_RVU_ERR,
48 NIX_AF_RVU_RAS,
49};
50
51struct rvu_nix_event_ctx {
52 u64 nix_af_rvu_int;
53 u64 nix_af_rvu_gen;
54 u64 nix_af_rvu_err;
55 u64 nix_af_rvu_ras;
56};
57
58struct rvu_nix_health_reporters {
59 struct rvu_nix_event_ctx *nix_event_ctx;
60 struct devlink_health_reporter *rvu_hw_nix_intr_reporter;
61 struct work_struct intr_work;
62 struct devlink_health_reporter *rvu_hw_nix_gen_reporter;
63 struct work_struct gen_work;
64 struct devlink_health_reporter *rvu_hw_nix_err_reporter;
65 struct work_struct err_work;
66 struct devlink_health_reporter *rvu_hw_nix_ras_reporter;
67 struct work_struct ras_work;
68};
69
70struct rvu_devlink {
71 struct devlink *dl;
72 struct rvu *rvu;
73 struct workqueue_struct *devlink_wq;
74 struct rvu_npa_health_reporters *rvu_npa_health_reporter;
75 struct rvu_nix_health_reporters *rvu_nix_health_reporter;
76};
77
78/* Devlink APIs */
79int rvu_register_dl(struct rvu *rvu);
80void rvu_unregister_dl(struct rvu *rvu);
81
82#endif /* RVU_DEVLINK_H */
83

source code of linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.h