On Wed, Feb 29, 2012 at 03:28:44PM -0800, Vasu Dev wrote:
> On Mon, 2012-02-27 at 14:22 -0500, Neil Horman wrote:
> > There is potentially lots of contention for the rx_list_lock.  On a cpu 
> > that is
> > receiving lots of fcoe traffic, the softirq context has to add and release 
> > the
> > lock for every frame it receives, as does the receiving per-cpu thread.  We 
> > can
> > reduce this contention somewhat by altering the per-cpu threads loop such 
> > that
> > when traffic is detected on the fcoe_rx_list, we splice it to a temporary 
> > list.
> > In this way, we can process multiple skbs while only having to acquire and
> > release the fcoe_rx_list lock once.
> > 
> > Signed-off-by: Neil Horman <[email protected]>
> > CC: Robert Love <[email protected]>
> > CC: Vasu Dev <[email protected]>
> > CC: "James E.J. Bottomley" <[email protected]>
> > ---
> >  drivers/scsi/fcoe/fcoe.c |   24 ++++++++++++++++--------
> >  1 files changed, 16 insertions(+), 8 deletions(-)
> > 
> > diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
> > index dc5597b..45e43d8 100644
> > --- a/drivers/scsi/fcoe/fcoe.c
> > +++ b/drivers/scsi/fcoe/fcoe.c
> > @@ -1463,7 +1463,7 @@ static int fcoe_rcv(struct sk_buff *skb, struct 
> > net_device *netdev,
> >      * in softirq context.
> >      */
> >     __skb_queue_tail(&fps->fcoe_rx_list, skb);
> > -   if (fps->fcoe_rx_list.qlen == 1)
> > +   if (fps->thread->state == TASK_INTERRUPTIBLE)
> >             wake_up_process(fps->thread);
> >     spin_unlock(&fps->fcoe_rx_list.lock);
> >  
> > @@ -1782,23 +1782,31 @@ static int fcoe_percpu_receive_thread(void *arg)
> >  {
> >     struct fcoe_percpu_s *p = arg;
> >     struct sk_buff *skb;
> > +   struct sk_buff_head tmp;
> > +
> > +   skb_queue_head_init(&tmp);
> >  
> >     set_user_nice(current, -20);
> >  
> > +get_more_skbs:
> 
> This label is not used and would throw compiler warning, rest all looks
> good.
> 
> Vasu
> 
Crud, you're right, I'll repost this shortly.  Thanks!
Neil

_______________________________________________
devel mailing list
[email protected]
https://lists.open-fcoe.org/mailman/listinfo/devel

Reply via email to