Fwd: Question on IP_TOS options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Fwd to linux-usb.

Since the wifi card we are using is of the USB interface. We tried on
two diffrent USB controllers, looks like the ISP1362 works OK and
problems happens only on MUSB controller. For both USB controllers we
are using the same kernel version and USB wifi card.

---------- Forwarded message ----------
From: Aaron Wu <aaronwu06@xxxxxxxxx>
Date: Mon, Jun 13, 2011 at 3:11 PM
Subject: Question on IP_TOS options
To: Majordomo@xxxxxxxxxxxxxxx


Greetings!

Recently I am looking into some network performance test, but have no
idea how the IP_TOS, to be specific the 0xa0 (means
IPTOS_PREC_CRITIC_ECP?) works. Here is the full story:
By starting two iperf sessions at the same time, followed by the third
iperf session right after 10 seconds like below:

1)iperf -c <serverip> -p 5001 -u -t 20 -S 0x00 -b 3.2M -i 2
2)iperf -c <serverip> -p 5002 -u -t 20 -S 0xa0 -b 2.8M -i 2

3)iperf -c <serverip> -p 5003 -u -t 20 -S 0x00 -b 3.2M -i 2

The total network bandwidth is about 6M, so first we fill all the
bandwidth with session 1 and sesson 2, session one is marked as low
priority by -S 0x00 and session 2 as high prioirty with -S 0xa0.
Then 10 seconds later, we start the third low priority session. The
expected result is: bandwidth for session 2 will not drop to 90% of
it's original value before the insertion of session 3, as it's the
high
priority session. However, the actual test result varies from platform
to platform, on a ubuntu 10.04 X86 computer is works as expected, on
another embedded platform also running the IPV4, bandwidth
for session 2 decreased greatly due to the insertion of session 3. We
tracked the code and find -S option for iperf eventually invokes the
following code in net/ipv4/ip_sockglue.c:


 case IP_TOS:    /* This sets both TOS and Precedence */
                printk("Setting IP_TOS, val is 0x%x\n", val);
                if (sk->sk_type == SOCK_STREAM) {
                        val &= ~3;
                        val |= inet->tos & 3;
                        printk("Setting IP_TOS, is stream val is 0x%x\n", val);
                }
                if (inet->tos != val) {
                        inet->tos = val;
                        sk->sk_priority = rt_tos2priority(val);
                        sk_dst_reset(sk);
                        printk("Setting IP_TOS, set tos to val is 0x%x\n", val);
                }
                break;
We don't have idea on the 0xa0 (IPTOS_PREC_CRITIC_ECP) for IP_TOS
option and have no idea why on X86 it works well and on the embedded
platform it does not. Appreciate very much if someone could shed some
light.

Best regards,
Aaron
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux