1 | /* Broadcom NetXtreme-C/E network driver. |
2 | * |
3 | * Copyright (c) 2017 Broadcom Limited |
4 | * |
5 | * This program is free software; you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by |
7 | * the Free Software Foundation. |
8 | */ |
9 | |
10 | #ifndef BNXT_DEVLINK_H |
11 | #define BNXT_DEVLINK_H |
12 | |
13 | /* Struct to hold housekeeping info needed by devlink interface */ |
14 | struct bnxt_dl { |
15 | struct bnxt *bp; /* back ptr to the controlling dev */ |
16 | bool remote_reset; |
17 | }; |
18 | |
19 | static inline struct bnxt *bnxt_get_bp_from_dl(struct devlink *dl) |
20 | { |
21 | return ((struct bnxt_dl *)devlink_priv(devlink: dl))->bp; |
22 | } |
23 | |
24 | static inline void bnxt_dl_remote_reload(struct bnxt *bp) |
25 | { |
26 | devlink_remote_reload_actions_performed(devlink: bp->dl, limit: 0, |
27 | BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) | |
28 | BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE)); |
29 | } |
30 | |
31 | static inline bool bnxt_dl_get_remote_reset(struct devlink *dl) |
32 | { |
33 | return ((struct bnxt_dl *)devlink_priv(devlink: dl))->remote_reset; |
34 | } |
35 | |
36 | static inline void bnxt_dl_set_remote_reset(struct devlink *dl, bool value) |
37 | { |
38 | ((struct bnxt_dl *)devlink_priv(devlink: dl))->remote_reset = value; |
39 | } |
40 | |
41 | #define NVM_OFF_MSIX_VEC_PER_PF_MAX 108 |
42 | #define NVM_OFF_MSIX_VEC_PER_PF_MIN 114 |
43 | #define NVM_OFF_IGNORE_ARI 164 |
44 | #define NVM_OFF_DIS_GRE_VER_CHECK 171 |
45 | #define NVM_OFF_ENABLE_SRIOV 401 |
46 | #define NVM_OFF_NVM_CFG_VER 602 |
47 | |
48 | #define BNXT_NVM_CFG_VER_BITS 8 |
49 | #define BNXT_NVM_CFG_VER_BYTES 1 |
50 | |
51 | #define BNXT_MSIX_VEC_MAX 512 |
52 | #define BNXT_MSIX_VEC_MIN_MAX 128 |
53 | |
54 | enum bnxt_nvm_dir_type { |
55 | BNXT_NVM_SHARED_CFG = 40, |
56 | BNXT_NVM_PORT_CFG, |
57 | BNXT_NVM_FUNC_CFG, |
58 | }; |
59 | |
60 | struct bnxt_dl_nvm_param { |
61 | u16 id; |
62 | u16 offset; |
63 | u16 dir_type; |
64 | u16 nvm_num_bits; |
65 | u8 dl_num_bytes; |
66 | }; |
67 | |
68 | enum bnxt_dl_version_type { |
69 | BNXT_VERSION_FIXED, |
70 | BNXT_VERSION_RUNNING, |
71 | BNXT_VERSION_STORED, |
72 | }; |
73 | |
74 | void bnxt_devlink_health_fw_report(struct bnxt *bp); |
75 | void bnxt_dl_health_fw_status_update(struct bnxt *bp, bool healthy); |
76 | void bnxt_dl_health_fw_recovery_done(struct bnxt *bp); |
77 | void bnxt_dl_fw_reporters_create(struct bnxt *bp); |
78 | void bnxt_dl_fw_reporters_destroy(struct bnxt *bp); |
79 | int bnxt_dl_register(struct bnxt *bp); |
80 | void bnxt_dl_unregister(struct bnxt *bp); |
81 | |
82 | #endif /* BNXT_DEVLINK_H */ |
83 | |