162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */ 262306a36Sopenharmony_ci/* Copyright (c) 2015 - 2021 Intel Corporation */ 362306a36Sopenharmony_ci#ifndef IRDMA_OSDEP_H 462306a36Sopenharmony_ci#define IRDMA_OSDEP_H 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/pci.h> 762306a36Sopenharmony_ci#include <linux/bitfield.h> 862306a36Sopenharmony_ci#include <linux/net/intel/iidc.h> 962306a36Sopenharmony_ci#include <crypto/hash.h> 1062306a36Sopenharmony_ci#include <rdma/ib_verbs.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define STATS_TIMER_DELAY 60000 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cistruct irdma_dma_info { 1562306a36Sopenharmony_ci dma_addr_t *dmaaddrs; 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct irdma_dma_mem { 1962306a36Sopenharmony_ci void *va; 2062306a36Sopenharmony_ci dma_addr_t pa; 2162306a36Sopenharmony_ci u32 size; 2262306a36Sopenharmony_ci} __packed; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct irdma_virt_mem { 2562306a36Sopenharmony_ci void *va; 2662306a36Sopenharmony_ci u32 size; 2762306a36Sopenharmony_ci} __packed; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistruct irdma_sc_vsi; 3062306a36Sopenharmony_cistruct irdma_sc_dev; 3162306a36Sopenharmony_cistruct irdma_sc_qp; 3262306a36Sopenharmony_cistruct irdma_puda_buf; 3362306a36Sopenharmony_cistruct irdma_puda_cmpl_info; 3462306a36Sopenharmony_cistruct irdma_update_sds_info; 3562306a36Sopenharmony_cistruct irdma_hmc_fcn_info; 3662306a36Sopenharmony_cistruct irdma_manage_vf_pble_info; 3762306a36Sopenharmony_cistruct irdma_hw; 3862306a36Sopenharmony_cistruct irdma_pci_f; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cistruct ib_device *to_ibdev(struct irdma_sc_dev *dev); 4162306a36Sopenharmony_civoid irdma_ieq_mpa_crc_ae(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp); 4262306a36Sopenharmony_cienum irdma_status_code irdma_vf_wait_vchnl_resp(struct irdma_sc_dev *dev); 4362306a36Sopenharmony_cibool irdma_vf_clear_to_send(struct irdma_sc_dev *dev); 4462306a36Sopenharmony_civoid irdma_add_dev_ref(struct irdma_sc_dev *dev); 4562306a36Sopenharmony_civoid irdma_put_dev_ref(struct irdma_sc_dev *dev); 4662306a36Sopenharmony_ciint irdma_ieq_check_mpacrc(struct shash_desc *desc, void *addr, u32 len, 4762306a36Sopenharmony_ci u32 val); 4862306a36Sopenharmony_cistruct irdma_sc_qp *irdma_ieq_get_qp(struct irdma_sc_dev *dev, 4962306a36Sopenharmony_ci struct irdma_puda_buf *buf); 5062306a36Sopenharmony_civoid irdma_send_ieq_ack(struct irdma_sc_qp *qp); 5162306a36Sopenharmony_civoid irdma_ieq_update_tcpip_info(struct irdma_puda_buf *buf, u16 len, 5262306a36Sopenharmony_ci u32 seqnum); 5362306a36Sopenharmony_civoid irdma_free_hash_desc(struct shash_desc *hash_desc); 5462306a36Sopenharmony_ciint irdma_init_hash_desc(struct shash_desc **hash_desc); 5562306a36Sopenharmony_ciint irdma_puda_get_tcpip_info(struct irdma_puda_cmpl_info *info, 5662306a36Sopenharmony_ci struct irdma_puda_buf *buf); 5762306a36Sopenharmony_ciint irdma_cqp_sds_cmd(struct irdma_sc_dev *dev, 5862306a36Sopenharmony_ci struct irdma_update_sds_info *info); 5962306a36Sopenharmony_ciint irdma_cqp_manage_hmc_fcn_cmd(struct irdma_sc_dev *dev, 6062306a36Sopenharmony_ci struct irdma_hmc_fcn_info *hmcfcninfo, 6162306a36Sopenharmony_ci u16 *pmf_idx); 6262306a36Sopenharmony_ciint irdma_cqp_query_fpm_val_cmd(struct irdma_sc_dev *dev, 6362306a36Sopenharmony_ci struct irdma_dma_mem *val_mem, u8 hmc_fn_id); 6462306a36Sopenharmony_ciint irdma_cqp_commit_fpm_val_cmd(struct irdma_sc_dev *dev, 6562306a36Sopenharmony_ci struct irdma_dma_mem *val_mem, u8 hmc_fn_id); 6662306a36Sopenharmony_ciint irdma_alloc_query_fpm_buf(struct irdma_sc_dev *dev, 6762306a36Sopenharmony_ci struct irdma_dma_mem *mem); 6862306a36Sopenharmony_civoid *irdma_remove_cqp_head(struct irdma_sc_dev *dev); 6962306a36Sopenharmony_civoid irdma_term_modify_qp(struct irdma_sc_qp *qp, u8 next_state, u8 term, 7062306a36Sopenharmony_ci u8 term_len); 7162306a36Sopenharmony_civoid irdma_terminate_done(struct irdma_sc_qp *qp, int timeout_occurred); 7262306a36Sopenharmony_civoid irdma_terminate_start_timer(struct irdma_sc_qp *qp); 7362306a36Sopenharmony_civoid irdma_terminate_del_timer(struct irdma_sc_qp *qp); 7462306a36Sopenharmony_civoid irdma_hw_stats_start_timer(struct irdma_sc_vsi *vsi); 7562306a36Sopenharmony_civoid irdma_hw_stats_stop_timer(struct irdma_sc_vsi *vsi); 7662306a36Sopenharmony_civoid wr32(struct irdma_hw *hw, u32 reg, u32 val); 7762306a36Sopenharmony_ciu32 rd32(struct irdma_hw *hw, u32 reg); 7862306a36Sopenharmony_ciu64 rd64(struct irdma_hw *hw, u32 reg); 7962306a36Sopenharmony_ciint irdma_map_vm_page_list(struct irdma_hw *hw, void *va, dma_addr_t *pg_dma, 8062306a36Sopenharmony_ci u32 pg_cnt); 8162306a36Sopenharmony_civoid irdma_unmap_vm_page_list(struct irdma_hw *hw, dma_addr_t *pg_dma, u32 pg_cnt); 8262306a36Sopenharmony_ci#endif /* IRDMA_OSDEP_H */ 83