What is the difference between qdisc and qdisc_sleeping? (in struct netdev_queue, file include/linux/netdevice.h)

I've been trying to find the answer to this question for a while, but I didn't succeed.
Does anyone knows why we need both pointers in netdev_queue?

In addition, there are 2 different locks related to these 2 ptrs in include/net/sch_generic.h: qdisc_root_lock() and qdisc_root_sleeping_lock(). Why we need both?

Thanks,

--
Henrique Rodrigues