• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/net/

Lines Matching refs:shaper

2  *			Simple traffic shaper for Linux NET3.
50 * Downing the interface under the shaper before the shaper
92 unsigned long shapestamp; /* Stamp for shaper */
103 static void shaper_kick(struct shaper *sh);
109 static int shaper_clocks(struct shaper *shaper, struct sk_buff *skb)
111 int t=skb->len/shaper->bytespertick;
116 * Set the speed of a shaper. We compute this in bytes per tick since
121 static void shaper_setspeed(struct shaper *shaper, int bitspersec)
123 shaper->bitspersec=bitspersec;
124 shaper->bytespertick=(bitspersec/HZ)/8;
125 if(!shaper->bytespertick)
126 shaper->bytespertick++;
130 * Throw a frame at a shaper.
136 struct shaper *shaper = dev->priv;
139 spin_lock(&shaper->lock);
140 ptr=shaper->sendq.prev;
147 SHAPERCB(skb)->shapeclock=shaper->recovery;
157 SHAPERCB(skb)->shapelen= shaper_clocks(shaper,skb);
163 * (Should keep this in the shaper as a variable..)
165 for(tmp=skb_peek(&shaper->sendq); tmp!=NULL &&
166 tmp!=(struct sk_buff *)&shaper->sendq; tmp=tmp->next)
173 shaper->stats.tx_dropped++;
175 skb_queue_tail(&shaper->sendq, skb);
180 if(skb_queue_len(&shaper->sendq)>SHAPER_QLEN)
182 ptr=skb_dequeue(&shaper->sendq);
184 shaper->stats.collisions++;
186 shaper_kick(shaper);
187 spin_unlock(&shaper->lock);
192 * Transmit from a shaper
195 static void shaper_queue_xmit(struct shaper *shaper, struct sk_buff *skb)
202 newskb->dev=shaper->dev;
206 shaper->dev->name,newskb->priority);
209 shaper->stats.tx_bytes += skb->len;
210 shaper->stats.tx_packets++;
224 struct shaper *shaper = (struct shaper *)data;
226 spin_lock(&shaper->lock);
227 shaper_kick(shaper);
228 spin_unlock(&shaper->lock);
232 * Kick a shaper queue and try and do something sensible with the
236 static void shaper_kick(struct shaper *shaper)
244 while((skb=skb_peek(&shaper->sendq))!=NULL)
259 skb_unlink(skb, &shaper->sendq);
260 if (shaper->recovery <
262 shaper->recovery = SHAPERCB(skb)->shapeclock + SHAPERCB(skb)->shapelen;
269 shaper_queue_xmit(shaper, skb); /* Fire */
280 mod_timer(&shaper->timer, SHAPERCB(skb)->shapeclock);
291 struct shaper *shaper=dev->priv;
299 if(shaper->dev==NULL)
301 if(shaper->bitspersec==0)
307 * Closing a shaper flushes the queues.
312 struct shaper *shaper=dev->priv;
315 while ((skb = skb_dequeue(&shaper->sendq)) != NULL)
318 spin_lock_bh(&shaper->lock);
319 shaper_kick(shaper);
320 spin_unlock_bh(&shaper->lock);
322 del_timer_sync(&shaper->timer);
334 struct shaper *sh=dev->priv;
341 struct shaper *sh=dev->priv;
353 struct shaper *sh=skb->dev->priv;
399 static int shaper_attach(struct net_device *shdev, struct shaper *sh, struct net_device *dev)
435 struct shaper *sh=dev->priv;
472 struct shaper *sh = dev->priv;
482 * Add a shaper device to the system
488 * Set up the shaper.
526 MODULE_PARM_DESC(shapers, "Traffic shaper: maximum number of shapers");
562 snprintf(name, IFNAMSIZ, "shaper%d", i);
563 dev = alloc_netdev(sizeof(struct shaper), name,