root/drivers/infiniband/hw/ocrdma/ocrdma_hw.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ocrdma_cpu_to_le32
  2. ocrdma_le32_to_cpu
  3. ocrdma_copy_cpu_to_le32
  4. ocrdma_copy_le32_to_cpu
  5. ocrdma_get_db_addr

   1 /* This file is part of the Emulex RoCE Device Driver for
   2  * RoCE (RDMA over Converged Ethernet) adapters.
   3  * Copyright (C) 2012-2015 Emulex. All rights reserved.
   4  * EMULEX and SLI are trademarks of Emulex.
   5  * www.emulex.com
   6  *
   7  * This software is available to you under a choice of one of two licenses.
   8  * You may choose to be licensed under the terms of the GNU General Public
   9  * License (GPL) Version 2, available from the file COPYING in the main
  10  * directory of this source tree, or the BSD license below:
  11  *
  12  * Redistribution and use in source and binary forms, with or without
  13  * modification, are permitted provided that the following conditions
  14  * are met:
  15  *
  16  * - Redistributions of source code must retain the above copyright notice,
  17  *   this list of conditions and the following disclaimer.
  18  *
  19  * - Redistributions in binary form must reproduce the above copyright
  20  *   notice, this list of conditions and the following disclaimer in
  21  *   the documentation and/or other materials provided with the distribution.
  22  *
  23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  24  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,THE
  25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  26  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
  27  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  30  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  32  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  33  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34  *
  35  * Contact Information:
  36  * linux-drivers@emulex.com
  37  *
  38  * Emulex
  39  * 3333 Susan Street
  40  * Costa Mesa, CA 92626
  41  */
  42 
  43 #ifndef __OCRDMA_HW_H__
  44 #define __OCRDMA_HW_H__
  45 
  46 #include "ocrdma_sli.h"
  47 
  48 static inline void ocrdma_cpu_to_le32(void *dst, u32 len)
  49 {
  50 #ifdef __BIG_ENDIAN
  51         int i = 0;
  52         u32 *src_ptr = dst;
  53         u32 *dst_ptr = dst;
  54         for (; i < (len / 4); i++)
  55                 *(dst_ptr + i) = cpu_to_le32p(src_ptr + i);
  56 #endif
  57 }
  58 
  59 static inline void ocrdma_le32_to_cpu(void *dst, u32 len)
  60 {
  61 #ifdef __BIG_ENDIAN
  62         int i = 0;
  63         u32 *src_ptr = dst;
  64         u32 *dst_ptr = dst;
  65         for (; i < (len / sizeof(u32)); i++)
  66                 *(dst_ptr + i) = le32_to_cpu(*(src_ptr + i));
  67 #endif
  68 }
  69 
  70 static inline void ocrdma_copy_cpu_to_le32(void *dst, void *src, u32 len)
  71 {
  72 #ifdef __BIG_ENDIAN
  73         int i = 0;
  74         u32 *src_ptr = src;
  75         u32 *dst_ptr = dst;
  76         for (; i < (len / sizeof(u32)); i++)
  77                 *(dst_ptr + i) = cpu_to_le32p(src_ptr + i);
  78 #else
  79         memcpy(dst, src, len);
  80 #endif
  81 }
  82 
  83 static inline void ocrdma_copy_le32_to_cpu(void *dst, void *src, u32 len)
  84 {
  85 #ifdef __BIG_ENDIAN
  86         int i = 0;
  87         u32 *src_ptr = src;
  88         u32 *dst_ptr = dst;
  89         for (; i < len / sizeof(u32); i++)
  90                 *(dst_ptr + i) = le32_to_cpu(*(src_ptr + i));
  91 #else
  92         memcpy(dst, src, len);
  93 #endif
  94 }
  95 
  96 static inline u64 ocrdma_get_db_addr(struct ocrdma_dev *dev, u32 pdid)
  97 {
  98         return dev->nic_info.unmapped_db + (pdid * dev->nic_info.db_page_size);
  99 }
 100 
 101 int ocrdma_init_hw(struct ocrdma_dev *);
 102 void ocrdma_cleanup_hw(struct ocrdma_dev *);
 103 
 104 enum ib_qp_state get_ibqp_state(enum ocrdma_qp_state qps);
 105 void ocrdma_ring_cq_db(struct ocrdma_dev *, u16 cq_id, bool armed,
 106                        bool solicited, u16 cqe_popped);
 107 
 108 /* verbs specific mailbox commands */
 109 int ocrdma_mbx_get_link_speed(struct ocrdma_dev *dev, u8 *lnk_speed,
 110                               u8 *lnk_st);
 111 int ocrdma_query_config(struct ocrdma_dev *,
 112                         struct ocrdma_mbx_query_config *config);
 113 
 114 int ocrdma_mbx_alloc_pd(struct ocrdma_dev *, struct ocrdma_pd *);
 115 int ocrdma_mbx_dealloc_pd(struct ocrdma_dev *, struct ocrdma_pd *);
 116 
 117 int ocrdma_mbx_alloc_lkey(struct ocrdma_dev *, struct ocrdma_hw_mr *hwmr,
 118                           u32 pd_id, int addr_check);
 119 int ocrdma_mbx_dealloc_lkey(struct ocrdma_dev *, int fmr, u32 lkey);
 120 
 121 int ocrdma_reg_mr(struct ocrdma_dev *, struct ocrdma_hw_mr *hwmr,
 122                         u32 pd_id, int acc);
 123 int ocrdma_mbx_create_cq(struct ocrdma_dev *, struct ocrdma_cq *,
 124                                 int entries, int dpp_cq, u16 pd_id);
 125 void ocrdma_mbx_destroy_cq(struct ocrdma_dev *dev, struct ocrdma_cq *cq);
 126 
 127 int ocrdma_mbx_create_qp(struct ocrdma_qp *, struct ib_qp_init_attr *attrs,
 128                          u8 enable_dpp_cq, u16 dpp_cq_id, u16 *dpp_offset,
 129                          u16 *dpp_credit_lmt);
 130 int ocrdma_mbx_modify_qp(struct ocrdma_dev *, struct ocrdma_qp *,
 131                          struct ib_qp_attr *attrs, int attr_mask);
 132 int ocrdma_mbx_query_qp(struct ocrdma_dev *, struct ocrdma_qp *,
 133                         struct ocrdma_qp_params *param);
 134 int ocrdma_mbx_destroy_qp(struct ocrdma_dev *, struct ocrdma_qp *);
 135 int ocrdma_mbx_create_srq(struct ocrdma_dev *, struct ocrdma_srq *,
 136                           struct ib_srq_init_attr *,
 137                           struct ocrdma_pd *);
 138 int ocrdma_mbx_modify_srq(struct ocrdma_srq *, struct ib_srq_attr *);
 139 int ocrdma_mbx_query_srq(struct ocrdma_srq *, struct ib_srq_attr *);
 140 void ocrdma_mbx_destroy_srq(struct ocrdma_dev *dev, struct ocrdma_srq *srq);
 141 
 142 int ocrdma_alloc_av(struct ocrdma_dev *dev, struct ocrdma_ah *ah);
 143 void ocrdma_free_av(struct ocrdma_dev *dev, struct ocrdma_ah *ah);
 144 
 145 int ocrdma_qp_state_change(struct ocrdma_qp *, enum ib_qp_state new_state,
 146                             enum ib_qp_state *old_ib_state);
 147 bool ocrdma_is_qp_in_sq_flushlist(struct ocrdma_cq *, struct ocrdma_qp *);
 148 bool ocrdma_is_qp_in_rq_flushlist(struct ocrdma_cq *, struct ocrdma_qp *);
 149 void ocrdma_flush_qp(struct ocrdma_qp *);
 150 int ocrdma_get_irq(struct ocrdma_dev *dev, struct ocrdma_eq *eq);
 151 
 152 int ocrdma_mbx_rdma_stats(struct ocrdma_dev *, bool reset);
 153 char *port_speed_string(struct ocrdma_dev *dev);
 154 void ocrdma_init_service_level(struct ocrdma_dev *);
 155 void ocrdma_alloc_pd_pool(struct ocrdma_dev *dev);
 156 void ocrdma_free_pd_range(struct ocrdma_dev *dev);
 157 void ocrdma_update_link_state(struct ocrdma_dev *dev, u8 lstate);
 158 
 159 #endif                          /* __OCRDMA_HW_H__ */

/* [<][>][^][v][top][bottom][index][help] */