Skip to content

Commit

Permalink
IB/ipath: Add ability to set the LMC via the sysfs debugging interface
Browse files Browse the repository at this point in the history
This patch adds the ability to set the LMC via a sysfs file as if the SM
sent a SubnSet(PortInfo) MAD.  It is useful for debugging when no SM is
running.

Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
  • Loading branch information
Ralph Campbell authored and Roland Dreier committed Oct 10, 2007
1 parent 6cff2fa commit 15cba26
Showing 1 changed file with 39 additions and 1 deletion.
40 changes: 39 additions & 1 deletion drivers/infiniband/hw/ipath/ipath_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,42 @@ static ssize_t show_boardversion(struct device *dev,
return scnprintf(buf, PAGE_SIZE, "%s", dd->ipath_boardversion);
}

static ssize_t show_lmc(struct device *dev,
struct device_attribute *attr,
char *buf)
{
struct ipath_devdata *dd = dev_get_drvdata(dev);

return scnprintf(buf, PAGE_SIZE, "%u\n", dd->ipath_lmc);
}

static ssize_t store_lmc(struct device *dev,
struct device_attribute *attr,
const char *buf,
size_t count)
{
struct ipath_devdata *dd = dev_get_drvdata(dev);
u16 lmc = 0;
int ret;

ret = ipath_parse_ushort(buf, &lmc);
if (ret < 0)
goto invalid;

if (lmc > 7) {
ret = -EINVAL;
goto invalid;
}

ipath_set_lid(dd, dd->ipath_lid, lmc);

goto bail;
invalid:
ipath_dev_err(dd, "attempt to set invalid LMC %u\n", lmc);
bail:
return ret;
}

static ssize_t show_lid(struct device *dev,
struct device_attribute *attr,
char *buf)
Expand Down Expand Up @@ -190,7 +226,7 @@ static ssize_t store_lid(struct device *dev,
goto invalid;
}

ipath_set_lid(dd, lid, 0);
ipath_set_lid(dd, lid, dd->ipath_lmc);

goto bail;
invalid:
Expand Down Expand Up @@ -648,6 +684,7 @@ static struct attribute_group driver_attr_group = {
};

static DEVICE_ATTR(guid, S_IWUSR | S_IRUGO, show_guid, store_guid);
static DEVICE_ATTR(lmc, S_IWUSR | S_IRUGO, show_lmc, store_lmc);
static DEVICE_ATTR(lid, S_IWUSR | S_IRUGO, show_lid, store_lid);
static DEVICE_ATTR(link_state, S_IWUSR, NULL, store_link_state);
static DEVICE_ATTR(mlid, S_IWUSR | S_IRUGO, show_mlid, store_mlid);
Expand All @@ -667,6 +704,7 @@ static DEVICE_ATTR(logged_errors, S_IRUGO, show_logged_errs, NULL);

static struct attribute *dev_attributes[] = {
&dev_attr_guid.attr,
&dev_attr_lmc.attr,
&dev_attr_lid.attr,
&dev_attr_link_state.attr,
&dev_attr_mlid.attr,
Expand Down

0 comments on commit 15cba26

Please sign in to comment.