Ik ben bezig om IMQ aan de praat te krijgen onder de 2.6.28 kernel.
Dit omdat ik wat te enthousiast mijn CRUX installatie van 2.4 -> 2.5 heb geupgrade.
Nu blijkt dat er nog geen patch uit is voor kernels hoger dan 2.6.25.7.
Ik ben bezig om te kijken waar de patch misloopt in de nieuwe kernel.
Foutmelding:
Nu ben ik in netdevice.h aan het kijken en dan zie ik dat inderdaad kernel 2.6.25.7 dit heeft als onderdeel van struct net_device:
En kernel 2.6.28 heeft dit in zijn geheel niet meer maar in plaats daarvan een nieuwe struct buiten net_device:
Nu wil ik dus kijken bij welke kernelversie deze wijziging is ingebracht, maar de enige manier tot nu toe is om alle tussenliggende kernels de downloaden en dan stuk voor stuk de netdevice.h te gaan vergelijken.
Ik heb al geprobeerd de changelogs er op na te slaan, maar daar vind ik het niet in. Bestaat er zoiets als een SVN van de kernel waarin ik in bijv track de wijzigingen op deze file na kan lezen?
Ik weet dat het in 2.6.25.7 goed zit, en inmiddels dat het in 2.6.27 en 2.6.28 "anders" zit
Voordat ik nu in 5x kernel downloaden de juiste kernel vind uit de tussenliggende 22, vroeg ik me af of iemand een andere oplossing weet.
EDIT: Hmm, misschien had ik dit in de devschuur moeten gooien.
Dit omdat ik wat te enthousiast mijn CRUX installatie van 2.4 -> 2.5 heb geupgrade.
Nu blijkt dat er nog geen patch uit is voor kernels hoger dan 2.6.25.7.
Ik ben bezig om te kijken waar de patch misloopt in de nieuwe kernel.
Foutmelding:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| drivers/net/imq.c: In function 'imq_nf_queue': drivers/net/imq.c:222: error: 'struct net_device' has no member named 'queue_lock' drivers/net/imq.c:223: error: 'struct net_device' has no member named 'qdisc' drivers/net/imq.c:234: error: 'struct net_device' has no member named 'queue_lock' drivers/net/imq.c: In function 'qdisc_run_tasklet': drivers/net/imq.c:252: error: 'struct net_device' has no member named 'queue_lock' drivers/net/imq.c:253: warning: passing argument 1 of 'qdisc_run' from incompatible pointer type drivers/net/imq.c:255: error: 'struct net_device' has no member named 'queue_lock' |
Nu ben ik in netdevice.h aan het kijken en dan zie ik dat inderdaad kernel 2.6.25.7 dit heeft als onderdeel van struct net_device:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| /* ingress path synchronizer */
spinlock_t ingress_lock;
struct Qdisc *qdisc_ingress;
/*
* Cache line mostly used on queue transmit path (qdisc)
*/
/* device queue lock */
spinlock_t queue_lock ____cacheline_aligned_in_smp;
struct Qdisc *qdisc;
struct Qdisc *qdisc_sleeping;
struct list_head qdisc_list; |
En kernel 2.6.28 heeft dit in zijn geheel niet meer maar in plaats daarvan een nieuwe struct buiten net_device:
code:
1
2
3
4
5
6
7
8
| struct netdev_queue {
struct net_device *dev;
struct Qdisc *qdisc;
unsigned long state;
spinlock_t _xmit_lock;
int xmit_lock_owner;
struct Qdisc *qdisc_sleeping;
} ____cacheline_aligned_in_smp; |
Nu wil ik dus kijken bij welke kernelversie deze wijziging is ingebracht, maar de enige manier tot nu toe is om alle tussenliggende kernels de downloaden en dan stuk voor stuk de netdevice.h te gaan vergelijken.
Ik heb al geprobeerd de changelogs er op na te slaan, maar daar vind ik het niet in. Bestaat er zoiets als een SVN van de kernel waarin ik in bijv track de wijzigingen op deze file na kan lezen?
Ik weet dat het in 2.6.25.7 goed zit, en inmiddels dat het in 2.6.27 en 2.6.28 "anders" zit
Voordat ik nu in 5x kernel downloaden de juiste kernel vind uit de tussenliggende 22, vroeg ik me af of iemand een andere oplossing weet.
EDIT: Hmm, misschien had ik dit in de devschuur moeten gooien.