aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/core/cm.c121
-rw-r--r--drivers/infiniband/core/cm_msgs.h192
-rw-r--r--drivers/infiniband/core/mad.c10
-rw-r--r--drivers/infiniband/core/mad_priv.h6
-rw-r--r--drivers/infiniband/core/mad_rmpp.c2
-rw-r--r--drivers/infiniband/core/sysfs.c36
-rw-r--r--drivers/infiniband/core/ud_header.c8
-rw-r--r--drivers/infiniband/core/user_mad.c4
-rw-r--r--drivers/infiniband/hw/mthca/mthca_av.c24
-rw-r--r--drivers/infiniband/hw/mthca/mthca_cmd.c40
-rw-r--r--drivers/infiniband/hw/mthca/mthca_cq.c89
-rw-r--r--drivers/infiniband/hw/mthca/mthca_dev.h15
-rw-r--r--drivers/infiniband/hw/mthca/mthca_doorbell.h12
-rw-r--r--drivers/infiniband/hw/mthca/mthca_eq.c62
-rw-r--r--drivers/infiniband/hw/mthca/mthca_mad.c2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_mcg.c36
-rw-r--r--drivers/infiniband/hw/mthca/mthca_memfree.c4
-rw-r--r--drivers/infiniband/hw/mthca/mthca_memfree.h4
-rw-r--r--drivers/infiniband/hw/mthca/mthca_mr.c32
-rw-r--r--drivers/infiniband/hw/mthca/mthca_provider.c16
-rw-r--r--drivers/infiniband/hw/mthca/mthca_provider.h6
-rw-r--r--drivers/infiniband/hw/mthca/mthca_qp.c187
-rw-r--r--drivers/infiniband/include/ib_cm.h89
-rw-r--r--drivers/infiniband/include/ib_mad.h22
-rw-r--r--drivers/infiniband/include/ib_sa.h18
-rw-r--r--drivers/infiniband/include/ib_smi.h18
-rw-r--r--drivers/infiniband/include/ib_user_cm.h28
-rw-r--r--drivers/infiniband/include/ib_user_mad.h10
-rw-r--r--drivers/infiniband/include/ib_user_verbs.h4
-rw-r--r--drivers/infiniband/include/ib_verbs.h14
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib.h4
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_fs.c2
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c4
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c6
34 files changed, 565 insertions, 562 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 403ed125d8f4..781be773a186 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -83,7 +83,7 @@ struct cm_port {
83struct cm_device { 83struct cm_device {
84 struct list_head list; 84 struct list_head list;
85 struct ib_device *device; 85 struct ib_device *device;
86 u64 ca_guid; 86 __be64 ca_guid;
87 struct cm_port port[0]; 87 struct cm_port port[0];
88}; 88};
89 89
@@ -100,8 +100,8 @@ struct cm_work {
100 struct list_head list; 100 struct list_head list;
101 struct cm_port *port; 101 struct cm_port *port;
102 struct ib_mad_recv_wc *mad_recv_wc; /* Received MADs */ 102 struct ib_mad_recv_wc *mad_recv_wc; /* Received MADs */
103 u32 local_id; /* Established / timewait */ 103 __be32 local_id; /* Established / timewait */
104 u32 remote_id; 104 __be32 remote_id;
105 struct ib_cm_event cm_event; 105 struct ib_cm_event cm_event;
106 struct ib_sa_path_rec path[0]; 106 struct ib_sa_path_rec path[0];
107}; 107};
@@ -110,8 +110,8 @@ struct cm_timewait_info {
110 struct cm_work work; /* Must be first. */ 110 struct cm_work work; /* Must be first. */
111 struct rb_node remote_qp_node; 111 struct rb_node remote_qp_node;
112 struct rb_node remote_id_node; 112 struct rb_node remote_id_node;
113 u64 remote_ca_guid; 113 __be64 remote_ca_guid;
114 u32 remote_qpn; 114 __be32 remote_qpn;
115 u8 inserted_remote_qp; 115 u8 inserted_remote_qp;
116 u8 inserted_remote_id; 116 u8 inserted_remote_id;
117}; 117};
@@ -132,11 +132,11 @@ struct cm_id_private {
132 struct cm_av alt_av; 132 struct cm_av alt_av;
133 133
134 void *private_data; 134 void *private_data;
135 u64 tid; 135 __be64 tid;
136 u32 local_qpn; 136 __be32 local_qpn;
137 u32 remote_qpn; 137 __be32 remote_qpn;
138 u32 sq_psn; 138 __be32 sq_psn;
139 u32 rq_psn; 139 __be32 rq_psn;
140 int timeout_ms; 140 int timeout_ms;
141 enum ib_mtu path_mtu; 141 enum ib_mtu path_mtu;
142 u8 private_data_len; 142 u8 private_data_len;
@@ -253,7 +253,7 @@ static void cm_set_ah_attr(struct ib_ah_attr *ah_attr, u8 port_num,
253 u16 dlid, u8 sl, u16 src_path_bits) 253 u16 dlid, u8 sl, u16 src_path_bits)
254{ 254{
255 memset(ah_attr, 0, sizeof ah_attr); 255 memset(ah_attr, 0, sizeof ah_attr);
256 ah_attr->dlid = be16_to_cpu(dlid); 256 ah_attr->dlid = dlid;
257 ah_attr->sl = sl; 257 ah_attr->sl = sl;
258 ah_attr->src_path_bits = src_path_bits; 258 ah_attr->src_path_bits = src_path_bits;
259 ah_attr->port_num = port_num; 259 ah_attr->port_num = port_num;
@@ -264,7 +264,7 @@ static void cm_init_av_for_response(struct cm_port *port,
264{ 264{
265 av->port = port; 265 av->port = port;
266 av->pkey_index = wc->pkey_index; 266 av->pkey_index = wc->pkey_index;
267 cm_set_ah_attr(&av->ah_attr, port->port_num, cpu_to_be16(wc->slid), 267 cm_set_ah_attr(&av->ah_attr, port->port_num, wc->slid,
268 wc->sl, wc->dlid_path_bits); 268 wc->sl, wc->dlid_path_bits);
269} 269}
270 270
@@ -295,8 +295,9 @@ static int cm_init_av_by_path(struct ib_sa_path_rec *path, struct cm_av *av)
295 return ret; 295 return ret;
296 296
297 av->port = port; 297 av->port = port;
298 cm_set_ah_attr(&av->ah_attr, av->port->port_num, path->dlid, 298 cm_set_ah_attr(&av->ah_attr, av->port->port_num,
299 path->sl, path->slid & 0x7F); 299 be16_to_cpu(path->dlid), path->sl,
300 be16_to_cpu(path->slid) & 0x7F);
300 av->packet_life_time = path->packet_life_time; 301 av->packet_life_time = path->packet_life_time;
301 return 0; 302 return 0;
302} 303}
@@ -309,26 +310,26 @@ static int cm_alloc_id(struct cm_id_private *cm_id_priv)
309 do { 310 do {
310 spin_lock_irqsave(&cm.lock, flags); 311 spin_lock_irqsave(&cm.lock, flags);
311 ret = idr_get_new_above(&cm.local_id_table, cm_id_priv, 1, 312 ret = idr_get_new_above(&cm.local_id_table, cm_id_priv, 1,
312 (int *) &cm_id_priv->id.local_id); 313 (__force int *) &cm_id_priv->id.local_id);
313 spin_unlock_irqrestore(&cm.lock, flags); 314 spin_unlock_irqrestore(&cm.lock, flags);
314 } while( (ret == -EAGAIN) && idr_pre_get(&cm.local_id_table, GFP_KERNEL) ); 315 } while( (ret == -EAGAIN) && idr_pre_get(&cm.local_id_table, GFP_KERNEL) );
315 return ret; 316 return ret;
316} 317}
317 318
318static void cm_free_id(u32 local_id) 319static void cm_free_id(__be32 local_id)
319{ 320{
320 unsigned long flags; 321 unsigned long flags;
321 322
322 spin_lock_irqsave(&cm.lock, flags); 323 spin_lock_irqsave(&cm.lock, flags);
323 idr_remove(&cm.local_id_table, (int) local_id); 324 idr_remove(&cm.local_id_table, (__force int) local_id);
324 spin_unlock_irqrestore(&cm.lock, flags); 325 spin_unlock_irqrestore(&cm.lock, flags);
325} 326}
326 327
327static struct cm_id_private * cm_get_id(u32 local_id, u32 remote_id) 328static struct cm_id_private * cm_get_id(__be32 local_id, __be32 remote_id)
328{ 329{
329 struct cm_id_private *cm_id_priv; 330 struct cm_id_private *cm_id_priv;
330 331
331 cm_id_priv = idr_find(&cm.local_id_table, (int) local_id); 332 cm_id_priv = idr_find(&cm.local_id_table, (__force int) local_id);
332 if (cm_id_priv) { 333 if (cm_id_priv) {
333 if (cm_id_priv->id.remote_id == remote_id) 334 if (cm_id_priv->id.remote_id == remote_id)
334 atomic_inc(&cm_id_priv->refcount); 335 atomic_inc(&cm_id_priv->refcount);
@@ -339,7 +340,7 @@ static struct cm_id_private * cm_get_id(u32 local_id, u32 remote_id)
339 return cm_id_priv; 340 return cm_id_priv;
340} 341}
341 342
342static struct cm_id_private * cm_acquire_id(u32 local_id, u32 remote_id) 343static struct cm_id_private * cm_acquire_id(__be32 local_id, __be32 remote_id)
343{ 344{
344 struct cm_id_private *cm_id_priv; 345 struct cm_id_private *cm_id_priv;
345 unsigned long flags; 346 unsigned long flags;
@@ -356,8 +357,8 @@ static struct cm_id_private * cm_insert_listen(struct cm_id_private *cm_id_priv)
356 struct rb_node **link = &cm.listen_service_table.rb_node; 357 struct rb_node **link = &cm.listen_service_table.rb_node;
357 struct rb_node *parent = NULL; 358 struct rb_node *parent = NULL;
358 struct cm_id_private *cur_cm_id_priv; 359 struct cm_id_private *cur_cm_id_priv;
359 u64 service_id = cm_id_priv->id.service_id; 360 __be64 service_id = cm_id_priv->id.service_id;
360 u64 service_mask = cm_id_priv->id.service_mask; 361 __be64 service_mask = cm_id_priv->id.service_mask;
361 362
362 while (*link) { 363 while (*link) {
363 parent = *link; 364 parent = *link;
@@ -376,7 +377,7 @@ static struct cm_id_private * cm_insert_listen(struct cm_id_private *cm_id_priv)
376 return NULL; 377 return NULL;
377} 378}
378 379
379static struct cm_id_private * cm_find_listen(u64 service_id) 380static struct cm_id_private * cm_find_listen(__be64 service_id)
380{ 381{
381 struct rb_node *node = cm.listen_service_table.rb_node; 382 struct rb_node *node = cm.listen_service_table.rb_node;
382 struct cm_id_private *cm_id_priv; 383 struct cm_id_private *cm_id_priv;
@@ -400,8 +401,8 @@ static struct cm_timewait_info * cm_insert_remote_id(struct cm_timewait_info
400 struct rb_node **link = &cm.remote_id_table.rb_node; 401 struct rb_node **link = &cm.remote_id_table.rb_node;
401 struct rb_node *parent = NULL; 402 struct rb_node *parent = NULL;
402 struct cm_timewait_info *cur_timewait_info; 403 struct cm_timewait_info *cur_timewait_info;
403 u64 remote_ca_guid = timewait_info->remote_ca_guid; 404 __be64 remote_ca_guid = timewait_info->remote_ca_guid;
404 u32 remote_id = timewait_info->work.remote_id; 405 __be32 remote_id = timewait_info->work.remote_id;
405 406
406 while (*link) { 407 while (*link) {
407 parent = *link; 408 parent = *link;
@@ -424,8 +425,8 @@ static struct cm_timewait_info * cm_insert_remote_id(struct cm_timewait_info
424 return NULL; 425 return NULL;
425} 426}
426 427
427static struct cm_timewait_info * cm_find_remote_id(u64 remote_ca_guid, 428static struct cm_timewait_info * cm_find_remote_id(__be64 remote_ca_guid,
428 u32 remote_id) 429 __be32 remote_id)
429{ 430{
430 struct rb_node *node = cm.remote_id_table.rb_node; 431 struct rb_node *node = cm.remote_id_table.rb_node;
431 struct cm_timewait_info *timewait_info; 432 struct cm_timewait_info *timewait_info;
@@ -453,8 +454,8 @@ static struct cm_timewait_info * cm_insert_remote_qpn(struct cm_timewait_info
453 struct rb_node **link = &cm.remote_qp_table.rb_node; 454 struct rb_node **link = &cm.remote_qp_table.rb_node;
454 struct rb_node *parent = NULL; 455 struct rb_node *parent = NULL;
455 struct cm_timewait_info *cur_timewait_info; 456 struct cm_timewait_info *cur_timewait_info;
456 u64 remote_ca_guid = timewait_info->remote_ca_guid; 457 __be64 remote_ca_guid = timewait_info->remote_ca_guid;
457 u32 remote_qpn = timewait_info->remote_qpn; 458 __be32 remote_qpn = timewait_info->remote_qpn;
458 459
459 while (*link) { 460 while (*link) {
460 parent = *link; 461 parent = *link;
@@ -484,7 +485,7 @@ static struct cm_id_private * cm_insert_remote_sidr(struct cm_id_private
484 struct rb_node *parent = NULL; 485 struct rb_node *parent = NULL;
485 struct cm_id_private *cur_cm_id_priv; 486 struct cm_id_private *cur_cm_id_priv;
486 union ib_gid *port_gid = &cm_id_priv->av.dgid; 487 union ib_gid *port_gid = &cm_id_priv->av.dgid;
487 u32 remote_id = cm_id_priv->id.remote_id; 488 __be32 remote_id = cm_id_priv->id.remote_id;
488 489
489 while (*link) { 490 while (*link) {
490 parent = *link; 491 parent = *link;
@@ -598,7 +599,7 @@ static void cm_cleanup_timewait(struct cm_timewait_info *timewait_info)
598 spin_unlock_irqrestore(&cm.lock, flags); 599 spin_unlock_irqrestore(&cm.lock, flags);
599} 600}
600 601
601static struct cm_timewait_info * cm_create_timewait_info(u32 local_id) 602static struct cm_timewait_info * cm_create_timewait_info(__be32 local_id)
602{ 603{
603 struct cm_timewait_info *timewait_info; 604 struct cm_timewait_info *timewait_info;
604 605
@@ -715,14 +716,15 @@ retest:
715EXPORT_SYMBOL(ib_destroy_cm_id); 716EXPORT_SYMBOL(ib_destroy_cm_id);
716 717
717int ib_cm_listen(struct ib_cm_id *cm_id, 718int ib_cm_listen(struct ib_cm_id *cm_id,
718 u64 service_id, 719 __be64 service_id,
719 u64 service_mask) 720 __be64 service_mask)
720{ 721{
721 struct cm_id_private *cm_id_priv, *cur_cm_id_priv; 722 struct cm_id_private *cm_id_priv, *cur_cm_id_priv;
722 unsigned long flags; 723 unsigned long flags;
723 int ret = 0; 724 int ret = 0;
724 725
725 service_mask = service_mask ? service_mask : ~0ULL; 726 service_mask = service_mask ? service_mask :
727 __constant_cpu_to_be64(~0ULL);
726 service_id &= service_mask; 728 service_id &= service_mask;
727 if ((service_id & IB_SERVICE_ID_AGN_MASK) == IB_CM_ASSIGN_SERVICE_ID && 729 if ((service_id & IB_SERVICE_ID_AGN_MASK) == IB_CM_ASSIGN_SERVICE_ID &&
728 (service_id != IB_CM_ASSIGN_SERVICE_ID)) 730 (service_id != IB_CM_ASSIGN_SERVICE_ID))
@@ -735,8 +737,8 @@ int ib_cm_listen(struct ib_cm_id *cm_id,
735 737
736 spin_lock_irqsave(&cm.lock, flags); 738 spin_lock_irqsave(&cm.lock, flags);
737 if (service_id == IB_CM_ASSIGN_SERVICE_ID) { 739 if (service_id == IB_CM_ASSIGN_SERVICE_ID) {
738 cm_id->service_id = __cpu_to_be64(cm.listen_service_id++); 740 cm_id->service_id = cpu_to_be64(cm.listen_service_id++);
739 cm_id->service_mask = ~0ULL; 741 cm_id->service_mask = __constant_cpu_to_be64(~0ULL);
740 } else { 742 } else {
741 cm_id->service_id = service_id; 743 cm_id->service_id = service_id;
742 cm_id->service_mask = service_mask; 744 cm_id->service_mask = service_mask;
@@ -752,18 +754,19 @@ int ib_cm_listen(struct ib_cm_id *cm_id,
752} 754}
753EXPORT_SYMBOL(ib_cm_listen); 755EXPORT_SYMBOL(ib_cm_listen);
754 756
755static u64 cm_form_tid(struct cm_id_private *cm_id_priv, 757static __be64 cm_form_tid(struct cm_id_private *cm_id_priv,
756 enum cm_msg_sequence msg_seq) 758 enum cm_msg_sequence msg_seq)
757{ 759{
758 u64 hi_tid, low_tid; 760 u64 hi_tid, low_tid;
759 761
760 hi_tid = ((u64) cm_id_priv->av.port->mad_agent->hi_tid) << 32; 762 hi_tid = ((u64) cm_id_priv->av.port->mad_agent->hi_tid) << 32;
761 low_tid = (u64) (cm_id_priv->id.local_id | (msg_seq << 30)); 763 low_tid = (u64) ((__force u32)cm_id_priv->id.local_id |
764 (msg_seq << 30));
762 return cpu_to_be64(hi_tid | low_tid); 765 return cpu_to_be64(hi_tid | low_tid);
763} 766}
764 767
765static void cm_format_mad_hdr(struct ib_mad_hdr *hdr, 768static void cm_format_mad_hdr(struct ib_mad_hdr *hdr,
766 enum cm_msg_attr_id attr_id, u64 tid) 769 __be16 attr_id, __be64 tid)
767{ 770{
768 hdr->base_version = IB_MGMT_BASE_VERSION; 771 hdr->base_version = IB_MGMT_BASE_VERSION;
769 hdr->mgmt_class = IB_MGMT_CLASS_CM; 772 hdr->mgmt_class = IB_MGMT_CLASS_CM;
@@ -896,7 +899,7 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
896 goto error1; 899 goto error1;
897 } 900 }
898 cm_id->service_id = param->service_id; 901 cm_id->service_id = param->service_id;
899 cm_id->service_mask = ~0ULL; 902 cm_id->service_mask = __constant_cpu_to_be64(~0ULL);
900 cm_id_priv->timeout_ms = cm_convert_to_ms( 903 cm_id_priv->timeout_ms = cm_convert_to_ms(
901 param->primary_path->packet_life_time) * 2 + 904 param->primary_path->packet_life_time) * 2 +
902 cm_convert_to_ms( 905 cm_convert_to_ms(
@@ -963,7 +966,7 @@ static int cm_issue_rej(struct cm_port *port,
963 rej_msg->remote_comm_id = rcv_msg->local_comm_id; 966 rej_msg->remote_comm_id = rcv_msg->local_comm_id;
964 rej_msg->local_comm_id = rcv_msg->remote_comm_id; 967 rej_msg->local_comm_id = rcv_msg->remote_comm_id;
965 cm_rej_set_msg_rejected(rej_msg, msg_rejected); 968 cm_rej_set_msg_rejected(rej_msg, msg_rejected);
966 rej_msg->reason = reason; 969 rej_msg->reason = cpu_to_be16(reason);
967 970
968 if (ari && ari_length) { 971 if (ari && ari_length) {
969 cm_rej_set_reject_info_len(rej_msg, ari_length); 972 cm_rej_set_reject_info_len(rej_msg, ari_length);
@@ -977,8 +980,8 @@ static int cm_issue_rej(struct cm_port *port,
977 return ret; 980 return ret;
978} 981}
979 982
980static inline int cm_is_active_peer(u64 local_ca_guid, u64 remote_ca_guid, 983static inline int cm_is_active_peer(__be64 local_ca_guid, __be64 remote_ca_guid,
981 u32 local_qpn, u32 remote_qpn) 984 __be32 local_qpn, __be32 remote_qpn)
982{ 985{
983 return (be64_to_cpu(local_ca_guid) > be64_to_cpu(remote_ca_guid) || 986 return (be64_to_cpu(local_ca_guid) > be64_to_cpu(remote_ca_guid) ||
984 ((local_ca_guid == remote_ca_guid) && 987 ((local_ca_guid == remote_ca_guid) &&
@@ -1137,7 +1140,7 @@ static void cm_format_rej(struct cm_rej_msg *rej_msg,
1137 break; 1140 break;
1138 } 1141 }
1139 1142
1140 rej_msg->reason = reason; 1143 rej_msg->reason = cpu_to_be16(reason);
1141 if (ari && ari_length) { 1144 if (ari && ari_length) {
1142 cm_rej_set_reject_info_len(rej_msg, ari_length); 1145 cm_rej_set_reject_info_len(rej_msg, ari_length);
1143 memcpy(rej_msg->ari, ari, ari_length); 1146 memcpy(rej_msg->ari, ari, ari_length);
@@ -1276,7 +1279,7 @@ static int cm_req_handler(struct cm_work *work)
1276 cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler; 1279 cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler;
1277 cm_id_priv->id.context = listen_cm_id_priv->id.context; 1280 cm_id_priv->id.context = listen_cm_id_priv->id.context;
1278 cm_id_priv->id.service_id = req_msg->service_id; 1281 cm_id_priv->id.service_id = req_msg->service_id;
1279 cm_id_priv->id.service_mask = ~0ULL; 1282 cm_id_priv->id.service_mask = __constant_cpu_to_be64(~0ULL);
1280 1283
1281 cm_format_paths_from_req(req_msg, &work->path[0], &work->path[1]); 1284 cm_format_paths_from_req(req_msg, &work->path[0], &work->path[1]);
1282 ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av); 1285 ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av);
@@ -1969,7 +1972,7 @@ static void cm_format_rej_event(struct cm_work *work)
1969 param = &work->cm_event.param.rej_rcvd; 1972 param = &work->cm_event.param.rej_rcvd;
1970 param->ari = rej_msg->ari; 1973 param->ari = rej_msg->ari;
1971 param->ari_length = cm_rej_get_reject_info_len(rej_msg); 1974 param->ari_length = cm_rej_get_reject_info_len(rej_msg);
1972 param->reason = rej_msg->reason; 1975 param->reason = __be16_to_cpu(rej_msg->reason);
1973 work->cm_event.private_data = &rej_msg->private_data; 1976 work->cm_event.private_data = &rej_msg->private_data;
1974} 1977}
1975 1978
@@ -1978,20 +1981,20 @@ static struct cm_id_private * cm_acquire_rejected_id(struct cm_rej_msg *rej_msg)
1978 struct cm_timewait_info *timewait_info; 1981 struct cm_timewait_info *timewait_info;
1979 struct cm_id_private *cm_id_priv; 1982 struct cm_id_private *cm_id_priv;
1980 unsigned long flags; 1983 unsigned long flags;
1981 u32 remote_id; 1984 __be32 remote_id;
1982 1985
1983 remote_id = rej_msg->local_comm_id; 1986 remote_id = rej_msg->local_comm_id;
1984 1987
1985 if (rej_msg->reason == IB_CM_REJ_TIMEOUT) { 1988 if (__be16_to_cpu(rej_msg->reason) == IB_CM_REJ_TIMEOUT) {
1986 spin_lock_irqsave(&cm.lock, flags); 1989 spin_lock_irqsave(&cm.lock, flags);
1987 timewait_info = cm_find_remote_id( *((u64 *) rej_msg->ari), 1990 timewait_info = cm_find_remote_id( *((__be64 *) rej_msg->ari),
1988 remote_id); 1991 remote_id);
1989 if (!timewait_info) { 1992 if (!timewait_info) {
1990 spin_unlock_irqrestore(&cm.lock, flags); 1993 spin_unlock_irqrestore(&cm.lock, flags);
1991 return NULL; 1994 return NULL;
1992 } 1995 }
1993 cm_id_priv = idr_find(&cm.local_id_table, 1996 cm_id_priv = idr_find(&cm.local_id_table,
1994 (int) timewait_info->work.local_id); 1997 (__force int) timewait_info->work.local_id);
1995 if (cm_id_priv) { 1998 if (cm_id_priv) {
1996 if (cm_id_priv->id.remote_id == remote_id) 1999 if (cm_id_priv->id.remote_id == remote_id)
1997 atomic_inc(&cm_id_priv->refcount); 2000 atomic_inc(&cm_id_priv->refcount);
@@ -2032,7 +2035,7 @@ static int cm_rej_handler(struct cm_work *work)
2032 /* fall through */ 2035 /* fall through */
2033 case IB_CM_REQ_RCVD: 2036 case IB_CM_REQ_RCVD:
2034 case IB_CM_MRA_REQ_SENT: 2037 case IB_CM_MRA_REQ_SENT:
2035 if (rej_msg->reason == IB_CM_REJ_STALE_CONN) 2038 if (__be16_to_cpu(rej_msg->reason) == IB_CM_REJ_STALE_CONN)
2036 cm_enter_timewait(cm_id_priv); 2039 cm_enter_timewait(cm_id_priv);
2037 else 2040 else
2038 cm_reset_to_idle(cm_id_priv); 2041 cm_reset_to_idle(cm_id_priv);
@@ -2553,7 +2556,7 @@ static void cm_format_sidr_req(struct cm_sidr_req_msg *sidr_req_msg,
2553 cm_format_mad_hdr(&sidr_req_msg->hdr, CM_SIDR_REQ_ATTR_ID, 2556 cm_format_mad_hdr(&sidr_req_msg->hdr, CM_SIDR_REQ_ATTR_ID,
2554 cm_form_tid(cm_id_priv, CM_MSG_SEQUENCE_SIDR)); 2557 cm_form_tid(cm_id_priv, CM_MSG_SEQUENCE_SIDR));
2555 sidr_req_msg->request_id = cm_id_priv->id.local_id; 2558 sidr_req_msg->request_id = cm_id_priv->id.local_id;
2556 sidr_req_msg->pkey = param->pkey; 2559 sidr_req_msg->pkey = cpu_to_be16(param->pkey);
2557 sidr_req_msg->service_id = param->service_id; 2560 sidr_req_msg->service_id = param->service_id;
2558 2561
2559 if (param->private_data && param->private_data_len) 2562 if (param->private_data && param->private_data_len)
@@ -2580,7 +2583,7 @@ int ib_send_cm_sidr_req(struct ib_cm_id *cm_id,
2580 goto out; 2583 goto out;
2581 2584
2582 cm_id->service_id = param->service_id; 2585 cm_id->service_id = param->service_id;
2583 cm_id->service_mask = ~0ULL; 2586 cm_id->service_mask = __constant_cpu_to_be64(~0ULL);
2584 cm_id_priv->timeout_ms = param->timeout_ms; 2587 cm_id_priv->timeout_ms = param->timeout_ms;
2585 cm_id_priv->max_cm_retries = param->max_cm_retries; 2588 cm_id_priv->max_cm_retries = param->max_cm_retries;
2586 ret = cm_alloc_msg(cm_id_priv, &msg); 2589 ret = cm_alloc_msg(cm_id_priv, &msg);
@@ -2621,7 +2624,7 @@ static void cm_format_sidr_req_event(struct cm_work *work,
2621 sidr_req_msg = (struct cm_sidr_req_msg *) 2624 sidr_req_msg = (struct cm_sidr_req_msg *)
2622 work->mad_recv_wc->recv_buf.mad; 2625 work->mad_recv_wc->recv_buf.mad;
2623 param = &work->cm_event.param.sidr_req_rcvd; 2626 param = &work->cm_event.param.sidr_req_rcvd;
2624 param->pkey = sidr_req_msg->pkey; 2627 param->pkey = __be16_to_cpu(sidr_req_msg->pkey);
2625 param->listen_id = listen_id; 2628 param->listen_id = listen_id;
2626 param->device = work->port->mad_agent->device; 2629 param->device = work->port->mad_agent->device;
2627 param->port = work->port->port_num; 2630 param->port = work->port->port_num;
@@ -2645,7 +2648,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
2645 sidr_req_msg = (struct cm_sidr_req_msg *) 2648 sidr_req_msg = (struct cm_sidr_req_msg *)
2646 work->mad_recv_wc->recv_buf.mad; 2649 work->mad_recv_wc->recv_buf.mad;
2647 wc = work->mad_recv_wc->wc; 2650 wc = work->mad_recv_wc->wc;
2648 cm_id_priv->av.dgid.global.subnet_prefix = wc->slid; 2651 cm_id_priv->av.dgid.global.subnet_prefix = cpu_to_be64(wc->slid);
2649 cm_id_priv->av.dgid.global.interface_id = 0; 2652 cm_id_priv->av.dgid.global.interface_id = 0;
2650 cm_init_av_for_response(work->port, work->mad_recv_wc->wc, 2653 cm_init_av_for_response(work->port, work->mad_recv_wc->wc,
2651 &cm_id_priv->av); 2654 &cm_id_priv->av);
@@ -2673,7 +2676,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
2673 cm_id_priv->id.cm_handler = cur_cm_id_priv->id.cm_handler; 2676 cm_id_priv->id.cm_handler = cur_cm_id_priv->id.cm_handler;
2674 cm_id_priv->id.context = cur_cm_id_priv->id.context; 2677 cm_id_priv->id.context = cur_cm_id_priv->id.context;
2675 cm_id_priv->id.service_id = sidr_req_msg->service_id; 2678 cm_id_priv->id.service_id = sidr_req_msg->service_id;
2676 cm_id_priv->id.service_mask = ~0ULL; 2679 cm_id_priv->id.service_mask = __constant_cpu_to_be64(~0ULL);
2677 2680
2678 cm_format_sidr_req_event(work, &cur_cm_id_priv->id); 2681 cm_format_sidr_req_event(work, &cur_cm_id_priv->id);
2679 cm_process_work(cm_id_priv, work); 2682 cm_process_work(cm_id_priv, work);
@@ -3175,10 +3178,10 @@ int ib_cm_init_qp_attr(struct ib_cm_id *cm_id,
3175} 3178}
3176EXPORT_SYMBOL(ib_cm_init_qp_attr); 3179EXPORT_SYMBOL(ib_cm_init_qp_attr);
3177 3180
3178static u64 cm_get_ca_guid(struct ib_device *device) 3181static __be64 cm_get_ca_guid(struct ib_device *device)
3179{ 3182{
3180 struct ib_device_attr *device_attr; 3183 struct ib_device_attr *device_attr;
3181 u64 guid; 3184 __be64 guid;
3182 int ret; 3185 int ret;
3183 3186
3184 device_attr = kmalloc(sizeof *device_attr, GFP_KERNEL); 3187 device_attr = kmalloc(sizeof *device_attr, GFP_KERNEL);
diff --git a/drivers/infiniband/core/cm_msgs.h b/drivers/infiniband/core/cm_msgs.h
index 15a309a77b2b..807a9fbb38f5 100644
--- a/drivers/infiniband/core/cm_msgs.h
+++ b/drivers/infiniband/core/cm_msgs.h
@@ -43,19 +43,17 @@
43 43
44#define IB_CM_CLASS_VERSION 2 /* IB specification 1.2 */ 44#define IB_CM_CLASS_VERSION 2 /* IB specification 1.2 */
45 45
46enum cm_msg_attr_id { 46#define CM_REQ_ATTR_ID __constant_htons(0x0010)
47 CM_REQ_ATTR_ID = __constant_htons(0x0010), 47#define CM_MRA_ATTR_ID __constant_htons(0x0011)
48 CM_MRA_ATTR_ID = __constant_htons(0x0011), 48#define CM_REJ_ATTR_ID __constant_htons(0x0012)
49 CM_REJ_ATTR_ID = __constant_htons(0x0012), 49#define CM_REP_ATTR_ID __constant_htons(0x0013)
50 CM_REP_ATTR_ID = __constant_htons(0x0013), 50#define CM_RTU_ATTR_ID __constant_htons(0x0014)
51 CM_RTU_ATTR_ID = __constant_htons(0x0014), 51#define CM_DREQ_ATTR_ID __constant_htons(0x0015)
52 CM_DREQ_ATTR_ID = __constant_htons(0x0015), 52#define CM_DREP_ATTR_ID __constant_htons(0x0016)
53 CM_DREP_ATTR_ID = __constant_htons(0x0016), 53#define CM_SIDR_REQ_ATTR_ID __constant_htons(0x0017)
54 CM_SIDR_REQ_ATTR_ID = __constant_htons(0x0017), 54#define CM_SIDR_REP_ATTR_ID __constant_htons(0x0018)
55 CM_SIDR_REP_ATTR_ID = __constant_htons(0x0018), 55#define CM_LAP_ATTR_ID __constant_htons(0x0019)
56 CM_LAP_ATTR_ID = __constant_htons(0x0019), 56#define CM_APR_ATTR_ID __constant_htons(0x001A)
57 CM_APR_ATTR_ID = __constant_htons(0x001A)
58};
59 57
60enum cm_msg_sequence { 58enum cm_msg_sequence {
61 CM_MSG_SEQUENCE_REQ, 59 CM_MSG_SEQUENCE_REQ,
@@ -67,35 +65,35 @@ enum cm_msg_sequence {
67struct cm_req_msg { 65struct cm_req_msg {
68 struct ib_mad_hdr hdr; 66 struct ib_mad_hdr hdr;
69 67
70 u32 local_comm_id; 68 __be32 local_comm_id;
71 u32 rsvd4; 69 __be32 rsvd4;
72 u64 service_id; 70 __be64 service_id;
73 u64 local_ca_guid; 71 __be64 local_ca_guid;
74 u32 rsvd24; 72 __be32 rsvd24;
75 u32 local_qkey; 73 __be32 local_qkey;
76 /* local QPN:24, responder resources:8 */ 74 /* local QPN:24, responder resources:8 */
77 u32 offset32; 75 __be32 offset32;
78 /* local EECN:24, initiator depth:8 */ 76 /* local EECN:24, initiator depth:8 */
79 u32 offset36; 77 __be32 offset36;
80 /* 78 /*
81 * remote EECN:24, remote CM response timeout:5, 79 * remote EECN:24, remote CM response timeout:5,
82 * transport service type:2, end-to-end flow control:1 80 * transport service type:2, end-to-end flow control:1
83 */ 81 */
84 u32 offset40; 82 __be32 offset40;
85 /* starting PSN:24, local CM response timeout:5, retry count:3 */ 83 /* starting PSN:24, local CM response timeout:5, retry count:3 */
86 u32 offset44; 84 __be32 offset44;
87 u16 pkey; 85 __be16 pkey;
88 /* path MTU:4, RDC exists:1, RNR retry count:3. */ 86 /* path MTU:4, RDC exists:1, RNR retry count:3. */
89 u8 offset50; 87 u8 offset50;
90 /* max CM Retries:4, SRQ:1, rsvd:3 */ 88 /* max CM Retries:4, SRQ:1, rsvd:3 */
91 u8 offset51; 89 u8 offset51;
92 90
93 u16 primary_local_lid; 91 __be16 primary_local_lid;
94 u16 primary_remote_lid; 92 __be16 primary_remote_lid;
95 union ib_gid primary_local_gid; 93 union ib_gid primary_local_gid;
96 union ib_gid primary_remote_gid; 94 union ib_gid primary_remote_gid;
97 /* flow label:20, rsvd:6, packet rate:6 */ 95 /* flow label:20, rsvd:6, packet rate:6 */
98 u32 primary_offset88; 96 __be32 primary_offset88;
99 u8 primary_traffic_class; 97 u8 primary_traffic_class;
100 u8 primary_hop_limit; 98 u8 primary_hop_limit;
101 /* SL:4, subnet local:1, rsvd:3 */ 99 /* SL:4, subnet local:1, rsvd:3 */
@@ -103,12 +101,12 @@ struct cm_req_msg {
103 /* local ACK timeout:5, rsvd:3 */ 101 /* local ACK timeout:5, rsvd:3 */
104 u8 primary_offset95; 102 u8 primary_offset95;
105 103
106 u16 alt_local_lid; 104 __be16 alt_local_lid;
107 u16 alt_remote_lid; 105 __be16 alt_remote_lid;
108 union ib_gid alt_local_gid; 106 union ib_gid alt_local_gid;
109 union ib_gid alt_remote_gid; 107 union ib_gid alt_remote_gid;
110 /* flow label:20, rsvd:6, packet rate:6 */ 108 /* flow label:20, rsvd:6, packet rate:6 */
111 u32 alt_offset132; 109 __be32 alt_offset132;
112 u8 alt_traffic_class; 110 u8 alt_traffic_class;
113 u8 alt_hop_limit; 111 u8 alt_hop_limit;
114 /* SL:4, subnet local:1, rsvd:3 */ 112 /* SL:4, subnet local:1, rsvd:3 */
@@ -120,12 +118,12 @@ struct cm_req_msg {
120 118
121} __attribute__ ((packed)); 119} __attribute__ ((packed));
122 120
123static inline u32 cm_req_get_local_qpn(struct cm_req_msg *req_msg) 121static inline __be32 cm_req_get_local_qpn(struct cm_req_msg *req_msg)
124{ 122{
125 return cpu_to_be32(be32_to_cpu(req_msg->offset32) >> 8); 123 return cpu_to_be32(be32_to_cpu(req_msg->offset32) >> 8);
126} 124}
127 125
128static inline void cm_req_set_local_qpn(struct cm_req_msg *req_msg, u32 qpn) 126static inline void cm_req_set_local_qpn(struct cm_req_msg *req_msg, __be32 qpn)
129{ 127{
130 req_msg->offset32 = cpu_to_be32((be32_to_cpu(qpn) << 8) | 128 req_msg->offset32 = cpu_to_be32((be32_to_cpu(qpn) << 8) |
131 (be32_to_cpu(req_msg->offset32) & 129 (be32_to_cpu(req_msg->offset32) &
@@ -208,13 +206,13 @@ static inline void cm_req_set_flow_ctrl(struct cm_req_msg *req_msg,
208 0xFFFFFFFE)); 206 0xFFFFFFFE));
209} 207}
210 208
211static inline u32 cm_req_get_starting_psn(struct cm_req_msg *req_msg) 209static inline __be32 cm_req_get_starting_psn(struct cm_req_msg *req_msg)
212{ 210{
213 return cpu_to_be32(be32_to_cpu(req_msg->offset44) >> 8); 211 return cpu_to_be32(be32_to_cpu(req_msg->offset44) >> 8);
214} 212}
215 213
216static inline void cm_req_set_starting_psn(struct cm_req_msg *req_msg, 214static inline void cm_req_set_starting_psn(struct cm_req_msg *req_msg,
217 u32 starting_psn) 215 __be32 starting_psn)
218{ 216{
219 req_msg->offset44 = cpu_to_be32((be32_to_cpu(starting_psn) << 8) | 217 req_msg->offset44 = cpu_to_be32((be32_to_cpu(starting_psn) << 8) |
220 (be32_to_cpu(req_msg->offset44) & 0x000000FF)); 218 (be32_to_cpu(req_msg->offset44) & 0x000000FF));
@@ -288,13 +286,13 @@ static inline void cm_req_set_srq(struct cm_req_msg *req_msg, u8 srq)
288 ((srq & 0x1) << 3)); 286 ((srq & 0x1) << 3));
289} 287}
290 288
291static inline u32 cm_req_get_primary_flow_label(struct cm_req_msg *req_msg) 289static inline __be32 cm_req_get_primary_flow_label(struct cm_req_msg *req_msg)
292{ 290{
293 return cpu_to_be32((be32_to_cpu(req_msg->primary_offset88) >> 12)); 291 return cpu_to_be32(be32_to_cpu(req_msg->primary_offset88) >> 12);
294} 292}
295 293
296static inline void cm_req_set_primary_flow_label(struct cm_req_msg *req_msg, 294static inline void cm_req_set_primary_flow_label(struct cm_req_msg *req_msg,
297 u32 flow_label) 295 __be32 flow_label)
298{ 296{
299 req_msg->primary_offset88 = cpu_to_be32( 297 req_msg->primary_offset88 = cpu_to_be32(
300 (be32_to_cpu(req_msg->primary_offset88) & 298 (be32_to_cpu(req_msg->primary_offset88) &
@@ -350,13 +348,13 @@ static inline void cm_req_set_primary_local_ack_timeout(struct cm_req_msg *req_m
350 (local_ack_timeout << 3)); 348 (local_ack_timeout << 3));
351} 349}
352 350
353static inline u32 cm_req_get_alt_flow_label(struct cm_req_msg *req_msg) 351static inline __be32 cm_req_get_alt_flow_label(struct cm_req_msg *req_msg)
354{ 352{
355 return cpu_to_be32((be32_to_cpu(req_msg->alt_offset132) >> 12)); 353 return cpu_to_be32(be32_to_cpu(req_msg->alt_offset132) >> 12);
356} 354}
357 355
358static inline void cm_req_set_alt_flow_label(struct cm_req_msg *req_msg, 356static inline void cm_req_set_alt_flow_label(struct cm_req_msg *req_msg,
359 u32 flow_label) 357 __be32 flow_label)
360{ 358{
361 req_msg->alt_offset132 = cpu_to_be32( 359 req_msg->alt_offset132 = cpu_to_be32(
362 (be32_to_cpu(req_msg->alt_offset132) & 360 (be32_to_cpu(req_msg->alt_offset132) &
@@ -422,8 +420,8 @@ enum cm_msg_response {
422 struct cm_mra_msg { 420 struct cm_mra_msg {
423 struct ib_mad_hdr hdr; 421 struct ib_mad_hdr hdr;
424 422
425 u32 local_comm_id; 423 __be32 local_comm_id;
426 u32 remote_comm_id; 424 __be32 remote_comm_id;
427 /* message MRAed:2, rsvd:6 */ 425 /* message MRAed:2, rsvd:6 */
428 u8 offset8; 426 u8 offset8;
429 /* service timeout:5, rsvd:3 */ 427 /* service timeout:5, rsvd:3 */
@@ -458,13 +456,13 @@ static inline void cm_mra_set_service_timeout(struct cm_mra_msg *mra_msg,
458struct cm_rej_msg { 456struct cm_rej_msg {
459 struct ib_mad_hdr hdr; 457 struct ib_mad_hdr hdr;
460 458
461 u32 local_comm_id; 459 __be32 local_comm_id;
462 u32 remote_comm_id; 460 __be32 remote_comm_id;
463 /* message REJected:2, rsvd:6 */ 461 /* message REJected:2, rsvd:6 */
464 u8 offset8; 462 u8 offset8;
465 /* reject info length:7, rsvd:1. */ 463 /* reject info length:7, rsvd:1. */
466 u8 offset9; 464 u8 offset9;
467 u16 reason; 465 __be16 reason;
468 u8 ari[IB_CM_REJ_ARI_LENGTH]; 466 u8 ari[IB_CM_REJ_ARI_LENGTH];
469 467
470 u8 private_data[IB_CM_REJ_PRIVATE_DATA_SIZE]; 468 u8 private_data[IB_CM_REJ_PRIVATE_DATA_SIZE];
@@ -495,45 +493,45 @@ static inline void cm_rej_set_reject_info_len(struct cm_rej_msg *rej_msg,
495struct cm_rep_msg { 493struct cm_rep_msg {
496 struct ib_mad_hdr hdr; 494 struct ib_mad_hdr hdr;
497 495
498 u32 local_comm_id; 496 __be32 local_comm_id;
499 u32 remote_comm_id; 497 __be32 remote_comm_id;
500 u32 local_qkey; 498 __be32 local_qkey;
501 /* local QPN:24, rsvd:8 */ 499 /* local QPN:24, rsvd:8 */
502 u32 offset12; 500 __be32 offset12;
503 /* local EECN:24, rsvd:8 */ 501 /* local EECN:24, rsvd:8 */
504 u32 offset16; 502 __be32 offset16;
505 /* starting PSN:24 rsvd:8 */ 503 /* starting PSN:24 rsvd:8 */
506 u32 offset20; 504 __be32 offset20;
507 u8 resp_resources; 505 u8 resp_resources;
508 u8 initiator_depth; 506 u8 initiator_depth;
509 /* target ACK delay:5, failover accepted:2, end-to-end flow control:1 */ 507 /* target ACK delay:5, failover accepted:2, end-to-end flow control:1 */
510 u8 offset26; 508 u8 offset26;
511 /* RNR retry count:3, SRQ:1, rsvd:5 */ 509 /* RNR retry count:3, SRQ:1, rsvd:5 */
512 u8 offset27; 510 u8 offset27;
513 u64 local_ca_guid; 511 __be64 local_ca_guid;
514 512
515 u8 private_data[IB_CM_REP_PRIVATE_DATA_SIZE]; 513 u8 private_data[IB_CM_REP_PRIVATE_DATA_SIZE];
516 514
517} __attribute__ ((packed)); 515} __attribute__ ((packed));
518 516
519static inline u32 cm_rep_get_local_qpn(struct cm_rep_msg *rep_msg) 517static inline __be32 cm_rep_get_local_qpn(struct cm_rep_msg *rep_msg)
520{ 518{
521 return cpu_to_be32(be32_to_cpu(rep_msg->offset12) >> 8); 519 return cpu_to_be32(be32_to_cpu(rep_msg->offset12) >> 8);
522} 520}
523 521
524static inline void cm_rep_set_local_qpn(struct cm_rep_msg *rep_msg, u32 qpn) 522static inline void cm_rep_set_local_qpn(struct cm_rep_msg *rep_msg, __be32 qpn)
525{ 523{
526 rep_msg->offset12 = cpu_to_be32((be32_to_cpu(qpn) << 8) | 524 rep_msg->offset12 = cpu_to_be32((be32_to_cpu(qpn) << 8) |
527 (be32_to_cpu(rep_msg->offset12) & 0x000000FF)); 525 (be32_to_cpu(rep_msg->offset12) & 0x000000FF));
528} 526}
529 527
530static inline u32 cm_rep_get_starting_psn(struct cm_rep_msg *rep_msg) 528static inline __be32 cm_rep_get_starting_psn(struct cm_rep_msg *rep_msg)
531{ 529{
532 return cpu_to_be32(be32_to_cpu(rep_msg->offset20) >> 8); 530 return cpu_to_be32(be32_to_cpu(rep_msg->offset20) >> 8);
533} 531}
534 532
535static inline void cm_rep_set_starting_psn(struct cm_rep_msg *rep_msg, 533static inline void cm_rep_set_starting_psn(struct cm_rep_msg *rep_msg,
536 u32 starting_psn) 534 __be32 starting_psn)
537{ 535{
538 rep_msg->offset20 = cpu_to_be32((be32_to_cpu(starting_psn) << 8) | 536 rep_msg->offset20 = cpu_to_be32((be32_to_cpu(starting_psn) << 8) |
539 (be32_to_cpu(rep_msg->offset20) & 0x000000FF)); 537 (be32_to_cpu(rep_msg->offset20) & 0x000000FF));
@@ -600,8 +598,8 @@ static inline void cm_rep_set_srq(struct cm_rep_msg *rep_msg, u8 srq)
600struct cm_rtu_msg { 598struct cm_rtu_msg {
601 struct ib_mad_hdr hdr; 599 struct ib_mad_hdr hdr;
602 600
603 u32 local_comm_id; 601 __be32 local_comm_id;
604 u32 remote_comm_id; 602 __be32 remote_comm_id;
605 603
606 u8 private_data[IB_CM_RTU_PRIVATE_DATA_SIZE]; 604 u8 private_data[IB_CM_RTU_PRIVATE_DATA_SIZE];
607 605
@@ -610,21 +608,21 @@ struct cm_rtu_msg {
610struct cm_dreq_msg { 608struct cm_dreq_msg {
611 struct ib_mad_hdr hdr; 609 struct ib_mad_hdr hdr;
612 610
613 u32 local_comm_id; 611 __be32 local_comm_id;
614 u32 remote_comm_id; 612 __be32 remote_comm_id;
615 /* remote QPN/EECN:24, rsvd:8 */ 613 /* remote QPN/EECN:24, rsvd:8 */
616 u32 offset8; 614 __be32 offset8;
617 615
618 u8 private_data[IB_CM_DREQ_PRIVATE_DATA_SIZE]; 616 u8 private_data[IB_CM_DREQ_PRIVATE_DATA_SIZE];
619 617
620} __attribute__ ((packed)); 618} __attribute__ ((packed));
621 619
622static inline u32 cm_dreq_get_remote_qpn(struct cm_dreq_msg *dreq_msg) 620static inline __be32 cm_dreq_get_remote_qpn(struct cm_dreq_msg *dreq_msg)
623{ 621{
624 return cpu_to_be32(be32_to_cpu(dreq_msg->offset8) >> 8); 622 return cpu_to_be32(be32_to_cpu(dreq_msg->offset8) >> 8);
625} 623}
626 624
627static inline void cm_dreq_set_remote_qpn(struct cm_dreq_msg *dreq_msg, u32 qpn) 625static inline void cm_dreq_set_remote_qpn(struct cm_dreq_msg *dreq_msg, __be32 qpn)
628{ 626{
629 dreq_msg->offset8 = cpu_to_be32((be32_to_cpu(qpn) << 8) | 627 dreq_msg->offset8 = cpu_to_be32((be32_to_cpu(qpn) << 8) |
630 (be32_to_cpu(dreq_msg->offset8) & 0x000000FF)); 628 (be32_to_cpu(dreq_msg->offset8) & 0x000000FF));
@@ -633,8 +631,8 @@ static inline void cm_dreq_set_remote_qpn(struct cm_dreq_msg *dreq_msg, u32 qpn)
633struct cm_drep_msg { 631struct cm_drep_msg {
634 struct ib_mad_hdr hdr; 632 struct ib_mad_hdr hdr;
635 633
636 u32 local_comm_id; 634 __be32 local_comm_id;
637 u32 remote_comm_id; 635 __be32 remote_comm_id;
638 636
639 u8 private_data[IB_CM_DREP_PRIVATE_DATA_SIZE]; 637 u8 private_data[IB_CM_DREP_PRIVATE_DATA_SIZE];
640 638
@@ -643,37 +641,37 @@ struct cm_drep_msg {
643struct cm_lap_msg { 641struct cm_lap_msg {
644 struct ib_mad_hdr hdr; 642 struct ib_mad_hdr hdr;
645 643
646 u32 local_comm_id; 644 __be32 local_comm_id;
647 u32 remote_comm_id; 645 __be32 remote_comm_id;
648 646
649 u32 rsvd8; 647 __be32 rsvd8;
650 /* remote QPN/EECN:24, remote CM response timeout:5, rsvd:3 */ 648 /* remote QPN/EECN:24, remote CM response timeout:5, rsvd:3 */
651 u32 offset12; 649 __be32 offset12;
652 u32 rsvd16; 650 __be32 rsvd16;
653 651
654 u16 alt_local_lid; 652 __be16 alt_local_lid;
655 u16 alt_remote_lid; 653 __be16 alt_remote_lid;
656 union ib_gid alt_local_gid; 654 union ib_gid alt_local_gid;
657 union ib_gid alt_remote_gid; 655 union ib_gid alt_remote_gid;
658 /* flow label:20, rsvd:4, traffic class:8 */ 656 /* flow label:20, rsvd:4, traffic class:8 */
659 u32 offset56; 657 __be32 offset56;
660 u8 alt_hop_limit; 658 u8 alt_hop_limit;
661 /* rsvd:2, packet rate:6 */ 659 /* rsvd:2, packet rate:6 */
662 uint8_t offset61; 660 u8 offset61;
663 /* SL:4, subnet local:1, rsvd:3 */ 661 /* SL:4, subnet local:1, rsvd:3 */
664 uint8_t offset62; 662 u8 offset62;
665 /* local ACK timeout:5, rsvd:3 */ 663 /* local ACK timeout:5, rsvd:3 */
666 uint8_t offset63; 664 u8 offset63;
667 665
668 u8 private_data[IB_CM_LAP_PRIVATE_DATA_SIZE]; 666 u8 private_data[IB_CM_LAP_PRIVATE_DATA_SIZE];
669} __attribute__ ((packed)); 667} __attribute__ ((packed));
670 668
671static inline u32 cm_lap_get_remote_qpn(struct cm_lap_msg *lap_msg) 669static inline __be32 cm_lap_get_remote_qpn(struct cm_lap_msg *lap_msg)
672{ 670{
673 return cpu_to_be32(be32_to_cpu(lap_msg->offset12) >> 8); 671 return cpu_to_be32(be32_to_cpu(lap_msg->offset12) >> 8);
674} 672}
675 673
676static inline void cm_lap_set_remote_qpn(struct cm_lap_msg *lap_msg, u32 qpn) 674static inline void cm_lap_set_remote_qpn(struct cm_lap_msg *lap_msg, __be32 qpn)
677{ 675{
678 lap_msg->offset12 = cpu_to_be32((be32_to_cpu(qpn) << 8) | 676 lap_msg->offset12 = cpu_to_be32((be32_to_cpu(qpn) << 8) |
679 (be32_to_cpu(lap_msg->offset12) & 677 (be32_to_cpu(lap_msg->offset12) &
@@ -693,17 +691,17 @@ static inline void cm_lap_set_remote_resp_timeout(struct cm_lap_msg *lap_msg,
693 0xFFFFFF07)); 691 0xFFFFFF07));
694} 692}
695 693
696static inline u32 cm_lap_get_flow_label(struct cm_lap_msg *lap_msg) 694static inline __be32 cm_lap_get_flow_label(struct cm_lap_msg *lap_msg)
697{ 695{
698 return be32_to_cpu(lap_msg->offset56) >> 12; 696 return cpu_to_be32(be32_to_cpu(lap_msg->offset56) >> 12);
699} 697}
700 698
701static inline void cm_lap_set_flow_label(struct cm_lap_msg *lap_msg, 699static inline void cm_lap_set_flow_label(struct cm_lap_msg *lap_msg,
702 u32 flow_label) 700 __be32 flow_label)
703{ 701{
704 lap_msg->offset56 = cpu_to_be32((flow_label << 12) | 702 lap_msg->offset56 = cpu_to_be32(
705 (be32_to_cpu(lap_msg->offset56) & 703 (be32_to_cpu(lap_msg->offset56) & 0x00000FFF) |
706 0x00000FFF)); 704 (be32_to_cpu(flow_label) << 12));
707} 705}
708 706
709static inline u8 cm_lap_get_traffic_class(struct cm_lap_msg *lap_msg) 707static inline u8 cm_lap_get_traffic_class(struct cm_lap_msg *lap_msg)
@@ -766,8 +764,8 @@ static inline void cm_lap_set_local_ack_timeout(struct cm_lap_msg *lap_msg,
766struct cm_apr_msg { 764struct cm_apr_msg {
767 struct ib_mad_hdr hdr; 765 struct ib_mad_hdr hdr;
768 766
769 u32 local_comm_id; 767 __be32 local_comm_id;
770 u32 remote_comm_id; 768 __be32 remote_comm_id;
771 769
772 u8 info_length; 770 u8 info_length;
773 u8 ap_status; 771 u8 ap_status;
@@ -779,10 +777,10 @@ struct cm_apr_msg {
779struct cm_sidr_req_msg { 777struct cm_sidr_req_msg {
780 struct ib_mad_hdr hdr; 778 struct ib_mad_hdr hdr;
781 779
782 u32 request_id; 780 __be32 request_id;
783 u16 pkey; 781 __be16 pkey;
784 u16 rsvd; 782 __be16 rsvd;
785 u64 service_id; 783 __be64 service_id;
786 784
787 u8 private_data[IB_CM_SIDR_REQ_PRIVATE_DATA_SIZE]; 785 u8 private_data[IB_CM_SIDR_REQ_PRIVATE_DATA_SIZE];
788} __attribute__ ((packed)); 786} __attribute__ ((packed));
@@ -790,26 +788,26 @@ struct cm_sidr_req_msg {
790struct cm_sidr_rep_msg { 788struct cm_sidr_rep_msg {
791 struct ib_mad_hdr hdr; 789 struct ib_mad_hdr hdr;
792 790
793 u32 request_id; 791 __be32 request_id;
794 u8 status; 792 u8 status;
795 u8 info_length; 793 u8 info_length;
796 u16 rsvd; 794 __be16 rsvd;
797 /* QPN:24, rsvd:8 */ 795 /* QPN:24, rsvd:8 */
798 u32 offset8; 796 __be32 offset8;
799 u64 service_id; 797 __be64 service_id;
800 u32 qkey; 798 __be32 qkey;
801 u8 info[IB_CM_SIDR_REP_INFO_LENGTH]; 799 u8 info[IB_CM_SIDR_REP_INFO_LENGTH];
802 800
803 u8 private_data[IB_CM_SIDR_REP_PRIVATE_DATA_SIZE]; 801 u8 private_data[IB_CM_SIDR_REP_PRIVATE_DATA_SIZE];
804} __attribute__ ((packed)); 802} __attribute__ ((packed));
805 803
806static inline u32 cm_sidr_rep_get_qpn(struct cm_sidr_rep_msg *sidr_rep_msg) 804static inline __be32 cm_sidr_rep_get_qpn(struct cm_sidr_rep_msg *sidr_rep_msg)
807{ 805{
808 return cpu_to_be32(be32_to_cpu(sidr_rep_msg->offset8) >> 8); 806 return cpu_to_be32(be32_to_cpu(sidr_rep_msg->offset8) >> 8);
809} 807}
810 808
811static inline void cm_sidr_rep_set_qpn(struct cm_sidr_rep_msg *sidr_rep_msg, 809static inline void cm_sidr_rep_set_qpn(struct cm_sidr_rep_msg *sidr_rep_msg,
812 u32 qpn) 810 __be32 qpn)
813{ 811{
814 sidr_rep_msg->offset8 = cpu_to_be32((be32_to_cpu(qpn) << 8) | 812 sidr_rep_msg->offset8 = cpu_to_be32((be32_to_cpu(qpn) << 8) |
815 (be32_to_cpu(sidr_rep_msg->offset8) & 813 (be32_to_cpu(sidr_rep_msg->offset8) &
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index b97e210ce9c8..214493cb3a0b 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -693,7 +693,8 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
693 goto out; 693 goto out;
694 } 694 }
695 695
696 build_smp_wc(send_wr->wr_id, smp->dr_slid, send_wr->wr.ud.pkey_index, 696 build_smp_wc(send_wr->wr_id, be16_to_cpu(smp->dr_slid),
697 send_wr->wr.ud.pkey_index,
697 send_wr->wr.ud.port_num, &mad_wc); 698 send_wr->wr.ud.port_num, &mad_wc);
698 699
699 /* No GRH for DR SMP */ 700 /* No GRH for DR SMP */
@@ -1554,7 +1555,7 @@ static int is_data_mad(struct ib_mad_agent_private *mad_agent_priv,
1554} 1555}
1555 1556
1556struct ib_mad_send_wr_private* 1557struct ib_mad_send_wr_private*
1557ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv, u64 tid) 1558ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv, __be64 tid)
1558{ 1559{
1559 struct ib_mad_send_wr_private *mad_send_wr; 1560 struct ib_mad_send_wr_private *mad_send_wr;
1560 1561
@@ -1597,7 +1598,7 @@ static void ib_mad_complete_recv(struct ib_mad_agent_private *mad_agent_priv,
1597 struct ib_mad_send_wr_private *mad_send_wr; 1598 struct ib_mad_send_wr_private *mad_send_wr;
1598 struct ib_mad_send_wc mad_send_wc; 1599 struct ib_mad_send_wc mad_send_wc;
1599 unsigned long flags; 1600 unsigned long flags;
1600 u64 tid; 1601 __be64 tid;
1601 1602
1602 INIT_LIST_HEAD(&mad_recv_wc->rmpp_list); 1603 INIT_LIST_HEAD(&mad_recv_wc->rmpp_list);
1603 list_add(&mad_recv_wc->recv_buf.list, &mad_recv_wc->rmpp_list); 1604 list_add(&mad_recv_wc->recv_buf.list, &mad_recv_wc->rmpp_list);
@@ -2165,7 +2166,8 @@ static void local_completions(void *data)
2165 * Defined behavior is to complete response 2166 * Defined behavior is to complete response
2166 * before request 2167 * before request
2167 */ 2168 */
2168 build_smp_wc(local->wr_id, IB_LID_PERMISSIVE, 2169 build_smp_wc(local->wr_id,
2170 be16_to_cpu(IB_LID_PERMISSIVE),
2169 0 /* pkey index */, 2171 0 /* pkey index */,
2170 recv_mad_agent->agent.port_num, &wc); 2172 recv_mad_agent->agent.port_num, &wc);
2171 2173
diff --git a/drivers/infiniband/core/mad_priv.h b/drivers/infiniband/core/mad_priv.h
index 568da10b05ab..807b0f366353 100644
--- a/drivers/infiniband/core/mad_priv.h
+++ b/drivers/infiniband/core/mad_priv.h
@@ -121,7 +121,7 @@ struct ib_mad_send_wr_private {
121 struct ib_send_wr send_wr; 121 struct ib_send_wr send_wr;
122 struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG]; 122 struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG];
123 u64 wr_id; /* client WR ID */ 123 u64 wr_id; /* client WR ID */
124 u64 tid; 124 __be64 tid;
125 unsigned long timeout; 125 unsigned long timeout;
126 int retries; 126 int retries;
127 int retry; 127 int retry;
@@ -144,7 +144,7 @@ struct ib_mad_local_private {
144 struct ib_send_wr send_wr; 144 struct ib_send_wr send_wr;
145 struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG]; 145 struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG];
146 u64 wr_id; /* client WR ID */ 146 u64 wr_id; /* client WR ID */
147 u64 tid; 147 __be64 tid;
148}; 148};
149 149
150struct ib_mad_mgmt_method_table { 150struct ib_mad_mgmt_method_table {
@@ -210,7 +210,7 @@ extern kmem_cache_t *ib_mad_cache;
210int ib_send_mad(struct ib_mad_send_wr_private *mad_send_wr); 210int ib_send_mad(struct ib_mad_send_wr_private *mad_send_wr);
211 211
212struct ib_mad_send_wr_private * 212struct ib_mad_send_wr_private *
213ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv, u64 tid); 213ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv, __be64 tid);
214 214
215void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr, 215void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,
216 struct ib_mad_send_wc *mad_send_wc); 216 struct ib_mad_send_wc *mad_send_wc);
diff --git a/drivers/infiniband/core/mad_rmpp.c b/drivers/infiniband/core/mad_rmpp.c
index 8f1eb80e421f..d68bf7e220f9 100644
--- a/drivers/infiniband/core/mad_rmpp.c
+++ b/drivers/infiniband/core/mad_rmpp.c
@@ -61,7 +61,7 @@ struct mad_rmpp_recv {
61 int seg_num; 61 int seg_num;
62 int newwin; 62 int newwin;
63 63
64 u64 tid; 64 __be64 tid;
65 u32 src_qp; 65 u32 src_qp;
66 u16 slid; 66 u16 slid;
67 u8 mgmt_class; 67 u8 mgmt_class;
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index b2e779996cbe..bf7334e7fac6 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -255,14 +255,14 @@ static ssize_t show_port_gid(struct ib_port *p, struct port_attribute *attr,
255 return ret; 255 return ret;
256 256
257 return sprintf(buf, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n", 257 return sprintf(buf, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
258 be16_to_cpu(((u16 *) gid.raw)[0]), 258 be16_to_cpu(((__be16 *) gid.raw)[0]),
259 be16_to_cpu(((u16 *) gid.raw)[1]), 259 be16_to_cpu(((__be16 *) gid.raw)[1]),
260 be16_to_cpu(((u16 *) gid.raw)[2]), 260 be16_to_cpu(((__be16 *) gid.raw)[2]),
261 be16_to_cpu(((u16 *) gid.raw)[3]), 261 be16_to_cpu(((__be16 *) gid.raw)[3]),
262 be16_to_cpu(((u16 *) gid.raw)[4]), 262 be16_to_cpu(((__be16 *) gid.raw)[4]),
263 be16_to_cpu(((u16 *) gid.raw)[5]), 263 be16_to_cpu(((__be16 *) gid.raw)[5]),
264 be16_to_cpu(((u16 *) gid.raw)[6]), 264 be16_to_cpu(((__be16 *) gid.raw)[6]),
265 be16_to_cpu(((u16 *) gid.raw)[7])); 265 be16_to_cpu(((__be16 *) gid.raw)[7]));
266} 266}
267 267
268static ssize_t show_port_pkey(struct ib_port *p, struct port_attribute *attr, 268static ssize_t show_port_pkey(struct ib_port *p, struct port_attribute *attr,
@@ -334,11 +334,11 @@ static ssize_t show_pma_counter(struct ib_port *p, struct port_attribute *attr,
334 break; 334 break;
335 case 16: 335 case 16:
336 ret = sprintf(buf, "%u\n", 336 ret = sprintf(buf, "%u\n",
337 be16_to_cpup((u16 *)(out_mad->data + 40 + offset / 8))); 337 be16_to_cpup((__be16 *)(out_mad->data + 40 + offset / 8)));
338 break; 338 break;
339 case 32: 339 case 32:
340 ret = sprintf(buf, "%u\n", 340 ret = sprintf(buf, "%u\n",
341 be32_to_cpup((u32 *)(out_mad->data + 40 + offset / 8))); 341 be32_to_cpup((__be32 *)(out_mad->data + 40 + offset / 8)));
342 break; 342 break;
343 default: 343 default:
344 ret = 0; 344 ret = 0;
@@ -600,10 +600,10 @@ static ssize_t show_sys_image_guid(struct class_device *cdev, char *buf)
600 return ret; 600 return ret;
601 601
602 return sprintf(buf, "%04x:%04x:%04x:%04x\n", 602 return sprintf(buf, "%04x:%04x:%04x:%04x\n",
603 be16_to_cpu(((u16 *) &attr.sys_image_guid)[0]), 603 be16_to_cpu(((__be16 *) &attr.sys_image_guid)[0]),
604 be16_to_cpu(((u16 *) &attr.sys_image_guid)[1]), 604 be16_to_cpu(((__be16 *) &attr.sys_image_guid)[1]),
605 be16_to_cpu(((u16 *) &attr.sys_image_guid)[2]), 605 be16_to_cpu(((__be16 *) &attr.sys_image_guid)[2]),
606 be16_to_cpu(((u16 *) &attr.sys_image_guid)[3])); 606 be16_to_cpu(((__be16 *) &attr.sys_image_guid)[3]));
607} 607}
608 608
609static ssize_t show_node_guid(struct class_device *cdev, char *buf) 609static ssize_t show_node_guid(struct class_device *cdev, char *buf)
@@ -617,10 +617,10 @@ static ssize_t show_node_guid(struct class_device *cdev, char *buf)
617 return ret; 617 return ret;
618 618
619 return sprintf(buf, "%04x:%04x:%04x:%04x\n", 619 return sprintf(buf, "%04x:%04x:%04x:%04x\n",
620 be16_to_cpu(((u16 *) &attr.node_guid)[0]), 620 be16_to_cpu(((__be16 *) &attr.node_guid)[0]),
621 be16_to_cpu(((u16 *) &attr.node_guid)[1]), 621 be16_to_cpu(((__be16 *) &attr.node_guid)[1]),
622 be16_to_cpu(((u16 *) &attr.node_guid)[2]), 622 be16_to_cpu(((__be16 *) &attr.node_guid)[2]),
623 be16_to_cpu(((u16 *) &attr.node_guid)[3])); 623 be16_to_cpu(((__be16 *) &attr.node_guid)[3]));
624} 624}
625 625
626static CLASS_DEVICE_ATTR(node_type, S_IRUGO, show_node_type, NULL); 626static CLASS_DEVICE_ATTR(node_type, S_IRUGO, show_node_type, NULL);
diff --git a/drivers/infiniband/core/ud_header.c b/drivers/infiniband/core/ud_header.c
index b32d43ec0a33..89cd76d7c5a5 100644
--- a/drivers/infiniband/core/ud_header.c
+++ b/drivers/infiniband/core/ud_header.c
@@ -195,6 +195,7 @@ void ib_ud_header_init(int payload_bytes,
195 struct ib_ud_header *header) 195 struct ib_ud_header *header)
196{ 196{
197 int header_len; 197 int header_len;
198 u16 packet_length;
198 199
199 memset(header, 0, sizeof *header); 200 memset(header, 0, sizeof *header);
200 201
@@ -209,7 +210,7 @@ void ib_ud_header_init(int payload_bytes,
209 header->lrh.link_version = 0; 210 header->lrh.link_version = 0;
210 header->lrh.link_next_header = 211 header->lrh.link_next_header =
211 grh_present ? IB_LNH_IBA_GLOBAL : IB_LNH_IBA_LOCAL; 212 grh_present ? IB_LNH_IBA_GLOBAL : IB_LNH_IBA_LOCAL;
212 header->lrh.packet_length = (IB_LRH_BYTES + 213 packet_length = (IB_LRH_BYTES +
213 IB_BTH_BYTES + 214 IB_BTH_BYTES +
214 IB_DETH_BYTES + 215 IB_DETH_BYTES +
215 payload_bytes + 216 payload_bytes +
@@ -218,8 +219,7 @@ void ib_ud_header_init(int payload_bytes,
218 219
219 header->grh_present = grh_present; 220 header->grh_present = grh_present;
220 if (grh_present) { 221 if (grh_present) {
221 header->lrh.packet_length += IB_GRH_BYTES / 4; 222 packet_length += IB_GRH_BYTES / 4;
222
223 header->grh.ip_version = 6; 223 header->grh.ip_version = 6;
224 header->grh.payload_length = 224 header->grh.payload_length =
225 cpu_to_be16((IB_BTH_BYTES + 225 cpu_to_be16((IB_BTH_BYTES +
@@ -230,7 +230,7 @@ void ib_ud_header_init(int payload_bytes,
230 header->grh.next_header = 0x1b; 230 header->grh.next_header = 0x1b;
231 } 231 }
232 232
233 cpu_to_be16s(&header->lrh.packet_length); 233 header->lrh.packet_length = cpu_to_be16(packet_length);
234 234
235 if (header->immediate_present) 235 if (header->immediate_present)
236 header->bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE; 236 header->bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE;
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 8a19dd4d38f8..16d91f187758 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -271,7 +271,7 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
271 struct ib_send_wr *bad_wr; 271 struct ib_send_wr *bad_wr;
272 struct ib_rmpp_mad *rmpp_mad; 272 struct ib_rmpp_mad *rmpp_mad;
273 u8 method; 273 u8 method;
274 u64 *tid; 274 __be64 *tid;
275 int ret, length, hdr_len, data_len, rmpp_hdr_size; 275 int ret, length, hdr_len, data_len, rmpp_hdr_size;
276 int rmpp_active = 0; 276 int rmpp_active = 0;
277 277
@@ -316,7 +316,7 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
316 if (packet->mad.hdr.grh_present) { 316 if (packet->mad.hdr.grh_present) {
317 ah_attr.ah_flags = IB_AH_GRH; 317 ah_attr.ah_flags = IB_AH_GRH;
318 memcpy(ah_attr.grh.dgid.raw, packet->mad.hdr.gid, 16); 318 memcpy(ah_attr.grh.dgid.raw, packet->mad.hdr.gid, 16);
319 ah_attr.grh.flow_label = packet->mad.hdr.flow_label; 319 ah_attr.grh.flow_label = be32_to_cpu(packet->mad.hdr.flow_label);
320 ah_attr.grh.hop_limit = packet->mad.hdr.hop_limit; 320 ah_attr.grh.hop_limit = packet->mad.hdr.hop_limit;
321 ah_attr.grh.traffic_class = packet->mad.hdr.traffic_class; 321 ah_attr.grh.traffic_class = packet->mad.hdr.traffic_class;
322 } 322 }
diff --git a/drivers/infiniband/hw/mthca/mthca_av.c b/drivers/infiniband/hw/mthca/mthca_av.c
index d58dcbe66488..e596210f11b3 100644
--- a/drivers/infiniband/hw/mthca/mthca_av.c
+++ b/drivers/infiniband/hw/mthca/mthca_av.c
@@ -41,16 +41,16 @@
41#include "mthca_dev.h" 41#include "mthca_dev.h"
42 42
43struct mthca_av { 43struct mthca_av {
44 u32 port_pd; 44 __be32 port_pd;
45 u8 reserved1; 45 u8 reserved1;
46 u8 g_slid; 46 u8 g_slid;
47 u16 dlid; 47 __be16 dlid;
48 u8 reserved2; 48 u8 reserved2;
49 u8 gid_index; 49 u8 gid_index;
50 u8 msg_sr; 50 u8 msg_sr;
51 u8 hop_limit; 51 u8 hop_limit;
52 u32 sl_tclass_flowlabel; 52 __be32 sl_tclass_flowlabel;
53 u32 dgid[4]; 53 __be32 dgid[4];
54}; 54};
55 55
56int mthca_create_ah(struct mthca_dev *dev, 56int mthca_create_ah(struct mthca_dev *dev,
@@ -128,7 +128,7 @@ on_hca_fail:
128 av, (unsigned long) ah->avdma); 128 av, (unsigned long) ah->avdma);
129 for (j = 0; j < 8; ++j) 129 for (j = 0; j < 8; ++j)
130 printk(KERN_DEBUG " [%2x] %08x\n", 130 printk(KERN_DEBUG " [%2x] %08x\n",
131 j * 4, be32_to_cpu(((u32 *) av)[j])); 131 j * 4, be32_to_cpu(((__be32 *) av)[j]));
132 } 132 }
133 133
134 if (ah->type == MTHCA_AH_ON_HCA) { 134 if (ah->type == MTHCA_AH_ON_HCA) {
@@ -169,7 +169,7 @@ int mthca_read_ah(struct mthca_dev *dev, struct mthca_ah *ah,
169 169
170 header->lrh.service_level = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28; 170 header->lrh.service_level = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28;
171 header->lrh.destination_lid = ah->av->dlid; 171 header->lrh.destination_lid = ah->av->dlid;
172 header->lrh.source_lid = ah->av->g_slid & 0x7f; 172 header->lrh.source_lid = cpu_to_be16(ah->av->g_slid & 0x7f);
173 if (ah->av->g_slid & 0x80) { 173 if (ah->av->g_slid & 0x80) {
174 header->grh_present = 1; 174 header->grh_present = 1;
175 header->grh.traffic_class = 175 header->grh.traffic_class =
diff --git a/drivers/infiniband/hw/mthca/mthca_cmd.c b/drivers/infiniband/hw/mthca/mthca_cmd.c
index 0ff5900e0930..1e60487ecd7f 100644
--- a/drivers/infiniband/hw/mthca/mthca_cmd.c
+++ b/drivers/infiniband/hw/mthca/mthca_cmd.c
@@ -220,20 +220,20 @@ static int mthca_cmd_post(struct mthca_dev *dev,
220 * (and some architectures such as ia64 implement memcpy_toio 220 * (and some architectures such as ia64 implement memcpy_toio
221 * in terms of writeb). 221 * in terms of writeb).
222 */ 222 */
223 __raw_writel(cpu_to_be32(in_param >> 32), dev->hcr + 0 * 4); 223 __raw_writel((__force u32) cpu_to_be32(in_param >> 32), dev->hcr + 0 * 4);
224 __raw_writel(cpu_to_be32(in_param & 0xfffffffful), dev->hcr + 1 * 4); 224 __raw_writel((__force u32) cpu_to_be32(in_param & 0xfffffffful), dev->hcr + 1 * 4);
225 __raw_writel(cpu_to_be32(in_modifier), dev->hcr + 2 * 4); 225 __raw_writel((__force u32) cpu_to_be32(in_modifier), dev->hcr + 2 * 4);
226 __raw_writel(cpu_to_be32(out_param >> 32), dev->hcr + 3 * 4); 226 __raw_writel((__force u32) cpu_to_be32(out_param >> 32), dev->hcr + 3 * 4);
227 __raw_writel(cpu_to_be32(out_param & 0xfffffffful), dev->hcr + 4 * 4); 227 __raw_writel((__force u32) cpu_to_be32(out_param & 0xfffffffful), dev->hcr + 4 * 4);
228 __raw_writel(cpu_to_be32(token << 16), dev->hcr + 5 * 4); 228 __raw_writel((__force u32) cpu_to_be32(token << 16), dev->hcr + 5 * 4);
229 229
230 /* __raw_writel may not order writes. */ 230 /* __raw_writel may not order writes. */
231 wmb(); 231 wmb();
232 232
233 __raw_writel(cpu_to_be32((1 << HCR_GO_BIT) | 233 __raw_writel((__force u32) cpu_to_be32((1 << HCR_GO_BIT) |
234 (event ? (1 << HCA_E_BIT) : 0) | 234 (event ? (1 << HCA_E_BIT) : 0) |
235 (op_modifier << HCR_OPMOD_SHIFT) | 235 (op_modifier << HCR_OPMOD_SHIFT) |
236 op), dev->hcr + 6 * 4); 236 op), dev->hcr + 6 * 4);
237 237
238out: 238out:
239 up(&dev->cmd.hcr_sem); 239 up(&dev->cmd.hcr_sem);
@@ -274,12 +274,14 @@ static int mthca_cmd_poll(struct mthca_dev *dev,
274 goto out; 274 goto out;
275 } 275 }
276 276
277 if (out_is_imm) { 277 if (out_is_imm)
278 memcpy_fromio(out_param, dev->hcr + HCR_OUT_PARAM_OFFSET, sizeof (u64)); 278 *out_param =
279 be64_to_cpus(out_param); 279 (u64) be32_to_cpu((__force __be32)
280 } 280 __raw_readl(dev->hcr + HCR_OUT_PARAM_OFFSET)) << 32 |
281 (u64) be32_to_cpu((__force __be32)
282 __raw_readl(dev->hcr + HCR_OUT_PARAM_OFFSET + 4));
281 283
282 *status = be32_to_cpu(__raw_readl(dev->hcr + HCR_STATUS_OFFSET)) >> 24; 284 *status = be32_to_cpu((__force __be32) __raw_readl(dev->hcr + HCR_STATUS_OFFSET)) >> 24;
283 285
284out: 286out:
285 up(&dev->cmd.poll_sem); 287 up(&dev->cmd.poll_sem);
@@ -1122,7 +1124,7 @@ int mthca_INIT_HCA(struct mthca_dev *dev,
1122 u8 *status) 1124 u8 *status)
1123{ 1125{
1124 struct mthca_mailbox *mailbox; 1126 struct mthca_mailbox *mailbox;
1125 u32 *inbox; 1127 __be32 *inbox;
1126 int err; 1128 int err;
1127 1129
1128#define INIT_HCA_IN_SIZE 0x200 1130#define INIT_HCA_IN_SIZE 0x200
@@ -1343,7 +1345,7 @@ int mthca_MAP_ICM(struct mthca_dev *dev, struct mthca_icm *icm, u64 virt, u8 *st
1343int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt, u8 *status) 1345int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt, u8 *status)
1344{ 1346{
1345 struct mthca_mailbox *mailbox; 1347 struct mthca_mailbox *mailbox;
1346 u64 *inbox; 1348 __be64 *inbox;
1347 int err; 1349 int err;
1348 1350
1349 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); 1351 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL);
@@ -1514,7 +1516,7 @@ int mthca_MODIFY_QP(struct mthca_dev *dev, int trans, u32 num,
1514 if (i % 8 == 0) 1516 if (i % 8 == 0)
1515 printk(" [%02x] ", i * 4); 1517 printk(" [%02x] ", i * 4);
1516 printk(" %08x", 1518 printk(" %08x",
1517 be32_to_cpu(((u32 *) mailbox->buf)[i + 2])); 1519 be32_to_cpu(((__be32 *) mailbox->buf)[i + 2]));
1518 if ((i + 1) % 8 == 0) 1520 if ((i + 1) % 8 == 0)
1519 printk("\n"); 1521 printk("\n");
1520 } 1522 }
@@ -1534,7 +1536,7 @@ int mthca_MODIFY_QP(struct mthca_dev *dev, int trans, u32 num,
1534 if (i % 8 == 0) 1536 if (i % 8 == 0)
1535 printk("[%02x] ", i * 4); 1537 printk("[%02x] ", i * 4);
1536 printk(" %08x", 1538 printk(" %08x",
1537 be32_to_cpu(((u32 *) mailbox->buf)[i + 2])); 1539 be32_to_cpu(((__be32 *) mailbox->buf)[i + 2]));
1538 if ((i + 1) % 8 == 0) 1540 if ((i + 1) % 8 == 0)
1539 printk("\n"); 1541 printk("\n");
1540 } 1542 }
diff --git a/drivers/infiniband/hw/mthca/mthca_cq.c b/drivers/infiniband/hw/mthca/mthca_cq.c
index bd7807cec50c..907867d1f2e0 100644
--- a/drivers/infiniband/hw/mthca/mthca_cq.c
+++ b/drivers/infiniband/hw/mthca/mthca_cq.c
@@ -57,21 +57,21 @@ enum {
57 * Must be packed because start is 64 bits but only aligned to 32 bits. 57 * Must be packed because start is 64 bits but only aligned to 32 bits.
58 */ 58 */
59struct mthca_cq_context { 59struct mthca_cq_context {
60 u32 flags; 60 __be32 flags;
61 u64 start; 61 __be64 start;
62 u32 logsize_usrpage; 62 __be32 logsize_usrpage;
63 u32 error_eqn; /* Tavor only */ 63 __be32 error_eqn; /* Tavor only */
64 u32 comp_eqn; 64 __be32 comp_eqn;
65 u32 pd; 65 __be32 pd;
66 u32 lkey; 66 __be32 lkey;
67 u32 last_notified_index; 67 __be32 last_notified_index;
68 u32 solicit_producer_index; 68 __be32 solicit_producer_index;
69 u32 consumer_index; 69 __be32 consumer_index;
70 u32 producer_index; 70 __be32 producer_index;
71 u32 cqn; 71 __be32 cqn;
72 u32 ci_db; /* Arbel only */ 72 __be32 ci_db; /* Arbel only */
73 u32 state_db; /* Arbel only */ 73 __be32 state_db; /* Arbel only */
74 u32 reserved; 74 u32 reserved;
75} __attribute__((packed)); 75} __attribute__((packed));
76 76
77#define MTHCA_CQ_STATUS_OK ( 0 << 28) 77#define MTHCA_CQ_STATUS_OK ( 0 << 28)
@@ -110,31 +110,31 @@ enum {
110}; 110};
111 111
112struct mthca_cqe { 112struct mthca_cqe {
113 u32 my_qpn; 113 __be32 my_qpn;
114 u32 my_ee; 114 __be32 my_ee;
115 u32 rqpn; 115 __be32 rqpn;
116 u16 sl_g_mlpath; 116 __be16 sl_g_mlpath;
117 u16 rlid; 117 __be16 rlid;
118 u32 imm_etype_pkey_eec; 118 __be32 imm_etype_pkey_eec;
119 u32 byte_cnt; 119 __be32 byte_cnt;
120 u32 wqe; 120 __be32 wqe;
121 u8 opcode; 121 u8 opcode;
122 u8 is_send; 122 u8 is_send;
123 u8 reserved; 123 u8 reserved;
124 u8 owner; 124 u8 owner;
125}; 125};
126 126
127struct mthca_err_cqe { 127struct mthca_err_cqe {
128 u32 my_qpn; 128 __be32 my_qpn;
129 u32 reserved1[3]; 129 u32 reserved1[3];
130 u8 syndrome; 130 u8 syndrome;
131 u8 reserved2; 131 u8 reserved2;
132 u16 db_cnt; 132 __be16 db_cnt;
133 u32 reserved3; 133 u32 reserved3;
134 u32 wqe; 134 __be32 wqe;
135 u8 opcode; 135 u8 opcode;
136 u8 reserved4[2]; 136 u8 reserved4[2];
137 u8 owner; 137 u8 owner;
138}; 138};
139 139
140#define MTHCA_CQ_ENTRY_OWNER_SW (0 << 7) 140#define MTHCA_CQ_ENTRY_OWNER_SW (0 << 7)
@@ -193,7 +193,7 @@ static void dump_cqe(struct mthca_dev *dev, void *cqe_ptr)
193static inline void update_cons_index(struct mthca_dev *dev, struct mthca_cq *cq, 193static inline void update_cons_index(struct mthca_dev *dev, struct mthca_cq *cq,
194 int incr) 194 int incr)
195{ 195{
196 u32 doorbell[2]; 196 __be32 doorbell[2];
197 197
198 if (mthca_is_memfree(dev)) { 198 if (mthca_is_memfree(dev)) {
199 *cq->set_ci_db = cpu_to_be32(cq->cons_index); 199 *cq->set_ci_db = cpu_to_be32(cq->cons_index);
@@ -293,7 +293,7 @@ static int handle_error_cqe(struct mthca_dev *dev, struct mthca_cq *cq,
293{ 293{
294 int err; 294 int err;
295 int dbd; 295 int dbd;
296 u32 new_wqe; 296 __be32 new_wqe;
297 297
298 if (cqe->syndrome == SYNDROME_LOCAL_QP_OP_ERR) { 298 if (cqe->syndrome == SYNDROME_LOCAL_QP_OP_ERR) {
299 mthca_dbg(dev, "local QP operation err " 299 mthca_dbg(dev, "local QP operation err "
@@ -586,13 +586,13 @@ int mthca_poll_cq(struct ib_cq *ibcq, int num_entries,
586 586
587int mthca_tavor_arm_cq(struct ib_cq *cq, enum ib_cq_notify notify) 587int mthca_tavor_arm_cq(struct ib_cq *cq, enum ib_cq_notify notify)
588{ 588{
589 u32 doorbell[2]; 589 __be32 doorbell[2];
590 590
591 doorbell[0] = cpu_to_be32((notify == IB_CQ_SOLICITED ? 591 doorbell[0] = cpu_to_be32((notify == IB_CQ_SOLICITED ?
592 MTHCA_TAVOR_CQ_DB_REQ_NOT_SOL : 592 MTHCA_TAVOR_CQ_DB_REQ_NOT_SOL :
593 MTHCA_TAVOR_CQ_DB_REQ_NOT) | 593 MTHCA_TAVOR_CQ_DB_REQ_NOT) |
594 to_mcq(cq)->cqn); 594 to_mcq(cq)->cqn);
595 doorbell[1] = 0xffffffff; 595 doorbell[1] = (__force __be32) 0xffffffff;
596 596
597 mthca_write64(doorbell, 597 mthca_write64(doorbell,
598 to_mdev(cq->device)->kar + MTHCA_CQ_DOORBELL, 598 to_mdev(cq->device)->kar + MTHCA_CQ_DOORBELL,
@@ -604,9 +604,9 @@ int mthca_tavor_arm_cq(struct ib_cq *cq, enum ib_cq_notify notify)
604int mthca_arbel_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify notify) 604int mthca_arbel_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify notify)
605{ 605{
606 struct mthca_cq *cq = to_mcq(ibcq); 606 struct mthca_cq *cq = to_mcq(ibcq);
607 u32 doorbell[2]; 607 __be32 doorbell[2];
608 u32 sn; 608 u32 sn;
609 u32 ci; 609 __be32 ci;
610 610
611 sn = cq->arm_sn & 3; 611 sn = cq->arm_sn & 3;
612 ci = cpu_to_be32(cq->cons_index); 612 ci = cpu_to_be32(cq->cons_index);
@@ -813,7 +813,6 @@ int mthca_init_cq(struct mthca_dev *dev, int nent,
813 cq_context->flags = cpu_to_be32(MTHCA_CQ_STATUS_OK | 813 cq_context->flags = cpu_to_be32(MTHCA_CQ_STATUS_OK |
814 MTHCA_CQ_STATE_DISARMED | 814 MTHCA_CQ_STATE_DISARMED |
815 MTHCA_CQ_FLAG_TR); 815 MTHCA_CQ_FLAG_TR);
816 cq_context->start = cpu_to_be64(0);
817 cq_context->logsize_usrpage = cpu_to_be32((ffs(nent) - 1) << 24); 816 cq_context->logsize_usrpage = cpu_to_be32((ffs(nent) - 1) << 24);
818 if (ctx) 817 if (ctx)
819 cq_context->logsize_usrpage |= cpu_to_be32(ctx->uar.index); 818 cq_context->logsize_usrpage |= cpu_to_be32(ctx->uar.index);
@@ -906,7 +905,7 @@ void mthca_free_cq(struct mthca_dev *dev,
906 mthca_warn(dev, "HW2SW_CQ returned status 0x%02x\n", status); 905 mthca_warn(dev, "HW2SW_CQ returned status 0x%02x\n", status);
907 906
908 if (0) { 907 if (0) {
909 u32 *ctx = mailbox->buf; 908 __be32 *ctx = mailbox->buf;
910 int j; 909 int j;
911 910
912 printk(KERN_ERR "context for CQN %x (cons index %x, next sw %d)\n", 911 printk(KERN_ERR "context for CQN %x (cons index %x, next sw %d)\n",
diff --git a/drivers/infiniband/hw/mthca/mthca_dev.h b/drivers/infiniband/hw/mthca/mthca_dev.h
index 33162a960c72..3519ca4e086c 100644
--- a/drivers/infiniband/hw/mthca/mthca_dev.h
+++ b/drivers/infiniband/hw/mthca/mthca_dev.h
@@ -333,14 +333,13 @@ extern void __buggy_use_of_MTHCA_PUT(void);
333 333
334#define MTHCA_PUT(dest, source, offset) \ 334#define MTHCA_PUT(dest, source, offset) \
335 do { \ 335 do { \
336 __typeof__(source) *__p = \ 336 void *__d = ((char *) (dest) + (offset)); \
337 (__typeof__(source) *) ((char *) (dest) + (offset)); \
338 switch (sizeof(source)) { \ 337 switch (sizeof(source)) { \
339 case 1: *__p = (source); break; \ 338 case 1: *(u8 *) __d = (source); break; \
340 case 2: *__p = cpu_to_be16(source); break; \ 339 case 2: *(__be16 *) __d = cpu_to_be16(source); break; \
341 case 4: *__p = cpu_to_be32(source); break; \ 340 case 4: *(__be32 *) __d = cpu_to_be32(source); break; \
342 case 8: *__p = cpu_to_be64(source); break; \ 341 case 8: *(__be64 *) __d = cpu_to_be64(source); break; \
343 default: __buggy_use_of_MTHCA_PUT(); \ 342 default: __buggy_use_of_MTHCA_PUT(); \
344 } \ 343 } \
345 } while (0) 344 } while (0)
346 345
@@ -435,7 +434,7 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
435int mthca_arbel_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr, 434int mthca_arbel_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
436 struct ib_recv_wr **bad_wr); 435 struct ib_recv_wr **bad_wr);
437int mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send, 436int mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send,
438 int index, int *dbd, u32 *new_wqe); 437 int index, int *dbd, __be32 *new_wqe);
439int mthca_alloc_qp(struct mthca_dev *dev, 438int mthca_alloc_qp(struct mthca_dev *dev,
440 struct mthca_pd *pd, 439 struct mthca_pd *pd,
441 struct mthca_cq *send_cq, 440 struct mthca_cq *send_cq,
diff --git a/drivers/infiniband/hw/mthca/mthca_doorbell.h b/drivers/infiniband/hw/mthca/mthca_doorbell.h
index 3be4a4a606a2..dd9a44d170c9 100644
--- a/drivers/infiniband/hw/mthca/mthca_doorbell.h
+++ b/drivers/infiniband/hw/mthca/mthca_doorbell.h
@@ -58,13 +58,13 @@ static inline void mthca_write64_raw(__be64 val, void __iomem *dest)
58 __raw_writeq((__force u64) val, dest); 58 __raw_writeq((__force u64) val, dest);
59} 59}
60 60
61static inline void mthca_write64(u32 val[2], void __iomem *dest, 61static inline void mthca_write64(__be32 val[2], void __iomem *dest,
62 spinlock_t *doorbell_lock) 62 spinlock_t *doorbell_lock)
63{ 63{
64 __raw_writeq(*(u64 *) val, dest); 64 __raw_writeq(*(u64 *) val, dest);
65} 65}
66 66
67static inline void mthca_write_db_rec(u32 val[2], u32 *db) 67static inline void mthca_write_db_rec(__be32 val[2], __be32 *db)
68{ 68{
69 *(u64 *) db = *(u64 *) val; 69 *(u64 *) db = *(u64 *) val;
70} 70}
@@ -87,18 +87,18 @@ static inline void mthca_write64_raw(__be64 val, void __iomem *dest)
87 __raw_writel(((__force u32 *) &val)[1], dest + 4); 87 __raw_writel(((__force u32 *) &val)[1], dest + 4);
88} 88}
89 89
90static inline void mthca_write64(u32 val[2], void __iomem *dest, 90static inline void mthca_write64(__be32 val[2], void __iomem *dest,
91 spinlock_t *doorbell_lock) 91 spinlock_t *doorbell_lock)
92{ 92{
93 unsigned long flags; 93 unsigned long flags;
94 94
95 spin_lock_irqsave(doorbell_lock, flags); 95 spin_lock_irqsave(doorbell_lock, flags);
96 __raw_writel(val[0], dest); 96 __raw_writel((__force u32) val[0], dest);
97 __raw_writel(val[1], dest + 4); 97 __raw_writel((__force u32) val[1], dest + 4);
98 spin_unlock_irqrestore(doorbell_lock, flags); 98 spin_unlock_irqrestore(doorbell_lock, flags);
99} 99}
100 100
101static inline void mthca_write_db_rec(u32 val[2], u32 *db) 101static inline void mthca_write_db_rec(__be32 val[2], __be32 *db)
102{ 102{
103 db[0] = val[0]; 103 db[0] = val[0];
104 wmb(); 104 wmb();
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c
index 54a809adab6d..18f0981eb0c1 100644
--- a/drivers/infiniband/hw/mthca/mthca_eq.c
+++ b/drivers/infiniband/hw/mthca/mthca_eq.c
@@ -52,18 +52,18 @@ enum {
52 * Must be packed because start is 64 bits but only aligned to 32 bits. 52 * Must be packed because start is 64 bits but only aligned to 32 bits.
53 */ 53 */
54struct mthca_eq_context { 54struct mthca_eq_context {
55 u32 flags; 55 __be32 flags;
56 u64 start; 56 __be64 start;
57 u32 logsize_usrpage; 57 __be32 logsize_usrpage;
58 u32 tavor_pd; /* reserved for Arbel */ 58 __be32 tavor_pd; /* reserved for Arbel */
59 u8 reserved1[3]; 59 u8 reserved1[3];
60 u8 intr; 60 u8 intr;
61 u32 arbel_pd; /* lost_count for Tavor */ 61 __be32 arbel_pd; /* lost_count for Tavor */
62 u32 lkey; 62 __be32 lkey;
63 u32 reserved2[2]; 63 u32 reserved2[2];
64 u32 consumer_index; 64 __be32 consumer_index;
65 u32 producer_index; 65 __be32 producer_index;
66 u32 reserved3[4]; 66 u32 reserved3[4];
67} __attribute__((packed)); 67} __attribute__((packed));
68 68
69#define MTHCA_EQ_STATUS_OK ( 0 << 28) 69#define MTHCA_EQ_STATUS_OK ( 0 << 28)
@@ -128,28 +128,28 @@ struct mthca_eqe {
128 union { 128 union {
129 u32 raw[6]; 129 u32 raw[6];
130 struct { 130 struct {
131 u32 cqn; 131 __be32 cqn;
132 } __attribute__((packed)) comp; 132 } __attribute__((packed)) comp;
133 struct { 133 struct {
134 u16 reserved1; 134 u16 reserved1;
135 u16 token; 135 __be16 token;
136 u32 reserved2; 136 u32 reserved2;
137 u8 reserved3[3]; 137 u8 reserved3[3];
138 u8 status; 138 u8 status;
139 u64 out_param; 139 __be64 out_param;
140 } __attribute__((packed)) cmd; 140 } __attribute__((packed)) cmd;
141 struct { 141 struct {
142 u32 qpn; 142 __be32 qpn;
143 } __attribute__((packed)) qp; 143 } __attribute__((packed)) qp;
144 struct { 144 struct {
145 u32 cqn; 145 __be32 cqn;
146 u32 reserved1; 146 u32 reserved1;
147 u8 reserved2[3]; 147 u8 reserved2[3];
148 u8 syndrome; 148 u8 syndrome;
149 } __attribute__((packed)) cq_err; 149 } __attribute__((packed)) cq_err;
150 struct { 150 struct {
151 u32 reserved1[2]; 151 u32 reserved1[2];
152 u32 port; 152 __be32 port;
153 } __attribute__((packed)) port_change; 153 } __attribute__((packed)) port_change;
154 } event; 154 } event;
155 u8 reserved3[3]; 155 u8 reserved3[3];
@@ -168,7 +168,7 @@ static inline u64 async_mask(struct mthca_dev *dev)
168 168
169static inline void tavor_set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u32 ci) 169static inline void tavor_set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u32 ci)
170{ 170{
171 u32 doorbell[2]; 171 __be32 doorbell[2];
172 172
173 doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_SET_CI | eq->eqn); 173 doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_SET_CI | eq->eqn);
174 doorbell[1] = cpu_to_be32(ci & (eq->nent - 1)); 174 doorbell[1] = cpu_to_be32(ci & (eq->nent - 1));
@@ -191,8 +191,8 @@ static inline void arbel_set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u
191{ 191{
192 /* See comment in tavor_set_eq_ci() above. */ 192 /* See comment in tavor_set_eq_ci() above. */
193 wmb(); 193 wmb();
194 __raw_writel(cpu_to_be32(ci), dev->eq_regs.arbel.eq_set_ci_base + 194 __raw_writel((__force u32) cpu_to_be32(ci),
195 eq->eqn * 8); 195 dev->eq_regs.arbel.eq_set_ci_base + eq->eqn * 8);
196 /* We still want ordering, just not swabbing, so add a barrier */ 196 /* We still want ordering, just not swabbing, so add a barrier */
197 mb(); 197 mb();
198} 198}
@@ -207,7 +207,7 @@ static inline void set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u32 ci)
207 207
208static inline void tavor_eq_req_not(struct mthca_dev *dev, int eqn) 208static inline void tavor_eq_req_not(struct mthca_dev *dev, int eqn)
209{ 209{
210 u32 doorbell[2]; 210 __be32 doorbell[2];
211 211
212 doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_REQ_NOT | eqn); 212 doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_REQ_NOT | eqn);
213 doorbell[1] = 0; 213 doorbell[1] = 0;
@@ -225,7 +225,7 @@ static inline void arbel_eq_req_not(struct mthca_dev *dev, u32 eqn_mask)
225static inline void disarm_cq(struct mthca_dev *dev, int eqn, int cqn) 225static inline void disarm_cq(struct mthca_dev *dev, int eqn, int cqn)
226{ 226{
227 if (!mthca_is_memfree(dev)) { 227 if (!mthca_is_memfree(dev)) {
228 u32 doorbell[2]; 228 __be32 doorbell[2];
229 229
230 doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_DISARM_CQ | eqn); 230 doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_DISARM_CQ | eqn);
231 doorbell[1] = cpu_to_be32(cqn); 231 doorbell[1] = cpu_to_be32(cqn);
diff --git a/drivers/infiniband/hw/mthca/mthca_mad.c b/drivers/infiniband/hw/mthca/mthca_mad.c
index 3c7fae6cb12f..64fa78722cf6 100644
--- a/drivers/infiniband/hw/mthca/mthca_mad.c
+++ b/drivers/infiniband/hw/mthca/mthca_mad.c
@@ -194,7 +194,7 @@ int mthca_process_mad(struct ib_device *ibdev,
194{ 194{
195 int err; 195 int err;
196 u8 status; 196 u8 status;
197 u16 slid = in_wc ? in_wc->slid : IB_LID_PERMISSIVE; 197 u16 slid = in_wc ? in_wc->slid : be16_to_cpu(IB_LID_PERMISSIVE);
198 198
199 /* Forward locally generated traps to the SM */ 199 /* Forward locally generated traps to the SM */
200 if (in_mad->mad_hdr.method == IB_MGMT_METHOD_TRAP && 200 if (in_mad->mad_hdr.method == IB_MGMT_METHOD_TRAP &&
diff --git a/drivers/infiniband/hw/mthca/mthca_mcg.c b/drivers/infiniband/hw/mthca/mthca_mcg.c
index 5be7d949dbf6..a2707605f4c8 100644
--- a/drivers/infiniband/hw/mthca/mthca_mcg.c
+++ b/drivers/infiniband/hw/mthca/mthca_mcg.c
@@ -42,10 +42,10 @@ enum {
42}; 42};
43 43
44struct mthca_mgm { 44struct mthca_mgm {
45 u32 next_gid_index; 45 __be32 next_gid_index;
46 u32 reserved[3]; 46 u32 reserved[3];
47 u8 gid[16]; 47 u8 gid[16];
48 u32 qp[MTHCA_QP_PER_MGM]; 48 __be32 qp[MTHCA_QP_PER_MGM];
49}; 49};
50 50
51static const u8 zero_gid[16]; /* automatically initialized to 0 */ 51static const u8 zero_gid[16]; /* automatically initialized to 0 */
@@ -94,10 +94,14 @@ static int find_mgm(struct mthca_dev *dev,
94 if (0) 94 if (0)
95 mthca_dbg(dev, "Hash for %04x:%04x:%04x:%04x:" 95 mthca_dbg(dev, "Hash for %04x:%04x:%04x:%04x:"
96 "%04x:%04x:%04x:%04x is %04x\n", 96 "%04x:%04x:%04x:%04x is %04x\n",
97 be16_to_cpu(((u16 *) gid)[0]), be16_to_cpu(((u16 *) gid)[1]), 97 be16_to_cpu(((__be16 *) gid)[0]),
98 be16_to_cpu(((u16 *) gid)[2]), be16_to_cpu(((u16 *) gid)[3]), 98 be16_to_cpu(((__be16 *) gid)[1]),
99 be16_to_cpu(((u16 *) gid)[4]), be16_to_cpu(((u16 *) gid)[5]), 99 be16_to_cpu(((__be16 *) gid)[2]),
100 be16_to_cpu(((u16 *) gid)[6]), be16_to_cpu(((u16 *) gid)[7]), 100 be16_to_cpu(((__be16 *) gid)[3]),
101 be16_to_cpu(((__be16 *) gid)[4]),
102 be16_to_cpu(((__be16 *) gid)[5]),
103 be16_to_cpu(((__be16 *) gid)[6]),
104 be16_to_cpu(((__be16 *) gid)[7]),
101 *hash); 105 *hash);
102 106
103 *index = *hash; 107 *index = *hash;
@@ -258,14 +262,14 @@ int mthca_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
258 if (index == -1) { 262 if (index == -1) {
259 mthca_err(dev, "MGID %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x " 263 mthca_err(dev, "MGID %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x "
260 "not found\n", 264 "not found\n",
261 be16_to_cpu(((u16 *) gid->raw)[0]), 265 be16_to_cpu(((__be16 *) gid->raw)[0]),
262 be16_to_cpu(((u16 *) gid->raw)[1]), 266 be16_to_cpu(((__be16 *) gid->raw)[1]),
263 be16_to_cpu(((u16 *) gid->raw)[2]), 267 be16_to_cpu(((__be16 *) gid->raw)[2]),
264 be16_to_cpu(((u16 *) gid->raw)[3]), 268 be16_to_cpu(((__be16 *) gid->raw)[3]),
265 be16_to_cpu(((u16 *) gid->raw)[4]), 269 be16_to_cpu(((__be16 *) gid->raw)[4]),
266 be16_to_cpu(((u16 *) gid->raw)[5]), 270 be16_to_cpu(((__be16 *) gid->raw)[5]),
267 be16_to_cpu(((u16 *) gid->raw)[6]), 271 be16_to_cpu(((__be16 *) gid->raw)[6]),
268 be16_to_cpu(((u16 *) gid->raw)[7])); 272 be16_to_cpu(((__be16 *) gid->raw)[7]));
269 err = -EINVAL; 273 err = -EINVAL;
270 goto out; 274 goto out;
271 } 275 }
diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index 9efb0322c761..fba0a53ba6ea 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -482,7 +482,7 @@ void mthca_cleanup_user_db_tab(struct mthca_dev *dev, struct mthca_uar *uar,
482 } 482 }
483} 483}
484 484
485int mthca_alloc_db(struct mthca_dev *dev, int type, u32 qn, u32 **db) 485int mthca_alloc_db(struct mthca_dev *dev, int type, u32 qn, __be32 **db)
486{ 486{
487 int group; 487 int group;
488 int start, end, dir; 488 int start, end, dir;
@@ -565,7 +565,7 @@ found:
565 565
566 page->db_rec[j] = cpu_to_be64((qn << 8) | (type << 5)); 566 page->db_rec[j] = cpu_to_be64((qn << 8) | (type << 5));
567 567
568 *db = (u32 *) &page->db_rec[j]; 568 *db = (__be32 *) &page->db_rec[j];
569 569
570out: 570out:
571 up(&dev->db_tab->mutex); 571 up(&dev->db_tab->mutex);
diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.h b/drivers/infiniband/hw/mthca/mthca_memfree.h
index 59c2f555b13b..bafa51544aa3 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.h
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.h
@@ -138,7 +138,7 @@ enum {
138 138
139struct mthca_db_page { 139struct mthca_db_page {
140 DECLARE_BITMAP(used, MTHCA_DB_REC_PER_PAGE); 140 DECLARE_BITMAP(used, MTHCA_DB_REC_PER_PAGE);
141 u64 *db_rec; 141 __be64 *db_rec;
142 dma_addr_t mapping; 142 dma_addr_t mapping;
143}; 143};
144 144
@@ -173,7 +173,7 @@ void mthca_cleanup_user_db_tab(struct mthca_dev *dev, struct mthca_uar *uar,
173 173
174int mthca_init_db_tab(struct mthca_dev *dev); 174int mthca_init_db_tab(struct mthca_dev *dev);
175void mthca_cleanup_db_tab(struct mthca_dev *dev); 175void mthca_cleanup_db_tab(struct mthca_dev *dev);
176int mthca_alloc_db(struct mthca_dev *dev, int type, u32 qn, u32 **db); 176int mthca_alloc_db(struct mthca_dev *dev, int type, u32 qn, __be32 **db);
177void mthca_free_db(struct mthca_dev *dev, int type, int db_index); 177void mthca_free_db(struct mthca_dev *dev, int type, int db_index);
178 178
179#endif /* MTHCA_MEMFREE_H */ 179#endif /* MTHCA_MEMFREE_H */
diff --git a/drivers/infiniband/hw/mthca/mthca_mr.c b/drivers/infiniband/hw/mthca/mthca_mr.c
index 15d9f8f290a0..0965e66061b7 100644
--- a/drivers/infiniband/hw/mthca/mthca_mr.c
+++ b/drivers/infiniband/hw/mthca/mthca_mr.c
@@ -51,18 +51,18 @@ struct mthca_mtt {
51 * Must be packed because mtt_seg is 64 bits but only aligned to 32 bits. 51 * Must be packed because mtt_seg is 64 bits but only aligned to 32 bits.
52 */ 52 */
53struct mthca_mpt_entry { 53struct mthca_mpt_entry {
54 u32 flags; 54 __be32 flags;
55 u32 page_size; 55 __be32 page_size;
56 u32 key; 56 __be32 key;
57 u32 pd; 57 __be32 pd;
58 u64 start; 58 __be64 start;
59 u64 length; 59 __be64 length;
60 u32 lkey; 60 __be32 lkey;
61 u32 window_count; 61 __be32 window_count;
62 u32 window_count_limit; 62 __be32 window_count_limit;
63 u64 mtt_seg; 63 __be64 mtt_seg;
64 u32 mtt_sz; /* Arbel only */ 64 __be32 mtt_sz; /* Arbel only */
65 u32 reserved[2]; 65 u32 reserved[2];
66} __attribute__((packed)); 66} __attribute__((packed));
67 67
68#define MTHCA_MPT_FLAG_SW_OWNS (0xfUL << 28) 68#define MTHCA_MPT_FLAG_SW_OWNS (0xfUL << 28)
@@ -248,7 +248,7 @@ int mthca_write_mtt(struct mthca_dev *dev, struct mthca_mtt *mtt,
248 int start_index, u64 *buffer_list, int list_len) 248 int start_index, u64 *buffer_list, int list_len)
249{ 249{
250 struct mthca_mailbox *mailbox; 250 struct mthca_mailbox *mailbox;
251 u64 *mtt_entry; 251 __be64 *mtt_entry;
252 int err = 0; 252 int err = 0;
253 u8 status; 253 u8 status;
254 int i; 254 int i;
@@ -390,7 +390,7 @@ int mthca_mr_alloc(struct mthca_dev *dev, u32 pd, int buffer_size_shift,
390 for (i = 0; i < sizeof (struct mthca_mpt_entry) / 4; ++i) { 390 for (i = 0; i < sizeof (struct mthca_mpt_entry) / 4; ++i) {
391 if (i % 4 == 0) 391 if (i % 4 == 0)
392 printk("[%02x] ", i * 4); 392 printk("[%02x] ", i * 4);
393 printk(" %08x", be32_to_cpu(((u32 *) mpt_entry)[i])); 393 printk(" %08x", be32_to_cpu(((__be32 *) mpt_entry)[i]));
394 if ((i + 1) % 4 == 0) 394 if ((i + 1) % 4 == 0)
395 printk("\n"); 395 printk("\n");
396 } 396 }
@@ -563,7 +563,7 @@ int mthca_fmr_alloc(struct mthca_dev *dev, u32 pd,
563 for (i = 0; i < sizeof (struct mthca_mpt_entry) / 4; ++i) { 563 for (i = 0; i < sizeof (struct mthca_mpt_entry) / 4; ++i) {
564 if (i % 4 == 0) 564 if (i % 4 == 0)
565 printk("[%02x] ", i * 4); 565 printk("[%02x] ", i * 4);
566 printk(" %08x", be32_to_cpu(((u32 *) mpt_entry)[i])); 566 printk(" %08x", be32_to_cpu(((__be32 *) mpt_entry)[i]));
567 if ((i + 1) % 4 == 0) 567 if ((i + 1) % 4 == 0)
568 printk("\n"); 568 printk("\n");
569 } 569 }
@@ -670,7 +670,7 @@ int mthca_tavor_map_phys_fmr(struct ib_fmr *ibfmr, u64 *page_list,
670 mpt_entry.length = cpu_to_be64(list_len * (1ull << fmr->attr.page_size)); 670 mpt_entry.length = cpu_to_be64(list_len * (1ull << fmr->attr.page_size));
671 mpt_entry.start = cpu_to_be64(iova); 671 mpt_entry.start = cpu_to_be64(iova);
672 672
673 writel(mpt_entry.lkey, &fmr->mem.tavor.mpt->key); 673 __raw_writel((__force u32) mpt_entry.lkey, &fmr->mem.tavor.mpt->key);
674 memcpy_toio(&fmr->mem.tavor.mpt->start, &mpt_entry.start, 674 memcpy_toio(&fmr->mem.tavor.mpt->start, &mpt_entry.start,
675 offsetof(struct mthca_mpt_entry, window_count) - 675 offsetof(struct mthca_mpt_entry, window_count) -
676 offsetof(struct mthca_mpt_entry, start)); 676 offsetof(struct mthca_mpt_entry, start));
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
index 34e6b8685ba3..e2db5e001869 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -81,10 +81,10 @@ static int mthca_query_device(struct ib_device *ibdev,
81 } 81 }
82 82
83 props->device_cap_flags = mdev->device_cap_flags; 83 props->device_cap_flags = mdev->device_cap_flags;
84 props->vendor_id = be32_to_cpup((u32 *) (out_mad->data + 36)) & 84 props->vendor_id = be32_to_cpup((__be32 *) (out_mad->data + 36)) &
85 0xffffff; 85 0xffffff;
86 props->vendor_part_id = be16_to_cpup((u16 *) (out_mad->data + 30)); 86 props->vendor_part_id = be16_to_cpup((__be16 *) (out_mad->data + 30));
87 props->hw_ver = be16_to_cpup((u16 *) (out_mad->data + 32)); 87 props->hw_ver = be16_to_cpup((__be16 *) (out_mad->data + 32));
88 memcpy(&props->sys_image_guid, out_mad->data + 4, 8); 88 memcpy(&props->sys_image_guid, out_mad->data + 4, 8);
89 memcpy(&props->node_guid, out_mad->data + 12, 8); 89 memcpy(&props->node_guid, out_mad->data + 12, 8);
90 90
@@ -138,16 +138,16 @@ static int mthca_query_port(struct ib_device *ibdev,
138 goto out; 138 goto out;
139 } 139 }
140 140
141 props->lid = be16_to_cpup((u16 *) (out_mad->data + 16)); 141 props->lid = be16_to_cpup((__be16 *) (out_mad->data + 16));
142 props->lmc = out_mad->data[34] & 0x7; 142 props->lmc = out_mad->data[34] & 0x7;
143 props->sm_lid = be16_to_cpup((u16 *) (out_mad->data + 18)); 143 props->sm_lid = be16_to_cpup((__be16 *) (out_mad->data + 18));
144 props->sm_sl = out_mad->data[36] & 0xf; 144 props->sm_sl = out_mad->data[36] & 0xf;
145 props->state = out_mad->data[32] & 0xf; 145 props->state = out_mad->data[32] & 0xf;
146 props->phys_state = out_mad->data[33] >> 4; 146 props->phys_state = out_mad->data[33] >> 4;
147 props->port_cap_flags = be32_to_cpup((u32 *) (out_mad->data + 20)); 147 props->port_cap_flags = be32_to_cpup((__be32 *) (out_mad->data + 20));
148 props->gid_tbl_len = to_mdev(ibdev)->limits.gid_table_len; 148 props->gid_tbl_len = to_mdev(ibdev)->limits.gid_table_len;
149 props->pkey_tbl_len = to_mdev(ibdev)->limits.pkey_table_len; 149 props->pkey_tbl_len = to_mdev(ibdev)->limits.pkey_table_len;
150 props->qkey_viol_cntr = be16_to_cpup((u16 *) (out_mad->data + 48)); 150 props->qkey_viol_cntr = be16_to_cpup((__be16 *) (out_mad->data + 48));
151 props->active_width = out_mad->data[31] & 0xf; 151 props->active_width = out_mad->data[31] & 0xf;
152 props->active_speed = out_mad->data[35] >> 4; 152 props->active_speed = out_mad->data[35] >> 4;
153 153
@@ -223,7 +223,7 @@ static int mthca_query_pkey(struct ib_device *ibdev,
223 goto out; 223 goto out;
224 } 224 }
225 225
226 *pkey = be16_to_cpu(((u16 *) out_mad->data)[index % 32]); 226 *pkey = be16_to_cpu(((__be16 *) out_mad->data)[index % 32]);
227 227
228 out: 228 out:
229 kfree(in_mad); 229 kfree(in_mad);
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.h b/drivers/infiniband/hw/mthca/mthca_provider.h
index 727aad8d4f33..624651edf577 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.h
+++ b/drivers/infiniband/hw/mthca/mthca_provider.h
@@ -182,9 +182,9 @@ struct mthca_cq {
182 182
183 /* Next fields are Arbel only */ 183 /* Next fields are Arbel only */
184 int set_ci_db_index; 184 int set_ci_db_index;
185 u32 *set_ci_db; 185 __be32 *set_ci_db;
186 int arm_db_index; 186 int arm_db_index;
187 u32 *arm_db; 187 __be32 *arm_db;
188 int arm_sn; 188 int arm_sn;
189 189
190 union { 190 union {
@@ -207,7 +207,7 @@ struct mthca_wq {
207 int wqe_shift; 207 int wqe_shift;
208 208
209 int db_index; /* Arbel only */ 209 int db_index; /* Arbel only */
210 u32 *db; 210 __be32 *db;
211}; 211};
212 212
213struct mthca_qp { 213struct mthca_qp {
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c
index 2f429815d195..8fbb4f1f5398 100644
--- a/drivers/infiniband/hw/mthca/mthca_qp.c
+++ b/drivers/infiniband/hw/mthca/mthca_qp.c
@@ -97,62 +97,62 @@ enum {
97}; 97};
98 98
99struct mthca_qp_path { 99struct mthca_qp_path {
100 u32 port_pkey; 100 __be32 port_pkey;
101 u8 rnr_retry; 101 u8 rnr_retry;
102 u8 g_mylmc; 102 u8 g_mylmc;
103 u16 rlid; 103 __be16 rlid;
104 u8 ackto; 104 u8 ackto;
105 u8 mgid_index; 105 u8 mgid_index;
106 u8 static_rate; 106 u8 static_rate;
107 u8 hop_limit; 107 u8 hop_limit;
108 u32 sl_tclass_flowlabel; 108 __be32 sl_tclass_flowlabel;
109 u8 rgid[16]; 109 u8 rgid[16];
110} __attribute__((packed)); 110} __attribute__((packed));
111 111
112struct mthca_qp_context { 112struct mthca_qp_context {
113 u32 flags; 113 __be32 flags;
114 u32 tavor_sched_queue; /* Reserved on Arbel */ 114 __be32 tavor_sched_queue; /* Reserved on Arbel */
115 u8 mtu_msgmax; 115 u8 mtu_msgmax;
116 u8 rq_size_stride; /* Reserved on Tavor */ 116 u8 rq_size_stride; /* Reserved on Tavor */
117 u8 sq_size_stride; /* Reserved on Tavor */ 117 u8 sq_size_stride; /* Reserved on Tavor */
118 u8 rlkey_arbel_sched_queue; /* Reserved on Tavor */ 118 u8 rlkey_arbel_sched_queue; /* Reserved on Tavor */
119 u32 usr_page; 119 __be32 usr_page;
120 u32 local_qpn; 120 __be32 local_qpn;
121 u32 remote_qpn; 121 __be32 remote_qpn;
122 u32 reserved1[2]; 122 u32 reserved1[2];
123 struct mthca_qp_path pri_path; 123 struct mthca_qp_path pri_path;
124 struct mthca_qp_path alt_path; 124 struct mthca_qp_path alt_path;
125 u32 rdd; 125 __be32 rdd;
126 u32 pd; 126 __be32 pd;
127 u32 wqe_base; 127 __be32 wqe_base;
128 u32 wqe_lkey; 128 __be32 wqe_lkey;
129 u32 params1; 129 __be32 params1;
130 u32 reserved2; 130 __be32 reserved2;
131 u32 next_send_psn; 131 __be32 next_send_psn;
132 u32 cqn_snd; 132 __be32 cqn_snd;
133 u32 snd_wqe_base_l; /* Next send WQE on Tavor */ 133 __be32 snd_wqe_base_l; /* Next send WQE on Tavor */
134 u32 snd_db_index; /* (debugging only entries) */ 134 __be32 snd_db_index; /* (debugging only entries) */
135 u32 last_acked_psn; 135 __be32 last_acked_psn;
136 u32 ssn; 136 __be32 ssn;
137 u32 params2; 137 __be32 params2;
138 u32 rnr_nextrecvpsn; 138 __be32 rnr_nextrecvpsn;
139 u32 ra_buff_indx; 139 __be32 ra_buff_indx;
140 u32 cqn_rcv; 140 __be32 cqn_rcv;
141 u32 rcv_wqe_base_l; /* Next recv WQE on Tavor */ 141 __be32 rcv_wqe_base_l; /* Next recv WQE on Tavor */
142 u32 rcv_db_index; /* (debugging only entries) */ 142 __be32 rcv_db_index; /* (debugging only entries) */
143 u32 qkey; 143 __be32 qkey;
144 u32 srqn; 144 __be32 srqn;
145 u32 rmsn; 145 __be32 rmsn;
146 u16 rq_wqe_counter; /* reserved on Tavor */ 146 __be16 rq_wqe_counter; /* reserved on Tavor */
147 u16 sq_wqe_counter; /* reserved on Tavor */ 147 __be16 sq_wqe_counter; /* reserved on Tavor */
148 u32 reserved3[18]; 148 u32 reserved3[18];
149} __attribute__((packed)); 149} __attribute__((packed));
150 150
151struct mthca_qp_param { 151struct mthca_qp_param {
152 u32 opt_param_mask; 152 __be32 opt_param_mask;
153 u32 reserved1; 153 u32 reserved1;
154 struct mthca_qp_context context; 154 struct mthca_qp_context context;
155 u32 reserved2[62]; 155 u32 reserved2[62];
156} __attribute__((packed)); 156} __attribute__((packed));
157 157
158enum { 158enum {
@@ -191,62 +191,62 @@ enum {
191}; 191};
192 192
193struct mthca_next_seg { 193struct mthca_next_seg {
194 u32 nda_op; /* [31:6] next WQE [4:0] next opcode */ 194 __be32 nda_op; /* [31:6] next WQE [4:0] next opcode */
195 u32 ee_nds; /* [31:8] next EE [7] DBD [6] F [5:0] next WQE size */ 195 __be32 ee_nds; /* [31:8] next EE [7] DBD [6] F [5:0] next WQE size */
196 u32 flags; /* [3] CQ [2] Event [1] Solicit */ 196 __be32 flags; /* [3] CQ [2] Event [1] Solicit */
197 u32 imm; /* immediate data */ 197 __be32 imm; /* immediate data */
198}; 198};
199 199
200struct mthca_tavor_ud_seg { 200struct mthca_tavor_ud_seg {
201 u32 reserved1; 201 u32 reserved1;
202 u32 lkey; 202 __be32 lkey;
203 u64 av_addr; 203 __be64 av_addr;
204 u32 reserved2[4]; 204 u32 reserved2[4];
205 u32 dqpn; 205 __be32 dqpn;
206 u32 qkey; 206 __be32 qkey;
207 u32 reserved3[2]; 207 u32 reserved3[2];
208}; 208};
209 209
210struct mthca_arbel_ud_seg { 210struct mthca_arbel_ud_seg {
211 u32 av[8]; 211 __be32 av[8];
212 u32 dqpn; 212 __be32 dqpn;
213 u32 qkey; 213 __be32 qkey;
214 u32 reserved[2]; 214 u32 reserved[2];
215}; 215};
216 216
217struct mthca_bind_seg { 217struct mthca_bind_seg {
218 u32 flags; /* [31] Atomic [30] rem write [29] rem read */ 218 __be32 flags; /* [31] Atomic [30] rem write [29] rem read */
219 u32 reserved; 219 u32 reserved;
220 u32 new_rkey; 220 __be32 new_rkey;
221 u32 lkey; 221 __be32 lkey;
222 u64 addr; 222 __be64 addr;
223 u64 length; 223 __be64 length;
224}; 224};
225 225
226struct mthca_raddr_seg { 226struct mthca_raddr_seg {
227 u64 raddr; 227 __be64 raddr;
228 u32 rkey; 228 __be32 rkey;
229 u32 reserved; 229 u32 reserved;
230}; 230};
231 231
232struct mthca_atomic_seg { 232struct mthca_atomic_seg {
233 u64 swap_add; 233 __be64 swap_add;
234 u64 compare; 234 __be64 compare;
235}; 235};
236 236
237struct mthca_data_seg { 237struct mthca_data_seg {
238 u32 byte_count; 238 __be32 byte_count;
239 u32 lkey; 239 __be32 lkey;
240 u64 addr; 240 __be64 addr;
241}; 241};
242 242
243struct mthca_mlx_seg { 243struct mthca_mlx_seg {
244 u32 nda_op; 244 __be32 nda_op;
245 u32 nds; 245 __be32 nds;
246 u32 flags; /* [17] VL15 [16] SLR [14:12] static rate 246 __be32 flags; /* [17] VL15 [16] SLR [14:12] static rate
247 [11:8] SL [3] C [2] E */ 247 [11:8] SL [3] C [2] E */
248 u16 rlid; 248 __be16 rlid;
249 u16 vcrc; 249 __be16 vcrc;
250}; 250};
251 251
252static const u8 mthca_opcode[] = { 252static const u8 mthca_opcode[] = {
@@ -1459,6 +1459,7 @@ static int build_mlx_header(struct mthca_dev *dev, struct mthca_sqp *sqp,
1459{ 1459{
1460 int header_size; 1460 int header_size;
1461 int err; 1461 int err;
1462 u16 pkey;
1462 1463
1463 ib_ud_header_init(256, /* assume a MAD */ 1464 ib_ud_header_init(256, /* assume a MAD */
1464 sqp->ud_header.grh_present, 1465 sqp->ud_header.grh_present,
@@ -1469,8 +1470,8 @@ static int build_mlx_header(struct mthca_dev *dev, struct mthca_sqp *sqp,
1469 return err; 1470 return err;
1470 mlx->flags &= ~cpu_to_be32(MTHCA_NEXT_SOLICIT | 1); 1471 mlx->flags &= ~cpu_to_be32(MTHCA_NEXT_SOLICIT | 1);
1471 mlx->flags |= cpu_to_be32((!sqp->qp.ibqp.qp_num ? MTHCA_MLX_VL15 : 0) | 1472 mlx->flags |= cpu_to_be32((!sqp->qp.ibqp.qp_num ? MTHCA_MLX_VL15 : 0) |
1472 (sqp->ud_header.lrh.destination_lid == 0xffff ? 1473 (sqp->ud_header.lrh.destination_lid ==
1473 MTHCA_MLX_SLR : 0) | 1474 IB_LID_PERMISSIVE ? MTHCA_MLX_SLR : 0) |
1474 (sqp->ud_header.lrh.service_level << 8)); 1475 (sqp->ud_header.lrh.service_level << 8));
1475 mlx->rlid = sqp->ud_header.lrh.destination_lid; 1476 mlx->rlid = sqp->ud_header.lrh.destination_lid;
1476 mlx->vcrc = 0; 1477 mlx->vcrc = 0;
@@ -1490,18 +1491,16 @@ static int build_mlx_header(struct mthca_dev *dev, struct mthca_sqp *sqp,
1490 } 1491 }
1491 1492
1492 sqp->ud_header.lrh.virtual_lane = !sqp->qp.ibqp.qp_num ? 15 : 0; 1493 sqp->ud_header.lrh.virtual_lane = !sqp->qp.ibqp.qp_num ? 15 : 0;
1493 if (sqp->ud_header.lrh.destination_lid == 0xffff) 1494 if (sqp->ud_header.lrh.destination_lid == IB_LID_PERMISSIVE)
1494 sqp->ud_header.lrh.source_lid = 0xffff; 1495 sqp->ud_header.lrh.source_lid = IB_LID_PERMISSIVE;
1495 sqp->ud_header.bth.solicited_event = !!(wr->send_flags & IB_SEND_SOLICITED); 1496 sqp->ud_header.bth.solicited_event = !!(wr->send_flags & IB_SEND_SOLICITED);
1496 if (!sqp->qp.ibqp.qp_num) 1497 if (!sqp->qp.ibqp.qp_num)
1497 ib_get_cached_pkey(&dev->ib_dev, sqp->port, 1498 ib_get_cached_pkey(&dev->ib_dev, sqp->port,
1498 sqp->pkey_index, 1499 sqp->pkey_index, &pkey);
1499 &sqp->ud_header.bth.pkey);
1500 else 1500 else
1501 ib_get_cached_pkey(&dev->ib_dev, sqp->port, 1501 ib_get_cached_pkey(&dev->ib_dev, sqp->port,
1502 wr->wr.ud.pkey_index, 1502 wr->wr.ud.pkey_index, &pkey);
1503 &sqp->ud_header.bth.pkey); 1503 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
1504 cpu_to_be16s(&sqp->ud_header.bth.pkey);
1505 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->wr.ud.remote_qpn); 1504 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->wr.ud.remote_qpn);
1506 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1)); 1505 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
1507 sqp->ud_header.deth.qkey = cpu_to_be32(wr->wr.ud.remote_qkey & 0x80000000 ? 1506 sqp->ud_header.deth.qkey = cpu_to_be32(wr->wr.ud.remote_qkey & 0x80000000 ?
@@ -1744,7 +1743,7 @@ int mthca_tavor_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
1744 1743
1745out: 1744out:
1746 if (likely(nreq)) { 1745 if (likely(nreq)) {
1747 u32 doorbell[2]; 1746 __be32 doorbell[2];
1748 1747
1749 doorbell[0] = cpu_to_be32(((qp->sq.next_ind << qp->sq.wqe_shift) + 1748 doorbell[0] = cpu_to_be32(((qp->sq.next_ind << qp->sq.wqe_shift) +
1750 qp->send_wqe_offset) | f0 | op0); 1749 qp->send_wqe_offset) | f0 | op0);
@@ -1845,7 +1844,7 @@ int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
1845 1844
1846out: 1845out:
1847 if (likely(nreq)) { 1846 if (likely(nreq)) {
1848 u32 doorbell[2]; 1847 __be32 doorbell[2];
1849 1848
1850 doorbell[0] = cpu_to_be32((qp->rq.next_ind << qp->rq.wqe_shift) | size0); 1849 doorbell[0] = cpu_to_be32((qp->rq.next_ind << qp->rq.wqe_shift) | size0);
1851 doorbell[1] = cpu_to_be32((qp->qpn << 8) | nreq); 1850 doorbell[1] = cpu_to_be32((qp->qpn << 8) | nreq);
@@ -2066,7 +2065,7 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
2066 2065
2067out: 2066out:
2068 if (likely(nreq)) { 2067 if (likely(nreq)) {
2069 u32 doorbell[2]; 2068 __be32 doorbell[2];
2070 2069
2071 doorbell[0] = cpu_to_be32((nreq << 24) | 2070 doorbell[0] = cpu_to_be32((nreq << 24) |
2072 ((qp->sq.head & 0xffff) << 8) | 2071 ((qp->sq.head & 0xffff) << 8) |
@@ -2176,7 +2175,7 @@ out:
2176} 2175}
2177 2176
2178int mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send, 2177int mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send,
2179 int index, int *dbd, u32 *new_wqe) 2178 int index, int *dbd, __be32 *new_wqe)
2180{ 2179{
2181 struct mthca_next_seg *next; 2180 struct mthca_next_seg *next;
2182 2181
diff --git a/drivers/infiniband/include/ib_cm.h b/drivers/infiniband/include/ib_cm.h
index da650115e79a..8202ad2e6435 100644
--- a/drivers/infiniband/include/ib_cm.h
+++ b/drivers/infiniband/include/ib_cm.h
@@ -115,7 +115,7 @@ struct ib_cm_req_event_param {
115 struct ib_sa_path_rec *primary_path; 115 struct ib_sa_path_rec *primary_path;
116 struct ib_sa_path_rec *alternate_path; 116 struct ib_sa_path_rec *alternate_path;
117 117
118 u64 remote_ca_guid; 118 __be64 remote_ca_guid;
119 u32 remote_qkey; 119 u32 remote_qkey;
120 u32 remote_qpn; 120 u32 remote_qpn;
121 enum ib_qp_type qp_type; 121 enum ib_qp_type qp_type;
@@ -132,7 +132,7 @@ struct ib_cm_req_event_param {
132}; 132};
133 133
134struct ib_cm_rep_event_param { 134struct ib_cm_rep_event_param {
135 u64 remote_ca_guid; 135 __be64 remote_ca_guid;
136 u32 remote_qkey; 136 u32 remote_qkey;
137 u32 remote_qpn; 137 u32 remote_qpn;
138 u32 starting_psn; 138 u32 starting_psn;
@@ -146,39 +146,39 @@ struct ib_cm_rep_event_param {
146}; 146};
147 147
148enum ib_cm_rej_reason { 148enum ib_cm_rej_reason {
149 IB_CM_REJ_NO_QP = __constant_htons(1), 149 IB_CM_REJ_NO_QP = 1,
150 IB_CM_REJ_NO_EEC = __constant_htons(2), 150 IB_CM_REJ_NO_EEC = 2,
151 IB_CM_REJ_NO_RESOURCES = __constant_htons(3), 151 IB_CM_REJ_NO_RESOURCES = 3,
152 IB_CM_REJ_TIMEOUT = __constant_htons(4), 152 IB_CM_REJ_TIMEOUT = 4,
153 IB_CM_REJ_UNSUPPORTED = __constant_htons(5), 153 IB_CM_REJ_UNSUPPORTED = 5,
154 IB_CM_REJ_INVALID_COMM_ID = __constant_htons(6), 154 IB_CM_REJ_INVALID_COMM_ID = 6,
155 IB_CM_REJ_INVALID_COMM_INSTANCE = __constant_htons(7), 155 IB_CM_REJ_INVALID_COMM_INSTANCE = 7,
156 IB_CM_REJ_INVALID_SERVICE_ID = __constant_htons(8), 156 IB_CM_REJ_INVALID_SERVICE_ID = 8,
157 IB_CM_REJ_INVALID_TRANSPORT_TYPE = __constant_htons(9), 157 IB_CM_REJ_INVALID_TRANSPORT_TYPE = 9,
158 IB_CM_REJ_STALE_CONN = __constant_htons(10), 158 IB_CM_REJ_STALE_CONN = 10,
159 IB_CM_REJ_RDC_NOT_EXIST = __constant_htons(11), 159 IB_CM_REJ_RDC_NOT_EXIST = 11,
160 IB_CM_REJ_INVALID_GID = __constant_htons(12), 160 IB_CM_REJ_INVALID_GID = 12,
161 IB_CM_REJ_INVALID_LID = __constant_htons(13), 161 IB_CM_REJ_INVALID_LID = 13,
162 IB_CM_REJ_INVALID_SL = __constant_htons(14), 162 IB_CM_REJ_INVALID_SL = 14,
163 IB_CM_REJ_INVALID_TRAFFIC_CLASS = __constant_htons(15), 163 IB_CM_REJ_INVALID_TRAFFIC_CLASS = 15,
164 IB_CM_REJ_INVALID_HOP_LIMIT = __constant_htons(16), 164 IB_CM_REJ_INVALID_HOP_LIMIT = 16,
165 IB_CM_REJ_INVALID_PACKET_RATE = __constant_htons(17), 165 IB_CM_REJ_INVALID_PACKET_RATE = 17,
166 IB_CM_REJ_INVALID_ALT_GID = __constant_htons(18), 166 IB_CM_REJ_INVALID_ALT_GID = 18,
167 IB_CM_REJ_INVALID_ALT_LID = __constant_htons(19), 167 IB_CM_REJ_INVALID_ALT_LID = 19,
168 IB_CM_REJ_INVALID_ALT_SL = __constant_htons(20), 168 IB_CM_REJ_INVALID_ALT_SL = 20,
169 IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS = __constant_htons(21), 169 IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS = 21,
170 IB_CM_REJ_INVALID_ALT_HOP_LIMIT = __constant_htons(22), 170 IB_CM_REJ_INVALID_ALT_HOP_LIMIT = 22,
171 IB_CM_REJ_INVALID_ALT_PACKET_RATE = __constant_htons(23), 171 IB_CM_REJ_INVALID_ALT_PACKET_RATE = 23,
172 IB_CM_REJ_PORT_CM_REDIRECT = __constant_htons(24), 172 IB_CM_REJ_PORT_CM_REDIRECT = 24,
173 IB_CM_REJ_PORT_REDIRECT = __constant_htons(25), 173 IB_CM_REJ_PORT_REDIRECT = 25,
174 IB_CM_REJ_INVALID_MTU = __constant_htons(26), 174 IB_CM_REJ_INVALID_MTU = 26,
175 IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES = __constant_htons(27), 175 IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES = 27,
176 IB_CM_REJ_CONSUMER_DEFINED = __constant_htons(28), 176 IB_CM_REJ_CONSUMER_DEFINED = 28,
177 IB_CM_REJ_INVALID_RNR_RETRY = __constant_htons(29), 177 IB_CM_REJ_INVALID_RNR_RETRY = 29,
178 IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID = __constant_htons(30), 178 IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID = 30,
179 IB_CM_REJ_INVALID_CLASS_VERSION = __constant_htons(31), 179 IB_CM_REJ_INVALID_CLASS_VERSION = 31,
180 IB_CM_REJ_INVALID_FLOW_LABEL = __constant_htons(32), 180 IB_CM_REJ_INVALID_FLOW_LABEL = 32,
181 IB_CM_REJ_INVALID_ALT_FLOW_LABEL = __constant_htons(33) 181 IB_CM_REJ_INVALID_ALT_FLOW_LABEL = 33
182}; 182};
183 183
184struct ib_cm_rej_event_param { 184struct ib_cm_rej_event_param {
@@ -222,8 +222,7 @@ struct ib_cm_sidr_req_event_param {
222 struct ib_cm_id *listen_id; 222 struct ib_cm_id *listen_id;
223 struct ib_device *device; 223 struct ib_device *device;
224 u8 port; 224 u8 port;
225 225 u16 pkey;
226 u16 pkey;
227}; 226};
228 227
229enum ib_cm_sidr_status { 228enum ib_cm_sidr_status {
@@ -285,12 +284,12 @@ typedef int (*ib_cm_handler)(struct ib_cm_id *cm_id,
285struct ib_cm_id { 284struct ib_cm_id {
286 ib_cm_handler cm_handler; 285 ib_cm_handler cm_handler;
287 void *context; 286 void *context;
288 u64 service_id; 287 __be64 service_id;
289 u64 service_mask; 288 __be64 service_mask;
290 enum ib_cm_state state; /* internal CM/debug use */ 289 enum ib_cm_state state; /* internal CM/debug use */
291 enum ib_cm_lap_state lap_state; /* internal CM/debug use */ 290 enum ib_cm_lap_state lap_state; /* internal CM/debug use */
292 u32 local_id; 291 __be32 local_id;
293 u32 remote_id; 292 __be32 remote_id;
294}; 293};
295 294
296/** 295/**
@@ -330,13 +329,13 @@ void ib_destroy_cm_id(struct ib_cm_id *cm_id);
330 * IB_CM_ASSIGN_SERVICE_ID. 329 * IB_CM_ASSIGN_SERVICE_ID.
331 */ 330 */
332int ib_cm_listen(struct ib_cm_id *cm_id, 331int ib_cm_listen(struct ib_cm_id *cm_id,
333 u64 service_id, 332 __be64 service_id,
334 u64 service_mask); 333 __be64 service_mask);
335 334
336struct ib_cm_req_param { 335struct ib_cm_req_param {
337 struct ib_sa_path_rec *primary_path; 336 struct ib_sa_path_rec *primary_path;
338 struct ib_sa_path_rec *alternate_path; 337 struct ib_sa_path_rec *alternate_path;
339 u64 service_id; 338 __be64 service_id;
340 u32 qp_num; 339 u32 qp_num;
341 enum ib_qp_type qp_type; 340 enum ib_qp_type qp_type;
342 u32 starting_psn; 341 u32 starting_psn;
@@ -528,7 +527,7 @@ int ib_send_cm_apr(struct ib_cm_id *cm_id,
528 527
529struct ib_cm_sidr_req_param { 528struct ib_cm_sidr_req_param {
530 struct ib_sa_path_rec *path; 529 struct ib_sa_path_rec *path;
531 u64 service_id; 530 __be64 service_id;
532 int timeout_ms; 531 int timeout_ms;
533 const void *private_data; 532 const void *private_data;
534 u8 private_data_len; 533 u8 private_data_len;
diff --git a/drivers/infiniband/include/ib_mad.h b/drivers/infiniband/include/ib_mad.h
index 491b6f25b3b8..63237805d6af 100644
--- a/drivers/infiniband/include/ib_mad.h
+++ b/drivers/infiniband/include/ib_mad.h
@@ -111,12 +111,12 @@ struct ib_mad_hdr {
111 u8 mgmt_class; 111 u8 mgmt_class;
112 u8 class_version; 112 u8 class_version;
113 u8 method; 113 u8 method;
114 u16 status; 114 __be16 status;
115 u16 class_specific; 115 __be16 class_specific;
116 u64 tid; 116 __be64 tid;
117 u16 attr_id; 117 __be16 attr_id;
118 u16 resv; 118 __be16 resv;
119 u32 attr_mod; 119 __be32 attr_mod;
120}; 120};
121 121
122struct ib_rmpp_hdr { 122struct ib_rmpp_hdr {
@@ -124,8 +124,8 @@ struct ib_rmpp_hdr {
124 u8 rmpp_type; 124 u8 rmpp_type;
125 u8 rmpp_rtime_flags; 125 u8 rmpp_rtime_flags;
126 u8 rmpp_status; 126 u8 rmpp_status;
127 u32 seg_num; 127 __be32 seg_num;
128 u32 paylen_newwin; 128 __be32 paylen_newwin;
129}; 129};
130 130
131typedef u64 __bitwise ib_sa_comp_mask; 131typedef u64 __bitwise ib_sa_comp_mask;
@@ -139,9 +139,9 @@ typedef u64 __bitwise ib_sa_comp_mask;
139 * the wire so we can't change the layout) 139 * the wire so we can't change the layout)
140 */ 140 */
141struct ib_sa_hdr { 141struct ib_sa_hdr {
142 u64 sm_key; 142 __be64 sm_key;
143 u16 attr_offset; 143 __be16 attr_offset;
144 u16 reserved; 144 __be16 reserved;
145 ib_sa_comp_mask comp_mask; 145 ib_sa_comp_mask comp_mask;
146} __attribute__ ((packed)); 146} __attribute__ ((packed));
147 147
diff --git a/drivers/infiniband/include/ib_sa.h b/drivers/infiniband/include/ib_sa.h
index 6d999f7b5d93..326159c04aca 100644
--- a/drivers/infiniband/include/ib_sa.h
+++ b/drivers/infiniband/include/ib_sa.h
@@ -133,16 +133,16 @@ struct ib_sa_path_rec {
133 /* reserved */ 133 /* reserved */
134 union ib_gid dgid; 134 union ib_gid dgid;
135 union ib_gid sgid; 135 union ib_gid sgid;
136 u16 dlid; 136 __be16 dlid;
137 u16 slid; 137 __be16 slid;
138 int raw_traffic; 138 int raw_traffic;
139 /* reserved */ 139 /* reserved */
140 u32 flow_label; 140 __be32 flow_label;
141 u8 hop_limit; 141 u8 hop_limit;
142 u8 traffic_class; 142 u8 traffic_class;
143 int reversible; 143 int reversible;
144 u8 numb_path; 144 u8 numb_path;
145 u16 pkey; 145 __be16 pkey;
146 /* reserved */ 146 /* reserved */
147 u8 sl; 147 u8 sl;
148 u8 mtu_selector; 148 u8 mtu_selector;
@@ -176,18 +176,18 @@ struct ib_sa_path_rec {
176struct ib_sa_mcmember_rec { 176struct ib_sa_mcmember_rec {
177 union ib_gid mgid; 177 union ib_gid mgid;
178 union ib_gid port_gid; 178 union ib_gid port_gid;
179 u32 qkey; 179 __be32 qkey;
180 u16 mlid; 180 __be16 mlid;
181 u8 mtu_selector; 181 u8 mtu_selector;
182 u8 mtu; 182 u8 mtu;
183 u8 traffic_class; 183 u8 traffic_class;
184 u16 pkey; 184 __be16 pkey;
185 u8 rate_selector; 185 u8 rate_selector;
186 u8 rate; 186 u8 rate;
187 u8 packet_life_time_selector; 187 u8 packet_life_time_selector;
188 u8 packet_life_time; 188 u8 packet_life_time;
189 u8 sl; 189 u8 sl;
190 u32 flow_label; 190 __be32 flow_label;
191 u8 hop_limit; 191 u8 hop_limit;
192 u8 scope; 192 u8 scope;
193 u8 join_state; 193 u8 join_state;
@@ -238,7 +238,7 @@ struct ib_sa_mcmember_rec {
238struct ib_sa_service_rec { 238struct ib_sa_service_rec {
239 u64 id; 239 u64 id;
240 union ib_gid gid; 240 union ib_gid gid;
241 u16 pkey; 241 __be16 pkey;
242 /* reserved */ 242 /* reserved */
243 u32 lease; 243 u32 lease;
244 u8 key[16]; 244 u8 key[16];
diff --git a/drivers/infiniband/include/ib_smi.h b/drivers/infiniband/include/ib_smi.h
index ca8216514963..c07b31cb9499 100644
--- a/drivers/infiniband/include/ib_smi.h
+++ b/drivers/infiniband/include/ib_smi.h
@@ -41,8 +41,6 @@
41 41
42#include <ib_mad.h> 42#include <ib_mad.h>
43 43
44#define IB_LID_PERMISSIVE 0xFFFF
45
46#define IB_SMP_DATA_SIZE 64 44#define IB_SMP_DATA_SIZE 64
47#define IB_SMP_MAX_PATH_HOPS 64 45#define IB_SMP_MAX_PATH_HOPS 64
48 46
@@ -51,16 +49,16 @@ struct ib_smp {
51 u8 mgmt_class; 49 u8 mgmt_class;
52 u8 class_version; 50 u8 class_version;
53 u8 method; 51 u8 method;
54 u16 status; 52 __be16 status;
55 u8 hop_ptr; 53 u8 hop_ptr;
56 u8 hop_cnt; 54 u8 hop_cnt;
57 u64 tid; 55 __be64 tid;
58 u16 attr_id; 56 __be16 attr_id;
59 u16 resv; 57 __be16 resv;
60 u32 attr_mod; 58 __be32 attr_mod;
61 u64 mkey; 59 __be64 mkey;
62 u16 dr_slid; 60 __be16 dr_slid;
63 u16 dr_dlid; 61 __be16 dr_dlid;
64 u8 reserved[28]; 62 u8 reserved[28];
65 u8 data[IB_SMP_DATA_SIZE]; 63 u8 data[IB_SMP_DATA_SIZE];
66 u8 initial_path[IB_SMP_MAX_PATH_HOPS]; 64 u8 initial_path[IB_SMP_MAX_PATH_HOPS];
diff --git a/drivers/infiniband/include/ib_user_cm.h b/drivers/infiniband/include/ib_user_cm.h
index 500b1af6ff77..72182d16778b 100644
--- a/drivers/infiniband/include/ib_user_cm.h
+++ b/drivers/infiniband/include/ib_user_cm.h
@@ -88,15 +88,15 @@ struct ib_ucm_attr_id {
88}; 88};
89 89
90struct ib_ucm_attr_id_resp { 90struct ib_ucm_attr_id_resp {
91 __u64 service_id; 91 __be64 service_id;
92 __u64 service_mask; 92 __be64 service_mask;
93 __u32 local_id; 93 __be32 local_id;
94 __u32 remote_id; 94 __be32 remote_id;
95}; 95};
96 96
97struct ib_ucm_listen { 97struct ib_ucm_listen {
98 __u64 service_id; 98 __be64 service_id;
99 __u64 service_mask; 99 __be64 service_mask;
100 __u32 id; 100 __u32 id;
101}; 101};
102 102
@@ -114,13 +114,13 @@ struct ib_ucm_private_data {
114struct ib_ucm_path_rec { 114struct ib_ucm_path_rec {
115 __u8 dgid[16]; 115 __u8 dgid[16];
116 __u8 sgid[16]; 116 __u8 sgid[16];
117 __u16 dlid; 117 __be16 dlid;
118 __u16 slid; 118 __be16 slid;
119 __u32 raw_traffic; 119 __u32 raw_traffic;
120 __u32 flow_label; 120 __be32 flow_label;
121 __u32 reversible; 121 __u32 reversible;
122 __u32 mtu; 122 __u32 mtu;
123 __u16 pkey; 123 __be16 pkey;
124 __u8 hop_limit; 124 __u8 hop_limit;
125 __u8 traffic_class; 125 __u8 traffic_class;
126 __u8 numb_path; 126 __u8 numb_path;
@@ -138,7 +138,7 @@ struct ib_ucm_req {
138 __u32 qpn; 138 __u32 qpn;
139 __u32 qp_type; 139 __u32 qp_type;
140 __u32 psn; 140 __u32 psn;
141 __u64 sid; 141 __be64 sid;
142 __u64 data; 142 __u64 data;
143 __u64 primary_path; 143 __u64 primary_path;
144 __u64 alternate_path; 144 __u64 alternate_path;
@@ -200,7 +200,7 @@ struct ib_ucm_lap {
200struct ib_ucm_sidr_req { 200struct ib_ucm_sidr_req {
201 __u32 id; 201 __u32 id;
202 __u32 timeout; 202 __u32 timeout;
203 __u64 sid; 203 __be64 sid;
204 __u64 data; 204 __u64 data;
205 __u64 path; 205 __u64 path;
206 __u16 pkey; 206 __u16 pkey;
@@ -237,7 +237,7 @@ struct ib_ucm_req_event_resp {
237 /* port */ 237 /* port */
238 struct ib_ucm_path_rec primary_path; 238 struct ib_ucm_path_rec primary_path;
239 struct ib_ucm_path_rec alternate_path; 239 struct ib_ucm_path_rec alternate_path;
240 __u64 remote_ca_guid; 240 __be64 remote_ca_guid;
241 __u32 remote_qkey; 241 __u32 remote_qkey;
242 __u32 remote_qpn; 242 __u32 remote_qpn;
243 __u32 qp_type; 243 __u32 qp_type;
@@ -253,7 +253,7 @@ struct ib_ucm_req_event_resp {
253}; 253};
254 254
255struct ib_ucm_rep_event_resp { 255struct ib_ucm_rep_event_resp {
256 __u64 remote_ca_guid; 256 __be64 remote_ca_guid;
257 __u32 remote_qkey; 257 __u32 remote_qkey;
258 __u32 remote_qpn; 258 __u32 remote_qpn;
259 __u32 starting_psn; 259 __u32 starting_psn;
diff --git a/drivers/infiniband/include/ib_user_mad.h b/drivers/infiniband/include/ib_user_mad.h
index a9a56b50aacc..44537aa32e62 100644
--- a/drivers/infiniband/include/ib_user_mad.h
+++ b/drivers/infiniband/include/ib_user_mad.h
@@ -70,8 +70,6 @@
70 * @traffic_class - Traffic class in GRH 70 * @traffic_class - Traffic class in GRH
71 * @gid - Remote GID in GRH 71 * @gid - Remote GID in GRH
72 * @flow_label - Flow label in GRH 72 * @flow_label - Flow label in GRH
73 *
74 * All multi-byte quantities are stored in network (big endian) byte order.
75 */ 73 */
76struct ib_user_mad_hdr { 74struct ib_user_mad_hdr {
77 __u32 id; 75 __u32 id;
@@ -79,9 +77,9 @@ struct ib_user_mad_hdr {
79 __u32 timeout_ms; 77 __u32 timeout_ms;
80 __u32 retries; 78 __u32 retries;
81 __u32 length; 79 __u32 length;
82 __u32 qpn; 80 __be32 qpn;
83 __u32 qkey; 81 __be32 qkey;
84 __u16 lid; 82 __be16 lid;
85 __u8 sl; 83 __u8 sl;
86 __u8 path_bits; 84 __u8 path_bits;
87 __u8 grh_present; 85 __u8 grh_present;
@@ -89,7 +87,7 @@ struct ib_user_mad_hdr {
89 __u8 hop_limit; 87 __u8 hop_limit;
90 __u8 traffic_class; 88 __u8 traffic_class;
91 __u8 gid[16]; 89 __u8 gid[16];
92 __u32 flow_label; 90 __be32 flow_label;
93}; 91};
94 92
95/** 93/**
diff --git a/drivers/infiniband/include/ib_user_verbs.h b/drivers/infiniband/include/ib_user_verbs.h
index 7c613706af72..35857857aa3e 100644
--- a/drivers/infiniband/include/ib_user_verbs.h
+++ b/drivers/infiniband/include/ib_user_verbs.h
@@ -143,8 +143,8 @@ struct ib_uverbs_query_device {
143 143
144struct ib_uverbs_query_device_resp { 144struct ib_uverbs_query_device_resp {
145 __u64 fw_ver; 145 __u64 fw_ver;
146 __u64 node_guid; 146 __be64 node_guid;
147 __u64 sys_image_guid; 147 __be64 sys_image_guid;
148 __u64 max_mr_size; 148 __u64 max_mr_size;
149 __u64 page_size_cap; 149 __u64 page_size_cap;
150 __u32 vendor_id; 150 __u32 vendor_id;
diff --git a/drivers/infiniband/include/ib_verbs.h b/drivers/infiniband/include/ib_verbs.h
index 8d5ea9568337..042a7d11fbcc 100644
--- a/drivers/infiniband/include/ib_verbs.h
+++ b/drivers/infiniband/include/ib_verbs.h
@@ -51,8 +51,8 @@
51union ib_gid { 51union ib_gid {
52 u8 raw[16]; 52 u8 raw[16];
53 struct { 53 struct {
54 u64 subnet_prefix; 54 __be64 subnet_prefix;
55 u64 interface_id; 55 __be64 interface_id;
56 } global; 56 } global;
57}; 57};
58 58
@@ -88,8 +88,8 @@ enum ib_atomic_cap {
88 88
89struct ib_device_attr { 89struct ib_device_attr {
90 u64 fw_ver; 90 u64 fw_ver;
91 u64 node_guid; 91 __be64 node_guid;
92 u64 sys_image_guid; 92 __be64 sys_image_guid;
93 u64 max_mr_size; 93 u64 max_mr_size;
94 u64 page_size_cap; 94 u64 page_size_cap;
95 u32 vendor_id; 95 u32 vendor_id;
@@ -291,8 +291,8 @@ struct ib_global_route {
291}; 291};
292 292
293struct ib_grh { 293struct ib_grh {
294 u32 version_tclass_flow; 294 __be32 version_tclass_flow;
295 u16 paylen; 295 __be16 paylen;
296 u8 next_hdr; 296 u8 next_hdr;
297 u8 hop_limit; 297 u8 hop_limit;
298 union ib_gid sgid; 298 union ib_gid sgid;
@@ -303,6 +303,8 @@ enum {
303 IB_MULTICAST_QPN = 0xffffff 303 IB_MULTICAST_QPN = 0xffffff
304}; 304};
305 305
306#define IB_LID_PERMISSIVE __constant_htons(0xFFFF)
307
306enum ib_ah_flags { 308enum ib_ah_flags {
307 IB_AH_GRH = 1 309 IB_AH_GRH = 1
308}; 310};
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index b91d3ef01b92..e23041c7be8f 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -90,8 +90,8 @@ enum {
90/* structs */ 90/* structs */
91 91
92struct ipoib_header { 92struct ipoib_header {
93 u16 proto; 93 __be16 proto;
94 u16 reserved; 94 u16 reserved;
95}; 95};
96 96
97struct ipoib_pseudoheader { 97struct ipoib_pseudoheader {
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_fs.c b/drivers/infiniband/ulp/ipoib/ipoib_fs.c
index a84e5fe0f193..38b150f775e7 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_fs.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_fs.c
@@ -97,7 +97,7 @@ static int ipoib_mcg_seq_show(struct seq_file *file, void *iter_ptr)
97 97
98 for (n = 0, i = 0; i < sizeof mgid / 2; ++i) { 98 for (n = 0, i = 0; i < sizeof mgid / 2; ++i) {
99 n += sprintf(gid_buf + n, "%x", 99 n += sprintf(gid_buf + n, "%x",
100 be16_to_cpu(((u16 *)mgid.raw)[i])); 100 be16_to_cpu(((__be16 *) mgid.raw)[i]));
101 if (i < sizeof mgid / 2 - 1) 101 if (i < sizeof mgid / 2 - 1)
102 gid_buf[n++] = ':'; 102 gid_buf[n++] = ':';
103 } 103 }
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index d4300e4a36d8..7f349693b40a 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -609,8 +609,8 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
609 ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x " 609 ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x "
610 IPOIB_GID_FMT "\n", 610 IPOIB_GID_FMT "\n",
611 skb->dst ? "neigh" : "dst", 611 skb->dst ? "neigh" : "dst",
612 be16_to_cpup((u16 *) skb->data), 612 be16_to_cpup((__be16 *) skb->data),
613 be32_to_cpup((u32 *) phdr->hwaddr), 613 be32_to_cpup((__be32 *) phdr->hwaddr),
614 IPOIB_GID_ARG(*(union ib_gid *) (phdr->hwaddr + 4))); 614 IPOIB_GID_ARG(*(union ib_gid *) (phdr->hwaddr + 4)));
615 dev_kfree_skb_any(skb); 615 dev_kfree_skb_any(skb);
616 ++priv->stats.tx_dropped; 616 ++priv->stats.tx_dropped;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index e03b070d5222..aca7aea18a69 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -359,7 +359,7 @@ static int ipoib_mcast_sendonly_join(struct ipoib_mcast *mcast)
359 359
360 rec.mgid = mcast->mcmember.mgid; 360 rec.mgid = mcast->mcmember.mgid;
361 rec.port_gid = priv->local_gid; 361 rec.port_gid = priv->local_gid;
362 rec.pkey = be16_to_cpu(priv->pkey); 362 rec.pkey = cpu_to_be16(priv->pkey);
363 363
364 ret = ib_sa_mcmember_rec_set(priv->ca, priv->port, &rec, 364 ret = ib_sa_mcmember_rec_set(priv->ca, priv->port, &rec,
365 IB_SA_MCMEMBER_REC_MGID | 365 IB_SA_MCMEMBER_REC_MGID |
@@ -459,7 +459,7 @@ static void ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast,
459 459
460 rec.mgid = mcast->mcmember.mgid; 460 rec.mgid = mcast->mcmember.mgid;
461 rec.port_gid = priv->local_gid; 461 rec.port_gid = priv->local_gid;
462 rec.pkey = be16_to_cpu(priv->pkey); 462 rec.pkey = cpu_to_be16(priv->pkey);
463 463
464 comp_mask = 464 comp_mask =
465 IB_SA_MCMEMBER_REC_MGID | 465 IB_SA_MCMEMBER_REC_MGID |
@@ -648,7 +648,7 @@ static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast)
648 648
649 rec.mgid = mcast->mcmember.mgid; 649 rec.mgid = mcast->mcmember.mgid;
650 rec.port_gid = priv->local_gid; 650 rec.port_gid = priv->local_gid;
651 rec.pkey = be16_to_cpu(priv->pkey); 651 rec.pkey = cpu_to_be16(priv->pkey);
652 652
653 /* Remove ourselves from the multicast group */ 653 /* Remove ourselves from the multicast group */
654 ret = ipoib_mcast_detach(dev, be16_to_cpu(mcast->mcmember.mlid), 654 ret = ipoib_mcast_detach(dev, be16_to_cpu(mcast->mcmember.mlid),