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

Commit e985d27f authored by Skylar Chang's avatar Skylar Chang
Browse files

msm: ipa: fix split packet handling



Fix packet handling in case packet received from IPA hardware
is scattered across multiple buffers.

Change-Id: I4935ecb8eaa438d259c1c27a66f62c78f874c9ee
CRs-Fixed: 1097420
Acked-by: default avatarAdy Abraham <adya@qti.qualcomm.com>
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent 11a4004d
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -2325,6 +2325,7 @@ static int ipa_lan_rx_pyld_hdlr(struct sk_buff *skb,
	unsigned int used = *(unsigned int *)skb->cb;
	unsigned int used = *(unsigned int *)skb->cb;
	unsigned int used_align = ALIGN(used, 32);
	unsigned int used_align = ALIGN(used, 32);
	unsigned long unused = IPA_GENERIC_RX_BUFF_BASE_SZ - used;
	unsigned long unused = IPA_GENERIC_RX_BUFF_BASE_SZ - used;
	u32 skb2_len;


	IPA_DUMP_BUFF(skb->data, 0, skb->len);
	IPA_DUMP_BUFF(skb->data, 0, skb->len);


@@ -2508,8 +2509,9 @@ static int ipa_lan_rx_pyld_hdlr(struct sk_buff *skb,
				sys->drop_packet = true;
				sys->drop_packet = true;
			}
			}


			skb2 = ipa_skb_copy_for_client(skb,
			skb2_len = status->pkt_len + IPA_PKT_STATUS_SIZE;
				status->pkt_len + IPA_PKT_STATUS_SIZE);
			skb2_len = min(skb2_len, skb->len);
			skb2 = ipa_skb_copy_for_client(skb, skb2_len);
			if (likely(skb2)) {
			if (likely(skb2)) {
				if (skb->len < len + IPA_PKT_STATUS_SIZE) {
				if (skb->len < len + IPA_PKT_STATUS_SIZE) {
					IPADBG("SPL skb len %d len %d\n",
					IPADBG("SPL skb len %d len %d\n",