RDS/IB: Handle connections using RDS 3.0 wire protocol
The big differences between RDS 3.0 and 3.1 are protocol-level flow control, and with 3.1 the header is in front of the data. The header always ends up in the header buffer, and the data goes in the data page. In 3.0 our "header" is a trailer, and will end up either in the data page, the header buffer, or split across the two. Since 3.1 is backwards- compatible with 3.0, we need to continue to support these cases. This patch does that -- if using RDS 3.0 wire protocol, it will copy the header from wherever it ended up into the header buffer. Signed-off-by: Andy Grover <andy.grover@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committato da
David S. Miller

parent
9ddbcfa098
commit
02a6a2592e
@@ -101,10 +101,13 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even
|
||||
if (event->param.conn.private_data_len >= sizeof(*dp)) {
|
||||
dp = event->param.conn.private_data;
|
||||
|
||||
rds_ib_set_protocol(conn,
|
||||
/* make sure it isn't empty data */
|
||||
if (dp->dp_protocol_major) {
|
||||
rds_ib_set_protocol(conn,
|
||||
RDS_PROTOCOL(dp->dp_protocol_major,
|
||||
dp->dp_protocol_minor));
|
||||
rds_ib_set_flow_control(conn, be32_to_cpu(dp->dp_credit));
|
||||
dp->dp_protocol_minor));
|
||||
rds_ib_set_flow_control(conn, be32_to_cpu(dp->dp_credit));
|
||||
}
|
||||
}
|
||||
|
||||
printk(KERN_NOTICE "RDS/IB: connected to %pI4 version %u.%u%s\n",
|
||||
|
Fai riferimento in un nuovo problema
Block a user