网络子系统45_ip协议tos处理
//ip报头tos字段,一个字节 // 二进制位:[0 1 2] [3] [4] [5] [6] [7] // 1.[0 1 2] 表示优先级: // 000 路由 // 001 优先级 // 010 立即 // 011 火速 // 100 火速覆盖 // 101 紧急 // 110 互联网控制 // 111 网络控制 // 2.[3] 表示时延 // 0 普通 // 1 最小 // 3.[4] 吞吐量 // 0 普通 // 1 最大 // 4.[5] 可靠性 // 0 普通 // 1.最大 // 5.[6] 开销 // 0 普通 // 1 最小 // 6.[7] 保留,恒为0 //由ip报头的tos字段,计算skb的优先级,用于在规则队列中选择优先级队列 1.1 static inline char rt_tos2priority(u8 tos) { return ip_tos2prio[IPTOS_TOS(tos)>>1]; } //获取tos的[3,4,5,6]比特位,右移一位,转换为0~15范围的数 1.2 #define IPTOS_TOS_MASK 0x1E #define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK) // 1.3 __u8 ip_tos2prio[16] = { TC_PRIO_BESTEFFORT, ECN_OR_COST(FILLER), TC_PRIO_BESTEFFORT, ECN_OR_COST(BESTEFFORT), TC_PRIO_BULK, ECN_OR_COST(BULK), TC_PRIO_BULK, ECN_OR_COST(BULK), TC_PRIO_INTERACTIVE, ECN_OR_COST(INTERACTIVE), TC_PRIO_INTERACTIVE, ECN_OR_COST(INTERACTIVE), TC_PRIO_INTERACTIVE_BULK, ECN_OR_COST(INTERACTIVE_BULK), TC_PRIO_INTERACTIVE_BULK, ECN_OR_COST(INTERACTIVE_BULK) };