Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04e3e5d3 authored by Atish Kumar Patra's avatar Atish Kumar Patra
Browse files

lib: qmi_encdec: Ignore unknown optional TLV



Currently, Kernel QMI encode/decode library returns an error upon
receiving an unknown optional TLV. Any optional TLV in a received
QMI message can be ignored and the rest of the message can be decoded.

Add support to ignore the unknown optional TLV and decode rest of
the message.

Change-Id: I8bb509879422c9193c00ed4ef847b0da1d642e33
Signed-off-by: default avatarAtish Kumar Patra <apatra@codeaurora.org>
parent 125aa701
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -24,6 +24,7 @@

#define TLV_LEN_SIZE sizeof(uint16_t)
#define TLV_TYPE_SIZE sizeof(uint8_t)
#define OPTIONAL_TLV_TYPE_START 0x10

#ifdef CONFIG_QMI_ENCDEC_DEBUG

@@ -792,9 +793,13 @@ static int _qmi_kernel_decode(struct elem_info *ei_array,
			buf_src += (TLV_TYPE_SIZE + TLV_LEN_SIZE);
			decoded_bytes += (TLV_TYPE_SIZE + TLV_LEN_SIZE);
			temp_ei = find_ei(ei_array, tlv_type);
			if (!temp_ei) {
			if (!temp_ei && (tlv_type < OPTIONAL_TLV_TYPE_START)) {
				pr_err("%s: Inval element info\n", __func__);
				return -EINVAL;
			} else if (!temp_ei) {
				UPDATE_DECODE_VARIABLES(buf_src,
						decoded_bytes, tlv_len);
				continue;
			}
		} else {
			/*