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

Commit 0090ff9b authored by Akshay Pandit's avatar Akshay Pandit
Browse files

msm: ipa3: Ratelimit the error logs for pkts with invalid status



Ratelimit the logs indicating invalid packet status fields.
Support DL Frag rule status opcode. The logs introduces
delay during modem ssr.

Change-Id: I92ebf8776dd0e81653c968985818124cbe539d5f
Signed-off-by: default avatarAkshay Pandit <pandit@codeaurora.org>
parent 01dafb76
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -2778,25 +2778,26 @@ static int ipa3_lan_rx_pyld_hdlr(struct sk_buff *skb,
				sys->status_stat->curr = 0;
		}

		if ((status.status_opcode !=
			IPAHAL_PKT_STATUS_OPCODE_DROPPED_PACKET) &&
			(status.status_opcode !=
			IPAHAL_PKT_STATUS_OPCODE_PACKET) &&
			(status.status_opcode !=
			IPAHAL_PKT_STATUS_OPCODE_SUSPENDED_PACKET) &&
			(status.status_opcode !=
			IPAHAL_PKT_STATUS_OPCODE_PACKET_2ND_PASS)) {
			IPAERR("unsupported opcode(%d)\n",
		switch (status.status_opcode) {
		case IPAHAL_PKT_STATUS_OPCODE_DROPPED_PACKET:
		case IPAHAL_PKT_STATUS_OPCODE_PACKET:
		case IPAHAL_PKT_STATUS_OPCODE_SUSPENDED_PACKET:
		case IPAHAL_PKT_STATUS_OPCODE_PACKET_2ND_PASS:
		case IPAHAL_PKT_STATUS_OPCODE_NEW_FRAG_RULE:
			break;
		default:
			IPAERR_RL("unsupported opcode(%d)\n",
				status.status_opcode);
			skb_pull(skb, pkt_status_sz);
			continue;
		}

		IPA_STATS_EXCP_CNT(status.exception,
				ipa3_ctx->stats.rx_excp_pkts);
		if (status.endp_dest_idx >= ipa3_ctx->ipa_num_pipes ||
			status.endp_src_idx >= ipa3_ctx->ipa_num_pipes) {
			IPAERR("status fields invalid\n");
			IPAERR("STATUS opcode=%d src=%d dst=%d len=%d\n",
			IPAERR_RL("status fields invalid\n");
			IPAERR_RL("STATUS opcode=%d src=%d dst=%d len=%d\n",
				status.status_opcode, status.endp_src_idx,
				status.endp_dest_idx, status.pkt_len);
			WARN_ON(1);
+3 −6
Original line number Diff line number Diff line
@@ -926,9 +926,8 @@ static void ipa_pkt_status_parse(
		opcode = IPAHAL_PKT_STATUS_OPCODE_PACKET_2ND_PASS;
		break;
	default:
		IPAHAL_ERR("unsupported Status Opcode 0x%x\n",
		IPAHAL_ERR_RL("unsupported Status Opcode 0x%x\n",
			hw_status->status_opcode);
		WARN_ON(1);
	}
	status->status_opcode = opcode;

@@ -943,9 +942,8 @@ static void ipa_pkt_status_parse(
		status->nat_type = IPAHAL_PKT_STATUS_NAT_DST;
		break;
	default:
		IPAHAL_ERR("unsupported Status NAT type 0x%x\n",
		IPAHAL_ERR_RL("unsupported Status NAT type 0x%x\n",
			hw_status->nat_type);
		WARN_ON(1);
	}

	switch (hw_status->exception) {
@@ -977,9 +975,8 @@ static void ipa_pkt_status_parse(
		exception_type = IPAHAL_PKT_STATUS_EXCEPTION_CSUM;
		break;
	default:
		IPAHAL_ERR("unsupported Status Exception type 0x%x\n",
		IPAHAL_ERR_RL("unsupported Status Exception type 0x%x\n",
			hw_status->exception);
		WARN_ON(1);
	}
	status->exception = exception_type;