• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/mlxfw/

Lines Matching refs:mfa2_file

125 mlxfw_mfa2_tlv_multi_validate(const struct mlxfw_mfa2_file *mfa2_file,
132 mlxfw_mfa2_tlv_multi_foreach(mfa2_file, tlv, idx, multi) {
142 mlxfw_mfa2_file_dev_validate(const struct mlxfw_mfa2_file *mfa2_file,
156 multi = mlxfw_mfa2_tlv_multi_get(mfa2_file, dev_tlv);
162 if (!mlxfw_mfa2_tlv_multi_validate(mfa2_file, multi))
166 tlv = mlxfw_mfa2_tlv_multi_child_find(mfa2_file, multi,
173 psid = mlxfw_mfa2_tlv_psid_get(mfa2_file, tlv);
183 err = mlxfw_mfa2_tlv_multi_child_count(mfa2_file, multi,
195 tlv = mlxfw_mfa2_tlv_multi_child_find(mfa2_file, multi,
201 cptr = mlxfw_mfa2_tlv_component_ptr_get(mfa2_file, tlv);
215 mlxfw_mfa2_file_comp_validate(const struct mlxfw_mfa2_file *mfa2_file,
225 multi = mlxfw_mfa2_tlv_multi_get(mfa2_file, comp_tlv);
231 if (!mlxfw_mfa2_tlv_multi_validate(mfa2_file, multi))
235 tlv = mlxfw_mfa2_tlv_multi_child(mfa2_file, multi);
241 cdesc = mlxfw_mfa2_tlv_component_descriptor_get(mfa2_file, tlv);
255 static bool mlxfw_mfa2_file_validate(const struct mlxfw_mfa2_file *mfa2_file)
263 mlxfw_mfa2_tlv_foreach(mfa2_file, tlv, idx, mfa2_file->first_dev,
264 mfa2_file->dev_count) {
271 if (!mlxfw_mfa2_file_dev_validate(mfa2_file, tlv, idx))
276 mlxfw_mfa2_tlv_foreach(mfa2_file, tlv, idx, mfa2_file->first_component,
277 mfa2_file->component_count) {
284 if (!mlxfw_mfa2_file_comp_validate(mfa2_file, tlv, idx))
296 struct mlxfw_mfa2_file *mfa2_file;
300 mfa2_file = kcalloc(1, sizeof(*mfa2_file), GFP_KERNEL);
301 if (!mfa2_file)
304 mfa2_file->fw = fw;
306 first_tlv = mlxfw_mfa2_tlv_get(mfa2_file, first_tlv_ptr);
312 multi = mlxfw_mfa2_tlv_multi_get(mfa2_file, first_tlv);
318 multi_child = mlxfw_mfa2_tlv_multi_child(mfa2_file, multi);
322 pd = mlxfw_mfa2_tlv_package_descriptor_get(mfa2_file, multi_child);
328 mfa2_file->first_dev = mlxfw_mfa2_tlv_next(mfa2_file, first_tlv);
329 if (!mfa2_file->first_dev) {
334 mfa2_file->dev_count = be16_to_cpu(pd->num_devices);
335 mfa2_file->first_component = mlxfw_mfa2_tlv_advance(mfa2_file,
336 mfa2_file->first_dev,
337 mfa2_file->dev_count);
338 mfa2_file->component_count = be16_to_cpu(pd->num_components);
339 mfa2_file->cb = (const u8 *) fw->data + NLA_ALIGN(be32_to_cpu(pd->cb_offset));
340 if (!mlxfw_mfa2_valid_ptr(mfa2_file, mfa2_file->cb)) {
344 mfa2_file->cb_archive_size = be32_to_cpu(pd->cb_archive_size);
345 cb_top_ptr = (const u8 *) mfa2_file->cb + mfa2_file->cb_archive_size - 1;
346 if (!mlxfw_mfa2_valid_ptr(mfa2_file, cb_top_ptr)) {
351 if (!mlxfw_mfa2_file_validate(mfa2_file))
353 return mfa2_file;
355 kfree(mfa2_file);
360 mlxfw_mfa2_tlv_dev_get(const struct mlxfw_mfa2_file *mfa2_file,
370 mlxfw_mfa2_tlv_foreach(mfa2_file, dev_tlv, idx, mfa2_file->first_dev,
371 mfa2_file->dev_count) {
375 dev_multi = mlxfw_mfa2_tlv_multi_get(mfa2_file, dev_tlv);
380 tlv = mlxfw_mfa2_tlv_multi_child_find(mfa2_file, dev_multi,
387 tlv_psid = mlxfw_mfa2_tlv_psid_get(mfa2_file, tlv);
398 int mlxfw_mfa2_file_component_count(const struct mlxfw_mfa2_file *mfa2_file,
406 dev_multi = mlxfw_mfa2_tlv_dev_get(mfa2_file, psid, psid_size);
410 err = mlxfw_mfa2_tlv_multi_child_count(mfa2_file, dev_multi,
455 static int mlxfw_mfa2_file_cb_offset_xz(const struct mlxfw_mfa2_file *mfa2_file,
468 dec_buf.in_size = mfa2_file->cb_archive_size;
469 dec_buf.in = mfa2_file->cb;
501 mlxfw_mfa2_file_component_tlv_get(const struct mlxfw_mfa2_file *mfa2_file,
508 if (comp_index > mfa2_file->component_count)
511 comp_tlv = mlxfw_mfa2_tlv_advance(mfa2_file, mfa2_file->first_component,
516 multi = mlxfw_mfa2_tlv_multi_get(mfa2_file, comp_tlv);
520 multi_child = mlxfw_mfa2_tlv_multi_child(mfa2_file, multi);
524 return mlxfw_mfa2_tlv_component_descriptor_get(mfa2_file, multi_child);
533 mlxfw_mfa2_file_component_find(const struct mlxfw_mfa2_file *mfa2_file,
542 dev_multi = mlxfw_mfa2_tlv_dev_get(mfa2_file, psid, psid_size);
546 cptr_tlv = mlxfw_mfa2_tlv_multi_child_find(mfa2_file, dev_multi,
552 cptr = mlxfw_mfa2_tlv_component_ptr_get(mfa2_file, cptr_tlv);
557 return mlxfw_mfa2_file_component_tlv_get(mfa2_file, comp_idx);
561 mlxfw_mfa2_file_component_get(const struct mlxfw_mfa2_file *mfa2_file,
572 comp = mlxfw_mfa2_file_component_find(mfa2_file, psid, psid_size,
587 err = mlxfw_mfa2_file_cb_offset_xz(mfa2_file, cb_offset, comp_buf_size,
616 void mlxfw_mfa2_file_fini(struct mlxfw_mfa2_file *mfa2_file)
618 kfree(mfa2_file);