Re: How to send multiple TCP packets from a kernel thread ASAP?

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

 



On Sun, Jun 29, 2003 at 10:37:12AM -0400, Ronghua Zhang wrote:
> Hi,
>   I came to a situation that requires to send multiple TCP packets (one
> for each connection) from a kernel thread as soon as possible. The
> following is the skeleton of my code:

  I should say this is a heissenbug ... one which happens because
  you are observing it with printk().

> kernel_thread()
> {
>     foreach sk in (alive connections){
>         tp = &(sk->tp_pinfo.af_tcp);
> 
>         skb = alloc_skb(xxx, GFP_ATOMIC);
>         /* build TCP header */
>         tcp_build_and_update_options(.....);
>         tp->af_specific->send_check(sk, th, skb->len, skb);
> 
>         tp->af_specific->queue_xmit(skb);
>         printk("packet send out for sk %p, at %lu\n", sk, jiffies);
>     }
> }
> 
> the output is always like this:
> packet send out for sk 1 at 1000
> packet send out for sk 2 at 1001
> packet send out for sk 3 at 1002
> ...
> 
> It looks like this kernel thread get rescheduled after it has sent out 1
> packet. But why? each iteration certainly does not need 10ms, why it get
> rescheduled? Is it because af_specific->queue_xmit() is blocking
> operation? but I notice that tcp_transmit_skb() also call it, and
> tcp_transmit_skb() should not call any blockalbe operation. I try to
> increase its priority or change its schedule policy,but has no effect
> at all. Any suggestion is appreciated! This is really urgent.
> 
> 
> Ronghua
> -
> : send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux