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

Commit f6704694 authored by Vamsi Krishna's avatar Vamsi Krishna
Browse files

usbnet: set_wake_up_idle in rx path



The PF_WAKE_UP_IDLE flag tells the scheduler to wake up tasks that
have this flag set, or tasks woken by tasks with this flag set, on
an idle CPU if one is available. Due to high interrupts during peak
throughput testing over hsic, some task (like iperf) might get
starved if scheduled on busy cpu impacting throughput. This flag
will help tasks woken up by hsic to be scheduled on different idle
cpu and helps with throughput.

CAT-4 Throughput with default config: 137Mbps
CAT-4 Throughput with wakeup_idle change: 141Mbps

Change-Id: I96a099e175fa2c7dccfabbd66aa07b094c1ae3b6
Signed-off-by: default avatarVamsi Krishna <vskrishn@codeaurora.org>
parent 1ab4f819
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -1356,6 +1356,7 @@ static void usbnet_bh (unsigned long param)
	struct sk_buff		*skb;
	struct sk_buff		*skb;
	struct skb_data		*entry;
	struct skb_data		*entry;


	set_wake_up_idle(true);
	while ((skb = skb_dequeue (&dev->done))) {
	while ((skb = skb_dequeue (&dev->done))) {
		entry = (struct skb_data *) skb->cb;
		entry = (struct skb_data *) skb->cb;
		switch (entry->state) {
		switch (entry->state) {
@@ -1372,6 +1373,7 @@ static void usbnet_bh (unsigned long param)
			netdev_dbg(dev->net, "bogus skb state %d\n", entry->state);
			netdev_dbg(dev->net, "bogus skb state %d\n", entry->state);
		}
		}
	}
	}
	set_wake_up_idle(false);


	/* restart RX again after disabling due to high error rate */
	/* restart RX again after disabling due to high error rate */
	clear_bit(EVENT_RX_KILL, &dev->flags);
	clear_bit(EVENT_RX_KILL, &dev->flags);