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

Commit 1903c01c authored by Azhar Shaikh's avatar Azhar Shaikh
Browse files

usb: gadget: u_ether: Fix Out-of-order packets in UL bi-dir in RNDIS mode



In current implementation the worker thread which receives packets on USB
can run on any cpu. Since this is the task which is processing ingress
packets for USB and if it moves around between cores, then it will lead
to out-of-order packets.
So enqueue all the packets received on USB only on core0.

CRs-fixed: 669124
Change-Id: I941b634ef52ea22a592051cf65827a8503186605
Signed-off-by: default avatarAzhar Shaikh <azhars@codeaurora.org>
parent bacf292c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -462,7 +462,7 @@ clean:
	}

	if (queue)
		queue_work(uether_wq, &dev->rx_work);
		queue_work_on(0, uether_wq, &dev->rx_work);
}

static int prealloc(struct list_head *list,
@@ -1990,7 +1990,7 @@ static void uether_debugfs_exit(struct eth_dev *dev)

static int __init gether_init(void)
{
	uether_wq  = create_singlethread_workqueue("uether");
	uether_wq = alloc_workqueue("uether", WQ_CPU_INTENSIVE, 1);
	if (!uether_wq) {
		pr_err("%s: Unable to create workqueue: uether\n", __func__);
		return -ENOMEM;