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

Commit 653c15a0 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 82d77d9e on remote branch

Change-Id: I68a897986f2c39a3e60b3b8dc10fb395e27a01a8
parents 1b77da7c 82d77d9e
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
/*
 * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2021, 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
@@ -923,12 +923,18 @@ int dfc_bearer_flow_ctl(struct net_device *dev,

	enable = bearer->grant_size ? true : false;

	qmi_rmnet_flow_control(dev, bearer->mq_idx, enable);
	/* Do not flow disable tcp ack q in tcp bidir
	 * ACK queue opened first to drain ACKs faster
	 * Although since tcp ancillary is true most of the time,
	 * this shouldn't really make a difference
	 * If there is non zero grant but tcp ancillary is false,
	 * send out ACKs anyway
	 */
	if (bearer->ack_mq_idx != INVALID_MQ)
		qmi_rmnet_flow_control(dev, bearer->ack_mq_idx,
				       enable || bearer->tcp_bidir);

	/* Do not flow disable tcp ack q in tcp bidir */
	if (bearer->ack_mq_idx != INVALID_MQ &&
	    (enable || !bearer->tcp_bidir))
		qmi_rmnet_flow_control(dev, bearer->ack_mq_idx, enable);
	qmi_rmnet_flow_control(dev, bearer->mq_idx, enable);

	if (!enable && bearer->ack_req)
		dfc_send_ack(dev, bearer->bearer_id,
@@ -1022,8 +1028,12 @@ static int dfc_update_fc_map(struct net_device *dev, struct qos_info *qos,
			itm->bytes_in_flight = 0;
		}

		/* update queue state only if there is a change in grant
		 * or change in ancillary tcp state
		 */
		if ((itm->grant_size == 0 && adjusted_grant > 0) ||
		    (itm->grant_size > 0 && adjusted_grant == 0))
		    (itm->grant_size > 0 && adjusted_grant == 0) ||
		    (itm->tcp_bidir ^ DFC_IS_TCP_BIDIR(ancillary)))
			action = true;

		/* This is needed by qmap */