Browse Source

[infiniband] Use explicit "source" and "dest" address vector parameter names

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 12 years ago
parent
commit
cbe41cb31b

+ 32
- 33
src/drivers/infiniband/arbel.c View File

1250
  *
1250
  *
1251
  * @v ibdev		Infiniband device
1251
  * @v ibdev		Infiniband device
1252
  * @v qp		Queue pair
1252
  * @v qp		Queue pair
1253
- * @v av		Address vector
1253
+ * @v dest		Destination address vector
1254
  * @v iobuf		I/O buffer
1254
  * @v iobuf		I/O buffer
1255
  * @v wqe		Send work queue entry
1255
  * @v wqe		Send work queue entry
1256
  * @ret nds		Work queue entry size
1256
  * @ret nds		Work queue entry size
1257
  */
1257
  */
1258
 static size_t arbel_fill_ud_send_wqe ( struct ib_device *ibdev,
1258
 static size_t arbel_fill_ud_send_wqe ( struct ib_device *ibdev,
1259
 				       struct ib_queue_pair *qp __unused,
1259
 				       struct ib_queue_pair *qp __unused,
1260
-				       struct ib_address_vector *av,
1260
+				       struct ib_address_vector *dest,
1261
 				       struct io_buffer *iobuf,
1261
 				       struct io_buffer *iobuf,
1262
 				       union arbel_send_wqe *wqe ) {
1262
 				       union arbel_send_wqe *wqe ) {
1263
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1263
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1269
 		     ud_address_vector.pd, ARBEL_GLOBAL_PD,
1269
 		     ud_address_vector.pd, ARBEL_GLOBAL_PD,
1270
 		     ud_address_vector.port_number, ibdev->port );
1270
 		     ud_address_vector.port_number, ibdev->port );
1271
 	MLX_FILL_2 ( &wqe->ud.ud, 1,
1271
 	MLX_FILL_2 ( &wqe->ud.ud, 1,
1272
-		     ud_address_vector.rlid, av->lid,
1273
-		     ud_address_vector.g, av->gid_present );
1272
+		     ud_address_vector.rlid, dest->lid,
1273
+		     ud_address_vector.g, dest->gid_present );
1274
 	MLX_FILL_2 ( &wqe->ud.ud, 2,
1274
 	MLX_FILL_2 ( &wqe->ud.ud, 2,
1275
-		     ud_address_vector.max_stat_rate, arbel_rate ( av ),
1275
+		     ud_address_vector.max_stat_rate, arbel_rate ( dest ),
1276
 		     ud_address_vector.msg, 3 );
1276
 		     ud_address_vector.msg, 3 );
1277
-	MLX_FILL_1 ( &wqe->ud.ud, 3, ud_address_vector.sl, av->sl );
1278
-	gid = ( av->gid_present ? &av->gid : &arbel_no_gid );
1277
+	MLX_FILL_1 ( &wqe->ud.ud, 3, ud_address_vector.sl, dest->sl );
1278
+	gid = ( dest->gid_present ? &dest->gid : &arbel_no_gid );
1279
 	memcpy ( &wqe->ud.ud.u.dwords[4], gid, sizeof ( *gid ) );
1279
 	memcpy ( &wqe->ud.ud.u.dwords[4], gid, sizeof ( *gid ) );
1280
-	MLX_FILL_1 ( &wqe->ud.ud, 8, destination_qp, av->qpn );
1281
-	MLX_FILL_1 ( &wqe->ud.ud, 9, q_key, av->qkey );
1280
+	MLX_FILL_1 ( &wqe->ud.ud, 8, destination_qp, dest->qpn );
1281
+	MLX_FILL_1 ( &wqe->ud.ud, 9, q_key, dest->qkey );
1282
 	MLX_FILL_1 ( &wqe->ud.data[0], 0, byte_count, iob_len ( iobuf ) );
1282
 	MLX_FILL_1 ( &wqe->ud.data[0], 0, byte_count, iob_len ( iobuf ) );
1283
 	MLX_FILL_1 ( &wqe->ud.data[0], 1, l_key, arbel->lkey );
1283
 	MLX_FILL_1 ( &wqe->ud.data[0], 1, l_key, arbel->lkey );
1284
 	MLX_FILL_H ( &wqe->ud.data[0], 2,
1284
 	MLX_FILL_H ( &wqe->ud.data[0], 2,
1294
  *
1294
  *
1295
  * @v ibdev		Infiniband device
1295
  * @v ibdev		Infiniband device
1296
  * @v qp		Queue pair
1296
  * @v qp		Queue pair
1297
- * @v av		Address vector
1297
+ * @v dest		Destination address vector
1298
  * @v iobuf		I/O buffer
1298
  * @v iobuf		I/O buffer
1299
  * @v wqe		Send work queue entry
1299
  * @v wqe		Send work queue entry
1300
- * @v next		Previous work queue entry's "next" field
1301
  * @ret nds		Work queue entry size
1300
  * @ret nds		Work queue entry size
1302
  */
1301
  */
1303
 static size_t arbel_fill_mlx_send_wqe ( struct ib_device *ibdev,
1302
 static size_t arbel_fill_mlx_send_wqe ( struct ib_device *ibdev,
1304
 					struct ib_queue_pair *qp,
1303
 					struct ib_queue_pair *qp,
1305
-					struct ib_address_vector *av,
1304
+					struct ib_address_vector *dest,
1306
 					struct io_buffer *iobuf,
1305
 					struct io_buffer *iobuf,
1307
 					union arbel_send_wqe *wqe ) {
1306
 					union arbel_send_wqe *wqe ) {
1308
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1307
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1312
 	iob_populate ( &headers, &wqe->mlx.headers, 0,
1311
 	iob_populate ( &headers, &wqe->mlx.headers, 0,
1313
 		       sizeof ( wqe->mlx.headers ) );
1312
 		       sizeof ( wqe->mlx.headers ) );
1314
 	iob_reserve ( &headers, sizeof ( wqe->mlx.headers ) );
1313
 	iob_reserve ( &headers, sizeof ( wqe->mlx.headers ) );
1315
-	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), av );
1314
+	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), dest );
1316
 
1315
 
1317
 	/* Construct this work queue entry */
1316
 	/* Construct this work queue entry */
1318
 	MLX_FILL_5 ( &wqe->mlx.ctrl, 0,
1317
 	MLX_FILL_5 ( &wqe->mlx.ctrl, 0,
1319
 		     c, 1 /* generate completion */,
1318
 		     c, 1 /* generate completion */,
1320
 		     icrc, 0 /* generate ICRC */,
1319
 		     icrc, 0 /* generate ICRC */,
1321
-		     max_statrate, arbel_rate ( av ),
1320
+		     max_statrate, arbel_rate ( dest ),
1322
 		     slr, 0,
1321
 		     slr, 0,
1323
 		     v15, ( ( qp->ext_qpn == IB_QPN_SMI ) ? 1 : 0 ) );
1322
 		     v15, ( ( qp->ext_qpn == IB_QPN_SMI ) ? 1 : 0 ) );
1324
-	MLX_FILL_1 ( &wqe->mlx.ctrl, 1, rlid, av->lid );
1323
+	MLX_FILL_1 ( &wqe->mlx.ctrl, 1, rlid, dest->lid );
1325
 	MLX_FILL_1 ( &wqe->mlx.data[0], 0,
1324
 	MLX_FILL_1 ( &wqe->mlx.data[0], 0,
1326
 		     byte_count, iob_len ( &headers ) );
1325
 		     byte_count, iob_len ( &headers ) );
1327
 	MLX_FILL_1 ( &wqe->mlx.data[0], 1, l_key, arbel->lkey );
1326
 	MLX_FILL_1 ( &wqe->mlx.data[0], 1, l_key, arbel->lkey );
1345
  *
1344
  *
1346
  * @v ibdev		Infiniband device
1345
  * @v ibdev		Infiniband device
1347
  * @v qp		Queue pair
1346
  * @v qp		Queue pair
1348
- * @v av		Address vector
1347
+ * @v dest		Destination address vector
1349
  * @v iobuf		I/O buffer
1348
  * @v iobuf		I/O buffer
1350
  * @v wqe		Send work queue entry
1349
  * @v wqe		Send work queue entry
1351
- * @v next		Previous work queue entry's "next" field
1352
  * @ret nds		Work queue entry size
1350
  * @ret nds		Work queue entry size
1353
  */
1351
  */
1354
 static size_t arbel_fill_rc_send_wqe ( struct ib_device *ibdev,
1352
 static size_t arbel_fill_rc_send_wqe ( struct ib_device *ibdev,
1355
 				       struct ib_queue_pair *qp __unused,
1353
 				       struct ib_queue_pair *qp __unused,
1356
-				       struct ib_address_vector *av __unused,
1354
+				       struct ib_address_vector *dest __unused,
1357
 				       struct io_buffer *iobuf,
1355
 				       struct io_buffer *iobuf,
1358
 				       union arbel_send_wqe *wqe ) {
1356
 				       union arbel_send_wqe *wqe ) {
1359
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1357
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1374
 static size_t
1372
 static size_t
1375
 ( * arbel_fill_send_wqe[] ) ( struct ib_device *ibdev,
1373
 ( * arbel_fill_send_wqe[] ) ( struct ib_device *ibdev,
1376
 			      struct ib_queue_pair *qp,
1374
 			      struct ib_queue_pair *qp,
1377
-			      struct ib_address_vector *av,
1375
+			      struct ib_address_vector *dest,
1378
 			      struct io_buffer *iobuf,
1376
 			      struct io_buffer *iobuf,
1379
 			      union arbel_send_wqe *wqe ) = {
1377
 			      union arbel_send_wqe *wqe ) = {
1380
 	[IB_QPT_SMI] = arbel_fill_mlx_send_wqe,
1378
 	[IB_QPT_SMI] = arbel_fill_mlx_send_wqe,
1388
  *
1386
  *
1389
  * @v ibdev		Infiniband device
1387
  * @v ibdev		Infiniband device
1390
  * @v qp		Queue pair
1388
  * @v qp		Queue pair
1391
- * @v av		Address vector
1389
+ * @v dest		Destination address vector
1392
  * @v iobuf		I/O buffer
1390
  * @v iobuf		I/O buffer
1393
  * @ret rc		Return status code
1391
  * @ret rc		Return status code
1394
  */
1392
  */
1395
 static int arbel_post_send ( struct ib_device *ibdev,
1393
 static int arbel_post_send ( struct ib_device *ibdev,
1396
 			     struct ib_queue_pair *qp,
1394
 			     struct ib_queue_pair *qp,
1397
-			     struct ib_address_vector *av,
1395
+			     struct ib_address_vector *dest,
1398
 			     struct io_buffer *iobuf ) {
1396
 			     struct io_buffer *iobuf ) {
1399
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1397
 	struct arbel *arbel = ib_get_drvdata ( ibdev );
1400
 	struct arbel_queue_pair *arbel_qp = ib_qp_get_drvdata ( qp );
1398
 	struct arbel_queue_pair *arbel_qp = ib_qp_get_drvdata ( qp );
1424
 	assert ( qp->type < ( sizeof ( arbel_fill_send_wqe ) /
1422
 	assert ( qp->type < ( sizeof ( arbel_fill_send_wqe ) /
1425
 			      sizeof ( arbel_fill_send_wqe[0] ) ) );
1423
 			      sizeof ( arbel_fill_send_wqe[0] ) ) );
1426
 	assert ( arbel_fill_send_wqe[qp->type] != NULL );
1424
 	assert ( arbel_fill_send_wqe[qp->type] != NULL );
1427
-	nds = arbel_fill_send_wqe[qp->type] ( ibdev, qp, av, iobuf, wqe );
1425
+	nds = arbel_fill_send_wqe[qp->type] ( ibdev, qp, dest, iobuf, wqe );
1428
 	DBGCP ( arbel, "Arbel %p QPN %#lx posting send WQE %#lx:\n",
1426
 	DBGCP ( arbel, "Arbel %p QPN %#lx posting send WQE %#lx:\n",
1429
 		arbel, qp->qpn, ( wq->next_idx & wqe_idx_mask ) );
1427
 		arbel, qp->qpn, ( wq->next_idx & wqe_idx_mask ) );
1430
 	DBGCP_HDA ( arbel, virt_to_phys ( wqe ), wqe, sizeof ( *wqe ) );
1428
 	DBGCP_HDA ( arbel, virt_to_phys ( wqe ), wqe, sizeof ( *wqe ) );
1527
 	struct arbel_recv_work_queue *arbel_recv_wq;
1525
 	struct arbel_recv_work_queue *arbel_recv_wq;
1528
 	struct arbelprm_recv_wqe *recv_wqe;
1526
 	struct arbelprm_recv_wqe *recv_wqe;
1529
 	struct io_buffer *iobuf;
1527
 	struct io_buffer *iobuf;
1530
-	struct ib_address_vector recv_av;
1528
+	struct ib_address_vector recv_source;
1531
 	struct ib_global_route_header *grh;
1529
 	struct ib_global_route_header *grh;
1532
-	struct ib_address_vector *av;
1530
+	struct ib_address_vector *source;
1533
 	unsigned int opcode;
1531
 	unsigned int opcode;
1534
 	unsigned long qpn;
1532
 	unsigned long qpn;
1535
 	int is_send;
1533
 	int is_send;
1618
 			grh = iobuf->data;
1616
 			grh = iobuf->data;
1619
 			iob_pull ( iobuf, sizeof ( *grh ) );
1617
 			iob_pull ( iobuf, sizeof ( *grh ) );
1620
 			/* Construct address vector */
1618
 			/* Construct address vector */
1621
-			av = &recv_av;
1622
-			memset ( av, 0, sizeof ( *av ) );
1623
-			av->qpn = MLX_GET ( &cqe->normal, rqpn );
1624
-			av->lid = MLX_GET ( &cqe->normal, rlid );
1625
-			av->sl = MLX_GET ( &cqe->normal, sl );
1626
-			av->gid_present = MLX_GET ( &cqe->normal, g );
1627
-			memcpy ( &av->gid, &grh->sgid, sizeof ( av->gid ) );
1619
+			source = &recv_source;
1620
+			memset ( source, 0, sizeof ( *source ) );
1621
+			source->qpn = MLX_GET ( &cqe->normal, rqpn );
1622
+			source->lid = MLX_GET ( &cqe->normal, rlid );
1623
+			source->sl = MLX_GET ( &cqe->normal, sl );
1624
+			source->gid_present = MLX_GET ( &cqe->normal, g );
1625
+			memcpy ( &source->gid, &grh->sgid,
1626
+				 sizeof ( source->gid ) );
1628
 			break;
1627
 			break;
1629
 		case IB_QPT_RC:
1628
 		case IB_QPT_RC:
1630
-			av = &qp->av;
1629
+			source = &qp->av;
1631
 			break;
1630
 			break;
1632
 		default:
1631
 		default:
1633
 			assert ( 0 );
1632
 			assert ( 0 );
1634
 			return -EINVAL;
1633
 			return -EINVAL;
1635
 		}
1634
 		}
1636
 		/* Hand off to completion handler */
1635
 		/* Hand off to completion handler */
1637
-		ib_complete_recv ( ibdev, qp, av, iobuf, rc );
1636
+		ib_complete_recv ( ibdev, qp, source, iobuf, rc );
1638
 	}
1637
 	}
1639
 
1638
 
1640
 	return rc;
1639
 	return rc;

+ 43
- 42
src/drivers/infiniband/hermon.c View File

1364
  *
1364
  *
1365
  * @v ibdev		Infiniband device
1365
  * @v ibdev		Infiniband device
1366
  * @v qp		Queue pair
1366
  * @v qp		Queue pair
1367
- * @v av		Address vector
1367
+ * @v dest		Destination address vector
1368
  * @v iobuf		I/O buffer
1368
  * @v iobuf		I/O buffer
1369
  * @v wqe		Send work queue entry
1369
  * @v wqe		Send work queue entry
1370
  * @ret opcode		Control opcode
1370
  * @ret opcode		Control opcode
1372
 static __attribute__ (( unused )) unsigned int
1372
 static __attribute__ (( unused )) unsigned int
1373
 hermon_fill_nop_send_wqe ( struct ib_device *ibdev __unused,
1373
 hermon_fill_nop_send_wqe ( struct ib_device *ibdev __unused,
1374
 			   struct ib_queue_pair *qp __unused,
1374
 			   struct ib_queue_pair *qp __unused,
1375
-			   struct ib_address_vector *av __unused,
1375
+			   struct ib_address_vector *dest __unused,
1376
 			   struct io_buffer *iobuf __unused,
1376
 			   struct io_buffer *iobuf __unused,
1377
 			   union hermon_send_wqe *wqe ) {
1377
 			   union hermon_send_wqe *wqe ) {
1378
 
1378
 
1386
  *
1386
  *
1387
  * @v ibdev		Infiniband device
1387
  * @v ibdev		Infiniband device
1388
  * @v qp		Queue pair
1388
  * @v qp		Queue pair
1389
- * @v av		Address vector
1389
+ * @v dest		Destination address vector
1390
  * @v iobuf		I/O buffer
1390
  * @v iobuf		I/O buffer
1391
  * @v wqe		Send work queue entry
1391
  * @v wqe		Send work queue entry
1392
  * @ret opcode		Control opcode
1392
  * @ret opcode		Control opcode
1394
 static unsigned int
1394
 static unsigned int
1395
 hermon_fill_ud_send_wqe ( struct ib_device *ibdev,
1395
 hermon_fill_ud_send_wqe ( struct ib_device *ibdev,
1396
 			  struct ib_queue_pair *qp __unused,
1396
 			  struct ib_queue_pair *qp __unused,
1397
-			  struct ib_address_vector *av,
1397
+			  struct ib_address_vector *dest,
1398
 			  struct io_buffer *iobuf,
1398
 			  struct io_buffer *iobuf,
1399
 			  union hermon_send_wqe *wqe ) {
1399
 			  union hermon_send_wqe *wqe ) {
1400
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1400
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1406
 		     ud_address_vector.pd, HERMON_GLOBAL_PD,
1406
 		     ud_address_vector.pd, HERMON_GLOBAL_PD,
1407
 		     ud_address_vector.port_number, ibdev->port );
1407
 		     ud_address_vector.port_number, ibdev->port );
1408
 	MLX_FILL_2 ( &wqe->ud.ud, 1,
1408
 	MLX_FILL_2 ( &wqe->ud.ud, 1,
1409
-		     ud_address_vector.rlid, av->lid,
1410
-		     ud_address_vector.g, av->gid_present );
1409
+		     ud_address_vector.rlid, dest->lid,
1410
+		     ud_address_vector.g, dest->gid_present );
1411
 	MLX_FILL_1 ( &wqe->ud.ud, 2,
1411
 	MLX_FILL_1 ( &wqe->ud.ud, 2,
1412
-		     ud_address_vector.max_stat_rate, hermon_rate ( av ) );
1413
-	MLX_FILL_1 ( &wqe->ud.ud, 3, ud_address_vector.sl, av->sl );
1414
-	memcpy ( &wqe->ud.ud.u.dwords[4], &av->gid, sizeof ( av->gid ) );
1415
-	MLX_FILL_1 ( &wqe->ud.ud, 8, destination_qp, av->qpn );
1416
-	MLX_FILL_1 ( &wqe->ud.ud, 9, q_key, av->qkey );
1412
+		     ud_address_vector.max_stat_rate, hermon_rate ( dest ) );
1413
+	MLX_FILL_1 ( &wqe->ud.ud, 3, ud_address_vector.sl, dest->sl );
1414
+	memcpy ( &wqe->ud.ud.u.dwords[4], &dest->gid, sizeof ( dest->gid ) );
1415
+	MLX_FILL_1 ( &wqe->ud.ud, 8, destination_qp, dest->qpn );
1416
+	MLX_FILL_1 ( &wqe->ud.ud, 9, q_key, dest->qkey );
1417
 	MLX_FILL_1 ( &wqe->ud.data[0], 0, byte_count, iob_len ( iobuf ) );
1417
 	MLX_FILL_1 ( &wqe->ud.data[0], 0, byte_count, iob_len ( iobuf ) );
1418
 	MLX_FILL_1 ( &wqe->ud.data[0], 1, l_key, hermon->lkey );
1418
 	MLX_FILL_1 ( &wqe->ud.data[0], 1, l_key, hermon->lkey );
1419
 	MLX_FILL_H ( &wqe->ud.data[0], 2,
1419
 	MLX_FILL_H ( &wqe->ud.data[0], 2,
1428
  *
1428
  *
1429
  * @v ibdev		Infiniband device
1429
  * @v ibdev		Infiniband device
1430
  * @v qp		Queue pair
1430
  * @v qp		Queue pair
1431
- * @v av		Address vector
1431
+ * @v dest		Destination address vector
1432
  * @v iobuf		I/O buffer
1432
  * @v iobuf		I/O buffer
1433
  * @v wqe		Send work queue entry
1433
  * @v wqe		Send work queue entry
1434
  * @ret opcode		Control opcode
1434
  * @ret opcode		Control opcode
1436
 static unsigned int
1436
 static unsigned int
1437
 hermon_fill_mlx_send_wqe ( struct ib_device *ibdev,
1437
 hermon_fill_mlx_send_wqe ( struct ib_device *ibdev,
1438
 			   struct ib_queue_pair *qp,
1438
 			   struct ib_queue_pair *qp,
1439
-			   struct ib_address_vector *av,
1439
+			   struct ib_address_vector *dest,
1440
 			   struct io_buffer *iobuf,
1440
 			   struct io_buffer *iobuf,
1441
 			   union hermon_send_wqe *wqe ) {
1441
 			   union hermon_send_wqe *wqe ) {
1442
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1442
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1446
 	iob_populate ( &headers, &wqe->mlx.headers, 0,
1446
 	iob_populate ( &headers, &wqe->mlx.headers, 0,
1447
 		       sizeof ( wqe->mlx.headers ) );
1447
 		       sizeof ( wqe->mlx.headers ) );
1448
 	iob_reserve ( &headers, sizeof ( wqe->mlx.headers ) );
1448
 	iob_reserve ( &headers, sizeof ( wqe->mlx.headers ) );
1449
-	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), av );
1449
+	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), dest );
1450
 
1450
 
1451
 	/* Fill work queue entry */
1451
 	/* Fill work queue entry */
1452
 	MLX_FILL_1 ( &wqe->mlx.ctrl, 1, ds,
1452
 	MLX_FILL_1 ( &wqe->mlx.ctrl, 1, ds,
1454
 	MLX_FILL_5 ( &wqe->mlx.ctrl, 2,
1454
 	MLX_FILL_5 ( &wqe->mlx.ctrl, 2,
1455
 		     c, 0x03 /* generate completion */,
1455
 		     c, 0x03 /* generate completion */,
1456
 		     icrc, 0 /* generate ICRC */,
1456
 		     icrc, 0 /* generate ICRC */,
1457
-		     max_statrate, hermon_rate ( av ),
1457
+		     max_statrate, hermon_rate ( dest ),
1458
 		     slr, 0,
1458
 		     slr, 0,
1459
 		     v15, ( ( qp->ext_qpn == IB_QPN_SMI ) ? 1 : 0 ) );
1459
 		     v15, ( ( qp->ext_qpn == IB_QPN_SMI ) ? 1 : 0 ) );
1460
-	MLX_FILL_1 ( &wqe->mlx.ctrl, 3, rlid, av->lid );
1460
+	MLX_FILL_1 ( &wqe->mlx.ctrl, 3, rlid, dest->lid );
1461
 	MLX_FILL_1 ( &wqe->mlx.data[0], 0,
1461
 	MLX_FILL_1 ( &wqe->mlx.data[0], 0,
1462
 		     byte_count, iob_len ( &headers ) );
1462
 		     byte_count, iob_len ( &headers ) );
1463
 	MLX_FILL_1 ( &wqe->mlx.data[0], 1, l_key, hermon->lkey );
1463
 	MLX_FILL_1 ( &wqe->mlx.data[0], 1, l_key, hermon->lkey );
1480
  *
1480
  *
1481
  * @v ibdev		Infiniband device
1481
  * @v ibdev		Infiniband device
1482
  * @v qp		Queue pair
1482
  * @v qp		Queue pair
1483
- * @v av		Address vector
1483
+ * @v dest		Destination address vector
1484
  * @v iobuf		I/O buffer
1484
  * @v iobuf		I/O buffer
1485
  * @v wqe		Send work queue entry
1485
  * @v wqe		Send work queue entry
1486
  * @ret opcode		Control opcode
1486
  * @ret opcode		Control opcode
1488
 static unsigned int
1488
 static unsigned int
1489
 hermon_fill_rc_send_wqe ( struct ib_device *ibdev,
1489
 hermon_fill_rc_send_wqe ( struct ib_device *ibdev,
1490
 			  struct ib_queue_pair *qp __unused,
1490
 			  struct ib_queue_pair *qp __unused,
1491
-			  struct ib_address_vector *av __unused,
1491
+			  struct ib_address_vector *dest __unused,
1492
 			  struct io_buffer *iobuf,
1492
 			  struct io_buffer *iobuf,
1493
 			  union hermon_send_wqe *wqe ) {
1493
 			  union hermon_send_wqe *wqe ) {
1494
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1494
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1510
  *
1510
  *
1511
  * @v ibdev		Infiniband device
1511
  * @v ibdev		Infiniband device
1512
  * @v qp		Queue pair
1512
  * @v qp		Queue pair
1513
- * @v av		Address vector
1513
+ * @v dest		Destination address vector
1514
  * @v iobuf		I/O buffer
1514
  * @v iobuf		I/O buffer
1515
  * @v wqe		Send work queue entry
1515
  * @v wqe		Send work queue entry
1516
  * @ret opcode		Control opcode
1516
  * @ret opcode		Control opcode
1518
 static unsigned int
1518
 static unsigned int
1519
 hermon_fill_eth_send_wqe ( struct ib_device *ibdev,
1519
 hermon_fill_eth_send_wqe ( struct ib_device *ibdev,
1520
 			   struct ib_queue_pair *qp __unused,
1520
 			   struct ib_queue_pair *qp __unused,
1521
-			   struct ib_address_vector *av __unused,
1521
+			   struct ib_address_vector *dest __unused,
1522
 			   struct io_buffer *iobuf,
1522
 			   struct io_buffer *iobuf,
1523
 			   union hermon_send_wqe *wqe ) {
1523
 			   union hermon_send_wqe *wqe ) {
1524
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1524
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1543
 static unsigned int
1543
 static unsigned int
1544
 ( * hermon_fill_send_wqe[] ) ( struct ib_device *ibdev,
1544
 ( * hermon_fill_send_wqe[] ) ( struct ib_device *ibdev,
1545
 			       struct ib_queue_pair *qp,
1545
 			       struct ib_queue_pair *qp,
1546
-			       struct ib_address_vector *av,
1546
+			       struct ib_address_vector *dest,
1547
 			       struct io_buffer *iobuf,
1547
 			       struct io_buffer *iobuf,
1548
 			       union hermon_send_wqe *wqe ) = {
1548
 			       union hermon_send_wqe *wqe ) = {
1549
 	[IB_QPT_SMI] = hermon_fill_mlx_send_wqe,
1549
 	[IB_QPT_SMI] = hermon_fill_mlx_send_wqe,
1558
  *
1558
  *
1559
  * @v ibdev		Infiniband device
1559
  * @v ibdev		Infiniband device
1560
  * @v qp		Queue pair
1560
  * @v qp		Queue pair
1561
- * @v av		Address vector
1561
+ * @v dest		Destination address vector
1562
  * @v iobuf		I/O buffer
1562
  * @v iobuf		I/O buffer
1563
  * @ret rc		Return status code
1563
  * @ret rc		Return status code
1564
  */
1564
  */
1565
 static int hermon_post_send ( struct ib_device *ibdev,
1565
 static int hermon_post_send ( struct ib_device *ibdev,
1566
 			      struct ib_queue_pair *qp,
1566
 			      struct ib_queue_pair *qp,
1567
-			      struct ib_address_vector *av,
1567
+			      struct ib_address_vector *dest,
1568
 			      struct io_buffer *iobuf ) {
1568
 			      struct io_buffer *iobuf ) {
1569
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1569
 	struct hermon *hermon = ib_get_drvdata ( ibdev );
1570
 	struct hermon_queue_pair *hermon_qp = ib_qp_get_drvdata ( qp );
1570
 	struct hermon_queue_pair *hermon_qp = ib_qp_get_drvdata ( qp );
1595
 	assert ( qp->type < ( sizeof ( hermon_fill_send_wqe ) /
1595
 	assert ( qp->type < ( sizeof ( hermon_fill_send_wqe ) /
1596
 			      sizeof ( hermon_fill_send_wqe[0] ) ) );
1596
 			      sizeof ( hermon_fill_send_wqe[0] ) ) );
1597
 	assert ( hermon_fill_send_wqe[qp->type] != NULL );
1597
 	assert ( hermon_fill_send_wqe[qp->type] != NULL );
1598
-	opcode = hermon_fill_send_wqe[qp->type] ( ibdev, qp, av, iobuf, wqe );
1598
+	opcode = hermon_fill_send_wqe[qp->type] ( ibdev, qp, dest, iobuf, wqe );
1599
 	barrier();
1599
 	barrier();
1600
 	MLX_FILL_2 ( &wqe->ctrl, 0,
1600
 	MLX_FILL_2 ( &wqe->ctrl, 0,
1601
 		     opcode, opcode,
1601
 		     opcode, opcode,
1677
 	struct ib_work_queue *wq;
1677
 	struct ib_work_queue *wq;
1678
 	struct ib_queue_pair *qp;
1678
 	struct ib_queue_pair *qp;
1679
 	struct io_buffer *iobuf;
1679
 	struct io_buffer *iobuf;
1680
-	struct ib_address_vector recv_av;
1680
+	struct ib_address_vector recv_source;
1681
 	struct ib_global_route_header *grh;
1681
 	struct ib_global_route_header *grh;
1682
-	struct ib_address_vector *av;
1682
+	struct ib_address_vector *source;
1683
 	unsigned int opcode;
1683
 	unsigned int opcode;
1684
 	unsigned long qpn;
1684
 	unsigned long qpn;
1685
 	int is_send;
1685
 	int is_send;
1737
 		len = MLX_GET ( &cqe->normal, byte_cnt );
1737
 		len = MLX_GET ( &cqe->normal, byte_cnt );
1738
 		assert ( len <= iob_tailroom ( iobuf ) );
1738
 		assert ( len <= iob_tailroom ( iobuf ) );
1739
 		iob_put ( iobuf, len );
1739
 		iob_put ( iobuf, len );
1740
-		memset ( &recv_av, 0, sizeof ( recv_av ) );
1740
+		memset ( &recv_source, 0, sizeof ( recv_source ) );
1741
 		switch ( qp->type ) {
1741
 		switch ( qp->type ) {
1742
 		case IB_QPT_SMI:
1742
 		case IB_QPT_SMI:
1743
 		case IB_QPT_GSI:
1743
 		case IB_QPT_GSI:
1746
 			grh = iobuf->data;
1746
 			grh = iobuf->data;
1747
 			iob_pull ( iobuf, sizeof ( *grh ) );
1747
 			iob_pull ( iobuf, sizeof ( *grh ) );
1748
 			/* Construct address vector */
1748
 			/* Construct address vector */
1749
-			av = &recv_av;
1750
-			av->qpn = MLX_GET ( &cqe->normal, srq_rqpn );
1751
-			av->lid = MLX_GET ( &cqe->normal, slid_smac47_32 );
1752
-			av->sl = MLX_GET ( &cqe->normal, sl );
1753
-			av->gid_present = MLX_GET ( &cqe->normal, g );
1754
-			memcpy ( &av->gid, &grh->sgid, sizeof ( av->gid ) );
1749
+			source = &recv_source;
1750
+			source->qpn = MLX_GET ( &cqe->normal, srq_rqpn );
1751
+			source->lid = MLX_GET ( &cqe->normal, slid_smac47_32 );
1752
+			source->sl = MLX_GET ( &cqe->normal, sl );
1753
+			source->gid_present = MLX_GET ( &cqe->normal, g );
1754
+			memcpy ( &source->gid, &grh->sgid,
1755
+				 sizeof ( source->gid ) );
1755
 			break;
1756
 			break;
1756
 		case IB_QPT_RC:
1757
 		case IB_QPT_RC:
1757
-			av = &qp->av;
1758
+			source = &qp->av;
1758
 			break;
1759
 			break;
1759
 		case IB_QPT_ETH:
1760
 		case IB_QPT_ETH:
1760
 			/* Construct address vector */
1761
 			/* Construct address vector */
1761
-			av = &recv_av;
1762
-			av->vlan_present = MLX_GET ( &cqe->normal, vlan );
1763
-			av->vlan = MLX_GET ( &cqe->normal, vid );
1762
+			source = &recv_source;
1763
+			source->vlan_present = MLX_GET ( &cqe->normal, vlan );
1764
+			source->vlan = MLX_GET ( &cqe->normal, vid );
1764
 			break;
1765
 			break;
1765
 		default:
1766
 		default:
1766
 			assert ( 0 );
1767
 			assert ( 0 );
1767
 			return -EINVAL;
1768
 			return -EINVAL;
1768
 		}
1769
 		}
1769
 		/* Hand off to completion handler */
1770
 		/* Hand off to completion handler */
1770
-		ib_complete_recv ( ibdev, qp, av, iobuf, rc );
1771
+		ib_complete_recv ( ibdev, qp, source, iobuf, rc );
1771
 	}
1772
 	}
1772
 
1773
 
1773
 	return rc;
1774
 	return rc;
3154
  *
3155
  *
3155
  * @v ibdev		Infiniband device
3156
  * @v ibdev		Infiniband device
3156
  * @v qp		Queue pair
3157
  * @v qp		Queue pair
3157
- * @v av		Address vector, or NULL
3158
+ * @v source		Source address vector, or NULL
3158
  * @v iobuf		I/O buffer
3159
  * @v iobuf		I/O buffer
3159
  * @v rc		Completion status code
3160
  * @v rc		Completion status code
3160
  */
3161
  */
3161
 static void hermon_eth_complete_recv ( struct ib_device *ibdev __unused,
3162
 static void hermon_eth_complete_recv ( struct ib_device *ibdev __unused,
3162
 				       struct ib_queue_pair *qp,
3163
 				       struct ib_queue_pair *qp,
3163
-				       struct ib_address_vector *av,
3164
+				       struct ib_address_vector *source,
3164
 				       struct io_buffer *iobuf, int rc ) {
3165
 				       struct io_buffer *iobuf, int rc ) {
3165
 	struct net_device *netdev = ib_qp_get_ownerdata ( qp );
3166
 	struct net_device *netdev = ib_qp_get_ownerdata ( qp );
3166
 	struct net_device *vlan;
3167
 	struct net_device *vlan;
3167
 
3168
 
3168
 	/* Find VLAN device, if applicable */
3169
 	/* Find VLAN device, if applicable */
3169
-	if ( av->vlan_present ) {
3170
-		if ( ( vlan = vlan_find ( netdev, av->vlan ) ) != NULL ) {
3170
+	if ( source->vlan_present ) {
3171
+		if ( ( vlan = vlan_find ( netdev, source->vlan ) ) != NULL ) {
3171
 			netdev = vlan;
3172
 			netdev = vlan;
3172
 		} else if ( rc == 0 ) {
3173
 		} else if ( rc == 0 ) {
3173
 			rc = -ENODEV;
3174
 			rc = -ENODEV;

+ 9
- 7
src/drivers/infiniband/linda.c View File

936
  *
936
  *
937
  * @v ibdev		Infiniband device
937
  * @v ibdev		Infiniband device
938
  * @v qp		Queue pair
938
  * @v qp		Queue pair
939
- * @v av		Address vector
939
+ * @v dest		Destination address vector
940
  * @v iobuf		I/O buffer
940
  * @v iobuf		I/O buffer
941
  * @ret rc		Return status code
941
  * @ret rc		Return status code
942
  */
942
  */
943
 static int linda_post_send ( struct ib_device *ibdev,
943
 static int linda_post_send ( struct ib_device *ibdev,
944
 			     struct ib_queue_pair *qp,
944
 			     struct ib_queue_pair *qp,
945
-			     struct ib_address_vector *av,
945
+			     struct ib_address_vector *dest,
946
 			     struct io_buffer *iobuf ) {
946
 			     struct io_buffer *iobuf ) {
947
 	struct linda *linda = ib_get_drvdata ( ibdev );
947
 	struct linda *linda = ib_get_drvdata ( ibdev );
948
 	struct ib_work_queue *wq = &qp->send;
948
 	struct ib_work_queue *wq = &qp->send;
969
 	/* Construct headers */
969
 	/* Construct headers */
970
 	iob_populate ( &headers, header_buf, 0, sizeof ( header_buf ) );
970
 	iob_populate ( &headers, header_buf, 0, sizeof ( header_buf ) );
971
 	iob_reserve ( &headers, sizeof ( header_buf ) );
971
 	iob_reserve ( &headers, sizeof ( header_buf ) );
972
-	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), av );
972
+	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), dest );
973
 
973
 
974
 	/* Calculate packet length */
974
 	/* Calculate packet length */
975
 	len = ( ( sizeof ( sendpbc ) + iob_len ( &headers ) +
975
 	len = ( ( sizeof ( sendpbc ) + iob_len ( &headers ) +
1170
 	struct io_buffer headers;
1170
 	struct io_buffer headers;
1171
 	struct io_buffer *iobuf;
1171
 	struct io_buffer *iobuf;
1172
 	struct ib_queue_pair *intended_qp;
1172
 	struct ib_queue_pair *intended_qp;
1173
-	struct ib_address_vector av;
1173
+	struct ib_address_vector source;
1174
 	unsigned int rcvtype;
1174
 	unsigned int rcvtype;
1175
 	unsigned int pktlen;
1175
 	unsigned int pktlen;
1176
 	unsigned int egrindex;
1176
 	unsigned int egrindex;
1238
 	qp0 = ( qp->qpn == 0 );
1238
 	qp0 = ( qp->qpn == 0 );
1239
 	intended_qp = NULL;
1239
 	intended_qp = NULL;
1240
 	if ( ( rc = ib_pull ( ibdev, &headers, ( qp0 ? &intended_qp : NULL ),
1240
 	if ( ( rc = ib_pull ( ibdev, &headers, ( qp0 ? &intended_qp : NULL ),
1241
-			      &payload_len, &av ) ) != 0 ) {
1241
+			      &payload_len, &source ) ) != 0 ) {
1242
 		DBGC ( linda, "Linda %p could not parse headers: %s\n",
1242
 		DBGC ( linda, "Linda %p could not parse headers: %s\n",
1243
 		       linda, strerror ( rc ) );
1243
 		       linda, strerror ( rc ) );
1244
 		err = 1;
1244
 		err = 1;
1295
 				qp->recv.fill--;
1295
 				qp->recv.fill--;
1296
 				intended_qp->recv.fill++;
1296
 				intended_qp->recv.fill++;
1297
 			}
1297
 			}
1298
-			ib_complete_recv ( ibdev, intended_qp, &av, iobuf, rc);
1298
+			ib_complete_recv ( ibdev, intended_qp, &source,
1299
+					   iobuf, rc);
1299
 		} else {
1300
 		} else {
1300
 			/* Completing on a skipped-over eager buffer */
1301
 			/* Completing on a skipped-over eager buffer */
1301
-			ib_complete_recv ( ibdev, qp, &av, iobuf, -ECANCELED );
1302
+			ib_complete_recv ( ibdev, qp, &source, iobuf,
1303
+					   -ECANCELED );
1302
 		}
1304
 		}
1303
 
1305
 
1304
 		/* Clear eager buffer */
1306
 		/* Clear eager buffer */

+ 9
- 7
src/drivers/infiniband/qib7322.c View File

1173
  *
1173
  *
1174
  * @v ibdev		Infiniband device
1174
  * @v ibdev		Infiniband device
1175
  * @v qp		Queue pair
1175
  * @v qp		Queue pair
1176
- * @v av		Address vector
1176
+ * @v dest		Destination address vector
1177
  * @v iobuf		I/O buffer
1177
  * @v iobuf		I/O buffer
1178
  * @ret rc		Return status code
1178
  * @ret rc		Return status code
1179
  */
1179
  */
1180
 static int qib7322_post_send ( struct ib_device *ibdev,
1180
 static int qib7322_post_send ( struct ib_device *ibdev,
1181
 			       struct ib_queue_pair *qp,
1181
 			       struct ib_queue_pair *qp,
1182
-			       struct ib_address_vector *av,
1182
+			       struct ib_address_vector *dest,
1183
 			       struct io_buffer *iobuf ) {
1183
 			       struct io_buffer *iobuf ) {
1184
 	struct qib7322 *qib7322 = ib_get_drvdata ( ibdev );
1184
 	struct qib7322 *qib7322 = ib_get_drvdata ( ibdev );
1185
 	struct ib_work_queue *wq = &qp->send;
1185
 	struct ib_work_queue *wq = &qp->send;
1211
 	/* Construct headers */
1211
 	/* Construct headers */
1212
 	iob_populate ( &headers, header_buf, 0, sizeof ( header_buf ) );
1212
 	iob_populate ( &headers, header_buf, 0, sizeof ( header_buf ) );
1213
 	iob_reserve ( &headers, sizeof ( header_buf ) );
1213
 	iob_reserve ( &headers, sizeof ( header_buf ) );
1214
-	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), av );
1214
+	ib_push ( ibdev, &headers, qp, iob_len ( iobuf ), dest );
1215
 
1215
 
1216
 	/* Calculate packet length */
1216
 	/* Calculate packet length */
1217
 	len = ( ( sizeof ( sendpbc ) + iob_len ( &headers ) +
1217
 	len = ( ( sizeof ( sendpbc ) + iob_len ( &headers ) +
1413
 	struct io_buffer headers;
1413
 	struct io_buffer headers;
1414
 	struct io_buffer *iobuf;
1414
 	struct io_buffer *iobuf;
1415
 	struct ib_queue_pair *intended_qp;
1415
 	struct ib_queue_pair *intended_qp;
1416
-	struct ib_address_vector av;
1416
+	struct ib_address_vector source;
1417
 	unsigned int rcvtype;
1417
 	unsigned int rcvtype;
1418
 	unsigned int pktlen;
1418
 	unsigned int pktlen;
1419
 	unsigned int egrindex;
1419
 	unsigned int egrindex;
1474
 	qp0 = ( qp->qpn == 0 );
1474
 	qp0 = ( qp->qpn == 0 );
1475
 	intended_qp = NULL;
1475
 	intended_qp = NULL;
1476
 	if ( ( rc = ib_pull ( ibdev, &headers, ( qp0 ? &intended_qp : NULL ),
1476
 	if ( ( rc = ib_pull ( ibdev, &headers, ( qp0 ? &intended_qp : NULL ),
1477
-			      &payload_len, &av ) ) != 0 ) {
1477
+			      &payload_len, &source ) ) != 0 ) {
1478
 		DBGC ( qib7322, "QIB7322 %p could not parse headers: %s\n",
1478
 		DBGC ( qib7322, "QIB7322 %p could not parse headers: %s\n",
1479
 		       qib7322, strerror ( rc ) );
1479
 		       qib7322, strerror ( rc ) );
1480
 		err = 1;
1480
 		err = 1;
1531
 				qp->recv.fill--;
1531
 				qp->recv.fill--;
1532
 				intended_qp->recv.fill++;
1532
 				intended_qp->recv.fill++;
1533
 			}
1533
 			}
1534
-			ib_complete_recv ( ibdev, intended_qp, &av, iobuf, rc);
1534
+			ib_complete_recv ( ibdev, intended_qp, &source,
1535
+					   iobuf, rc);
1535
 		} else {
1536
 		} else {
1536
 			/* Completing on a skipped-over eager buffer */
1537
 			/* Completing on a skipped-over eager buffer */
1537
-			ib_complete_recv ( ibdev, qp, &av, iobuf, -ECANCELED );
1538
+			ib_complete_recv ( ibdev, qp, &source, iobuf,
1539
+					   -ECANCELED );
1538
 		}
1540
 		}
1539
 
1541
 
1540
 		/* Clear eager buffer */
1542
 		/* Clear eager buffer */

+ 16
- 16
src/drivers/net/ipoib.c View File

423
 	struct ipoib_device *ipoib = netdev->priv;
423
 	struct ipoib_device *ipoib = netdev->priv;
424
 	struct ib_device *ibdev = ipoib->ibdev;
424
 	struct ib_device *ibdev = ipoib->ibdev;
425
 	struct ipoib_hdr *ipoib_hdr;
425
 	struct ipoib_hdr *ipoib_hdr;
426
-	struct ipoib_peer *dest;
427
-	struct ib_address_vector av;
426
+	struct ipoib_peer *peer;
427
+	struct ib_address_vector dest;
428
 	int rc;
428
 	int rc;
429
 
429
 
430
 	/* Sanity check */
430
 	/* Sanity check */
441
 		return -ENETUNREACH;
441
 		return -ENETUNREACH;
442
 
442
 
443
 	/* Identify destination address */
443
 	/* Identify destination address */
444
-	dest = ipoib_lookup_peer_by_key ( ipoib_hdr->u.peer.dest );
445
-	if ( ! dest )
444
+	peer = ipoib_lookup_peer_by_key ( ipoib_hdr->u.peer.dest );
445
+	if ( ! peer )
446
 		return -ENXIO;
446
 		return -ENXIO;
447
 	ipoib_hdr->u.reserved = 0;
447
 	ipoib_hdr->u.reserved = 0;
448
 
448
 
449
 	/* Construct address vector */
449
 	/* Construct address vector */
450
-	memset ( &av, 0, sizeof ( av ) );
451
-	av.qpn = ( ntohl ( dest->mac.flags__qpn ) & IB_QPN_MASK );
452
-	av.gid_present = 1;
453
-	memcpy ( &av.gid, &dest->mac.gid, sizeof ( av.gid ) );
454
-	if ( ( rc = ib_resolve_path ( ibdev, &av ) ) != 0 ) {
450
+	memset ( &dest, 0, sizeof ( dest ) );
451
+	dest.qpn = ( ntohl ( peer->mac.flags__qpn ) & IB_QPN_MASK );
452
+	dest.gid_present = 1;
453
+	memcpy ( &dest.gid, &peer->mac.gid, sizeof ( dest.gid ) );
454
+	if ( ( rc = ib_resolve_path ( ibdev, &dest ) ) != 0 ) {
455
 		/* Path not resolved yet */
455
 		/* Path not resolved yet */
456
 		return rc;
456
 		return rc;
457
 	}
457
 	}
458
 
458
 
459
-	return ib_post_send ( ibdev, ipoib->qp, &av, iobuf );
459
+	return ib_post_send ( ibdev, ipoib->qp, &dest, iobuf );
460
 }
460
 }
461
 
461
 
462
 /**
462
 /**
480
  *
480
  *
481
  * @v ibdev		Infiniband device
481
  * @v ibdev		Infiniband device
482
  * @v qp		Queue pair
482
  * @v qp		Queue pair
483
- * @v av		Address vector, or NULL
483
+ * @v source		Source address vector, or NULL
484
  * @v iobuf		I/O buffer
484
  * @v iobuf		I/O buffer
485
  * @v rc		Completion status code
485
  * @v rc		Completion status code
486
  */
486
  */
487
 static void ipoib_complete_recv ( struct ib_device *ibdev __unused,
487
 static void ipoib_complete_recv ( struct ib_device *ibdev __unused,
488
 				  struct ib_queue_pair *qp,
488
 				  struct ib_queue_pair *qp,
489
-				  struct ib_address_vector *av,
489
+				  struct ib_address_vector *source,
490
 				  struct io_buffer *iobuf, int rc ) {
490
 				  struct io_buffer *iobuf, int rc ) {
491
 	struct ipoib_device *ipoib = ib_qp_get_ownerdata ( qp );
491
 	struct ipoib_device *ipoib = ib_qp_get_ownerdata ( qp );
492
 	struct net_device *netdev = ipoib->netdev;
492
 	struct net_device *netdev = ipoib->netdev;
509
 		return;
509
 		return;
510
 	}
510
 	}
511
 	ipoib_hdr = iobuf->data;
511
 	ipoib_hdr = iobuf->data;
512
-	if ( ! av ) {
512
+	if ( ! source ) {
513
 		DBGC ( ipoib, "IPoIB %p received packet without address "
513
 		DBGC ( ipoib, "IPoIB %p received packet without address "
514
 		       "vector\n", ipoib );
514
 		       "vector\n", ipoib );
515
 		netdev_rx_err ( netdev, iobuf, -ENOTTY );
515
 		netdev_rx_err ( netdev, iobuf, -ENOTTY );
517
 	}
517
 	}
518
 
518
 
519
 	/* Parse source address */
519
 	/* Parse source address */
520
-	if ( av->gid_present ) {
521
-		ll_src.flags__qpn = htonl ( av->qpn );
522
-		memcpy ( &ll_src.gid, &av->gid, sizeof ( ll_src.gid ) );
520
+	if ( source->gid_present ) {
521
+		ll_src.flags__qpn = htonl ( source->qpn );
522
+		memcpy ( &ll_src.gid, &source->gid, sizeof ( ll_src.gid ) );
523
 		src = ipoib_cache_peer ( &ll_src );
523
 		src = ipoib_cache_peer ( &ll_src );
524
 		ipoib_hdr->u.peer.src = src->key;
524
 		ipoib_hdr->u.peer.src = src->key;
525
 	}
525
 	}

+ 2
- 2
src/include/ipxe/ib_packet.h View File

152
 
152
 
153
 extern int ib_push ( struct ib_device *ibdev, struct io_buffer *iobuf,
153
 extern int ib_push ( struct ib_device *ibdev, struct io_buffer *iobuf,
154
 		     struct ib_queue_pair *qp, size_t payload_len,
154
 		     struct ib_queue_pair *qp, size_t payload_len,
155
-		     const struct ib_address_vector *av );
155
+		     const struct ib_address_vector *dest );
156
 extern int ib_pull ( struct ib_device *ibdev, struct io_buffer *iobuf,
156
 extern int ib_pull ( struct ib_device *ibdev, struct io_buffer *iobuf,
157
 		     struct ib_queue_pair **qp, size_t *payload_len,
157
 		     struct ib_queue_pair **qp, size_t *payload_len,
158
-		     struct ib_address_vector *av );
158
+		     struct ib_address_vector *source );
159
 
159
 
160
 #endif /* _IPXE_IB_PACKET_H */
160
 #endif /* _IPXE_IB_PACKET_H */

+ 6
- 6
src/include/ipxe/infiniband.h View File

205
 	 *
205
 	 *
206
 	 * @v ibdev		Infiniband device
206
 	 * @v ibdev		Infiniband device
207
 	 * @v qp		Queue pair
207
 	 * @v qp		Queue pair
208
-	 * @v av		Address vector, or NULL
208
+	 * @v source		Source address vector, or NULL
209
 	 * @v iobuf		I/O buffer
209
 	 * @v iobuf		I/O buffer
210
 	 * @v rc		Completion status code
210
 	 * @v rc		Completion status code
211
 	 */
211
 	 */
212
 	void ( * complete_recv ) ( struct ib_device *ibdev,
212
 	void ( * complete_recv ) ( struct ib_device *ibdev,
213
 				   struct ib_queue_pair *qp,
213
 				   struct ib_queue_pair *qp,
214
-				   struct ib_address_vector *av,
214
+				   struct ib_address_vector *source,
215
 				   struct io_buffer *iobuf, int rc );
215
 				   struct io_buffer *iobuf, int rc );
216
 };
216
 };
217
 
217
 
289
 	 *
289
 	 *
290
 	 * @v ibdev		Infiniband device
290
 	 * @v ibdev		Infiniband device
291
 	 * @v qp		Queue pair
291
 	 * @v qp		Queue pair
292
-	 * @v av		Address vector
292
+	 * @v dest		Destination address vector
293
 	 * @v iobuf		I/O buffer
293
 	 * @v iobuf		I/O buffer
294
 	 * @ret rc		Return status code
294
 	 * @ret rc		Return status code
295
 	 *
295
 	 *
300
 	 */
300
 	 */
301
 	int ( * post_send ) ( struct ib_device *ibdev,
301
 	int ( * post_send ) ( struct ib_device *ibdev,
302
 			      struct ib_queue_pair *qp,
302
 			      struct ib_queue_pair *qp,
303
-			      struct ib_address_vector *av,
303
+			      struct ib_address_vector *dest,
304
 			      struct io_buffer *iobuf );
304
 			      struct io_buffer *iobuf );
305
 	/** Post receive work queue entry
305
 	/** Post receive work queue entry
306
 	 *
306
 	 *
502
 extern struct ib_work_queue * ib_find_wq ( struct ib_completion_queue *cq,
502
 extern struct ib_work_queue * ib_find_wq ( struct ib_completion_queue *cq,
503
 					   unsigned long qpn, int is_send );
503
 					   unsigned long qpn, int is_send );
504
 extern int ib_post_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
504
 extern int ib_post_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
505
-			  struct ib_address_vector *av,
505
+			  struct ib_address_vector *dest,
506
 			  struct io_buffer *iobuf );
506
 			  struct io_buffer *iobuf );
507
 extern int ib_post_recv ( struct ib_device *ibdev, struct ib_queue_pair *qp,
507
 extern int ib_post_recv ( struct ib_device *ibdev, struct ib_queue_pair *qp,
508
 			  struct io_buffer *iobuf );
508
 			  struct io_buffer *iobuf );
511
 			       struct io_buffer *iobuf, int rc );
511
 			       struct io_buffer *iobuf, int rc );
512
 extern void ib_complete_recv ( struct ib_device *ibdev,
512
 extern void ib_complete_recv ( struct ib_device *ibdev,
513
 			       struct ib_queue_pair *qp,
513
 			       struct ib_queue_pair *qp,
514
-			       struct ib_address_vector *av,
514
+			       struct ib_address_vector *source,
515
 			       struct io_buffer *iobuf, int rc );
515
 			       struct io_buffer *iobuf, int rc );
516
 extern void ib_refill_recv ( struct ib_device *ibdev,
516
 extern void ib_refill_recv ( struct ib_device *ibdev,
517
 			     struct ib_queue_pair *qp );
517
 			     struct ib_queue_pair *qp );

+ 15
- 16
src/net/infiniband.c View File

263
  *
263
  *
264
  * @v ibdev		Infiniband device
264
  * @v ibdev		Infiniband device
265
  * @v qp		Queue pair
265
  * @v qp		Queue pair
266
- * @v av		New address vector, if applicable
267
  * @ret rc		Return status code
266
  * @ret rc		Return status code
268
  */
267
  */
269
 int ib_modify_qp ( struct ib_device *ibdev, struct ib_queue_pair *qp ) {
268
 int ib_modify_qp ( struct ib_device *ibdev, struct ib_queue_pair *qp ) {
384
  *
383
  *
385
  * @v ibdev		Infiniband device
384
  * @v ibdev		Infiniband device
386
  * @v qp		Queue pair
385
  * @v qp		Queue pair
387
- * @v av		Address vector
386
+ * @v dest		Destination address vector
388
  * @v iobuf		I/O buffer
387
  * @v iobuf		I/O buffer
389
  * @ret rc		Return status code
388
  * @ret rc		Return status code
390
  */
389
  */
391
 int ib_post_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
390
 int ib_post_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
392
-		   struct ib_address_vector *av,
391
+		   struct ib_address_vector *dest,
393
 		   struct io_buffer *iobuf ) {
392
 		   struct io_buffer *iobuf ) {
394
-	struct ib_address_vector av_copy;
393
+	struct ib_address_vector dest_copy;
395
 	int rc;
394
 	int rc;
396
 
395
 
397
 	/* Check queue fill level */
396
 	/* Check queue fill level */
402
 	}
401
 	}
403
 
402
 
404
 	/* Use default address vector if none specified */
403
 	/* Use default address vector if none specified */
405
-	if ( ! av )
406
-		av = &qp->av;
404
+	if ( ! dest )
405
+		dest = &qp->av;
407
 
406
 
408
 	/* Make modifiable copy of address vector */
407
 	/* Make modifiable copy of address vector */
409
-	memcpy ( &av_copy, av, sizeof ( av_copy ) );
410
-	av = &av_copy;
408
+	memcpy ( &dest_copy, dest, sizeof ( dest_copy ) );
409
+	dest = &dest_copy;
411
 
410
 
412
 	/* Fill in optional parameters in address vector */
411
 	/* Fill in optional parameters in address vector */
413
-	if ( ! av->qkey )
414
-		av->qkey = qp->qkey;
415
-	if ( ! av->rate )
416
-		av->rate = IB_RATE_2_5;
412
+	if ( ! dest->qkey )
413
+		dest->qkey = qp->qkey;
414
+	if ( ! dest->rate )
415
+		dest->rate = IB_RATE_2_5;
417
 
416
 
418
 	/* Post to hardware */
417
 	/* Post to hardware */
419
-	if ( ( rc = ibdev->op->post_send ( ibdev, qp, av, iobuf ) ) != 0 ) {
418
+	if ( ( rc = ibdev->op->post_send ( ibdev, qp, dest, iobuf ) ) != 0 ) {
420
 		DBGC ( ibdev, "IBDEV %p QPN %#lx could not post send WQE: "
419
 		DBGC ( ibdev, "IBDEV %p QPN %#lx could not post send WQE: "
421
 		       "%s\n", ibdev, qp->qpn, strerror ( rc ) );
420
 		       "%s\n", ibdev, qp->qpn, strerror ( rc ) );
422
 		return rc;
421
 		return rc;
487
  *
486
  *
488
  * @v ibdev		Infiniband device
487
  * @v ibdev		Infiniband device
489
  * @v qp		Queue pair
488
  * @v qp		Queue pair
490
- * @v av		Address vector, or NULL
489
+ * @v source		Source address vector, or NULL
491
  * @v iobuf		I/O buffer
490
  * @v iobuf		I/O buffer
492
  * @v rc		Completion status code
491
  * @v rc		Completion status code
493
  */
492
  */
494
 void ib_complete_recv ( struct ib_device *ibdev, struct ib_queue_pair *qp,
493
 void ib_complete_recv ( struct ib_device *ibdev, struct ib_queue_pair *qp,
495
-			struct ib_address_vector *av,
494
+			struct ib_address_vector *source,
496
 			struct io_buffer *iobuf, int rc ) {
495
 			struct io_buffer *iobuf, int rc ) {
497
 
496
 
498
 	if ( qp->recv.cq->op->complete_recv ) {
497
 	if ( qp->recv.cq->op->complete_recv ) {
499
-		qp->recv.cq->op->complete_recv ( ibdev, qp, av, iobuf, rc );
498
+		qp->recv.cq->op->complete_recv ( ibdev, qp, source, iobuf, rc );
500
 	} else {
499
 	} else {
501
 		free_iob ( iobuf );
500
 		free_iob ( iobuf );
502
 	}
501
 	}

+ 2
- 2
src/net/infiniband/ib_cmrc.c View File

220
  *
220
  *
221
  * @v ibdev		Infiniband device
221
  * @v ibdev		Infiniband device
222
  * @v qp		Queue pair
222
  * @v qp		Queue pair
223
- * @v av		Address vector, or NULL
223
+ * @v source		Source address vector, or NULL
224
  * @v iobuf		I/O buffer
224
  * @v iobuf		I/O buffer
225
  * @v rc		Completion status code
225
  * @v rc		Completion status code
226
  */
226
  */
227
 static void ib_cmrc_complete_recv ( struct ib_device *ibdev __unused,
227
 static void ib_cmrc_complete_recv ( struct ib_device *ibdev __unused,
228
 				    struct ib_queue_pair *qp,
228
 				    struct ib_queue_pair *qp,
229
-				    struct ib_address_vector *av __unused,
229
+				    struct ib_address_vector *source __unused,
230
 				    struct io_buffer *iobuf, int rc ) {
230
 				    struct io_buffer *iobuf, int rc ) {
231
 	struct ib_cmrc_connection *cmrc = ib_qp_get_ownerdata ( qp );
231
 	struct ib_cmrc_connection *cmrc = ib_qp_get_ownerdata ( qp );
232
 
232
 

+ 3
- 3
src/net/infiniband/ib_mi.c View File

112
  *
112
  *
113
  * @v ibdev		Infiniband device
113
  * @v ibdev		Infiniband device
114
  * @v qp		Queue pair
114
  * @v qp		Queue pair
115
- * @v av		Address vector
115
+ * @v source		Address vector
116
  * @v iobuf		I/O buffer
116
  * @v iobuf		I/O buffer
117
  * @v rc		Completion status code
117
  * @v rc		Completion status code
118
  */
118
  */
119
 static void ib_mi_complete_recv ( struct ib_device *ibdev,
119
 static void ib_mi_complete_recv ( struct ib_device *ibdev,
120
 				  struct ib_queue_pair *qp,
120
 				  struct ib_queue_pair *qp,
121
-				  struct ib_address_vector *av,
121
+				  struct ib_address_vector *source,
122
 				  struct io_buffer *iobuf, int rc ) {
122
 				  struct io_buffer *iobuf, int rc ) {
123
 	struct ib_mad_interface *mi = ib_qp_get_ownerdata ( qp );
123
 	struct ib_mad_interface *mi = ib_qp_get_ownerdata ( qp );
124
 	union ib_mad *mad;
124
 	union ib_mad *mad;
152
 	DBGC2_HDA ( mi, 0, mad, sizeof ( *mad ) );
152
 	DBGC2_HDA ( mi, 0, mad, sizeof ( *mad ) );
153
 
153
 
154
 	/* Handle MAD */
154
 	/* Handle MAD */
155
-	if ( ( rc = ib_mi_handle ( ibdev, mi, mad, av ) ) != 0 )
155
+	if ( ( rc = ib_mi_handle ( ibdev, mi, mad, source ) ) != 0 )
156
 		goto out;
156
 		goto out;
157
 
157
 
158
  out:
158
  out:

+ 22
- 19
src/net/infiniband/ib_packet.c View File

42
  * @v iobuf		I/O buffer to contain headers
42
  * @v iobuf		I/O buffer to contain headers
43
  * @v qp		Queue pair
43
  * @v qp		Queue pair
44
  * @v payload_len	Payload length
44
  * @v payload_len	Payload length
45
- * @v av		Address vector
45
+ * @v dest		Destination address vector
46
+ * @ret rc		Return status code
46
  */
47
  */
47
 int ib_push ( struct ib_device *ibdev, struct io_buffer *iobuf,
48
 int ib_push ( struct ib_device *ibdev, struct io_buffer *iobuf,
48
 	      struct ib_queue_pair *qp, size_t payload_len,
49
 	      struct ib_queue_pair *qp, size_t payload_len,
49
-	      const struct ib_address_vector *av ) {
50
+	      const struct ib_address_vector *dest ) {
50
 	struct ib_local_route_header *lrh;
51
 	struct ib_local_route_header *lrh;
51
 	struct ib_global_route_header *grh;
52
 	struct ib_global_route_header *grh;
52
 	struct ib_base_transport_header *bth;
53
 	struct ib_base_transport_header *bth;
59
 	unsigned int lnh;
60
 	unsigned int lnh;
60
 
61
 
61
 	DBGC2 ( ibdev, "IBDEV %p TX %04x:%08lx => %04x:%08lx (key %08lx)\n",
62
 	DBGC2 ( ibdev, "IBDEV %p TX %04x:%08lx => %04x:%08lx (key %08lx)\n",
62
-		ibdev, ibdev->lid, qp->ext_qpn, av->lid, av->qpn, av->qkey );
63
+		ibdev, ibdev->lid, qp->ext_qpn, dest->lid, dest->qpn,
64
+		dest->qkey );
63
 
65
 
64
 	/* Calculate packet length */
66
 	/* Calculate packet length */
65
 	pad_len = ( (-payload_len) & 0x3 );
67
 	pad_len = ( (-payload_len) & 0x3 );
71
 	deth = iob_push ( iobuf, sizeof ( *deth ) );
73
 	deth = iob_push ( iobuf, sizeof ( *deth ) );
72
 	bth = iob_push ( iobuf, sizeof ( *bth ) );
74
 	bth = iob_push ( iobuf, sizeof ( *bth ) );
73
 	grh_len = ( payload_len + iob_len ( iobuf ) - orig_iob_len );
75
 	grh_len = ( payload_len + iob_len ( iobuf ) - orig_iob_len );
74
-	grh = ( av->gid_present ?
76
+	grh = ( dest->gid_present ?
75
 		iob_push ( iobuf, sizeof ( *grh ) ) : NULL );
77
 		iob_push ( iobuf, sizeof ( *grh ) ) : NULL );
76
 	lrh = iob_push ( iobuf, sizeof ( *lrh ) );
78
 	lrh = iob_push ( iobuf, sizeof ( *lrh ) );
77
 	lrh_len = ( payload_len + iob_len ( iobuf ) - orig_iob_len );
79
 	lrh_len = ( payload_len + iob_len ( iobuf ) - orig_iob_len );
80
 	vl = ( ( qp->ext_qpn == IB_QPN_SMI ) ? IB_VL_SMP : IB_VL_DEFAULT );
82
 	vl = ( ( qp->ext_qpn == IB_QPN_SMI ) ? IB_VL_SMP : IB_VL_DEFAULT );
81
 	lrh->vl__lver = ( vl << 4 );
83
 	lrh->vl__lver = ( vl << 4 );
82
 	lnh = ( grh ? IB_LNH_GRH : IB_LNH_BTH );
84
 	lnh = ( grh ? IB_LNH_GRH : IB_LNH_BTH );
83
-	lrh->sl__lnh = ( ( av->sl << 4 ) | lnh );
84
-	lrh->dlid = htons ( av->lid );
85
+	lrh->sl__lnh = ( ( dest->sl << 4 ) | lnh );
86
+	lrh->dlid = htons ( dest->lid );
85
 	lrh->length = htons ( lrh_len >> 2 );
87
 	lrh->length = htons ( lrh_len >> 2 );
86
 	lrh->slid = htons ( ibdev->lid );
88
 	lrh->slid = htons ( ibdev->lid );
87
 
89
 
93
 		grh->nxthdr = IB_GRH_NXTHDR_IBA;
95
 		grh->nxthdr = IB_GRH_NXTHDR_IBA;
94
 		grh->hoplmt = 0;
96
 		grh->hoplmt = 0;
95
 		memcpy ( &grh->sgid, &ibdev->gid, sizeof ( grh->sgid ) );
97
 		memcpy ( &grh->sgid, &ibdev->gid, sizeof ( grh->sgid ) );
96
-		memcpy ( &grh->dgid, &av->gid, sizeof ( grh->dgid ) );
98
+		memcpy ( &grh->dgid, &dest->gid, sizeof ( grh->dgid ) );
97
 	}
99
 	}
98
 
100
 
99
 	/* Construct BTH */
101
 	/* Construct BTH */
100
 	bth->opcode = BTH_OPCODE_UD_SEND;
102
 	bth->opcode = BTH_OPCODE_UD_SEND;
101
 	bth->se__m__padcnt__tver = ( pad_len << 4 );
103
 	bth->se__m__padcnt__tver = ( pad_len << 4 );
102
 	bth->pkey = htons ( ibdev->pkey );
104
 	bth->pkey = htons ( ibdev->pkey );
103
-	bth->dest_qp = htonl ( av->qpn );
105
+	bth->dest_qp = htonl ( dest->qpn );
104
 	bth->ack__psn = htonl ( ( qp->send.psn++ ) & 0xffffffUL );
106
 	bth->ack__psn = htonl ( ( qp->send.psn++ ) & 0xffffffUL );
105
 
107
 
106
 	/* Construct DETH */
108
 	/* Construct DETH */
107
-	deth->qkey = htonl ( av->qkey );
109
+	deth->qkey = htonl ( dest->qkey );
108
 	deth->src_qp = htonl ( qp->ext_qpn );
110
 	deth->src_qp = htonl ( qp->ext_qpn );
109
 
111
 
110
 	DBGCP_HDA ( ibdev, 0, iobuf->data,
112
 	DBGCP_HDA ( ibdev, 0, iobuf->data,
120
  * @v iobuf		I/O buffer containing headers
122
  * @v iobuf		I/O buffer containing headers
121
  * @v qp		Queue pair to fill in, or NULL
123
  * @v qp		Queue pair to fill in, or NULL
122
  * @v payload_len	Payload length to fill in, or NULL
124
  * @v payload_len	Payload length to fill in, or NULL
123
- * @v av		Address vector to fill in
125
+ * @v source		Source address vector to fill in
126
+ * @ret rc		Return status code
124
  */
127
  */
125
 int ib_pull ( struct ib_device *ibdev, struct io_buffer *iobuf,
128
 int ib_pull ( struct ib_device *ibdev, struct io_buffer *iobuf,
126
 	      struct ib_queue_pair **qp, size_t *payload_len,
129
 	      struct ib_queue_pair **qp, size_t *payload_len,
127
-	      struct ib_address_vector *av ) {
130
+	      struct ib_address_vector *source ) {
128
 	struct ib_local_route_header *lrh;
131
 	struct ib_local_route_header *lrh;
129
 	struct ib_global_route_header *grh;
132
 	struct ib_global_route_header *grh;
130
 	struct ib_base_transport_header *bth;
133
 	struct ib_base_transport_header *bth;
140
 		*qp = NULL;
143
 		*qp = NULL;
141
 	if ( payload_len )
144
 	if ( payload_len )
142
 		*payload_len = 0;
145
 		*payload_len = 0;
143
-	memset ( av, 0, sizeof ( *av ) );
146
+	memset ( source, 0, sizeof ( *source ) );
144
 
147
 
145
 	/* Extract LRH */
148
 	/* Extract LRH */
146
 	if ( iob_len ( iobuf ) < sizeof ( *lrh ) ) {
149
 	if ( iob_len ( iobuf ) < sizeof ( *lrh ) ) {
150
 	}
153
 	}
151
 	lrh = iobuf->data;
154
 	lrh = iobuf->data;
152
 	iob_pull ( iobuf, sizeof ( *lrh ) );
155
 	iob_pull ( iobuf, sizeof ( *lrh ) );
153
-	av->lid = ntohs ( lrh->slid );
154
-	av->sl = ( lrh->sl__lnh >> 4 );
156
+	source->lid = ntohs ( lrh->slid );
157
+	source->sl = ( lrh->sl__lnh >> 4 );
155
 	lnh = ( lrh->sl__lnh & 0x3 );
158
 	lnh = ( lrh->sl__lnh & 0x3 );
156
 	lid = ntohs ( lrh->dlid );
159
 	lid = ntohs ( lrh->dlid );
157
 
160
 
171
 		}
174
 		}
172
 		grh = iobuf->data;
175
 		grh = iobuf->data;
173
 		iob_pull ( iobuf, sizeof ( *grh ) );
176
 		iob_pull ( iobuf, sizeof ( *grh ) );
174
-		av->gid_present = 1;
175
-		memcpy ( &av->gid, &grh->sgid, sizeof ( av->gid ) );
177
+		source->gid_present = 1;
178
+		memcpy ( &source->gid, &grh->sgid, sizeof ( source->gid ) );
176
 	} else {
179
 	} else {
177
 		grh = NULL;
180
 		grh = NULL;
178
 	}
181
 	}
200
 	}
203
 	}
201
 	deth = iobuf->data;
204
 	deth = iobuf->data;
202
 	iob_pull ( iobuf, sizeof ( *deth ) );
205
 	iob_pull ( iobuf, sizeof ( *deth ) );
203
-	av->qpn = ntohl ( deth->src_qp );
204
-	av->qkey = ntohl ( deth->qkey );
206
+	source->qpn = ntohl ( deth->src_qp );
207
+	source->qkey = ntohl ( deth->qkey );
205
 
208
 
206
 	/* Calculate payload length, if applicable */
209
 	/* Calculate payload length, if applicable */
207
 	if ( payload_len ) {
210
 	if ( payload_len ) {
233
 	DBGC2 ( ibdev, "IBDEV %p RX %04x:%08lx <= %04x:%08lx (key %08x)\n",
236
 	DBGC2 ( ibdev, "IBDEV %p RX %04x:%08lx <= %04x:%08lx (key %08x)\n",
234
 		ibdev, lid, ( IB_LID_MULTICAST( lid ) ?
237
 		ibdev, lid, ( IB_LID_MULTICAST( lid ) ?
235
 			      ( qp ? (*qp)->ext_qpn : -1UL ) : qpn ),
238
 			      ( qp ? (*qp)->ext_qpn : -1UL ) : qpn ),
236
-		av->lid, av->qpn, ntohl ( deth->qkey ) );
239
+		source->lid, source->qpn, ntohl ( deth->qkey ) );
237
 	DBGCP_HDA ( ibdev, 0,
240
 	DBGCP_HDA ( ibdev, 0,
238
 		    ( iobuf->data - ( orig_iob_len - iob_len ( iobuf ) ) ),
241
 		    ( iobuf->data - ( orig_iob_len - iob_len ( iobuf ) ) ),
239
 		    ( orig_iob_len - iob_len ( iobuf ) ) );
242
 		    ( orig_iob_len - iob_len ( iobuf ) ) );

Loading…
Cancel
Save