Android支持有类Qdisc'Prio'

时间:2013-09-04 19:30:05

标签: android linux performance linux-kernel linux-device-driver

我尝试使用流量控制选项在我的Android手机上将流量从一个界面重定向到另一个界面。

尝试命令时,

tc qdisc add dev wlan0 root handle 1: prio

我收到以下错误

Android does not support qdisc 'prio'
  • 我有什么方法可以在Android中获得 prio qdisc支持?
  • 如果Android不支持 prio qdisc,那么我的其他选项可能是什么?
  • Android整体支持有类qdiscs吗?

2 个答案:

答案 0 :(得分:1)

对于现在正在研究这个问题的人来说,Android开发人员实际上将特定模块硬编码到tc中并将其中的大部分/大部分模块保留下来,包括prio。如果您从root查看位于/external/iproute2/tc/tc.c(链接到kitkat)的AOSP的tc.c文件,您会看到他们将特定的qdisc类型硬编码到支票中:

#ifdef ANDROID
    if (!strcmp(str, "cbq"))
        return &cbq_qdisc_util;
    else if (!strcmp(str, "htb"))
        return &htb_qdisc_util;
    else if (!strcmp(str, "ingress"))
        return &ingress_qdisc_util;
    else {
        fprintf(stderr, "Android does not support qdisc '%s'\n", str);
        return NULL;
    }
#endif

我在cynaogenmod发现了一个提交,它实际上修补了这些文件以恢复剩余的功能,比如prio。您可以找到代码提交here(将差异下载到补丁)。

希望有所帮助!

答案 1 :(得分:-1)

CONFIG_NET_SCH_PRIO 支持Linux内核中的prio qdisc。很可能在构建内核时没有启用它。它列在Linux内核配置树下:

-> Networking support
  -> Networking options
    -> QoS and/or fair queueing 
      -> Multi Band Priority Queueing (PRIO)