Lines Matching refs:item

26 __mlxsw_item_offset(const struct mlxsw_item *item, unsigned short index,
29 BUG_ON(index && !item->step);
30 if (item->offset % typesize != 0 ||
31 item->step % typesize != 0 ||
32 item->in_step_offset % typesize != 0) {
33 pr_err("mlxsw: item bug (name=%s,offset=%x,step=%x,in_step_offset=%x,typesize=%zx)\n",
34 item->name, item->offset, item->step,
35 item->in_step_offset, typesize);
39 return ((item->offset + item->step * index + item->in_step_offset) /
44 const struct mlxsw_item *item,
47 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u8));
52 tmp >>= item->shift;
53 tmp &= GENMASK(item->size.bits - 1, 0);
54 if (item->no_real_shift)
55 tmp <<= item->shift;
59 static inline void __mlxsw_item_set8(char *buf, const struct mlxsw_item *item,
62 unsigned int offset = __mlxsw_item_offset(item, index,
65 u8 mask = GENMASK(item->size.bits - 1, 0) << item->shift;
68 if (!item->no_real_shift)
69 val <<= item->shift;
78 const struct mlxsw_item *item,
81 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u16));
86 tmp >>= item->shift;
87 tmp &= GENMASK(item->size.bits - 1, 0);
88 if (item->no_real_shift)
89 tmp <<= item->shift;
93 static inline void __mlxsw_item_set16(char *buf, const struct mlxsw_item *item,
96 unsigned int offset = __mlxsw_item_offset(item, index,
99 u16 mask = GENMASK(item->size.bits - 1, 0) << item->shift;
102 if (!item->no_real_shift)
103 val <<= item->shift;
112 const struct mlxsw_item *item,
115 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u32));
120 tmp >>= item->shift;
121 tmp &= GENMASK(item->size.bits - 1, 0);
122 if (item->no_real_shift)
123 tmp <<= item->shift;
127 static inline void __mlxsw_item_set32(char *buf, const struct mlxsw_item *item,
130 unsigned int offset = __mlxsw_item_offset(item, index,
133 u32 mask = GENMASK(item->size.bits - 1, 0) << item->shift;
136 if (!item->no_real_shift)
137 val <<= item->shift;
146 const struct mlxsw_item *item,
149 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u64));
154 tmp >>= item->shift;
155 tmp &= GENMASK_ULL(item->size.bits - 1, 0);
156 if (item->no_real_shift)
157 tmp <<= item->shift;
161 static inline void __mlxsw_item_set64(char *buf, const struct mlxsw_item *item,
164 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u64));
166 u64 mask = GENMASK_ULL(item->size.bits - 1, 0) << item->shift;
169 if (!item->no_real_shift)
170 val <<= item->shift;
179 const struct mlxsw_item *item,
182 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char));
184 memcpy(dst, &buf[offset], item->size.bytes);
188 const struct mlxsw_item *item,
191 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char));
193 memcpy(&buf[offset], src, item->size.bytes);
196 static inline char *__mlxsw_item_data(char *buf, const struct mlxsw_item *item,
199 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char));
205 __mlxsw_item_bit_array_offset(const struct mlxsw_item *item,
212 BUG_ON(index && !item->element_size);
213 if (item->offset % sizeof(u32) != 0 ||
214 BITS_PER_BYTE % item->element_size != 0) {
215 pr_err("mlxsw: item bug (name=%s,offset=%x,element_size=%x)\n",
216 item->name, item->offset, item->element_size);
220 max_index = (item->size.bytes << 3) / item->element_size - 1;
222 offset = be_index * item->element_size >> 3;
223 in_byte_index = index % (BITS_PER_BYTE / item->element_size);
224 *shift = in_byte_index * item->element_size;
226 return item->offset + offset;
230 const struct mlxsw_item *item,
234 u16 offset = __mlxsw_item_bit_array_offset(item, index, &shift);
238 tmp &= GENMASK(item->element_size - 1, 0);
243 const struct mlxsw_item *item,
247 u16 offset = __mlxsw_item_bit_array_offset(item, index, &shift);
248 u8 mask = GENMASK(item->element_size - 1, 0) << shift;
263 * _iname: item name within the container