On Thu, 2012-06-21 at 15:24 -0400, Neil Horman wrote: > Noticed that we can shuffle the code around in fcoe_percpu_receive_thread a > bit > and avoid taking the fcoe_rx_list lock twice per iteration. This should > improve > throughput somewhat. With this change we take the lock, and check for new > frames in a single critical section. Only if the list is empty do we drop the > lock and re-acquire it after being signaled to wake up. > > Change Notes: > v2) did some further cleanup on the patch by replacing the 2nd call of > spin_lock/splice_init with a goto to the top of the outer loop. This allows > me > to change the inner while loop to an if conditional and remove the sencond > check > of kthread_should_stop. Based on suggestion from Vasu Dev. > > Signed-off-by: Neil Horman <nhor...@tuxdriver.com> > CC: Robert Love <robert.w.l...@intel.com> > CC: Vasu Dev <vasu....@linux.intel.com> > --- > drivers/scsi/fcoe/fcoe.c | 18 ++++++++++-------- > 1 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c > index 0b48c7d..0d80837 100644 > --- a/drivers/scsi/fcoe/fcoe.c > +++ b/drivers/scsi/fcoe/fcoe.c > @@ -1816,23 +1816,25 @@ static int fcoe_percpu_receive_thread(void *arg) > > set_user_nice(current, -20); > > +retry: > while (!kthread_should_stop()) { > > spin_lock_bh(&p->fcoe_rx_list.lock); > skb_queue_splice_init(&p->fcoe_rx_list, &tmp); > - spin_unlock_bh(&p->fcoe_rx_list.lock); > - > - while ((skb = __skb_dequeue(&tmp)) != NULL) > - fcoe_recv_frame(skb); > > - spin_lock_bh(&p->fcoe_rx_list.lock); > - if (!skb_queue_len(&p->fcoe_rx_list)) { > + if (!skb_queue_len(&tmp)) { > set_current_state(TASK_INTERRUPTIBLE); > spin_unlock_bh(&p->fcoe_rx_list.lock); > schedule(); > set_current_state(TASK_RUNNING); > - } else > - spin_unlock_bh(&p->fcoe_rx_list.lock); > + goto retry; > + } > + > + spin_unlock_bh(&p->fcoe_rx_list.lock); > + > + while ((skb = __skb_dequeue(&tmp)) != NULL) > + fcoe_recv_frame(skb); > + > } > return 0; > }
Look good, Acked-by: Vasu Dev <vasu....@intel.com> Thanks Vasu _______________________________________________ devel mailing list devel@open-fcoe.org https://lists.open-fcoe.org/mailman/listinfo/devel