accessing the skb queued in cbq_class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux