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

Commit a57f8b7d authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: gadget: Fix problem with disable/enable RNDIS interface"

parents 4b16bfba 4199b1fe
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -1050,6 +1050,23 @@ bool is_rndis_ipa_supported(void)
	return rndis_ipa_supported;
}

void rndis_ipa_reset_trigger(void)
{
	struct f_rndis_qc *rndis;
	unsigned long flags;

	spin_lock_irqsave(&rndis_lock, flags);
	rndis = _rndis_qc;
	if (!rndis) {
		pr_err("%s: No RNDIS instance", __func__);
		spin_unlock_irqrestore(&rndis_lock, flags);
		return;
	}

	rndis->net_ready_trigger = false;
	spin_unlock_irqrestore(&rndis_lock, flags);
}

/*
 * Callback let RNDIS_IPA trigger us when network interface is up
 * and userspace is ready to answer DHCP requests
+7 −1
Original line number Diff line number Diff line
@@ -1187,9 +1187,15 @@ void u_bam_data_stop_rndis_ipa(void)
{
	pr_debug("%s\n", __func__);

	if (is_ipa_rndis_net_on)
	if (is_ipa_rndis_net_on) {
		struct bam_data_port *port =
			bam2bam_data_ports[RNDIS_QC_ACTIVE_PORT];

		rndis_ipa_reset_trigger();
		bam_data_stop_endless_tx(port);
		queue_work(bam_data_wq, rndis_disconn_w);
	}
}

void bam_data_disconnect(struct data_port *gr, u8 port_num)
{