osdep.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */
  2. /* Copyright (c) 2015 - 2021 Intel Corporation */
  3. #ifndef IRDMA_OSDEP_H
  4. #define IRDMA_OSDEP_H
  5. #include <linux/pci.h>
  6. #include <linux/bitfield.h>
  7. #include <linux/net/intel/iidc.h>
  8. #include <crypto/hash.h>
  9. #include <rdma/ib_verbs.h>
  10. #define STATS_TIMER_DELAY 60000
  11. struct irdma_dma_info {
  12. dma_addr_t *dmaaddrs;
  13. };
  14. struct irdma_dma_mem {
  15. void *va;
  16. dma_addr_t pa;
  17. u32 size;
  18. } __packed;
  19. struct irdma_virt_mem {
  20. void *va;
  21. u32 size;
  22. } __packed;
  23. struct irdma_sc_vsi;
  24. struct irdma_sc_dev;
  25. struct irdma_sc_qp;
  26. struct irdma_puda_buf;
  27. struct irdma_puda_cmpl_info;
  28. struct irdma_update_sds_info;
  29. struct irdma_hmc_fcn_info;
  30. struct irdma_manage_vf_pble_info;
  31. struct irdma_hw;
  32. struct irdma_pci_f;
  33. struct ib_device *to_ibdev(struct irdma_sc_dev *dev);
  34. void irdma_ieq_mpa_crc_ae(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp);
  35. enum irdma_status_code irdma_vf_wait_vchnl_resp(struct irdma_sc_dev *dev);
  36. bool irdma_vf_clear_to_send(struct irdma_sc_dev *dev);
  37. void irdma_add_dev_ref(struct irdma_sc_dev *dev);
  38. void irdma_put_dev_ref(struct irdma_sc_dev *dev);
  39. int irdma_ieq_check_mpacrc(struct shash_desc *desc, void *addr, u32 len,
  40. u32 val);
  41. struct irdma_sc_qp *irdma_ieq_get_qp(struct irdma_sc_dev *dev,
  42. struct irdma_puda_buf *buf);
  43. void irdma_send_ieq_ack(struct irdma_sc_qp *qp);
  44. void irdma_ieq_update_tcpip_info(struct irdma_puda_buf *buf, u16 len,
  45. u32 seqnum);
  46. void irdma_free_hash_desc(struct shash_desc *hash_desc);
  47. int irdma_init_hash_desc(struct shash_desc **hash_desc);
  48. int irdma_puda_get_tcpip_info(struct irdma_puda_cmpl_info *info,
  49. struct irdma_puda_buf *buf);
  50. int irdma_cqp_sds_cmd(struct irdma_sc_dev *dev,
  51. struct irdma_update_sds_info *info);
  52. int irdma_cqp_manage_hmc_fcn_cmd(struct irdma_sc_dev *dev,
  53. struct irdma_hmc_fcn_info *hmcfcninfo,
  54. u16 *pmf_idx);
  55. int irdma_cqp_query_fpm_val_cmd(struct irdma_sc_dev *dev,
  56. struct irdma_dma_mem *val_mem, u8 hmc_fn_id);
  57. int irdma_cqp_commit_fpm_val_cmd(struct irdma_sc_dev *dev,
  58. struct irdma_dma_mem *val_mem, u8 hmc_fn_id);
  59. int irdma_alloc_query_fpm_buf(struct irdma_sc_dev *dev,
  60. struct irdma_dma_mem *mem);
  61. void *irdma_remove_cqp_head(struct irdma_sc_dev *dev);
  62. void irdma_term_modify_qp(struct irdma_sc_qp *qp, u8 next_state, u8 term,
  63. u8 term_len);
  64. void irdma_terminate_done(struct irdma_sc_qp *qp, int timeout_occurred);
  65. void irdma_terminate_start_timer(struct irdma_sc_qp *qp);
  66. void irdma_terminate_del_timer(struct irdma_sc_qp *qp);
  67. void irdma_hw_stats_start_timer(struct irdma_sc_vsi *vsi);
  68. void irdma_hw_stats_stop_timer(struct irdma_sc_vsi *vsi);
  69. void wr32(struct irdma_hw *hw, u32 reg, u32 val);
  70. u32 rd32(struct irdma_hw *hw, u32 reg);
  71. u64 rd64(struct irdma_hw *hw, u32 reg);
  72. int irdma_map_vm_page_list(struct irdma_hw *hw, void *va, dma_addr_t *pg_dma,
  73. u32 pg_cnt);
  74. void irdma_unmap_vm_page_list(struct irdma_hw *hw, dma_addr_t *pg_dma, u32 pg_cnt);
  75. #endif /* IRDMA_OSDEP_H */