Commit f1862b0a authored by Adrian Bunk's avatar Adrian Bunk Committed by David S. Miller

[SHAPER]: The scheduled shaper removal.

This patch contains the scheduled removal of the shaper driver.
Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
Acked-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9ef32d0d
...@@ -280,15 +280,6 @@ Who: Thomas Gleixner <tglx@linutronix.de> ...@@ -280,15 +280,6 @@ Who: Thomas Gleixner <tglx@linutronix.de>
--------------------------- ---------------------------
What: shaper network driver
When: January 2008
Files: drivers/net/shaper.c, include/linux/if_shaper.h
Why: This driver has been marked obsolete for many years.
It was only designed to work on lower speed links and has design
flaws that lead to machine crashes. The qdisc infrastructure in
2.4 or later kernels, provides richer features and is more robust.
Who: Stephen Hemminger <shemminger@linux-foundation.org>
--------------------------- ---------------------------
What: i2c-i810, i2c-prosavage and i2c-savage4 What: i2c-i810, i2c-prosavage and i2c-savage4
......
...@@ -84,8 +84,6 @@ policy-routing.txt ...@@ -84,8 +84,6 @@ policy-routing.txt
- IP policy-based routing - IP policy-based routing
ray_cs.txt ray_cs.txt
- Raylink Wireless LAN card driver info. - Raylink Wireless LAN card driver info.
shaper.txt
- info on the module that can shape/limit transmitted traffic.
sk98lin.txt sk98lin.txt
- Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit - Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit
Ethernet Adapter family driver info Ethernet Adapter family driver info
......
Traffic Shaper For Linux
This is the current BETA release of the traffic shaper for Linux. It works
within the following limits:
o Minimum shaping speed is currently about 9600 baud (it can only
shape down to 1 byte per clock tick)
o Maximum is about 256K, it will go above this but get a bit blocky.
o If you ifconfig the master device that a shaper is attached to down
then your machine will follow.
o The shaper must be a module.
Setup:
A shaper device is configured using the shapeconfig program.
Typically you will do something like this
shapecfg attach shaper0 eth1
shapecfg speed shaper0 64000
ifconfig shaper0 myhost netmask 255.255.255.240 broadcast 1.2.3.4.255 up
route add -net some.network netmask a.b.c.d dev shaper0
The shaper should have the same IP address as the device it is attached to
for normal use.
Gotchas:
The shaper shapes transmitted traffic. It's rather impossible to
shape received traffic except at the end (or a router) transmitting it.
Gated/routed/rwhod/mrouted all see the shaper as an additional device
and will treat it as such unless patched. Note that for mrouted you can run
mrouted tunnels via a traffic shaper to control bandwidth usage.
The shaper is device/route based. This makes it very easy to use
with any setup BUT less flexible. You may need to use iproute2 to set up
multiple route tables to get the flexibility.
There is no "borrowing" or "sharing" scheme. This is a simple
traffic limiter. We implement Van Jacobson and Sally Floyd's CBQ
architecture into Linux 2.2. This is the preferred solution. Shaper is
for simple or back compatible setups.
Alan
...@@ -3015,23 +3015,6 @@ config NET_FC ...@@ -3015,23 +3015,6 @@ config NET_FC
adaptor below. You also should have said Y to "SCSI support" and adaptor below. You also should have said Y to "SCSI support" and
"SCSI generic support". "SCSI generic support".
config SHAPER
tristate "Traffic Shaper (OBSOLETE)"
depends on EXPERIMENTAL
---help---
The traffic shaper is a virtual network device that allows you to
limit the rate of outgoing data flow over some other network device.
The traffic that you want to slow down can then be routed through
these virtual devices. See
<file:Documentation/networking/shaper.txt> for more information.
An alternative to this traffic shaper are traffic schedulers which
you'll get if you say Y to "QoS and/or fair queuing" in
"Networking options".
To compile this driver as a module, choose M here: the module
will be called shaper. If unsure, say N.
config NETCONSOLE config NETCONSOLE
tristate "Network console logging support (EXPERIMENTAL)" tristate "Network console logging support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on EXPERIMENTAL
......
...@@ -93,7 +93,6 @@ obj-$(CONFIG_NET_SB1000) += sb1000.o ...@@ -93,7 +93,6 @@ obj-$(CONFIG_NET_SB1000) += sb1000.o
obj-$(CONFIG_MAC8390) += mac8390.o obj-$(CONFIG_MAC8390) += mac8390.o
obj-$(CONFIG_APNE) += apne.o 8390.o obj-$(CONFIG_APNE) += apne.o 8390.o
obj-$(CONFIG_PCMCIA_PCNET) += 8390.o obj-$(CONFIG_PCMCIA_PCNET) += 8390.o
obj-$(CONFIG_SHAPER) += shaper.o
obj-$(CONFIG_HP100) += hp100.o obj-$(CONFIG_HP100) += hp100.o
obj-$(CONFIG_SMC9194) += smc9194.o obj-$(CONFIG_SMC9194) += smc9194.o
obj-$(CONFIG_FEC) += fec.o obj-$(CONFIG_FEC) += fec.o
......
This diff is collapsed.
...@@ -231,7 +231,6 @@ unifdef-y += if_ltalk.h ...@@ -231,7 +231,6 @@ unifdef-y += if_ltalk.h
unifdef-y += if_link.h unifdef-y += if_link.h
unifdef-y += if_pppol2tp.h unifdef-y += if_pppol2tp.h
unifdef-y += if_pppox.h unifdef-y += if_pppox.h
unifdef-y += if_shaper.h
unifdef-y += if_tr.h unifdef-y += if_tr.h
unifdef-y += if_tun.h unifdef-y += if_tun.h
unifdef-y += if_vlan.h unifdef-y += if_vlan.h
......
#ifndef __LINUX_SHAPER_H
#define __LINUX_SHAPER_H
#ifdef __KERNEL__
#define SHAPER_QLEN 10
/*
* This is a bit speed dependent (read it shouldn't be a constant!)
*
* 5 is about right for 28.8 upwards. Below that double for every
* halving of speed or so. - ie about 20 for 9600 baud.
*/
#define SHAPER_LATENCY (5*HZ)
#define SHAPER_MAXSLIP 2
#define SHAPER_BURST (HZ/50) /* Good for >128K then */
struct shaper
{
struct sk_buff_head sendq;
__u32 bytespertick;
__u32 bitspersec;
__u32 shapelatency;
__u32 shapeclock;
unsigned long recovery; /* Time we can next clock a packet out on
an empty queue */
spinlock_t lock;
struct net_device *dev;
struct net_device_stats* (*get_stats)(struct net_device *dev);
struct timer_list timer;
};
#endif
#define SHAPER_SET_DEV 0x0001
#define SHAPER_SET_SPEED 0x0002
#define SHAPER_GET_DEV 0x0003
#define SHAPER_GET_SPEED 0x0004
struct shaperconf
{
__u16 ss_cmd;
union
{
char ssu_name[14];
__u32 ssu_speed;
} ss_u;
#define ss_speed ss_u.ssu_speed
#define ss_name ss_u.ssu_name
};
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment