> George P Nychis wrote: >> >>> George P Nychis wrote: >>>> >>>> Hi, >>>> >>>> I am trying to install a proprietary qdisc made for research, it is >>>> not publically released yet, however its been used several times so >>>> i know it works. >>>> >>>> The files included are: q_xcp.c: static int xcp_parse_opt() static >>>> int xcp_print_opt() static int xcp_print_xstats() struct qdisc_util >>>> xcp_util = { "NULL", "xcp" ..... }; >>>> >>>> sch_xcp.c: static int xcp_enqueue() static int xcp_requeue() static >>>> struct sk_buff * xcp_dequeue() .... .... struct Qdisc_ops >>>> xcp_qdisc_ops ={ NULL,NULL,"xcp",.... }; >>>> >>>> printk(KERN_INFO "XCP qdisc module loaded.\n"); return >>>> register_qdisc(&xcp_qdisc_ops); >>>> >>>> So, i make everything successfully, it creates q_xcp.so and copies >>>> it to /usr/lib and sch_xcp.o which it copies to /lib/modules/... so >>>> then I "insmod sch_xcp" and i see in dmesg: "XCP qdisc module >>>> loaded." >>>> >>>> I then try: "tc qdisc add dev eth0 root xcp capacity 10Mbit limit >>>> 500" and get: "Unknown qdisc "xcp", hence option "capacity" is >>>> unparsable" >>>> >>>> So then I read the INSTALL further to find some sort of solution >>>> and it mentions: This again assumes "tc" version is 2.4.7. If your >>>> "tc" is a different version, download the iproute2 source code, and >>>> edit Makefile to point "TC_INCLUDE" to "-I..../iproute2/include >>>> -I..../iproute2/tc" >>>> >>>> So, i did that, and i recompiled the q_xcp.so: lanthanum-ini >>>> src-1.0.1 # make q_xcp.so cc -O2 -fPIC >>>> -I/var/tmp/portage/iproute2-2.6.11.20050310-r1/work/iproute2-2.6.11 >>>> /inc lude/ >>>> -I/var/tmp/portage/iproute2-2.6.11.20050310-r1/work/iproute2-2.6.11 >>>> /tc_ include -o q_xcp.o -c q_xcp.c ld -shared -o q_xcp.so q_xcp.o rm >>>> -f q_xcp.o >>>> >>>> But i still get the same error.... so then my very final last >>>> effort was to move q_xcp.c to my iproute2 source code tc/ directory >>>> and added this to the makefile: TCMODULES += q_xcp.o >>>> >>>> Then I compiled tc, and i check tc to see if the xcp qdisc >>>> functions were loaded: lanthanum-ini tc # nm tc | grep xcp 080531ec >>>> t xcp_parse_opt 080533e0 t xcp_print_opt 08053426 t xcp_print_xstats >>>> 08070cc0 D xcp_util >>>> >>>> >>>> And finally: lanthanum-ini tc # ./tc qdisc add dev ath0 root xcp >>>> capacity 54Mbit limit 500 Unknown qdisc "xcp", hence option >>>> "capacity" is unparsable >>>> >>>> I have no clue :( I figured that putting the .so into /usr/lib >>>> would have been enough. Sorry for the long e-mail, I hope someone >>>> can help, and thank you for your time even if you don't know the >>>> solution but read this :) >>>> >>>> - George >>> >>> George, >>> >>> Please show us iproute/include/linux/pkt_sched.h >>> >>> There shouldn't be anything there the author wishes to keep private. >>> -- gypsy >>> >>> >> >> They did not include the iproute source code that they used... they >> only included the q_xcp.c to create the q_xcp.so ... therefore my >> pkt_sched.h i am using is from this build: iproute2-2.6.11.20050310-r1 >> >> I can certainly post it if you need, just let me know > > George, > > Then you probably need to revert to an iproute2 source that included xcp. > In pkt_sched.h you need a struct that defines the parameters xcp can > accept: > > enum { TCA_XCP_PARM1, TCA_XCP_PARM2, TCA_XCP_PARM3, }; > > and in ~/tc/Makefile you need TCMODULES += q_xcp.o -- gypsy > > I think what I'm most confused about this pkt_sched.h thing is that the code works with version 2.4.7 of iproute2 ... in 2.4.7 of iproute2 there is no pkt_sched.h anywhere to be found in the source code. However in the newest version of iproute2 which I am trying to get this functionality to work in, there is a pkt_sched.h My last observation, is that in q_xcp.h it includes pkt_sched_xcp.h which has: struct tc_xcp_qopt { __u32 first_param; __u32 second_param; }; So I am assuming i need to add something like the enum thing to pkt_sched.h in the new iproute2 source... however what are the proper names I need to use in the enum? I don't expect you to know the names, however, what do i match them with? Thanks! George -- _______________________________________________ LARTC mailing list LARTC@xxxxxxxxxxxxxxx http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc