Lines Matching refs:desc

53  * @desc:Array of structure field descriptions
54 * @desc_len:Number of entries in @desc
59 * controlled by the array of fields in @desc.
61 void ib_pack(const struct ib_field *desc,
69 if (desc[i].size_bits <= 32) {
75 shift = 32 - desc[i].offset_bits - desc[i].size_bits;
76 if (desc[i].struct_size_bytes)
77 val = value_read(desc[i].struct_offset_bytes,
78 desc[i].struct_size_bytes,
83 mask = cpu_to_be32(((1ull << desc[i].size_bits) - 1) << shift);
84 addr = (__be32 *) buf + desc[i].offset_words;
86 } else if (desc[i].size_bits <= 64) {
92 shift = 64 - desc[i].offset_bits - desc[i].size_bits;
93 if (desc[i].struct_size_bytes)
94 val = value_read(desc[i].struct_offset_bytes,
95 desc[i].struct_size_bytes,
100 mask = cpu_to_be64((~0ull >> (64 - desc[i].size_bits)) << shift);
101 addr = (__be64 *) ((__be32 *) buf + desc[i].offset_words);
104 if (desc[i].offset_bits % 8 ||
105 desc[i].size_bits % 8) {
108 desc[i].field_name, desc[i].size_bits);
111 if (desc[i].struct_size_bytes)
112 memcpy(buf + desc[i].offset_words * 4 +
113 desc[i].offset_bits / 8,
114 structure + desc[i].struct_offset_bytes,
115 desc[i].size_bits / 8);
117 memset(buf + desc[i].offset_words * 4 +
118 desc[i].offset_bits / 8,
120 desc[i].size_bits / 8);
140 * @desc:Array of structure field descriptions
141 * @desc_len:Number of entries in @desc
146 * controlled by the array of fields in @desc.
148 void ib_unpack(const struct ib_field *desc,
156 if (!desc[i].struct_size_bytes)
159 if (desc[i].size_bits <= 32) {
165 shift = 32 - desc[i].offset_bits - desc[i].size_bits;
166 mask = ((1ull << desc[i].size_bits) - 1) << shift;
167 addr = (__be32 *) buf + desc[i].offset_words;
169 value_write(desc[i].struct_offset_bytes,
170 desc[i].struct_size_bytes,
173 } else if (desc[i].size_bits <= 64) {
179 shift = 64 - desc[i].offset_bits - desc[i].size_bits;
180 mask = (~0ull >> (64 - desc[i].size_bits)) << shift;
181 addr = (__be64 *) buf + desc[i].offset_words;
183 value_write(desc[i].struct_offset_bytes,
184 desc[i].struct_size_bytes,
188 if (desc[i].offset_bits % 8 ||
189 desc[i].size_bits % 8) {
192 desc[i].field_name, desc[i].size_bits);
195 memcpy(structure + desc[i].struct_offset_bytes,
196 buf + desc[i].offset_words * 4 +
197 desc[i].offset_bits / 8,
198 desc[i].size_bits / 8);