__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/*
* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved.
*/
#ifndef _IBA_DEFS_H_
#define _IBA_DEFS_H_
#include <linux/kernel.h>
#include <linux/bitfield.h>
#include <linux/unaligned.h>
static inline u32 _iba_get8(const u8 *ptr)
{
return *ptr;
}
static inline void _iba_set8(u8 *ptr, u32 mask, u32 prep_value)
{
*ptr = (*ptr & ~mask) | prep_value;
}
static inline u16 _iba_get16(const __be16 *ptr)
{
return be16_to_cpu(*ptr);
}
static inline void _iba_set16(__be16 *ptr, u16 mask, u16 prep_value)
{
*ptr = cpu_to_be16((be16_to_cpu(*ptr) & ~mask) | prep_value);
}
static inline u32 _iba_get32(const __be32 *ptr)
{
return be32_to_cpu(*ptr);
}
static inline void _iba_set32(__be32 *ptr, u32 mask, u32 prep_value)
{
*ptr = cpu_to_be32((be32_to_cpu(*ptr) & ~mask) | prep_value);
}
static inline u64 _iba_get64(const __be64 *ptr)
{
/*
* The mads are constructed so that 32 bit and smaller are naturally
* aligned, everything larger has a max alignment of 4 bytes.
*/
return be64_to_cpu(get_unaligned(ptr));
}
static inline void _iba_set64(__be64 *ptr, u64 mask, u64 prep_value)
{
put_unaligned(cpu_to_be64((_iba_get64(ptr) & ~mask) | prep_value), ptr);
}
#define _IBA_SET(field_struct, field_offset, field_mask, num_bits, ptr, value) \
({ \
field_struct *_ptr = ptr; \
_iba_set##num_bits((void *)_ptr + (field_offset), field_mask, \
FIELD_PREP(field_mask, value)); \
})
#define IBA_SET(field, ptr, value) _IBA_SET(field, ptr, value)
#define _IBA_GET_MEM_PTR(field_struct, field_offset, type, num_bits, ptr) \
({ \
field_struct *_ptr = ptr; \
(type *)((void *)_ptr + (field_offset)); \
})
#define IBA_GET_MEM_PTR(field, ptr) _IBA_GET_MEM_PTR(field, ptr)
/* FIXME: A set should always set the entire field, meaning we should zero the trailing bytes */
#define _IBA_SET_MEM(field_struct, field_offset, type, num_bits, ptr, in, \
bytes) \
({ \
const type *_in_ptr = in; \
WARN_ON(bytes * 8 > num_bits); \
if (in && bytes) \
memcpy(_IBA_GET_MEM_PTR(field_struct, field_offset, \
type, num_bits, ptr), \
_in_ptr, bytes); \
})
#define IBA_SET_MEM(field, ptr, in, bytes) _IBA_SET_MEM(field, ptr, in, bytes)
#define _IBA_GET(field_struct, field_offset, field_mask, num_bits, ptr) \
({ \
const field_struct *_ptr = ptr; \
(u##num_bits) FIELD_GET( \
field_mask, _iba_get##num_bits((const void *)_ptr + \
(field_offset))); \
})
#define IBA_GET(field, ptr) _IBA_GET(field, ptr)
#define _IBA_GET_MEM(field_struct, field_offset, type, num_bits, ptr, out, \
bytes) \
({ \
type *_out_ptr = out; \
WARN_ON(bytes * 8 > num_bits); \
if (out && bytes) \
memcpy(_out_ptr, \
_IBA_GET_MEM_PTR(field_struct, field_offset, \
type, num_bits, ptr), \
bytes); \
})
#define IBA_GET_MEM(field, ptr, out, bytes) _IBA_GET_MEM(field, ptr, out, bytes)
/*
* The generated list becomes the parameters to the macros, the order is:
* - struct this applies to
* - starting offset of the max
* - GENMASK or GENMASK_ULL in CPU order
* - The width of data the mask operations should work on, in bits
*/
/*
* Extraction using a tabular description like table 106. bit_offset is from
* the Byte[Bit] notation.
*/
#define IBA_FIELD_BLOC(field_struct, byte_offset, bit_offset, num_bits) \
field_struct, byte_offset, \
GENMASK(7 - (bit_offset), 7 - (bit_offset) - (num_bits - 1)), \
8
#define IBA_FIELD8_LOC(field_struct, byte_offset, num_bits) \
IBA_FIELD_BLOC(field_struct, byte_offset, 0, num_bits)
#define IBA_FIELD16_LOC(field_struct, byte_offset, num_bits) \
field_struct, (byte_offset)&0xFFFE, \
GENMASK(15 - (((byte_offset) % 2) * 8), \
15 - (((byte_offset) % 2) * 8) - (num_bits - 1)), \
16
#define IBA_FIELD32_LOC(field_struct, byte_offset, num_bits) \
field_struct, (byte_offset)&0xFFFC, \
GENMASK(31 - (((byte_offset) % 4) * 8), \
31 - (((byte_offset) % 4) * 8) - (num_bits - 1)), \
32
#define IBA_FIELD64_LOC(field_struct, byte_offset) \
field_struct, byte_offset, GENMASK_ULL(63, 0), 64
/*
* In IBTA spec, everything that is more than 64bits is multiple
* of bytes without leftover bits.
*/
#define IBA_FIELD_MLOC(field_struct, byte_offset, num_bits, type) \
field_struct, byte_offset, type, num_bits
#endif /* _IBA_DEFS_H_ */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| ib.h | File | 2.07 KB | 0644 |
|
| ib_addr.h | File | 7.16 KB | 0644 |
|
| ib_cache.h | File | 3.59 KB | 0644 |
|
| ib_cm.h | File | 16.73 KB | 0644 |
|
| ib_hdrs.h | File | 6.83 KB | 0644 |
|
| ib_mad.h | File | 24.58 KB | 0644 |
|
| ib_marshall.h | File | 685 B | 0644 |
|
| ib_pack.h | File | 7.81 KB | 0644 |
|
| ib_pma.h | File | 4.17 KB | 0644 |
|
| ib_sa.h | File | 19.53 KB | 0644 |
|
| ib_smi.h | File | 4.49 KB | 0644 |
|
| ib_sysfs.h | File | 1.23 KB | 0644 |
|
| ib_umem.h | File | 6.82 KB | 0644 |
|
| ib_umem_odp.h | File | 3.39 KB | 0644 |
|
| ib_verbs.h | File | 144.17 KB | 0644 |
|
| iba.h | File | 5.51 KB | 0644 |
|
| ibta_vol1_c12.h | File | 12.94 KB | 0644 |
|
| iw_cm.h | File | 6.49 KB | 0644 |
|
| iw_portmap.h | File | 2.19 KB | 0644 |
|
| lag.h | File | 530 B | 0644 |
|
| mr_pool.h | File | 568 B | 0644 |
|
| opa_addr.h | File | 2.39 KB | 0644 |
|
| opa_port_info.h | File | 13.43 KB | 0644 |
|
| opa_smi.h | File | 3 KB | 0644 |
|
| opa_vnic.h | File | 1.99 KB | 0644 |
|
| rdma_cm.h | File | 13.12 KB | 0644 |
|
| rdma_cm_ib.h | File | 797 B | 0644 |
|
| rdma_counter.h | File | 1.88 KB | 0644 |
|
| rdma_netlink.h | File | 4.32 KB | 0644 |
|
| rdma_vt.h | File | 14.22 KB | 0644 |
|
| rdmavt_cq.h | File | 1.74 KB | 0644 |
|
| rdmavt_mr.h | File | 3.94 KB | 0644 |
|
| rdmavt_qp.h | File | 28.04 KB | 0644 |
|
| restrack.h | File | 4.35 KB | 0644 |
|
| rw.h | File | 2.22 KB | 0644 |
|
| signature.h | File | 2.9 KB | 0644 |
|
| tid_rdma_defs.h | File | 2.05 KB | 0644 |
|
| uverbs_ioctl.h | File | 32.83 KB | 0644 |
|
| uverbs_named_ioctl.h | File | 4.72 KB | 0644 |
|
| uverbs_std_types.h | File | 5.24 KB | 0644 |
|
| uverbs_types.h | File | 6.96 KB | 0644 |
|