summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2009-07-17 23:40:12 +0200
committerMichael Brown2009-07-18 00:06:35 +0200
commitea6eb7f7ed32f6141813b8f0c3e382b1d2bdcbd8 (patch)
treef29fb470495b29fe03e533d15a6b9bbcecdf54a7
parent[infiniband] Expose supported and enabled link speeds and widths (diff)
downloadipxe-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.c6
-rw-r--r--src/include/gpxe/infiniband.h8
-rw-r--r--src/net/infiniband.c10
-rw-r--r--src/net/infiniband/ib_gma.c2
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 =