mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-19 17:58:41 +07:00
mlxsw: item: Add MLXSW_ITEM_BUF_INDEXED helper
Add missing item helper which allows to access char bufs on multiple offsets. This is needed by SFD and SFN register definitions. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7b0989b5bc
commit
d64b159253
@ -171,15 +171,21 @@ static inline void __mlxsw_item_set64(char *buf, struct mlxsw_item *item,
|
||||
}
|
||||
|
||||
static inline void __mlxsw_item_memcpy_from(char *buf, char *dst,
|
||||
struct mlxsw_item *item)
|
||||
struct mlxsw_item *item,
|
||||
unsigned short index)
|
||||
{
|
||||
memcpy(dst, &buf[item->offset], item->size.bytes);
|
||||
unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char));
|
||||
|
||||
memcpy(dst, &buf[offset], item->size.bytes);
|
||||
}
|
||||
|
||||
static inline void __mlxsw_item_memcpy_to(char *buf, const char *src,
|
||||
struct mlxsw_item *item)
|
||||
struct mlxsw_item *item,
|
||||
unsigned short index)
|
||||
{
|
||||
memcpy(&buf[item->offset], src, item->size.bytes);
|
||||
unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char));
|
||||
|
||||
memcpy(&buf[offset], src, item->size.bytes);
|
||||
}
|
||||
|
||||
static inline u16
|
||||
@ -371,12 +377,40 @@ static struct mlxsw_item __ITEM_NAME(_type, _cname, _iname) = { \
|
||||
static inline void \
|
||||
mlxsw_##_type##_##_cname##_##_iname##_memcpy_from(char *buf, char *dst) \
|
||||
{ \
|
||||
__mlxsw_item_memcpy_from(buf, dst, &__ITEM_NAME(_type, _cname, _iname));\
|
||||
__mlxsw_item_memcpy_from(buf, dst, \
|
||||
&__ITEM_NAME(_type, _cname, _iname), 0); \
|
||||
} \
|
||||
static inline void \
|
||||
mlxsw_##_type##_##_cname##_##_iname##_memcpy_to(char *buf, const char *src) \
|
||||
{ \
|
||||
__mlxsw_item_memcpy_to(buf, src, &__ITEM_NAME(_type, _cname, _iname)); \
|
||||
__mlxsw_item_memcpy_to(buf, src, \
|
||||
&__ITEM_NAME(_type, _cname, _iname), 0); \
|
||||
}
|
||||
|
||||
#define MLXSW_ITEM_BUF_INDEXED(_type, _cname, _iname, _offset, _sizebytes, \
|
||||
_step, _instepoffset) \
|
||||
static struct mlxsw_item __ITEM_NAME(_type, _cname, _iname) = { \
|
||||
.offset = _offset, \
|
||||
.step = _step, \
|
||||
.in_step_offset = _instepoffset, \
|
||||
.size = {.bytes = _sizebytes,}, \
|
||||
.name = #_type "_" #_cname "_" #_iname, \
|
||||
}; \
|
||||
static inline void \
|
||||
mlxsw_##_type##_##_cname##_##_iname##_memcpy_from(char *buf, \
|
||||
unsigned short index, \
|
||||
char *dst) \
|
||||
{ \
|
||||
__mlxsw_item_memcpy_from(buf, dst, \
|
||||
&__ITEM_NAME(_type, _cname, _iname), index); \
|
||||
} \
|
||||
static inline void \
|
||||
mlxsw_##_type##_##_cname##_##_iname##_memcpy_to(char *buf, \
|
||||
unsigned short index, \
|
||||
const char *src) \
|
||||
{ \
|
||||
__mlxsw_item_memcpy_to(buf, src, \
|
||||
&__ITEM_NAME(_type, _cname, _iname), index); \
|
||||
}
|
||||
|
||||
#define MLXSW_ITEM_BIT_ARRAY(_type, _cname, _iname, _offset, _sizebytes, \
|
||||
|
Loading…
Reference in New Issue
Block a user