Lines Matching refs:desc

54  * @desc:Array of structure field descriptions
55 * @desc_len:Number of entries in @desc
60 * controlled by the array of fields in @desc.
62 void ib_pack(const struct ib_field *desc,
70 if (desc[i].size_bits <= 32) {
76 shift = 32 - desc[i].offset_bits - desc[i].size_bits;
77 if (desc[i].struct_size_bytes)
78 val = value_read(desc[i].struct_offset_bytes,
79 desc[i].struct_size_bytes,
84 mask = cpu_to_be32(((1ull << desc[i].size_bits) - 1) << shift);
85 addr = (__be32 *) buf + desc[i].offset_words;
87 } else if (desc[i].size_bits <= 64) {
93 shift = 64 - desc[i].offset_bits - desc[i].size_bits;
94 if (desc[i].struct_size_bytes)
95 val = value_read(desc[i].struct_offset_bytes,
96 desc[i].struct_size_bytes,
101 mask = cpu_to_be64((~0ull >> (64 - desc[i].size_bits)) << shift);
102 addr = (__be64 *) ((__be32 *) buf + desc[i].offset_words);
105 if (desc[i].offset_bits % 8 ||
106 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) {
191 desc[i].field_name, desc[i].size_bits);
194 memcpy(structure + desc[i].struct_offset_bytes,
195 buf + desc[i].offset_words * 4 +
196 desc[i].offset_bits / 8,
197 desc[i].size_bits / 8);