[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1477578157-13256-1-git-send-email-parthasarathy.bhuvaragan@ericsson.com>
Date: Thu, 27 Oct 2016 16:22:21 +0200
From: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@...csson.com>
To: <netdev@...r.kernel.org>
CC: <tipc-discussion@...ts.sourceforge.net>, <jon.maloy@...csson.com>,
<maloy@...jonn.com>, <ying.xue@...driver.com>
Subject: [PATCH net-next v1 00/16] tipc: socket layer improvements
The following issues with the current socket layer hinders socket diagnostics
implementation, which led to this patch series.
1. tipc socket state is derived from multiple variables like
sock->state, tsk->probing_state and tsk->connected. This style forces
us to export multiple attributes to the user space, which has to be
backward compatible.
2. Abuse of sock->state cannot be exported to user-space without
requiring tipc specific hacks in the user-space.
- For connection less (CL) sockets sock->state is overloaded to
tipc state SS_READY.
- For connection oriented (CO) listening socket sock->state is
overloaded to tipc state SS_LISTEN.
This series is split into four:
1. Bug fixes in patch #1,2,3.
2. Minor cleanups in patch#4-5.
3. Express all tipc states using a single variable in patch#6-8.
4. Migrate the new tipc states to sk->sk_state in patch#9-16.
The figures below represents the FSM after this series:
For connectionless sockets:
+-----------+ +--------------+
| TIPC_OPEN |------>| TIPC_CLOSING |
+-----------+ +--------------+
Stream Server Listening Socket:
+-----------+ +-------------+
| TIPC_OPEN |------>| TIPC_LISTEN |
+-----------+ +-------------+
|
+--------------+ |
| TIPC_CLOSING |<-----------+
+--------------+
Stream Server Data Socket:
+-----------+ +------------------+
| TIPC_OPEN |------>| TIPC_ESTABLISHED |<---+
+-----------+ +------------------+ |
^ | | |
| | +----------+
| v
+--------------+
| TIPC_PROBING |
+--------------+
|
|
v
+--------------+ +--------------------+
| TIPC_CLOSING |<---| TIPC_DISCONNECTING |
+--------------+ +--------------------+
Stream Socket Client:
+-----------+ +-----------------+
| TIPC_OPEN |------>| TIPC_CONNECTING |
+-----------+ +-----------------+
|
|
v
+------------------+
| TIPC_ESTABLISHED |<---+
+------------------+ |
^ | | |
| | +---------+
| v
+--------------+
| TIPC_PROBING |
+--------------+
|
|
v
+--------------+ +--------------------+
| TIPC_CLOSING |<---| TIPC_DISCONNECTING |
+--------------+ +--------------------+
NOTE:
This is just a base refractoring required for socket diagnostics.
TIPC socket diagnostics support will be introduced in a later series.
Parthasarathy Bhuvaragan (16):
tipc: return early for non-blocking sockets at link congestion
tipc: wakeup sleeping users at disconnect
tipc: set kern=0 in sk_alloc() during tipc_accept()
tipc: rename struct tipc_skb_cb member handle to bytes_read
tipc: rename tsk->remote to tsk->peer for consistent naming
tipc: remove tsk->connected for connectionless sockets
tipc: remove tsk->connected from tipc_sock
tipc: remove probing_intv from tipc_sock
tipc: remove socket state SS_READY
tipc: create TIPC_LISTEN as a new sk_state
tipc: create TIPC_PROBING/TIPC_ESTABLISHED as new sk_states
tipc: create TIPC_OPEN as a new sk_state
tipc: create TIPC_DISCONNECTING as a new sk_state
tipc: create TIPC_CLOSING as a new sk_state
tipc: create TIPC_CONNECTING as a new sk_state
tipc: remove SS_CONNECTED sock state
include/uapi/linux/tipc.h | 13 ++
net/tipc/msg.h | 2 +-
net/tipc/socket.c | 385 +++++++++++++++++++++++++---------------------
3 files changed, 222 insertions(+), 178 deletions(-)
--
2.1.4
Powered by blists - more mailing lists