[Samsung Galaxy Nexus] lioux:
Further information gathering. I won't procced with any further testing. I am neither sure how to interpret the data I already have for wlan0 nor that I am using the proper tools for the job.

I look forward to your input. I would like to be able to gather good values for both quantum and limit. I want to set them appropriately for the radio and wifi connections. Since we don't have the properly patched tc command, I'll probably be hard coding this on the fq_codel module itself.

Are there recommendations? If a guideline is available/suggested, I'll try to find good average values for this particular phone.

The data I gathered currently follows:

- Android phone Samsung Galaxy Nexus GSM I9250 running stock Yakju 4.2.2 with AK kernel

- WIFI connected to LAN, ADSL 512KiB U, Phone Google Drive upload at full speed. No other traffic on the network

- The drivers are available in binary form on Google page.

- Quick look on the Galaxy Nexus at RootzWiki

- There is a teardown on IFixit of all components

- Radio: Intel XG626 Baseband Modem

- WiFi / Bluetooth module: Broadcom BCM4330

- Samsung SWB-B42 BT 4.0 Dual Band Wlan FM Tx/Rx. Chipworks says the module is actually manufactured by Murata, and houses a Broadcom BCM4330 die inside.

# uname -a
Linux localhost 3.0.67+~ak.710.422.Cylon #1 SMP PREEMPT Wed Feb 27 06:54:36 CET 2013 armv7l GNU/Linux
# netcfg
lo UP 127.0.0.1/8 0x00000049
ifb0 DOWN 0.0.0.0/0 0x00000082
ifb1 DOWN 0.0.0.0/0 0x00000082
tunl0 DOWN 0.0.0.0/0 0x00000080
sit0 DOWN 0.0.0.0/0 0x00000080
ip6tnl0 DOWN 0.0.0.0/0 0x00000080
rmnet0 DOWN 0.0.0.0/0 0x00001090
rmnet1 DOWN 0.0.0.0/0 0x00001090
rmnet2 DOWN 0.0.0.0/0 0x00001090
p2p0 UP 0.0.0.0/0 0x00001003
wlan0 UP 10.0.0.101/25 0x00001043
# ls -l /sys/class/net/p2p0/
-r--r--r-- root root 4096 2013-03-02 21:33 addr_assign_type
-r--r--r-- root root 4096 2013-03-02 21:33 addr_len
-r--r--r-- root root 4096 2013-03-02 21:33 address
-r--r--r-- root root 4096 2013-03-02 21:33 broadcast
-r--r--r-- root root 4096 2013-03-02 21:33 carrier
-r--r--r-- root root 4096 2013-03-02 21:33 dev_id
lrwxrwxrwx root root 2013-03-02 21:33 device -> ../../../mmc1:0001:2
-r--r--r-- root root 4096 2013-03-02 21:33 dormant
-r--r--r-- root root 4096 2013-03-02 21:33 duplex
-r--r--r-- root root 4096 2013-03-02 21:33 features
-rw-r--r-- root root 4096 2013-03-02 21:33 flags
-rw-r--r-- root root 4096 2013-03-02 21:33 ifalias
-r--r--r-- root root 4096 2013-03-02 21:33 ifindex
-r--r--r-- root root 4096 2013-03-02 21:33 iflink
-r--r--r-- root root 4096 2013-03-02 21:33 link_mode
-rw-r--r-- root root 4096 2013-03-02 21:33 mtu
-rw-r--r-- root root 4096 2013-03-02 21:33 netdev_group
-r--r--r-- root root 4096 2013-03-02 21:33 operstate
lrwxrwxrwx root root 2013-03-02 21:33 phy80211 -> ../../ieee80211/phy0
drwxr-xr-x root root 2013-03-02 21:33 power
drwxr-xr-x root root 2013-03-02 21:33 queues
-r--r--r-- root root 4096 2013-03-02 21:33 speed
drwxr-xr-x root root 2013-03-02 21:33 statistics
lrwxrwxrwx root root 2013-03-02 21:33 subsystem -> ../../../../../../../../../../class/net
-rw-r--r-- root root 4096 2013-03-02 21:33 tx_queue_len
-r--r--r-- root root 4096 2013-03-02 21:33 type
-rw-r--r-- root root 4096 2013-03-02 21:33 uevent

# ls -l /sys/class/net/wlan0/
-r--r--r-- root root 4096 2013-03-02 21:38 addr_assign_type
-r--r--r-- root root 4096 2013-03-02 21:38 addr_len
-r--r--r-- root root 4096 2013-03-02 21:38 address
-r--r--r-- root root 4096 2013-03-02 21:38 broadcast
-r--r--r-- root root 4096 2013-03-02 21:38 carrier
-r--r--r-- root root 4096 2013-03-02 21:38 dev_id
lrwxrwxrwx root root 2013-03-02 21:38 device -> ../../../mmc1:0
001:2
-r--r--r-- root root 4096 2013-03-02 21:38 dormant
-r--r--r-- root root 4096 2013-03-02 21:38 duplex
-r--r--r-- root root 4096 2013-03-02 21:38 features
-rw-r--r-- root root 4096 2013-03-02 21:38 flags
-rw-r--r-- root root 4096 2013-03-02 21:38 ifalias
-r--r--r-- root root 4096 2013-03-02 21:38 ifindex
-r--r--r-- root root 4096 2013-03-02 21:38 iflink
-r--r--r-- root root 4096 2013-03-02 21:38 link_mode
-rw-r--r-- root root 4096 2013-03-02 21:38 mtu
-rw-r--r-- root root 4096 2013-03-02 21:38 netdev_group
-r--r--r-- root root 4096 2013-03-02 21:38 operstate
lrwxrwxrwx root root 2013-03-02 21:38 phy80211 -> ../../ieee80211/phy0
drwxr-xr-x root root 2013-03-02 21:38 power
drwxr-xr-x root root 2013-03-02 21:38 queues
-r--r--r-- root root 4096 2013-03-02 21:38 speed
drwxr-xr-x root root 2013-03-02 21:31 statistics
lrwxrwxrwx root root 2013-03-02 21:38 subsystem -> ../../../../../../../../../../class/net
-rw-r--r-- root root 4096 2013-03-02 21:38 tx_queue_len
-r--r--r-- root root 4096 2013-03-02 21:38 type
-rw-r--r-- root root 4096 2013-03-02 21:38 uevent

By quick traffic examination, it seems that all WIFI traffic flows through wlan0:

# tc -s qdisc
Android does not support qdisc 'fq_codel'
qdisc fq_codel 8001: dev rmnet0 root refcnt 2 [cannot parse qdisc parameters]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Android does not support qdisc 'prio'
qdisc pfifo_fast 0: dev p2p0 root refcnt 2 [cannot parse qdisc parameters]
Sent 468 bytes 6 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Android does not support qdisc 'prio'
qdisc pfifo_fast 0: dev wlan0 root refcnt 2 [cannot parse qdisc parameters]
Sent 38442999 bytes 26737 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

Here follows the information on wlan0 interface:

# cat /sys/class/net/wlan0/tx_queue_len
1000
# cat /sys/class/net/wlan0/speed
sh: cat: /sys/class/net/wlan0/speed: Invalid argument
# ls -l /sys/class/net/wlan0/queues
drwxr-xr-x root root 2013-03-02 22:04 rx-0
drwxr-xr-x root root 2013-03-02 22:04 tx-0
# ls -l /sys/class/net/wlan0/queues/tx-0
-rw-r--r-- root root 4096 2013-03-02 22:04 xps_cpus

Let's try to measure the hardware buffer by sending 500 pings to 187.7.117.32 with "Net Ping" from Play Store. I'll use different txqueuelen values each time. There is a concurrent upload at full speed to Google Drive.

# echo 0 > /sys/class/net/wlan0/tx_queue_len
# cat /sys/class/net/wlan0/tx_queue_len
0

500 pings
(187.7.117.32) min-max: 61.6-1058 ms
(187.7.117.32) avg/stddev: 315/167 ms

# echo 1 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 60.3-1365 ms
(187.7.117.32) avg/stddev: 602/310 ms

# echo 10 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 61.2-1337 ms
(187.7.117.32) avg/stddev: 571/288 ms

# echo 100 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 61.2-1455 ms
(187.7.117.32) avg/stddev: 647/343 ms

# echo 1000 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 60.0-1484 ms
(187.7.117.32) avg/stddev: 616/342 ms

Repeat the above tests without the concurrent upload.

# echo 0 > /sys/class/net/wlan0/tx_queue_len
# echo 0 > /sys/class/net/p2p0/tx_queue_len

500 pings
(187.7.117.32) min-max: 61.7-213 ms
(187.7.117.32) avg/stddev: 70.6/15.0 ms

# echo 1 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 60.7-207 ms
(187.7.117.32) avg/stddev: 70.5/15.4 ms

# echo 10 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 60.6-244 ms
(187.7.117.32) avg/stddev: 69.1/10.5 ms

# echo 100 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 60.7-246 ms
(187.7.117.32) avg/stddev: 70.1/15.4 ms

# echo 1000 > /sys/class/net/wlan0/tx_queue_len

500 pings
(187.7.117.32) min-max: 61.4-251 ms
(187.7.117.32) avg/stddev: 70.2/16.3 ms

I've disabled WIFI and enabled 3G. I've got a HDSPA connection.

# netcfg
lo UP 127.0.0.1/8 0x00000049
00:00:00
ifb0 DOWN 0.0.0.0/0 0x00000082
f9:64:69
ifb1 DOWN 0.0.0.0/0 0x00000082
c6:b4:f9
tunl0 DOWN 0.0.0.0/0 0x00000080
00:00:00
sit0 DOWN 0.0.0.0/0 0x00000080
00:00:00
ip6tnl0 DOWN 0.0.0.0/0 0x00000080
00:00:00
rmnet0 UP 179.225.225.71/24 0x000010d1
00:00:00
rmnet1 DOWN 0.0.0.0/0 0x00001090
00:00:00
rmnet2 DOWN 0.0.0.0/0 0x00001090
00:00:00
p2p0 DOWN 0.0.0.0/0 0x00001002
c5:c2:4e
wlan0 DOWN 0.0.0.0/0 0x00001002

Here follows the information on rmnet0 interface:

# cat /sys/class/net/rmnet0/tx_queue_len
1000
# cat /sys/class/net/rmnet0/speed
/system/bin/sh: cat: /sys/class/net/rmnet0/speed: Invalid argument
# ls -l /sys/class/net/rmnet0/queues
drwxr-xr-x root root 2013-03-03 15:03 rx-0
drwxr-xr-x root root 2013-03-03 15:03 tx-0
# ls -l /sys/class/net/rmnet0/queues/tx-0
-rw-r--r-- root root 4096 2013-03-03 15:03 xps_cpus