diff options
author | Michael Brown | 2009-07-17 23:40:12 +0200 |
---|---|---|
committer | Michael Brown | 2009-07-18 00:06:35 +0200 |
commit | ea6eb7f7ed32f6141813b8f0c3e382b1d2bdcbd8 (patch) | |
tree | f29fb470495b29fe03e533d15a6b9bbcecdf54a7 | |
parent | [infiniband] Expose supported and enabled link speeds and widths (diff) | |
download | ipxe-ea6eb7f7ed32f6141813b8f0c3e382b1d2bdcbd8.tar.gz ipxe-ea6eb7f7ed32f6141813b8f0c3e382b1d2bdcbd8.tar.xz ipxe-ea6eb7f7ed32f6141813b8f0c3e382b1d2bdcbd8.zip |
[infiniband] Pass a generic MAD to ib_set_port_info()
-rw-r--r-- | src/drivers/infiniband/linda.c | 6 | ||||
-rw-r--r-- | src/include/gpxe/infiniband.h | 8 | ||||
-rw-r--r-- | src/net/infiniband.c | 10 | ||||
-rw-r--r-- | src/net/infiniband/ib_gma.c | 2 |
4 files changed, 12 insertions, 14 deletions
diff --git a/src/drivers/infiniband/linda.c b/src/drivers/infiniband/linda.c index fa4c2241..02b5d856 100644 --- a/src/drivers/infiniband/linda.c +++ b/src/drivers/infiniband/linda.c @@ -242,11 +242,11 @@ static void linda_link_state_changed ( struct ib_device *ibdev ) { * Set port information * * @v ibdev Infiniband device - * @v port_info New port information + * @v mad Set port information MAD */ -static int linda_set_port_info ( struct ib_device *ibdev, - const struct ib_port_info *port_info ) { +static int linda_set_port_info ( struct ib_device *ibdev, union ib_mad *mad ) { struct linda *linda = ib_get_drvdata ( ibdev ); + struct ib_port_info *port_info = &mad->smp.smp_data.port_info; struct QIB_7220_IBCCtrl ibcctrl; unsigned int port_state; unsigned int link_state; diff --git a/src/include/gpxe/infiniband.h b/src/include/gpxe/infiniband.h index 25de491d..fcdb3c3d 100644 --- a/src/include/gpxe/infiniband.h +++ b/src/include/gpxe/infiniband.h @@ -346,13 +346,12 @@ struct ib_device_operations { /** Set port information * * @v ibdev Infiniband device - * @v port_info New port information + * @v mad Set port information MAD * * This method is required only by adapters that do not have * an embedded SMA. */ - int ( * set_port_info ) ( struct ib_device *ibdev, - const struct ib_port_info *port_info ); + int ( * set_port_info ) ( struct ib_device *ibdev, union ib_mad *mad ); }; /** An Infiniband device */ @@ -457,8 +456,7 @@ extern void ib_mcast_detach ( struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_gid *gid ); extern int ib_get_hca_info ( struct ib_device *ibdev, struct ib_gid_half *hca_guid ); -extern int ib_set_port_info ( struct ib_device *ibdev, - const struct ib_port_info *port_info ); +extern int ib_set_port_info ( struct ib_device *ibdev, union ib_mad *mad ); extern struct ib_device * alloc_ibdev ( size_t priv_size ); extern int register_ibdev ( struct ib_device *ibdev ); extern void unregister_ibdev ( struct ib_device *ibdev ); diff --git a/src/net/infiniband.c b/src/net/infiniband.c index b15dcc61..513e40c9 100644 --- a/src/net/infiniband.c +++ b/src/net/infiniband.c @@ -687,13 +687,13 @@ int ib_get_hca_info ( struct ib_device *ibdev, return num_ports; } -/** Set port information +/** + * Set port information * * @v ibdev Infiniband device - * @v port_info New port information + * @v mad Set port information MAD */ -int ib_set_port_info ( struct ib_device *ibdev, - const struct ib_port_info *port_info ) { +int ib_set_port_info ( struct ib_device *ibdev, union ib_mad *mad ) { int rc; /* Adapters with embedded SMAs do not need to support this method */ @@ -703,7 +703,7 @@ int ib_set_port_info ( struct ib_device *ibdev, return -ENOTSUP; } - if ( ( rc = ibdev->op->set_port_info ( ibdev, port_info ) ) != 0 ) { + if ( ( rc = ibdev->op->set_port_info ( ibdev, mad ) ) != 0 ) { DBGC ( ibdev, "IBDEV %p could not set port information: %s\n", ibdev, strerror ( rc ) ); return rc; diff --git a/src/net/infiniband/ib_gma.c b/src/net/infiniband/ib_gma.c index 4ed054ca..679de6f1 100644 --- a/src/net/infiniband/ib_gma.c +++ b/src/net/infiniband/ib_gma.c @@ -255,7 +255,7 @@ static union ib_mad * ib_sma_set_port_info ( struct ib_gma *gma, "%02x\n", gma, ibdev->lid, ibdev->sm_lid, ibdev->link_width_enabled, ibdev->link_speed_enabled ); - if ( ( rc = ib_set_port_info ( ibdev, port_info ) ) != 0 ) { + if ( ( rc = ib_set_port_info ( ibdev, mad ) ) != 0 ) { DBGC ( gma, "GMA %p could not set port information: %s\n", gma, strerror ( rc ) ); mad->hdr.status = |