__u64 sps_ports;
        /* list of pkeys (other than default) accepted (0 means not set) */
        __u16 sps_pkeys[4];
-       /* lids for up to 4 infinipaths, indexed by infinipath # */
-       __u16 sps_lid[4];
+       __u16 sps_unused16[4]; /* available; maintaining compatible layout */
        /* number of user ports per chip (not IB ports) */
        __u32 sps_nports;
        /* not our interrupt, or already handled */
         * packets if ipath not configured, sma/mad, etc.)
         */
        __u64 sps_krdrops;
-       /* mlids for up to 4 infinipaths, indexed by infinipath # */
-       __u16 sps_mlid[4];
        /* pad for future growth */
-       __u64 __sps_pad[45];
+       __u64 __sps_pad[46];
 };
 
 /*
 
 
 EXPORT_SYMBOL_GPL(ipath_layer_set_mtu);
 
-int ipath_set_sps_lid(struct ipath_devdata *dd, u32 arg, u8 lmc)
+int ipath_set_lid(struct ipath_devdata *dd, u32 arg, u8 lmc)
 {
-       ipath_stats.sps_lid[dd->ipath_unit] = arg;
        dd->ipath_lid = arg;
        dd->ipath_lmc = lmc;
 
        return 0;
 }
 
-EXPORT_SYMBOL_GPL(ipath_set_sps_lid);
+EXPORT_SYMBOL_GPL(ipath_set_lid);
 
 int ipath_layer_set_guid(struct ipath_devdata *dd, __be64 guid)
 {
 
        if (*dd->ipath_statusp & IPATH_STATUS_IB_READY)
                intval |= IPATH_LAYER_INT_IF_UP;
-       if (ipath_stats.sps_lid[dd->ipath_unit])
+       if (dd->ipath_lid)
                intval |= IPATH_LAYER_INT_LID;
-       if (ipath_stats.sps_mlid[dd->ipath_unit])
+       if (dd->ipath_mlid)
                intval |= IPATH_LAYER_INT_BCAST;
        /*
         * do this on open, in case low level is already up and
 
 u32 ipath_layer_get_cr_errpkey(struct ipath_devdata *dd);
 int ipath_layer_set_linkstate(struct ipath_devdata *dd, u8 state);
 int ipath_layer_set_mtu(struct ipath_devdata *, u16);
-int ipath_set_sps_lid(struct ipath_devdata *, u32, u8);
+int ipath_set_lid(struct ipath_devdata *, u32, u8);
 int ipath_layer_send_hdr(struct ipath_devdata *dd,
                         struct ether_header *hdr);
 int ipath_verbs_send(struct ipath_devdata *dd, u32 hdrwords,
 
 DRIVER_STAT(pkey1, pkeys[1]);
 DRIVER_STAT(pkey2, pkeys[2]);
 DRIVER_STAT(pkey3, pkeys[3]);
-/* XXX fix the following when dynamic table of devices used */
-DRIVER_STAT(lid0, lid[0]);
-DRIVER_STAT(lid1, lid[1]);
-DRIVER_STAT(lid2, lid[2]);
-DRIVER_STAT(lid3, lid[3]);
 
 DRIVER_STAT(nports, nports);
 DRIVER_STAT(null_intr, nullintr);
 DRIVER_STAT(page_locks, pagelocks);
 DRIVER_STAT(page_unlocks, pageunlocks);
 DRIVER_STAT(krdrops, krdrops);
-/* XXX fix the following when dynamic table of devices used */
-DRIVER_STAT(mlid0, mlid[0]);
-DRIVER_STAT(mlid1, mlid[1]);
-DRIVER_STAT(mlid2, mlid[2]);
-DRIVER_STAT(mlid3, mlid[3]);
 
 static struct attribute *driver_stat_attributes[] = {
        &driver_attr_intrs.attr,
        &driver_attr_pkey1.attr,
        &driver_attr_pkey2.attr,
        &driver_attr_pkey3.attr,
-       &driver_attr_lid0.attr,
-       &driver_attr_lid1.attr,
-       &driver_attr_lid2.attr,
-       &driver_attr_lid3.attr,
        &driver_attr_nports.attr,
        &driver_attr_null_intr.attr,
        &driver_attr_max_pkts_call.attr,
        &driver_attr_page_locks.attr,
        &driver_attr_page_unlocks.attr,
        &driver_attr_krdrops.attr,
-       &driver_attr_mlid0.attr,
-       &driver_attr_mlid1.attr,
-       &driver_attr_mlid2.attr,
-       &driver_attr_mlid3.attr,
        NULL
 };
 
                          size_t count)
 {
        struct ipath_devdata *dd = dev_get_drvdata(dev);
-       u16 lid;
+       u16 lid = 0;
        int ret;
 
        ret = ipath_parse_ushort(buf, &lid);
                goto invalid;
        }
 
-       ipath_set_sps_lid(dd, lid, 0);
+       ipath_set_lid(dd, lid, 0);
 
        goto bail;
 invalid:
-       ipath_dev_err(dd, "attempt to set invalid LID\n");
+       ipath_dev_err(dd, "attempt to set invalid LID 0x%x\n", lid);
 bail:
        return ret;
 }
        unit = dd->ipath_unit;
 
        dd->ipath_mlid = mlid;
-       ipath_stats.sps_mlid[unit] = mlid;
        ipath_layer_intr(dd, IPATH_LAYER_INT_BCAST);
 
        goto bail;