#ifndef _CPMAC_SCHED_H_
#define _CPMAC_SCHED_H_

#include <linux/pkt_sched.h>


/* 
 * WAN queues
 */
#define CPMAC_WAN_QUEUE_BANDS	16

#define CPMAC_PRIO_WAN_PPP   	0
#define CPMAC_PRIO_WAN_IGMP   	1
#define CPMAC_PRIO_WAN_VOIP   	2

/* ip traffic from local system */
#define CPMAC_PRIO_WAN_LOCAL_0  3
#define CPMAC_PRIO_WAN_LOCAL_1  (CPMAC_PRIO_WAN_LOCAL_0+1)
#define CPMAC_PRIO_WAN_LOCAL_2  (CPMAC_PRIO_WAN_LOCAL_1+1)

/* ip traffic forwarded from high prio ports (cpmac 3/4) */
#define CPMAC_PRIO_WAN_HFORW_ACK  6
#define CPMAC_PRIO_WAN_HFORW_0    (CPMAC_PRIO_WAN_HFORW_ACK+1)
#define CPMAC_PRIO_WAN_HFORW_1    (CPMAC_PRIO_WAN_HFORW_0+1)
#define CPMAC_PRIO_WAN_HFORW_2    (CPMAC_PRIO_WAN_HFORW_1+1)

/* ip traffic forwarded from low prio ports (cpmac 1/2 or wlan) */
#define CPMAC_PRIO_WAN_LFORW_ACK  10
#define CPMAC_PRIO_WAN_LFORW_0    (CPMAC_PRIO_WAN_LFORW_ACK+1)
#define CPMAC_PRIO_WAN_LFORW_1    (CPMAC_PRIO_WAN_LFORW_0+1)
#define CPMAC_PRIO_WAN_LFORW_2    (CPMAC_PRIO_WAN_LFORW_1+1)

/* 
 * LAN queues
 */

#define CPMAC_LAN_QUEUE_BANDS	5

/* ip traffic send to normal lan */
#define CPMAC_PRIO_ETH_MULTICAST   0
#define CPMAC_PRIO_ETH_ACK         (CPMAC_PRIO_ETH_MULTICAST+1)
#define CPMAC_PRIO_ETH_0           (CPMAC_PRIO_ETH_ACK+1)
#define CPMAC_PRIO_ETH_1           (CPMAC_PRIO_ETH_0+1)
#define CPMAC_PRIO_ETH_2           (CPMAC_PRIO_ETH_1+1)

int cpmac_set_queue(struct net_device *dev);

#endif /* _CPMAC_SCHED_H_ */
