]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/infiniband/core/cm.c
infiniband: rename "device" to "ib_device" in cm_device
[linux-2.6-omap-h63xx.git] / drivers / infiniband / core / cm.c
index faa7ce318a6d8e71300cbe7445685a6f114e975d..8dc442984c8286e1ec643759642118f36ccbc855 100644 (file)
@@ -31,8 +31,6 @@
  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
- *
- * $Id: cm.c 4311 2005-12-05 18:42:01Z sean.hefty $
  */
 
 #include <linux/completion.h>
@@ -164,7 +162,7 @@ struct cm_port {
 
 struct cm_device {
        struct list_head list;
-       struct ib_device *device;
+       struct ib_device *ib_device;
        struct kobject dev_obj;
        u8 ack_delay;
        struct cm_port *port[0];
@@ -341,7 +339,7 @@ static void cm_init_av_for_response(struct cm_port *port, struct ib_wc *wc,
 {
        av->port = port;
        av->pkey_index = wc->pkey_index;
-       ib_init_ah_from_wc(port->cm_dev->device, port->port_num, wc,
+       ib_init_ah_from_wc(port->cm_dev->ib_device, port->port_num, wc,
                           grh, &av->ah_attr);
 }
 
@@ -355,7 +353,7 @@ static int cm_init_av_by_path(struct ib_sa_path_rec *path, struct cm_av *av)
 
        read_lock_irqsave(&cm.device_lock, flags);
        list_for_each_entry(cm_dev, &cm.device_list, list) {
-               if (!ib_find_cached_gid(cm_dev->device, &path->sgid,
+               if (!ib_find_cached_gid(cm_dev->ib_device, &path->sgid,
                                        &p, NULL)) {
                        port = cm_dev->port[p-1];
                        break;
@@ -366,13 +364,13 @@ static int cm_init_av_by_path(struct ib_sa_path_rec *path, struct cm_av *av)
        if (!port)
                return -EINVAL;
 
-       ret = ib_find_cached_pkey(cm_dev->device, port->port_num,
+       ret = ib_find_cached_pkey(cm_dev->ib_device, port->port_num,
                                  be16_to_cpu(path->pkey), &av->pkey_index);
        if (ret)
                return ret;
 
        av->port = port;
-       ib_init_ah_from_path(cm_dev->device, port->port_num, path,
+       ib_init_ah_from_path(cm_dev->ib_device, port->port_num, path,
                             &av->ah_attr);
        av->timeout = path->packet_life_time + 1;
        return 0;
@@ -467,6 +465,31 @@ static int cm_compare_private_data(u8 *private_data,
        return memcmp(src, dst_data->data, IB_CM_COMPARE_SIZE);
 }
 
+/*
+ * Trivial helpers to strip endian annotation and compare; the
+ * endianness doesn't actually matter since we just need a stable
+ * order for the RB tree.
+ */
+static int be32_lt(__be32 a, __be32 b)
+{
+       return (__force u32) a < (__force u32) b;
+}
+
+static int be32_gt(__be32 a, __be32 b)
+{
+       return (__force u32) a > (__force u32) b;
+}
+
+static int be64_lt(__be64 a, __be64 b)
+{
+       return (__force u64) a < (__force u64) b;
+}
+
+static int be64_gt(__be64 a, __be64 b)
+{
+       return (__force u64) a > (__force u64) b;
+}
+
 static struct cm_id_private * cm_insert_listen(struct cm_id_private *cm_id_priv)
 {
        struct rb_node **link = &cm.listen_service_table.rb_node;
@@ -492,9 +515,9 @@ static struct cm_id_private * cm_insert_listen(struct cm_id_private *cm_id_priv)
                        link = &(*link)->rb_left;
                else if (cm_id_priv->id.device > cur_cm_id_priv->id.device)
                        link = &(*link)->rb_right;
-               else if (service_id < cur_cm_id_priv->id.service_id)
+               else if (be64_lt(service_id, cur_cm_id_priv->id.service_id))
                        link = &(*link)->rb_left;
-               else if (service_id > cur_cm_id_priv->id.service_id)
+               else if (be64_gt(service_id, cur_cm_id_priv->id.service_id))
                        link = &(*link)->rb_right;
                else if (data_cmp < 0)
                        link = &(*link)->rb_left;
@@ -527,9 +550,9 @@ static struct cm_id_private * cm_find_listen(struct ib_device *device,
                        node = node->rb_left;
                else if (device > cm_id_priv->id.device)
                        node = node->rb_right;
-               else if (service_id < cm_id_priv->id.service_id)
+               else if (be64_lt(service_id, cm_id_priv->id.service_id))
                        node = node->rb_left;
-               else if (service_id > cm_id_priv->id.service_id)
+               else if (be64_gt(service_id, cm_id_priv->id.service_id))
                        node = node->rb_right;
                else if (data_cmp < 0)
                        node = node->rb_left;
@@ -552,13 +575,13 @@ static struct cm_timewait_info * cm_insert_remote_id(struct cm_timewait_info
                parent = *link;
                cur_timewait_info = rb_entry(parent, struct cm_timewait_info,
                                             remote_id_node);
-               if (remote_id < cur_timewait_info->work.remote_id)
+               if (be32_lt(remote_id, cur_timewait_info->work.remote_id))
                        link = &(*link)->rb_left;
-               else if (remote_id > cur_timewait_info->work.remote_id)
+               else if (be32_gt(remote_id, cur_timewait_info->work.remote_id))
                        link = &(*link)->rb_right;
-               else if (remote_ca_guid < cur_timewait_info->remote_ca_guid)
+               else if (be64_lt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
                        link = &(*link)->rb_left;
-               else if (remote_ca_guid > cur_timewait_info->remote_ca_guid)
+               else if (be64_gt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
                        link = &(*link)->rb_right;
                else
                        return cur_timewait_info;
@@ -578,13 +601,13 @@ static struct cm_timewait_info * cm_find_remote_id(__be64 remote_ca_guid,
        while (node) {
                timewait_info = rb_entry(node, struct cm_timewait_info,
                                         remote_id_node);
-               if (remote_id < timewait_info->work.remote_id)
+               if (be32_lt(remote_id, timewait_info->work.remote_id))
                        node = node->rb_left;
-               else if (remote_id > timewait_info->work.remote_id)
+               else if (be32_gt(remote_id, timewait_info->work.remote_id))
                        node = node->rb_right;
-               else if (remote_ca_guid < timewait_info->remote_ca_guid)
+               else if (be64_lt(remote_ca_guid, timewait_info->remote_ca_guid))
                        node = node->rb_left;
-               else if (remote_ca_guid > timewait_info->remote_ca_guid)
+               else if (be64_gt(remote_ca_guid, timewait_info->remote_ca_guid))
                        node = node->rb_right;
                else
                        return timewait_info;
@@ -605,13 +628,13 @@ static struct cm_timewait_info * cm_insert_remote_qpn(struct cm_timewait_info
                parent = *link;
                cur_timewait_info = rb_entry(parent, struct cm_timewait_info,
                                             remote_qp_node);
-               if (remote_qpn < cur_timewait_info->remote_qpn)
+               if (be32_lt(remote_qpn, cur_timewait_info->remote_qpn))
                        link = &(*link)->rb_left;
-               else if (remote_qpn > cur_timewait_info->remote_qpn)
+               else if (be32_gt(remote_qpn, cur_timewait_info->remote_qpn))
                        link = &(*link)->rb_right;
-               else if (remote_ca_guid < cur_timewait_info->remote_ca_guid)
+               else if (be64_lt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
                        link = &(*link)->rb_left;
-               else if (remote_ca_guid > cur_timewait_info->remote_ca_guid)
+               else if (be64_gt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
                        link = &(*link)->rb_right;
                else
                        return cur_timewait_info;
@@ -635,9 +658,9 @@ static struct cm_id_private * cm_insert_remote_sidr(struct cm_id_private
                parent = *link;
                cur_cm_id_priv = rb_entry(parent, struct cm_id_private,
                                          sidr_id_node);
-               if (remote_id < cur_cm_id_priv->id.remote_id)
+               if (be32_lt(remote_id, cur_cm_id_priv->id.remote_id))
                        link = &(*link)->rb_left;
-               else if (remote_id > cur_cm_id_priv->id.remote_id)
+               else if (be32_gt(remote_id, cur_cm_id_priv->id.remote_id))
                        link = &(*link)->rb_right;
                else {
                        int cmp;
@@ -1492,7 +1515,7 @@ static int cm_req_handler(struct cm_work *work)
 
        req_msg = (struct cm_req_msg *)work->mad_recv_wc->recv_buf.mad;
 
-       cm_id = ib_create_cm_id(work->port->cm_dev->device, NULL, NULL);
+       cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL);
        if (IS_ERR(cm_id))
                return PTR_ERR(cm_id);
 
@@ -1527,7 +1550,7 @@ static int cm_req_handler(struct cm_work *work)
        cm_format_paths_from_req(req_msg, &work->path[0], &work->path[1]);
        ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av);
        if (ret) {
-               ib_get_cached_gid(work->port->cm_dev->device,
+               ib_get_cached_gid(work->port->cm_dev->ib_device,
                                  work->port->port_num, 0, &work->path[0].sgid);
                ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID,
                               &work->path[0].sgid, sizeof work->path[0].sgid,
@@ -2848,7 +2871,7 @@ static void cm_format_sidr_req(struct cm_sidr_req_msg *sidr_req_msg,
        cm_format_mad_hdr(&sidr_req_msg->hdr, CM_SIDR_REQ_ATTR_ID,
                          cm_form_tid(cm_id_priv, CM_MSG_SEQUENCE_SIDR));
        sidr_req_msg->request_id = cm_id_priv->id.local_id;
-       sidr_req_msg->pkey = cpu_to_be16(param->path->pkey);
+       sidr_req_msg->pkey = param->path->pkey;
        sidr_req_msg->service_id = param->service_id;
 
        if (param->private_data && param->private_data_len)
@@ -2927,7 +2950,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
        struct cm_sidr_req_msg *sidr_req_msg;
        struct ib_wc *wc;
 
-       cm_id = ib_create_cm_id(work->port->cm_dev->device, NULL, NULL);
+       cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL);
        if (IS_ERR(cm_id))
                return PTR_ERR(cm_id);
        cm_id_priv = container_of(cm_id, struct cm_id_private, id);
@@ -3555,7 +3578,7 @@ static void cm_get_ack_delay(struct cm_device *cm_dev)
 {
        struct ib_device_attr attr;
 
-       if (ib_query_device(cm_dev->device, &attr))
+       if (ib_query_device(cm_dev->ib_device, &attr))
                cm_dev->ack_delay = 0; /* acks will rely on packet life time */
        else
                cm_dev->ack_delay = attr.local_ca_ack_delay;
@@ -3653,7 +3676,7 @@ static void cm_remove_port_fs(struct cm_port *port)
        kobject_put(&port->port_obj);
 }
 
-static void cm_add_one(struct ib_device *device)
+static void cm_add_one(struct ib_device *ib_device)
 {
        struct cm_device *cm_dev;
        struct cm_port *port;
@@ -3668,26 +3691,27 @@ static void cm_add_one(struct ib_device *device)
        int ret;
        u8 i;
 
-       if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
+       if (rdma_node_get_transport(ib_device->node_type) != RDMA_TRANSPORT_IB)
                return;
 
        cm_dev = kzalloc(sizeof(*cm_dev) + sizeof(*port) *
-                        device->phys_port_cnt, GFP_KERNEL);
+                        ib_device->phys_port_cnt, GFP_KERNEL);
        if (!cm_dev)
                return;
 
-       cm_dev->device = device;
+       cm_dev->ib_device = ib_device;
        cm_get_ack_delay(cm_dev);
 
        ret = kobject_init_and_add(&cm_dev->dev_obj, &cm_dev_obj_type,
-                                  &cm_class.subsys.kobj, "%s", device->name);
+                                  &cm_class.subsys.kobj, "%s",
+                                  ib_device->name);
        if (ret) {
                kfree(cm_dev);
                return;
        }
 
        set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
-       for (i = 1; i <= device->phys_port_cnt; i++) {
+       for (i = 1; i <= ib_device->phys_port_cnt; i++) {
                port = kzalloc(sizeof *port, GFP_KERNEL);
                if (!port)
                        goto error1;
@@ -3700,7 +3724,7 @@ static void cm_add_one(struct ib_device *device)
                if (ret)
                        goto error1;
 
-               port->mad_agent = ib_register_mad_agent(device, i,
+               port->mad_agent = ib_register_mad_agent(ib_device, i,
                                                        IB_QPT_GSI,
                                                        &reg_req,
                                                        0,
@@ -3710,11 +3734,11 @@ static void cm_add_one(struct ib_device *device)
                if (IS_ERR(port->mad_agent))
                        goto error2;
 
-               ret = ib_modify_port(device, i, 0, &port_modify);
+               ret = ib_modify_port(ib_device, i, 0, &port_modify);
                if (ret)
                        goto error3;
        }
-       ib_set_client_data(device, &cm_client, cm_dev);
+       ib_set_client_data(ib_device, &cm_client, cm_dev);
 
        write_lock_irqsave(&cm.device_lock, flags);
        list_add_tail(&cm_dev->list, &cm.device_list);
@@ -3730,14 +3754,14 @@ error1:
        port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
        while (--i) {
                port = cm_dev->port[i-1];
-               ib_modify_port(device, port->port_num, 0, &port_modify);
+               ib_modify_port(ib_device, port->port_num, 0, &port_modify);
                ib_unregister_mad_agent(port->mad_agent);
                cm_remove_port_fs(port);
        }
        kobject_put(&cm_dev->dev_obj);
 }
 
-static void cm_remove_one(struct ib_device *device)
+static void cm_remove_one(struct ib_device *ib_device)
 {
        struct cm_device *cm_dev;
        struct cm_port *port;
@@ -3747,7 +3771,7 @@ static void cm_remove_one(struct ib_device *device)
        unsigned long flags;
        int i;
 
-       cm_dev = ib_get_client_data(device, &cm_client);
+       cm_dev = ib_get_client_data(ib_device, &cm_client);
        if (!cm_dev)
                return;
 
@@ -3755,9 +3779,9 @@ static void cm_remove_one(struct ib_device *device)
        list_del(&cm_dev->list);
        write_unlock_irqrestore(&cm.device_lock, flags);
 
-       for (i = 1; i <= device->phys_port_cnt; i++) {
+       for (i = 1; i <= ib_device->phys_port_cnt; i++) {
                port = cm_dev->port[i-1];
-               ib_modify_port(device, port->port_num, 0, &port_modify);
+               ib_modify_port(ib_device, port->port_num, 0, &port_modify);
                ib_unregister_mad_agent(port->mad_agent);
                flush_workqueue(cm.wq);
                cm_remove_port_fs(port);