aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/ocrdma/ocrdma.h
diff options
context:
space:
mode:
authorSelvin Xavier <selvin.xavier@emulex.com>2014-02-04 01:27:07 -0500
committerRoland Dreier <roland@purestorage.com>2014-04-03 11:30:05 -0400
commita51f06e1679e2abac2e8a817884e60edc18c5c86 (patch)
tree633ac6e242bb3cd9ea3dba6ff6b6834565002807 /drivers/infiniband/hw/ocrdma/ocrdma.h
parentbbc5ec524eecf8af95b81c3c1d15cbc672568b4e (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.h61
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
51struct ocrdma_dev_attr { 58struct 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
96struct ocrdma_dma_mem {
97 void *va;
98 dma_addr_t pa;
99 u32 size;
100};
101
89struct ocrdma_pbl { 102struct 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
167struct ocrdma_stats {
168 u8 type;
169 struct ocrdma_dev *dev;
170};
171
172struct stats_mem {
173 struct ocrdma_mqe mqe;
174 void *va;
175 dma_addr_t pa;
176 u32 size;
177 char *debugfs_mem;
178};
179
180struct phy_info {
181 u16 auto_speeds_supported;
182 u16 fixed_speeds_supported;
183 u16 phy_type;
184 u16 interface_type;
185};
186
154struct ocrdma_dev { 187struct 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
206struct ocrdma_cq { 256struct 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
487static 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
437static inline int ocrdma_get_eq_table_index(struct ocrdma_dev *dev, 498static inline int ocrdma_get_eq_table_index(struct ocrdma_dev *dev,
438 int eqid) 499 int eqid)
439{ 500{