瀏覽代碼

[infiniband] Pass a generic MAD to ib_set_port_info()

tags/v0.9.8
Michael Brown 15 年之前
父節點
當前提交
ea6eb7f7ed
共有 4 個檔案被更改,包括 12 行新增14 行删除
  1. 3
    3
      src/drivers/infiniband/linda.c
  2. 3
    5
      src/include/gpxe/infiniband.h
  3. 5
    5
      src/net/infiniband.c
  4. 1
    1
      src/net/infiniband/ib_gma.c

+ 3
- 3
src/drivers/infiniband/linda.c 查看文件

@@ -242,11 +242,11 @@ static void linda_link_state_changed ( struct ib_device *ibdev ) {
242 242
  * Set port information
243 243
  *
244 244
  * @v ibdev		Infiniband device
245
- * @v port_info		New port information
245
+ * @v mad		Set port information MAD
246 246
  */
247
-static int linda_set_port_info ( struct ib_device *ibdev,
248
-				 const struct ib_port_info *port_info ) {
247
+static int linda_set_port_info ( struct ib_device *ibdev, union ib_mad *mad ) {
249 248
 	struct linda *linda = ib_get_drvdata ( ibdev );
249
+	struct ib_port_info *port_info = &mad->smp.smp_data.port_info;
250 250
 	struct QIB_7220_IBCCtrl ibcctrl;
251 251
 	unsigned int port_state;
252 252
 	unsigned int link_state;

+ 3
- 5
src/include/gpxe/infiniband.h 查看文件

@@ -346,13 +346,12 @@ struct ib_device_operations {
346 346
 	/** Set port information
347 347
 	 *
348 348
 	 * @v ibdev		Infiniband device
349
-	 * @v port_info		New port information
349
+	 * @v mad		Set port information MAD
350 350
 	 *
351 351
 	 * This method is required only by adapters that do not have
352 352
 	 * an embedded SMA.
353 353
 	 */
354
-	int ( * set_port_info ) ( struct ib_device *ibdev,
355
-				  const struct ib_port_info *port_info );
354
+	int ( * set_port_info ) ( struct ib_device *ibdev, union ib_mad *mad );
356 355
 };
357 356
 
358 357
 /** An Infiniband device */
@@ -457,8 +456,7 @@ extern void ib_mcast_detach ( struct ib_device *ibdev,
457 456
 			      struct ib_queue_pair *qp, struct ib_gid *gid );
458 457
 extern int ib_get_hca_info ( struct ib_device *ibdev,
459 458
 			     struct ib_gid_half *hca_guid );
460
-extern int ib_set_port_info ( struct ib_device *ibdev,
461
-			      const struct ib_port_info *port_info );
459
+extern int ib_set_port_info ( struct ib_device *ibdev, union ib_mad *mad );
462 460
 extern struct ib_device * alloc_ibdev ( size_t priv_size );
463 461
 extern int register_ibdev ( struct ib_device *ibdev );
464 462
 extern void unregister_ibdev ( struct ib_device *ibdev );

+ 5
- 5
src/net/infiniband.c 查看文件

@@ -687,13 +687,13 @@ int ib_get_hca_info ( struct ib_device *ibdev,
687 687
 	return num_ports;
688 688
 }
689 689
 
690
-/** Set port information
690
+/**
691
+ * Set port information
691 692
  *
692 693
  * @v ibdev		Infiniband device
693
- * @v port_info		New port information
694
+ * @v mad		Set port information MAD
694 695
  */
695
-int ib_set_port_info ( struct ib_device *ibdev,
696
-		       const struct ib_port_info *port_info ) {
696
+int ib_set_port_info ( struct ib_device *ibdev, union ib_mad *mad ) {
697 697
 	int rc;
698 698
 
699 699
 	/* Adapters with embedded SMAs do not need to support this method */
@@ -703,7 +703,7 @@ int ib_set_port_info ( struct ib_device *ibdev,
703 703
 		return -ENOTSUP;
704 704
 	}
705 705
 
706
-	if ( ( rc = ibdev->op->set_port_info ( ibdev, port_info ) ) != 0 ) {
706
+	if ( ( rc = ibdev->op->set_port_info ( ibdev, mad ) ) != 0 ) {
707 707
 		DBGC ( ibdev, "IBDEV %p could not set port information: %s\n",
708 708
 		       ibdev, strerror ( rc ) );
709 709
 		return rc;

+ 1
- 1
src/net/infiniband/ib_gma.c 查看文件

@@ -255,7 +255,7 @@ static union ib_mad * ib_sma_set_port_info ( struct ib_gma *gma,
255 255
 	       "%02x\n", gma, ibdev->lid, ibdev->sm_lid,
256 256
 	       ibdev->link_width_enabled, ibdev->link_speed_enabled );
257 257
 
258
-	if ( ( rc = ib_set_port_info ( ibdev, port_info ) ) != 0 ) {
258
+	if ( ( rc = ib_set_port_info ( ibdev, mad ) ) != 0 ) {
259 259
 		DBGC ( gma, "GMA %p could not set port information: %s\n",
260 260
 		       gma, strerror ( rc ) );
261 261
 		mad->hdr.status =

Loading…
取消
儲存