netdev
[Top] [All Lists]

NAPI: dev.c change to net_rx_action algorithm.

To: "'netdev@xxxxxxxxxxx'" <netdev@xxxxxxxxxxx>
Subject: NAPI: dev.c change to net_rx_action algorithm.
From: Ben Greear <greearb@xxxxxxxxxxxxxxx>
Date: Fri, 08 Nov 2002 20:23:30 -0800
Organization: Candela Technologies
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2a) Gecko/20020910
I tried making this change to dev.c in the net_rx_action method.

So far, I have passed about 25 million packets and only dropped
about 1.5k.  This is with 4 interfaces tx + rx 8kpps (757 byte packets).

rx-ring size is 1024, weight is 24, skb-hotlist is 2048.  This is
the best results so far, but it may be that this code change does
not fare so well in other cases....

Comments?


/* if (dev->quota <= 0 || dev->poll(dev, &budget)) { local_irq_disable(); list_del(&dev->poll_list); list_add_tail(&dev->poll_list, &queue->poll_list); if (dev->quota < 0) dev->quota += dev->weight; else dev->quota = dev->weight; } else { dev_put(dev); local_irq_disable(); } */

                /* This scheme should allow devices to build up 2x their weight 
in quota
                 * credit.  Heavy users will only get their normal quota.  This 
should
                 * help let bursty traffic get higher priority. --Ben
                 */
                if (dev->poll(dev, &budget)) {
                        /* More to do, put these guys back on the poll list */
                        local_irq_disable();
                        list_del(&dev->poll_list);
                        list_add_tail(&dev->poll_list, &queue->poll_list);
                        dev->quota = dev->weight;
                }
                else {
                        /* These guys are done, they come off of the poll list 
*/
                        if (dev->quota >= dev->weight) {
                                dev->quota = (dev->weight << 1); /* max quota 
of 2x weight */
                        }
                        else {
                                dev->quota += dev->weight;
                        }
                        dev_put(dev);
                        local_irq_disable();
                }

--
Ben Greear <greearb@xxxxxxxxxxxxxxx>       <Ben_Greear AT excite.com>
President of Candela Technologies Inc      http://www.candelatech.com
ScryMUD:  http://scry.wanfear.com     http://scry.wanfear.com/~greear



<Prev in Thread] Current Thread [Next in Thread>