I want to access packet stored skb before it gets dequeued from cbq scheduler. I want to do this from within cbq_update(){} having the pointer to cbq_sched_data *q. The cbq_class declared in sch_cbq.c has two pointers to Qdisc queueing discipline (q, qdisc). From the description in sch_cbq.c I see that: struct cbq_class{ [..] 124 struct Qdisc *qdisc; /* Ptr to CBQ discipline*/ 133 struct Qdisc *q; /* Elementary queueing discipline */ [..] } So to access packet (skb) in the queue I do: cbq_class *cl = q->tx_class; // access current tx class list = ((struct sk_buff_head*)cl->q->data); //get the pointer to the list hosting our packet _prev = (struct sk_buff*) list; // try to reach skb that waits in the queue _next = _prec->next; // access skb that is first in current class qdisc // I found that sk_buff_head's next points to the // first packet in the queue If(_prev != _next) _skb = _next; /*now the critical one */ printk("skb.len= %d \n",_skb->len); THIS LINE GENERATES OOPS whatever skb struct field I try to access!!! (the code above is based mainly on pfifo_fast_dequeue(){}) Can anyone pls point what I do wrong? Thank you in advance. Adam - : send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html