netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2 00/16] tipc: socket layer improvements
@ 2016-11-01 13:02 Parthasarathy Bhuvaragan
  2016-11-01 13:02 ` [PATCH net-next v2 01/16] tipc: return early for non-blocking sockets at link congestion Parthasarathy Bhuvaragan
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: Parthasarathy Bhuvaragan @ 2016-11-01 13:02 UTC (permalink / raw)
  To: netdev; +Cc: jon.maloy, tipc-discussion

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:

Stream Server Listening Socket:
+-----------+       +-------------+
| TIPC_OPEN |------>| TIPC_LISTEN |
+-----------+       +-------------+

Stream Server Data Socket:
+-----------+       +------------------+
| TIPC_OPEN |------>| TIPC_ESTABLISHED |
+-----------+       +------------------+
                          ^   |
                          |   |
                          |   v
                    +--------------------+
                    | TIPC_DISCONNECTING |
                    +--------------------+

Stream Socket Client:
+-----------+       +-----------------+
| TIPC_OPEN |------>| TIPC_CONNECTING |------+
+-----------+       +-----------------+      |
                            |                |
                            |                |
                            v                |
                    +------------------+     |
                    | TIPC_ESTABLISHED |     |
                    +------------------+     |
                          ^   |              |
                          |   |              |
                          |   v              |
                    +--------------------+   |
                    | TIPC_DISCONNECTING |<--+
                    +--------------------+

NOTE:
This is just a base refractoring required for socket diagnostics.
TIPC socket diagnostics support will be introduced in a later series.

v2: - remove extra cast and parenthesis as suggested by David S. Miller in #4.
    - map new tipc state values to tcp states to address Eric Dumazet's concern,
      thus allow the usage of generic sk_* helpers. This is done in patch#10-15.
    - remove TIPC_PROBING state and replace it with probe_unacked flag in #11.
    - replace the TIPC_CLOSING state in v1 with sk_shutdown flag in #14.
    - introduce __tipc_shutdown() to avoid code duplication in #14.

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_ESTABLISHED as a new sk_state
  tipc: create TIPC_OPEN as a new sk_state
  tipc: create TIPC_DISCONNECTING as a new sk_state
  tipc: remove SS_DISCONNECTING state
  tipc: create TIPC_CONNECTING as a new sk_state
  tipc: remove SS_CONNECTED sock state

 net/tipc/msg.h    |   2 +-
 net/tipc/socket.c | 478 +++++++++++++++++++++++++++---------------------------
 2 files changed, 242 insertions(+), 238 deletions(-)

-- 
2.1.4


------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2016-11-01 15:53 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-01 13:02 [PATCH net-next v2 00/16] tipc: socket layer improvements Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 01/16] tipc: return early for non-blocking sockets at link congestion Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 02/16] tipc: wakeup sleeping users at disconnect Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 03/16] tipc: set kern=0 in sk_alloc() during tipc_accept() Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 04/16] tipc: rename struct tipc_skb_cb member handle to bytes_read Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 05/16] tipc: rename tsk->remote to tsk->peer for consistent naming Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 06/16] tipc: remove tsk->connected for connectionless sockets Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 07/16] tipc: remove tsk->connected from tipc_sock Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 08/16] tipc: remove probing_intv " Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 09/16] tipc: remove socket state SS_READY Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 10/16] tipc: create TIPC_LISTEN as a new sk_state Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 11/16] tipc: create TIPC_ESTABLISHED " Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 12/16] tipc: create TIPC_OPEN " Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 13/16] tipc: create TIPC_DISCONNECTING " Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 14/16] tipc: remove SS_DISCONNECTING state Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 15/16] tipc: create TIPC_CONNECTING as a new sk_state Parthasarathy Bhuvaragan
2016-11-01 13:02 ` [PATCH net-next v2 16/16] tipc: remove SS_CONNECTED sock state Parthasarathy Bhuvaragan
2016-11-01 15:53 ` [PATCH net-next v2 00/16] tipc: socket layer improvements David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).