diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1998-08-25 09:12:35 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1998-08-25 09:12:35 +0000 |
commit | c7fc24dc4420057f103afe8fc64524ebc25c5d37 (patch) | |
tree | 3682407a599b8f9f03fc096298134cafba1c9b2f /drivers/net/shaper.c | |
parent | 1d793fade8b063fde3cf275bf1a5c2d381292cd9 (diff) |
o Merge with Linux 2.1.116.
o New Newport console code.
o New G364 console code.
Diffstat (limited to 'drivers/net/shaper.c')
-rw-r--r-- | drivers/net/shaper.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/net/shaper.c b/drivers/net/shaper.c index e536318a1..9879f3de0 100644 --- a/drivers/net/shaper.c +++ b/drivers/net/shaper.c @@ -128,6 +128,7 @@ static int shaper_clocks(struct shaper *shaper, struct sk_buff *skb) static void shaper_setspeed(struct shaper *shaper, int bitspersec) { + shaper->bitspersec=bitspersec; shaper->bytespertick=(bitspersec/HZ)/8; if(!shaper->bytespertick) shaper->bytespertick++; @@ -326,7 +327,8 @@ static void shaper_kick(struct shaper *shaper) */ skb_unlink(skb); - shaper->recovery=jiffies+skb->shapelen; + if (shaper->recovery < skb->shapeclock + skb->shapelen) + shaper->recovery = skb->shapeclock + skb->shapelen; restore_flags(flags); /* @@ -548,18 +550,28 @@ static int shaper_ioctl(struct device *dev, struct ifreq *ifr, int cmd) { struct shaperconf *ss= (struct shaperconf *)&ifr->ifr_data; struct shaper *sh=dev->priv; - struct device *them=dev_get(ss->ss_name); switch(ss->ss_cmd) { case SHAPER_SET_DEV: + { + struct device *them=dev_get(ss->ss_name); if(them==NULL) return -ENODEV; if(sh->dev) return -EBUSY; return shaper_attach(dev,dev->priv, them); + } + case SHAPER_GET_DEV: + if(sh->dev==NULL) + return -ENODEV; + memcpy(ss->ss_name, sh->dev->name, sizeof(ss->ss_name)); + return 0; case SHAPER_SET_SPEED: shaper_setspeed(sh,ss->ss_speed); return 0; + case SHAPER_GET_SPEED: + ss->ss_speed=sh->bitspersec; + return 0; default: return -EINVAL; } |