* 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;
/** 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 */
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 );
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 */
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;
"%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 =