On Mon, 21 Nov 2005 16:22:17 -0800 (PST)
weihua zhang <zfireboy@yahoo.com> wrote:
> Hey, everyone, I am kindda newbie to this subject, so I just post my
problem directly, please let me know if anything is wrong.
>
> in my config file
> when I use
> tc class add dev eth1 parent 1:11 classid 1:11016 htb rate 512kbit burst
10k
>
> everything works correctly
>
> but...when classid goes larger than 1:19999, eg:
> tc class add dev eth1 parent 1:21 classid 1:21006 htb rate 256kbit burst
10k
> it thows out "RTNETLINK answers: Invalid argument"
>
> I am using Fedora core 3 and what I am trying to do here is regulating
each mac''s
> packets attached under access point. so basiclly parent 1:21 stands for
an access point, and 1:21xxx stands for one device id attached to it. originally
we had no more
> than 50 macs per AP, eg: 1:2101 for upload, 1:2102 for download per mac
address.
> so 1:21xx can cover 50 macs.
>
> now when I want to add more than 50 macs under one AP, the classid
pattern needs to be updated. it''s very strange to me that when I
updated all classid to cover 500 macs per AP, eg: 1:21xxx, it throws out
invalid argument error, but it works fine when classid was below 1:19999.
>
> hope I stated this problem clearly.
> thanks ahead for the help.
>
Some non-obvious things about classid''s.
* Tc parses classid''s in hex (base 16) by default.
* Classid''s are usually split into a major and minor part by the
colon(:)
* The maximum value (hard coded into the the packet scheduler API) is 16 bits
for each; ie.
16 bits for minor number.
Why not just use some shell functions to encode the access point to class id
mapping
more densely?