The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/irdma/osdep.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
    3  *
    4  * Copyright (c) 2021 - 2022 Intel Corporation
    5  *
    6  * This software is available to you under a choice of one of two
    7  * licenses.  You may choose to be licensed under the terms of the GNU
    8  * General Public License (GPL) Version 2, available from the file
    9  * COPYING in the main directory of this source tree, or the
   10  * OpenFabrics.org BSD license below:
   11  *
   12  *   Redistribution and use in source and binary forms, with or
   13  *   without modification, are permitted provided that the following
   14  *   conditions are met:
   15  *
   16  *    - Redistributions of source code must retain the above
   17  *      copyright notice, this list of conditions and the following
   18  *      disclaimer.
   19  *
   20  *    - Redistributions in binary form must reproduce the above
   21  *      copyright notice, this list of conditions and the following
   22  *      disclaimer in the documentation and/or other materials
   23  *      provided with the distribution.
   24  *
   25  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   26  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   27  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   28  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
   29  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
   30  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   31  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   32  * SOFTWARE.
   33  */
   34 /*$FreeBSD$*/
   35 
   36 #ifndef _ICRDMA_OSDEP_H_
   37 #define _ICRDMA_OSDEP_H_
   38 
   39 #include <linux/dma-mapping.h>
   40 #include <linux/etherdevice.h>
   41 #include <linux/fs.h>
   42 #include <linux/if_ether.h>
   43 #include <linux/interrupt.h>
   44 #include <linux/io.h>
   45 #include <linux/jhash.h>
   46 #include <linux/list.h>
   47 #include <linux/log2.h>
   48 #include <linux/mutex.h>
   49 #include <linux/pci.h>
   50 #include <linux/random.h>
   51 #include <linux/spinlock.h>
   52 #include <linux/timer.h>
   53 #include <linux/workqueue.h>
   54 
   55 #include <sys/bus.h>
   56 #include <machine/bus.h>
   57 
   58 #define ATOMIC atomic_t
   59 #define IOMEM
   60 #define IRDMA_NTOHS(a) ntohs(a)
   61 #define MAKEMASK(m, s) ((m) << (s))
   62 #define OS_TIMER timer_list
   63 #define DECLARE_HASHTABLE(n, b) struct hlist_head (n)[1 << (b)]
   64 #define HASH_MIN(v, b) (sizeof(v) <= 4 ? hash_32(v, b) : hash_long(v, b))
   65 #define HASH_FOR_EACH_RCU(n, b, o, m)   for ((b) = 0, o = NULL; o == NULL && (b) < ARRAY_SIZE(n);\
   66                         (b)++)\
   67                 hlist_for_each_entry_rcu(o, &n[(b)], m)
   68 #define HASH_FOR_EACH_POSSIBLE_RCU(n, o, m, k)          \
   69         hlist_for_each_entry_rcu(o, &n[jhash(&k, sizeof(k), 0) >> (32 - ilog2(ARRAY_SIZE(n)))],\
   70                 m)
   71 #define HASH_FOR_EACH_POSSIBLE(n, o, m, k)              \
   72         hlist_for_each_entry(o, &n[jhash(&k, sizeof(k), 0) >> (32 - ilog2(ARRAY_SIZE(n)))],\
   73                 m)
   74 #define HASH_ADD_RCU(h, n, k) \
   75         hlist_add_head_rcu(n, &h[jhash(&k, sizeof(k), 0) >> (32 - ilog2(ARRAY_SIZE(h)))])
   76 #define HASH_DEL_RCU(tbl, node) hlist_del_rcu(node)
   77 #define HASH_ADD(h, n, k) \
   78         hlist_add_head(n, &h[jhash(&k, sizeof(k), 0) >> (32 - ilog2(ARRAY_SIZE(h)))])
   79 #define HASH_DEL(tbl, node) hlist_del(node)
   80 
   81 #define WQ_UNBOUND_MAX_ACTIVE max_t(int, 512, num_possible_cpus() * 4)
   82 #define if_addr_rlock(x)
   83 #define if_addr_runlock(x)
   84 
   85 /* constants */
   86 #define STATS_TIMER_DELAY 60000
   87 
   88 /* a couple of linux size defines */
   89 #define SZ_128     128
   90 #define SPEED_1000     1000
   91 #define SPEED_10000   10000
   92 #define SPEED_20000   20000
   93 #define SPEED_25000   25000
   94 #define SPEED_40000   40000
   95 #define SPEED_100000 100000
   96 
   97 #define irdma_mb()      mb()
   98 #define irdma_wmb()     wmb()
   99 #define irdma_get_virt_to_phy vtophys
  100 
  101 #define __aligned_u64 uint64_t __aligned(8)
  102 
  103 #define VLAN_PRIO_SHIFT 13
  104 
  105 /*
  106  * debug definition section
  107  */
  108 #define irdma_print(S, ...) printf("%s:%d "S, __FUNCTION__, __LINE__, ##__VA_ARGS__)
  109 #define irdma_debug_buf(dev, mask, desc, buf, size)                                                     \
  110 do {                                                                                                    \
  111         u32    i;                                                                                       \
  112         if (!((mask) & (dev)->debug_mask)) {                                                            \
  113                 break;                                                                                  \
  114         }                                                                                               \
  115         irdma_debug(dev, mask, "%s\n", desc);                                                           \
  116         irdma_debug(dev, mask, "starting address virt=%p phy=%lxh\n", buf, irdma_get_virt_to_phy(buf)); \
  117         for (i = 0; i < size ; i += 8)                                                                  \
  118                 irdma_debug(dev, mask, "index %03d val: %016lx\n", i, ((unsigned long *)buf)[i / 8]);   \
  119 } while(0)
  120 
  121 #define irdma_debug(h, m, s, ...)                                       \
  122 do {                                                                    \
  123         if (!(h)) {                                                     \
  124                 if ((m) == IRDMA_DEBUG_INIT)                            \
  125                         printf("irdma INIT " s, ##__VA_ARGS__); \
  126         } else if (((m) & (h)->debug_mask)) {                           \
  127                 printf("irdma " s, ##__VA_ARGS__);                      \
  128         }                                                               \
  129 } while (0)
  130 #define irdma_dev_err(a, b, ...) printf(b, ##__VA_ARGS__)
  131 #define irdma_dev_warn(a, b, ...) printf(b, ##__VA_ARGS__) /*dev_warn(a, b)*/
  132 #define irdma_dev_info(a, b, ...) printf(b, ##__VA_ARGS__)
  133 #define irdma_pr_warn printf
  134 #define ibdev_err(ibdev, fmt, ...)  printf("%s:"fmt, (ibdev)->name, ##__VA_ARGS__)
  135 
  136 #define dump_struct(s, sz, name)        \
  137 do {                            \
  138         unsigned char *a;       \
  139         printf("%s %u", (name), (unsigned int)(sz));                            \
  140         for (a = (unsigned char*)(s); a < (unsigned char *)(s) + (sz) ; a ++) { \
  141                 if ((u64)a % 8 == 0)            \
  142                         printf("\n%p ", a);     \
  143                 printf("%2x ", *a);             \
  144         }                       \
  145         printf("\n");           \
  146 }while(0)
  147 
  148 /*
  149  * debug definition end
  150  */
  151 
  152 typedef __be16 BE16;
  153 typedef __be32 BE32;
  154 typedef uintptr_t irdma_uintptr;
  155 
  156 struct irdma_hw;
  157 struct irdma_pci_f;
  158 struct irdma_sc_dev;
  159 struct irdma_sc_qp;
  160 struct irdma_sc_vsi;
  161 
  162 struct irdma_task_arg {
  163         struct irdma_device *iwdev;
  164         struct ice_rdma_peer *peer;
  165         atomic_t open_ongoing;
  166         atomic_t close_ongoing;
  167 };
  168 
  169 struct irdma_dev_ctx {
  170         bus_space_tag_t mem_bus_space_tag;
  171         bus_space_handle_t mem_bus_space_handle;
  172         bus_size_t mem_bus_space_size;
  173         void *dev;
  174         struct irdma_task_arg task_arg;
  175 };
  176 
  177 #define irdma_pr_info(fmt, args ...) printf("%s: WARN "fmt, __func__, ## args)
  178 #define irdma_pr_err(fmt, args ...) printf("%s: ERR "fmt, __func__, ## args)
  179 #define irdma_memcpy(a, b, c)  memcpy((a), (b), (c))
  180 #define irdma_memset(a, b, c)  memset((a), (b), (c))
  181 #define irdma_usec_delay(x) DELAY(x)
  182 #define mdelay(x) DELAY((x) * 1000)
  183 
  184 #define rt_tos2priority(tos) (tos >> 5)
  185 #define ah_attr_to_dmac(attr) ((attr).dmac)
  186 #define kc_ib_modify_qp_is_ok(cur_state, next_state, type, mask, ll) \
  187         ib_modify_qp_is_ok(cur_state, next_state, type, mask)
  188 #define kc_rdma_gid_attr_network_type(sgid_attr, gid_type, gid) \
  189         ib_gid_to_network_type(gid_type, gid)
  190 #define irdma_del_timer_compat(tt) del_timer((tt))
  191 #define IRDMA_TAILQ_FOREACH CK_STAILQ_FOREACH
  192 #define IRDMA_TAILQ_FOREACH_SAFE CK_STAILQ_FOREACH_SAFE
  193 #define between(a, b, c) (bool)(c-a >= b-a)
  194 
  195 #define rd32(a, reg)            irdma_rd32((a)->dev_context, (reg))
  196 #define wr32(a, reg, value)     irdma_wr32((a)->dev_context, (reg), (value))
  197 
  198 #define rd64(a, reg)            irdma_rd64((a)->dev_context, (reg))
  199 #define wr64(a, reg, value)     irdma_wr64((a)->dev_context, (reg), (value))
  200 #define db_wr32(value, a)       writel((value), (a))
  201 
  202 void *hw_to_dev(struct irdma_hw *hw);
  203 
  204 struct irdma_dma_mem {
  205         void  *va;
  206         u64    pa;
  207         bus_dma_tag_t tag;
  208         bus_dmamap_t map;
  209         bus_dma_segment_t seg;
  210         bus_size_t size;
  211         int    nseg;
  212         int    flags;
  213 };
  214 
  215 struct irdma_virt_mem {
  216         void  *va;
  217         u32    size;
  218 };
  219 
  220 struct irdma_dma_info {
  221         dma_addr_t *dmaaddrs;
  222 };
  223 
  224 struct list_head;
  225 u32 irdma_rd32(struct irdma_dev_ctx *dev_ctx, u32 reg);
  226 void irdma_wr32(struct irdma_dev_ctx *dev_ctx, u32 reg, u32 value);
  227 u64 irdma_rd64(struct irdma_dev_ctx *dev_ctx, u32 reg);
  228 void irdma_wr64(struct irdma_dev_ctx *dev_ctx, u32 reg, u64 value);
  229 
  230 void irdma_term_modify_qp(struct irdma_sc_qp *qp, u8 next_state, u8 term, u8 term_len);
  231 void irdma_terminate_done(struct irdma_sc_qp *qp, int timeout_occurred);
  232 void irdma_terminate_start_timer(struct irdma_sc_qp *qp);
  233 void irdma_terminate_del_timer(struct irdma_sc_qp *qp);
  234 
  235 void irdma_hw_stats_start_timer(struct irdma_sc_vsi *vsi);
  236 void irdma_hw_stats_stop_timer(struct irdma_sc_vsi *vsi);
  237 void irdma_send_ieq_ack(struct irdma_sc_qp *qp);
  238 
  239 u8* irdma_get_hw_addr(void *par);
  240 
  241 void irdma_unmap_vm_page_list(struct irdma_hw *hw, u64 *pg_arr, u32 pg_cnt);
  242 int irdma_map_vm_page_list(struct irdma_hw *hw, void *va,
  243                            u64 *pg_arr, u32 pg_cnt);
  244 
  245 struct ib_device *irdma_get_ibdev(struct irdma_sc_dev *dev);
  246 
  247 #endif /* _ICRDMA_OSDEP_H_ */

Cache object: 7b8b22aa9feb7b7d967b9717324aa524


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.