diff options
author | Selvin Xavier <selvin.xavier@emulex.com> | 2014-02-04 01:27:07 -0500 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-04-03 11:30:05 -0400 |
commit | a51f06e1679e2abac2e8a817884e60edc18c5c86 (patch) | |
tree | 633ac6e242bb3cd9ea3dba6ff6b6834565002807 /drivers/infiniband/hw/ocrdma/ocrdma.h | |
parent | bbc5ec524eecf8af95b81c3c1d15cbc672568b4e (diff) |
RDMA/ocrdma: Query controller information
Issue mailbox commands to query ocrdma controller information and phy
information and print them while adding ocrdma device.
Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/ocrdma/ocrdma.h')
-rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma.h b/drivers/infiniband/hw/ocrdma/ocrdma.h index 4ea8496c7107..3042c87a74ba 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma.h +++ b/drivers/infiniband/hw/ocrdma/ocrdma.h | |||
@@ -44,10 +44,17 @@ | |||
44 | #define OCRDMA_ROCE_DRV_DESC "Emulex OneConnect RoCE Driver" | 44 | #define OCRDMA_ROCE_DRV_DESC "Emulex OneConnect RoCE Driver" |
45 | #define OCRDMA_NODE_DESC "Emulex OneConnect RoCE HCA" | 45 | #define OCRDMA_NODE_DESC "Emulex OneConnect RoCE HCA" |
46 | 46 | ||
47 | #define OC_NAME_SH OCRDMA_NODE_DESC "(Skyhawk)" | ||
48 | #define OC_NAME_UNKNOWN OCRDMA_NODE_DESC "(Unknown)" | ||
49 | |||
50 | #define OC_SKH_DEVICE_PF 0x720 | ||
51 | #define OC_SKH_DEVICE_VF 0x728 | ||
47 | #define OCRDMA_MAX_AH 512 | 52 | #define OCRDMA_MAX_AH 512 |
48 | 53 | ||
49 | #define OCRDMA_UVERBS(CMD_NAME) (1ull << IB_USER_VERBS_CMD_##CMD_NAME) | 54 | #define OCRDMA_UVERBS(CMD_NAME) (1ull << IB_USER_VERBS_CMD_##CMD_NAME) |
50 | 55 | ||
56 | #define convert_to_64bit(lo, hi) ((u64)hi << 32 | (u64)lo) | ||
57 | |||
51 | struct ocrdma_dev_attr { | 58 | struct ocrdma_dev_attr { |
52 | u8 fw_ver[32]; | 59 | u8 fw_ver[32]; |
53 | u32 vendor_id; | 60 | u32 vendor_id; |
@@ -86,6 +93,12 @@ struct ocrdma_dev_attr { | |||
86 | u8 num_ird_pages; | 93 | u8 num_ird_pages; |
87 | }; | 94 | }; |
88 | 95 | ||
96 | struct ocrdma_dma_mem { | ||
97 | void *va; | ||
98 | dma_addr_t pa; | ||
99 | u32 size; | ||
100 | }; | ||
101 | |||
89 | struct ocrdma_pbl { | 102 | struct ocrdma_pbl { |
90 | void *va; | 103 | void *va; |
91 | dma_addr_t pa; | 104 | dma_addr_t pa; |
@@ -151,6 +164,26 @@ struct ocrdma_mr { | |||
151 | struct ocrdma_hw_mr hwmr; | 164 | struct ocrdma_hw_mr hwmr; |
152 | }; | 165 | }; |
153 | 166 | ||
167 | struct ocrdma_stats { | ||
168 | u8 type; | ||
169 | struct ocrdma_dev *dev; | ||
170 | }; | ||
171 | |||
172 | struct stats_mem { | ||
173 | struct ocrdma_mqe mqe; | ||
174 | void *va; | ||
175 | dma_addr_t pa; | ||
176 | u32 size; | ||
177 | char *debugfs_mem; | ||
178 | }; | ||
179 | |||
180 | struct phy_info { | ||
181 | u16 auto_speeds_supported; | ||
182 | u16 fixed_speeds_supported; | ||
183 | u16 phy_type; | ||
184 | u16 interface_type; | ||
185 | }; | ||
186 | |||
154 | struct ocrdma_dev { | 187 | struct ocrdma_dev { |
155 | struct ib_device ibdev; | 188 | struct ib_device ibdev; |
156 | struct ocrdma_dev_attr attr; | 189 | struct ocrdma_dev_attr attr; |
@@ -194,6 +227,9 @@ struct ocrdma_dev { | |||
194 | struct mqe_ctx mqe_ctx; | 227 | struct mqe_ctx mqe_ctx; |
195 | 228 | ||
196 | struct be_dev_info nic_info; | 229 | struct be_dev_info nic_info; |
230 | struct phy_info phy; | ||
231 | char model_number[32]; | ||
232 | u32 hba_port_num; | ||
197 | 233 | ||
198 | struct list_head entry; | 234 | struct list_head entry; |
199 | struct rcu_head rcu; | 235 | struct rcu_head rcu; |
@@ -201,6 +237,20 @@ struct ocrdma_dev { | |||
201 | struct ocrdma_mr *stag_arr[OCRDMA_MAX_STAG]; | 237 | struct ocrdma_mr *stag_arr[OCRDMA_MAX_STAG]; |
202 | u16 pvid; | 238 | u16 pvid; |
203 | u32 asic_id; | 239 | u32 asic_id; |
240 | |||
241 | ulong last_stats_time; | ||
242 | struct mutex stats_lock; /* provide synch for debugfs operations */ | ||
243 | struct stats_mem stats_mem; | ||
244 | struct ocrdma_stats rsrc_stats; | ||
245 | struct ocrdma_stats rx_stats; | ||
246 | struct ocrdma_stats wqe_stats; | ||
247 | struct ocrdma_stats tx_stats; | ||
248 | struct ocrdma_stats db_err_stats; | ||
249 | struct ocrdma_stats tx_qp_err_stats; | ||
250 | struct ocrdma_stats rx_qp_err_stats; | ||
251 | struct ocrdma_stats tx_dbg_stats; | ||
252 | struct ocrdma_stats rx_dbg_stats; | ||
253 | struct dentry *dir; | ||
204 | }; | 254 | }; |
205 | 255 | ||
206 | struct ocrdma_cq { | 256 | struct ocrdma_cq { |
@@ -434,6 +484,17 @@ static inline int ocrdma_resolve_dmac(struct ocrdma_dev *dev, | |||
434 | return 0; | 484 | return 0; |
435 | } | 485 | } |
436 | 486 | ||
487 | static inline char *hca_name(struct ocrdma_dev *dev) | ||
488 | { | ||
489 | switch (dev->nic_info.pdev->device) { | ||
490 | case OC_SKH_DEVICE_PF: | ||
491 | case OC_SKH_DEVICE_VF: | ||
492 | return OC_NAME_SH; | ||
493 | default: | ||
494 | return OC_NAME_UNKNOWN; | ||
495 | } | ||
496 | } | ||
497 | |||
437 | static inline int ocrdma_get_eq_table_index(struct ocrdma_dev *dev, | 498 | static inline int ocrdma_get_eq_table_index(struct ocrdma_dev *dev, |
438 | int eqid) | 499 | int eqid) |
439 | { | 500 | { |