	  Open Fabrics Enterprise Distribution (OFED)
             RDS in OFED 1.2.c Release Notes
			  
			   August 2007


===============================================================================
Table of Contents
===============================================================================
1. Overview
2. Supported Platforms
3. Installation & Configuration
4. New Features
5. Bug fixes and Enhancements since OFED 1.2 

===============================================================================
1. Overview
===============================================================================
RDS socket API.  It provides reliable, in-order datagram delivery between 
sockets over a variety of transports.
For details see RDS.README.txt.
Also available at: http://oss.oracle.com/projects/rds/dist/documentation/rds.7.txt

===============================================================================
2. supported platforms
===============================================================================

        RHEL4.0 Update 3,4,5
        RHEL5.0
        SLES 10

===============================================================================
3. Installation & Configuration
===============================================================================
To install RDS select rds in OFED's manual installation or put 'rds=y' in the
ofed.conf for unattended installation.

To load RDS module upon boot edit file '/etc/infiniband/openib.conf' as 
follows:

# Load RDS module
RDS_LOAD=yes

===============================================================================
4. New Features
===============================================================================
RDS socket send buffers are now per socket, not per flow, and the new receive
buffer value is per socket.  So we should use the core stack sndbuf and rcvbuf
values instead of offering a separate interface.

Use the following script to change the default and max socket buffer sysctls 
to a 1 MB:

#!/bin/bash

nr=$((1 * 1024 * 1024))
sys="/proc/sys/net/core"

for f in {r,w}mem_{default,max}; do
        echo $nr > $sys/$f
done

===============================================================================
5. Bug fixes and Enhancements since OFED 1.2 
===============================================================================
1.  rds_poll() always returns POLLOUT.  If you try to send and get
    EWOULDBLOCK because the remote receiver is congested then you don't get
    to wait for POLLOUT to be raised before sending again -- it's always
    raised.  This is worked around by implementing some kind of exponential
    back-off while retrying the send.  This can be done by increasing the
    timeout given to poll().  At each poll() timeout expiry the send is
    tried again.

    This idea of waking poll() waiters on congestion notification hopes to
    cut down on the latency between when the send could succeed and when the
    poll() timeout hits and the send is retried.  If we receive a congestion
    bitmap update from the remote node we wake poll() waiters, giving them a
    chance to retry their send. 

2.  Set max send and receive scatter/gather list size to 2 in the QP attributes.
    The second sge used for RDS header.

3.  Added rs_poll_flag to rds_socket structure to indicate the back pressure
    status and send space availability.

    rds_poll set POLLIN in case of released back pressure, send space became
    available and if there are messages in the receive queue.
    set POLLOUT if send buffer is available

4.  Added MODULE_VERSION.
