IB/hfi1: Add receive fault injection feature
[linux-block.git] / drivers / infiniband / hw / hfi1 / debugfs.h
index b6fb6814f1b881de72f4633143b9b822193c7072..70be5ca14736a0b793640b3645b3b7f726b563b5 100644 (file)
@@ -53,23 +53,68 @@ void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd);
 void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd);
 void hfi1_dbg_init(void);
 void hfi1_dbg_exit(void);
+
+#ifdef CONFIG_FAULT_INJECTION
+#include <linux/fault-inject.h>
+struct fault_opcode {
+       struct fault_attr attr;
+       struct dentry *dir;
+       bool fault_by_opcode;
+       u64 n_rxfaults[256];
+       u64 n_txfaults[256];
+       u8 opcode;
+       u8 mask;
+};
+
+struct fault_packet {
+       struct fault_attr attr;
+       struct dentry *dir;
+       bool fault_by_packet;
+       u64 n_faults;
+};
+
+bool hfi1_dbg_fault_opcode(struct rvt_qp *qp, u32 opcode, bool rx);
+bool hfi1_dbg_fault_packet(struct hfi1_packet *packet);
+#else
+static inline bool hfi1_dbg_fault_packet(struct hfi1_packet *packet)
+{
+       return false;
+}
+
+static inline bool hfi1_dbg_fault_opcode(struct rvt_qp *qp,
+                                        u32 opcode, bool rx)
+{
+       return false;
+}
+#endif
+
 #else
 static inline void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd)
 {
 }
 
-void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd)
+static inline void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd)
+{
+}
+
+static inline void hfi1_dbg_init(void)
 {
 }
 
-void hfi1_dbg_init(void)
+static inline void hfi1_dbg_exit(void)
 {
 }
 
-void hfi1_dbg_exit(void)
+static inline bool hfi1_dbg_fault_packet(struct hfi1_packet *packet)
 {
+       return false;
 }
 
+static inline bool hfi1_dbg_fault_opcode(struct rvt_qp *qp,
+                                        u32 opcode, bool rx)
+{
+       return false;
+}
 #endif
 
 #endif                          /* _HFI1_DEBUGFS_H */