public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: stefani@seibold.net
Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
	davem@davemloft.net, netdev@vger.kernel.org,
	shemminger@vyatta.com
Subject: Re: [PATCH] new UDPCP Communication Protocol
Date: Sat, 01 Jan 2011 23:23:21 +0100	[thread overview]
Message-ID: <1293920601.2535.64.camel@edumazet-laptop> (raw)
In-Reply-To: <1293918276-28773-1-git-send-email-stefani@seibold.net>

Le samedi 01 janvier 2011 à 22:44 +0100, stefani@seibold.net a écrit :
> From: Stefani Seibold <stefani@seibold.net>
> 
> Changelog:
> 31.12.2010 first proposal
> 01.01.2011 code cleanup and fixes suggest by Eric Dumazet
> 
> UDPCP is a communication protocol specified by the Open Base Station
> Architecture Initiative Special Interest Group (OBSAI SIG). The
> protocol is based on UDP and is designed to meet the needs of "Mobile
> Communcation Base Station" internal communications. It is widely used by
> the major networks infrastructure supplier.
> 
> The UDPCP communication service supports the following features:
> 
> -Connectionless communication for serial mode data transfer
> -Acknowledged and unacknowledged transfer modes
> -Retransmissions Algorithm
> -Checksum Algorithm using Adler32
> -Fragmentation of long messages (disassembly/reassembly) to match to the MTU
>  during transport:
> -Broadcasting and multicasting messages to multiple peers in unacknowledged
>  transfer mode
> 
> UDPCP supports application level messages up to 64 KBytes (limited by 16-bit
> packet data length field). Messages that are longer than the MTU will be
> fragmented to the MTU.
> 
> UDPCP provides a reliable transport service that will perform message
> retransmissions in case transport failures occur.
> 
> The code is also a nice example how to implement a UDP based protocol as
> a kernel socket modules.
> 
> Due the nature of UDPCP which has no sliding windows support, the latency has a
> huge impact. The perfomance increase by implementing as a kernel module is
> about the factor 10, because there are no context switches and data packets or
> ACKs will be handled in the interrupt service.
> 
> There are no side effects to the network subsystems so i ask for merge it
> into linux-next. Hope you like it.
> 
> The patch is against 2.6.37-rc8
> 

Hi Stefani

1) Please base your next trys on net-next-2.6 : This is the reference
for stuff like that. It probably does not matter a lot, but still...


2) I still see some _irq() variants of spinlock(). Its not necessary in
network stack at the level you are working (process context, and
softirqs)

Please only use _bh() variants, it's enough.

3) I see UDPLITE references in your code. Are you sure UDPCP protocol
can really work on top of UDPLITE ? I think not, so please remove dead
code.

4) udpcp_release_sock() seems expensive to me. Why not testing
usk->timeout before releasing sock lock, and save a lock/unlock pair ?

static inline void udpcp_release_sock(struct sock *sk)
{
	struct udpcp_sock *usk = udpcp_sk(sk);

	if (usk->timeout)
		udpcp_handle_timeout(sk);
	release_sock(sk);
}

5) In udpcp_timeout(), if you find socket is locked by user, you set
timeout to one and rearm a timer to udpcp_timer(sk, jiffies + 1); 

Why is it needed, since user process is going to handle the timeout
indication from udpcp_release_sock() ?

Thanks

  reply	other threads:[~2011-01-01 22:23 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-01 21:44 [PATCH] new UDPCP Communication Protocol stefani
2011-01-01 22:23 ` Eric Dumazet [this message]
2011-01-02 11:17   ` Stefani Seibold
2011-01-02 11:33     ` Eric Dumazet
2011-01-02 11:57       ` Stefani Seibold
  -- strict thread matches above, loose matches on Subject: below --
2011-01-02 15:31 stefani
2011-01-02 16:34 ` Eric Dumazet
2011-01-02 19:48 ` Daniel Baluta
2011-01-02 21:33   ` Stefani Seibold
2011-01-02 21:40     ` Jesper Juhl
2011-01-02 19:55 ` Jesper Juhl
2011-01-02 21:46   ` Stefani Seibold
2011-01-02 22:04     ` Jesper Juhl
2011-01-02 22:21       ` Stefani Seibold
2011-01-02 20:16 ` Rémi Denis-Courmont
2011-01-02 21:37   ` Stefani Seibold
2011-01-02 21:55 ` Eric Dumazet
2011-01-02 22:16   ` Stefani Seibold
2011-01-02 22:31     ` Eric Dumazet
2011-01-02 22:39 stefani
2011-01-02 22:49 ` Eric Dumazet
2011-01-02 22:55   ` Stefani Seibold
2011-01-02 23:04     ` Jesper Juhl
2011-01-03  9:08       ` Stefani Seibold
2011-01-03  9:27         ` Eric Dumazet
2011-01-03  9:54           ` Stefani Seibold
2011-01-03 10:39             ` Eric Dumazet
2011-01-03 14:08               ` Stefani Seibold
2011-01-03 14:34 stefani
2011-01-11 16:48 stefani
2011-01-11 17:01 ` Eric Dumazet
2011-01-11 20:50   ` Stefani Seibold
2011-01-11 20:52     ` David Miller
2011-01-11 21:14       ` Stefani Seibold
2011-01-11 21:19         ` David Miller
2011-01-11 21:41           ` Stefani Seibold
2011-01-11 21:46             ` Eric Dumazet
2011-01-11 22:23               ` Stefani Seibold
2011-01-11 21:30         ` Eric Dumazet
2011-01-11 21:40           ` Stefani Seibold
2011-01-11 21:06     ` Eric Dumazet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1293920601.2535.64.camel@edumazet-laptop \
    --to=eric.dumazet@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=shemminger@vyatta.com \
    --cc=stefani@seibold.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox