From ea6eb7f7ed32f6141813b8f0c3e382b1d2bdcbd8 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 17 Jul 2009 22:40:12 +0100 Subject: [infiniband] Pass a generic MAD to ib_set_port_info() --- src/drivers/infiniband/linda.c | 6 +++--- src/include/gpxe/infiniband.h | 8 +++----- src/net/infiniband.c | 10 +++++----- 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 = -- cgit v1.2.3-55-g7522