Lines Matching refs:ibd
90 struct hfi1_ibdev *ibd = (struct hfi1_ibdev *)s->private;
91 struct hfi1_devdata *dd = dd_from_dev(ibd);
111 if (!ibd->fault->n_rxfaults[i] && !ibd->fault->n_txfaults[i])
116 (unsigned long long)ibd->fault->n_rxfaults[i],
117 (unsigned long long)ibd->fault->n_txfaults[i]);
251 void hfi1_fault_exit_debugfs(struct hfi1_ibdev *ibd)
253 if (ibd->fault)
254 debugfs_remove_recursive(ibd->fault->dir);
255 kfree(ibd->fault);
256 ibd->fault = NULL;
259 int hfi1_fault_init_debugfs(struct hfi1_ibdev *ibd)
261 struct dentry *parent = ibd->hfi1_ibdev_dbg;
264 ibd->fault = kzalloc(sizeof(*ibd->fault), GFP_KERNEL);
265 if (!ibd->fault)
268 ibd->fault->attr.interval = 1;
269 ibd->fault->attr.require_end = ULONG_MAX;
270 ibd->fault->attr.stacktrace_depth = 32;
271 ibd->fault->attr.dname = NULL;
272 ibd->fault->attr.verbose = 0;
273 ibd->fault->enable = false;
274 ibd->fault->opcode = false;
275 ibd->fault->fault_skip = 0;
276 ibd->fault->skip = 0;
277 ibd->fault->direction = HFI1_FAULT_DIR_TXRX;
278 ibd->fault->suppress_err = false;
279 bitmap_zero(ibd->fault->opcodes,
280 sizeof(ibd->fault->opcodes) * BITS_PER_BYTE);
283 fault_create_debugfs_attr("fault", parent, &ibd->fault->attr);
285 kfree(ibd->fault);
286 ibd->fault = NULL;
289 ibd->fault->dir = fault_dir;
291 debugfs_create_file("fault_stats", 0444, fault_dir, ibd,
293 debugfs_create_bool("enable", 0600, fault_dir, &ibd->fault->enable);
295 &ibd->fault->suppress_err);
297 &ibd->fault->opcode);
298 debugfs_create_file("opcodes", 0600, fault_dir, ibd->fault,
301 &ibd->fault->fault_skip);
303 &ibd->fault->fault_skip_usec);
304 debugfs_create_u8("direction", 0600, fault_dir, &ibd->fault->direction);
309 bool hfi1_dbg_fault_suppress_err(struct hfi1_ibdev *ibd)
311 if (ibd->fault)
312 return ibd->fault->suppress_err;
316 static bool __hfi1_should_fault(struct hfi1_ibdev *ibd, u32 opcode,
321 if (!ibd->fault || !ibd->fault->enable)
323 if (!(ibd->fault->direction & direction))
325 if (ibd->fault->opcode) {
326 if (bitmap_empty(ibd->fault->opcodes,
327 (sizeof(ibd->fault->opcodes) *
330 if (!(test_bit(opcode, ibd->fault->opcodes)))
333 if (ibd->fault->fault_skip_usec &&
334 time_before(jiffies, ibd->fault->skip_usec))
336 if (ibd->fault->fault_skip && ibd->fault->skip) {
337 ibd->fault->skip--;
340 ret = should_fail(&ibd->fault->attr, 1);
342 ibd->fault->skip = ibd->fault->fault_skip;
343 ibd->fault->skip_usec = jiffies +
344 usecs_to_jiffies(ibd->fault->fault_skip_usec);
351 struct hfi1_ibdev *ibd = to_idev(qp->ibqp.device);
353 if (__hfi1_should_fault(ibd, opcode, HFI1_FAULT_DIR_TX)) {
355 ibd->fault->n_txfaults[opcode]++;
363 struct hfi1_ibdev *ibd = &packet->rcd->dd->verbs_dev;
365 if (__hfi1_should_fault(ibd, packet->opcode, HFI1_FAULT_DIR_RX)) {
367 ibd->fault->n_rxfaults[packet->opcode]++;