|
@@ -225,6 +225,14 @@ static inline void __mlxsw_item_memcpy_to(char *buf, const char *src,
|
|
|
memcpy(&buf[offset], src, item->size.bytes);
|
|
|
}
|
|
|
|
|
|
+static inline char *__mlxsw_item_data(char *buf, const struct mlxsw_item *item,
|
|
|
+ unsigned short index)
|
|
|
+{
|
|
|
+ unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char));
|
|
|
+
|
|
|
+ return &buf[offset];
|
|
|
+}
|
|
|
+
|
|
|
static inline u16
|
|
|
__mlxsw_item_bit_array_offset(const struct mlxsw_item *item,
|
|
|
u16 index, u8 *shift)
|
|
@@ -468,6 +476,11 @@ mlxsw_##_type##_##_cname##_##_iname##_memcpy_to(char *buf, const char *src) \
|
|
|
{ \
|
|
|
__mlxsw_item_memcpy_to(buf, src, \
|
|
|
&__ITEM_NAME(_type, _cname, _iname), 0); \
|
|
|
+} \
|
|
|
+static inline char * \
|
|
|
+mlxsw_##_type##_##_cname##_##_iname##_data(char *buf) \
|
|
|
+{ \
|
|
|
+ return __mlxsw_item_data(buf, &__ITEM_NAME(_type, _cname, _iname), 0); \
|
|
|
}
|
|
|
|
|
|
#define MLXSW_ITEM_BUF_INDEXED(_type, _cname, _iname, _offset, _sizebytes, \
|
|
@@ -494,6 +507,12 @@ mlxsw_##_type##_##_cname##_##_iname##_memcpy_to(char *buf, \
|
|
|
{ \
|
|
|
__mlxsw_item_memcpy_to(buf, src, \
|
|
|
&__ITEM_NAME(_type, _cname, _iname), index); \
|
|
|
+} \
|
|
|
+static inline char * \
|
|
|
+mlxsw_##_type##_##_cname##_##_iname##_data(char *buf, unsigned short index) \
|
|
|
+{ \
|
|
|
+ return __mlxsw_item_data(buf, \
|
|
|
+ &__ITEM_NAME(_type, _cname, _iname), index); \
|
|
|
}
|
|
|
|
|
|
#define MLXSW_ITEM_BIT_ARRAY(_type, _cname, _iname, _offset, _sizebytes, \
|