• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/ofed/drivers/infiniband/core/

Lines Matching refs:desc

58  * @desc:Array of structure field descriptions
59 * @desc_len:Number of entries in @desc
64 * controlled by the array of fields in @desc.
66 void ib_pack(const struct ib_field *desc,
74 if (desc[i].size_bits <= 32) {
80 shift = 32 - desc[i].offset_bits - desc[i].size_bits;
81 if (desc[i].struct_size_bytes)
82 val = value_read(desc[i].struct_offset_bytes,
83 desc[i].struct_size_bytes,
88 mask = cpu_to_be32(((1ull << desc[i].size_bits) - 1) << shift);
89 addr = (__be32 *) buf + desc[i].offset_words;
91 } else if (desc[i].size_bits <= 64) {
97 shift = 64 - desc[i].offset_bits - desc[i].size_bits;
98 if (desc[i].struct_size_bytes)
99 val = value_read(desc[i].struct_offset_bytes,
100 desc[i].struct_size_bytes,
105 mask = cpu_to_be64((~0ull >> (64 - desc[i].size_bits)) << shift);
106 addr = (__be64 *) ((__be32 *) buf + desc[i].offset_words);
109 if (desc[i].offset_bits % 8 ||
110 desc[i].size_bits % 8) {
112 desc[i].field_name, desc[i].size_bits);
115 if (desc[i].struct_size_bytes)
116 memcpy((char *)buf + desc[i].offset_words * 4 +
117 desc[i].offset_bits / 8,
118 (char *)structure + desc[i].struct_offset_bytes,
119 desc[i].size_bits / 8);
121 memset((char *)buf + desc[i].offset_words * 4 +
122 desc[i].offset_bits / 8,
124 desc[i].size_bits / 8);
144 * @desc:Array of structure field descriptions
145 * @desc_len:Number of entries in @desc
150 * controlled by the array of fields in @desc.
152 void ib_unpack(const struct ib_field *desc,
160 if (!desc[i].struct_size_bytes)
163 if (desc[i].size_bits <= 32) {
169 shift = 32 - desc[i].offset_bits - desc[i].size_bits;
170 mask = ((1ull << desc[i].size_bits) - 1) << shift;
171 addr = (__be32 *) buf + desc[i].offset_words;
173 value_write(desc[i].struct_offset_bytes,
174 desc[i].struct_size_bytes,
177 } else if (desc[i].size_bits <= 64) {
183 shift = 64 - desc[i].offset_bits - desc[i].size_bits;
184 mask = (~0ull >> (64 - desc[i].size_bits)) << shift;
185 addr = (__be64 *) buf + desc[i].offset_words;
187 value_write(desc[i].struct_offset_bytes,
188 desc[i].struct_size_bytes,
192 if (desc[i].offset_bits % 8 ||
193 desc[i].size_bits % 8) {
195 desc[i].field_name, desc[i].size_bits);
198 memcpy((char *)structure + desc[i].struct_offset_bytes,
199 (char *)buf + desc[i].offset_words * 4 +
200 desc[i].offset_bits / 8,
201 desc[i].size_bits / 8);