RDMA/nes: Enable the use of the tos field in the nes driver
authorFaisal Latif <Faisal.Latif@intel.com>
Mon, 18 May 2015 20:28:14 +0000 (15:28 -0500)
committerDoug Ledford <dledford@redhat.com>
Tue, 2 Jun 2015 13:22:31 +0000 (09:22 -0400)
RDMA/nes: Enable the use of the tos field in the nes driver

Signed-off-by: Faisal Latif <Faisal.Latif@intel.com>
Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/nes/nes_cm.c
drivers/infiniband/hw/nes/nes_cm.h

index 72b43417cbe382aed9164b5554e80b449270c3ad..9047af4299065f543252a29297fbd40e603531b3 100644 (file)
@@ -1616,6 +1616,8 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
                  &cm_node->loc_addr, cm_node->loc_port,
                  &cm_node->rem_addr, cm_node->rem_port);
        cm_node->listener = listener;
+       if (listener)
+               cm_node->tos = listener->tos;
        cm_node->netdev = nesvnic->netdev;
        cm_node->cm_id = cm_info->cm_id;
        memcpy(cm_node->loc_mac, nesvnic->netdev->dev_addr, ETH_ALEN);
@@ -2938,6 +2940,9 @@ static int nes_cm_init_tsa_conn(struct nes_qp *nesqp, struct nes_cm_node *cm_nod
 
        nesqp->nesqp_context->misc2 |= cpu_to_le32(64 << NES_QPCONTEXT_MISC2_TTL_SHIFT);
 
+       nesqp->nesqp_context->misc2 |= cpu_to_le32(
+               cm_node->tos << NES_QPCONTEXT_MISC2_TOS_SHIFT);
+
        nesqp->nesqp_context->mss |= cpu_to_le32(((u32)cm_node->tcp_cntxt.mss) << 16);
 
        nesqp->nesqp_context->tcp_state_flow_label |= cpu_to_le32(
@@ -3612,6 +3617,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
                cm_node->ord_size = 1;
 
        cm_node->apbvt_set = apbvt_set;
+       cm_node->tos = cm_id->tos;
        nesqp->cm_node = cm_node;
        cm_node->nesqp = nesqp;
        nes_add_ref(&nesqp->ibqp);
@@ -3666,6 +3672,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
        }
 
        cm_id->provider_data = cm_node;
+       cm_node->tos = cm_id->tos;
 
        if (!cm_node->reused_node) {
                if (nes_create_mapinfo(&cm_info))
index f522cf6397893c916f44c1a3bc0c297b5dde6264..32a6420c29400184ea8f392c9e7004eb51611b67 100644 (file)
@@ -303,6 +303,7 @@ struct nes_cm_listener {
        int                        backlog;
        enum nes_cm_listener_state listener_state;
        u32                        reused_node;
+       u8                         tos;
 };
 
 /* per connection node and node state information */
@@ -352,6 +353,7 @@ struct nes_cm_node {
        struct list_head        reset_entry;
        struct nes_qp           *nesqp;
        atomic_t                passive_state;
+       u8                      tos;
 };
 
 /* structure for client or CM to fill when making CM api calls. */