}
        }
 
-       pr_notice("RDS/IB: %s conn connected <%pI6c,%pI6c> version %u.%u%s\n",
+       pr_notice("RDS/IB: %s conn connected <%pI6c,%pI6c,%d> version %u.%u%s\n",
                  ic->i_active_side ? "Active" : "Passive",
-                 &conn->c_laddr, &conn->c_faddr,
+                 &conn->c_laddr, &conn->c_faddr, conn->c_tos,
                  RDS_PROTOCOL_MAJOR(conn->c_version),
                  RDS_PROTOCOL_MINOR(conn->c_version),
                  ic->i_flowctl ? ", flow control" : "");
                            cpu_to_be16(RDS_IB_SUPPORTED_PROTOCOLS);
                        dp->ricp_v6.dp_ack_seq =
                            cpu_to_be64(rds_ib_piggyb_ack(ic));
+                       dp->ricp_v6.dp_cmn.ricpc_dp_toss = conn->c_tos;
 
                        conn_param->private_data = &dp->ricp_v6;
                        conn_param->private_data_len = sizeof(dp->ricp_v6);
                            cpu_to_be16(RDS_IB_SUPPORTED_PROTOCOLS);
                        dp->ricp_v4.dp_ack_seq =
                            cpu_to_be64(rds_ib_piggyb_ack(ic));
+                       dp->ricp_v4.dp_cmn.ricpc_dp_toss = conn->c_tos;
 
                        conn_param->private_data = &dp->ricp_v4;
                        conn_param->private_data_len = sizeof(dp->ricp_v4);
                rdma_notify(ic->i_cm_id, IB_EVENT_COMM_EST);
                break;
        default:
-               rdsdebug("Fatal QP Event %u (%s) "
-                       "- connection %pI6c->%pI6c, reconnecting\n",
-                       event->event, ib_event_msg(event->event),
-                       &conn->c_laddr, &conn->c_faddr);
+               rdsdebug("Fatal QP Event %u (%s) - connection %pI6c->%pI6c, reconnecting\n",
+                        event->event, ib_event_msg(event->event),
+                        &conn->c_laddr, &conn->c_faddr);
                rds_conn_drop(conn);
                break;
        }
 
        /* Even if len is crap *now* I still want to check it. -ASG */
        if (event->param.conn.private_data_len < data_len || major == 0)
-               return RDS_PROTOCOL_3_0;
+               return RDS_PROTOCOL_4_0;
 
        common = be16_to_cpu(mask) & RDS_IB_SUPPORTED_PROTOCOLS;
-       if (major == 3 && common) {
-               version = RDS_PROTOCOL_3_0;
+       if (major == 4 && common) {
+               version = RDS_PROTOCOL_4_0;
                while ((common >>= 1) != 0)
                        version++;
        } else if (RDS_PROTOCOL_COMPAT_VERSION ==
                daddr6 = &d_mapped_addr;
        }
 
-       rdsdebug("saddr %pI6c daddr %pI6c RDSv%u.%u lguid 0x%llx fguid "
-                "0x%llx\n", saddr6, daddr6,
-                RDS_PROTOCOL_MAJOR(version), RDS_PROTOCOL_MINOR(version),
+       rdsdebug("saddr %pI6c daddr %pI6c RDSv%u.%u lguid 0x%llx fguid 0x%llx, tos:%d\n",
+                saddr6, daddr6, RDS_PROTOCOL_MAJOR(version),
+                RDS_PROTOCOL_MINOR(version),
                 (unsigned long long)be64_to_cpu(lguid),
-                (unsigned long long)be64_to_cpu(fguid));
+                (unsigned long long)be64_to_cpu(fguid), dp_cmn->ricpc_dp_toss);
 
        /* RDS/IB is not currently netns aware, thus init_net */
        conn = rds_conn_create(&init_net, daddr6, saddr6,
-                              &rds_ib_transport, 0, GFP_KERNEL, ifindex);
+                              &rds_ib_transport, dp_cmn->ricpc_dp_toss,
+                              GFP_KERNEL, ifindex);
        if (IS_ERR(conn)) {
                rdsdebug("rds_conn_create failed (%ld)\n", PTR_ERR(conn));
                conn = NULL;
 
        /* If the peer doesn't do protocol negotiation, we must
         * default to RDSv3.0 */
-       rds_ib_set_protocol(conn, RDS_PROTOCOL_VERSION);
+       rds_ib_set_protocol(conn, RDS_PROTOCOL_4_1);
        ic->i_flowctl = rds_ib_sysctl_flow_control;     /* advertise flow control */
 
        ret = rds_ib_setup_qp(conn);
 
 
        /* We expect errors as the qp is drained during shutdown */
        if (wc->status != IB_WC_SUCCESS && rds_conn_up(conn)) {
-               rds_ib_conn_error(conn, "send completion on <%pI6c,%pI6c> had status %u (%s), disconnecting and reconnecting\n",
-                                 &conn->c_laddr, &conn->c_faddr, wc->status,
+               rds_ib_conn_error(conn, "send completion on <%pI6c,%pI6c,%d> had status %u (%s), disconnecting and reconnecting\n",
+                                 &conn->c_laddr, &conn->c_faddr,
+                                 conn->c_tos, wc->status,
                                  ib_wc_status_msg(wc->status));
        }
 }