|
110 | 110 |
|
111 | 111 | enum {
|
112 | 112 | HNS_ROCE_SUPPORT_RQ_RECORD_DB = 1 << 0,
|
| 113 | + HNS_ROCE_SUPPORT_SQ_RECORD_DB = 1 << 1, |
113 | 114 | };
|
114 | 115 |
|
115 | 116 | enum {
|
@@ -190,7 +191,8 @@ enum {
|
190 | 191 | HNS_ROCE_CAP_FLAG_REREG_MR = BIT(0),
|
191 | 192 | HNS_ROCE_CAP_FLAG_ROCE_V1_V2 = BIT(1),
|
192 | 193 | HNS_ROCE_CAP_FLAG_RQ_INLINE = BIT(2),
|
193 |
| - HNS_ROCE_CAP_FLAG_RECORD_DB = BIT(3) |
| 194 | + HNS_ROCE_CAP_FLAG_RECORD_DB = BIT(3), |
| 195 | + HNS_ROCE_CAP_FLAG_SQ_RECORD_DB = BIT(4), |
194 | 196 | };
|
195 | 197 |
|
196 | 198 | enum hns_roce_mtt_type {
|
@@ -385,6 +387,7 @@ struct hns_roce_db {
|
385 | 387 | struct hns_roce_user_db_page *user_page;
|
386 | 388 | } u;
|
387 | 389 | dma_addr_t dma;
|
| 390 | + void *virt_addr; |
388 | 391 | int index;
|
389 | 392 | int order;
|
390 | 393 | };
|
@@ -524,7 +527,9 @@ struct hns_roce_qp {
|
524 | 527 | struct hns_roce_buf hr_buf;
|
525 | 528 | struct hns_roce_wq rq;
|
526 | 529 | struct hns_roce_db rdb;
|
| 530 | + struct hns_roce_db sdb; |
527 | 531 | u8 rdb_en;
|
| 532 | + u8 sdb_en; |
528 | 533 | u32 doorbell_qpn;
|
529 | 534 | __le32 sq_signal_bits;
|
530 | 535 | u32 sq_next_wqe;
|
@@ -641,6 +646,8 @@ struct hns_roce_eq {
|
641 | 646 | int shift;
|
642 | 647 | dma_addr_t cur_eqe_ba;
|
643 | 648 | dma_addr_t nxt_eqe_ba;
|
| 649 | + int event_type; |
| 650 | + int sub_type; |
644 | 651 | };
|
645 | 652 |
|
646 | 653 | struct hns_roce_eq_table {
|
@@ -727,6 +734,14 @@ struct hns_roce_caps {
|
727 | 734 | u64 flags;
|
728 | 735 | };
|
729 | 736 |
|
| 737 | +struct hns_roce_work { |
| 738 | + struct hns_roce_dev *hr_dev; |
| 739 | + struct work_struct work; |
| 740 | + u32 qpn; |
| 741 | + int event_type; |
| 742 | + int sub_type; |
| 743 | +}; |
| 744 | + |
730 | 745 | struct hns_roce_hw {
|
731 | 746 | int (*reset)(struct hns_roce_dev *hr_dev, bool enable);
|
732 | 747 | int (*cmq_init)(struct hns_roce_dev *hr_dev);
|
@@ -819,6 +834,7 @@ struct hns_roce_dev {
|
819 | 834 | u32 tptr_size; /*only for hw v1*/
|
820 | 835 | const struct hns_roce_hw *hw;
|
821 | 836 | void *priv;
|
| 837 | + struct workqueue_struct *irq_workq; |
822 | 838 | };
|
823 | 839 |
|
824 | 840 | static inline struct hns_roce_dev *to_hr_dev(struct ib_device *ib_dev)
|
|
0 commit comments