|
@@ -64,8 +64,24 @@ ioat_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
|
|
|
return entry->show(&ioat_chan->dma_chan, page);
|
|
|
}
|
|
|
|
|
|
+static ssize_t
|
|
|
+ioat_attr_store(struct kobject *kobj, struct attribute *attr,
|
|
|
+const char *page, size_t count)
|
|
|
+{
|
|
|
+ struct ioat_sysfs_entry *entry;
|
|
|
+ struct ioatdma_chan *ioat_chan;
|
|
|
+
|
|
|
+ entry = container_of(attr, struct ioat_sysfs_entry, attr);
|
|
|
+ ioat_chan = container_of(kobj, struct ioatdma_chan, kobj);
|
|
|
+
|
|
|
+ if (!entry->store)
|
|
|
+ return -EIO;
|
|
|
+ return entry->store(&ioat_chan->dma_chan, page, count);
|
|
|
+}
|
|
|
+
|
|
|
const struct sysfs_ops ioat_sysfs_ops = {
|
|
|
.show = ioat_attr_show,
|
|
|
+ .store = ioat_attr_store,
|
|
|
};
|
|
|
|
|
|
void ioat_kobject_add(struct ioatdma_device *ioat_dma, struct kobj_type *type)
|
|
@@ -121,11 +137,37 @@ static ssize_t ring_active_show(struct dma_chan *c, char *page)
|
|
|
}
|
|
|
static struct ioat_sysfs_entry ring_active_attr = __ATTR_RO(ring_active);
|
|
|
|
|
|
+static ssize_t intr_coalesce_show(struct dma_chan *c, char *page)
|
|
|
+{
|
|
|
+ struct ioatdma_chan *ioat_chan = to_ioat_chan(c);
|
|
|
+
|
|
|
+ return sprintf(page, "%d\n", ioat_chan->intr_coalesce);
|
|
|
+}
|
|
|
+
|
|
|
+static ssize_t intr_coalesce_store(struct dma_chan *c, const char *page,
|
|
|
+size_t count)
|
|
|
+{
|
|
|
+ int intr_coalesce = 0;
|
|
|
+ struct ioatdma_chan *ioat_chan = to_ioat_chan(c);
|
|
|
+
|
|
|
+ if (sscanf(page, "%du", &intr_coalesce) != -1) {
|
|
|
+ if ((intr_coalesce < 0) ||
|
|
|
+ (intr_coalesce > IOAT_INTRDELAY_MASK))
|
|
|
+ return -EINVAL;
|
|
|
+ ioat_chan->intr_coalesce = intr_coalesce;
|
|
|
+ }
|
|
|
+
|
|
|
+ return count;
|
|
|
+}
|
|
|
+
|
|
|
+static struct ioat_sysfs_entry intr_coalesce_attr = __ATTR_RW(intr_coalesce);
|
|
|
+
|
|
|
static struct attribute *ioat_attrs[] = {
|
|
|
&ring_size_attr.attr,
|
|
|
&ring_active_attr.attr,
|
|
|
&ioat_cap_attr.attr,
|
|
|
&ioat_version_attr.attr,
|
|
|
+ &intr_coalesce_attr.attr,
|
|
|
NULL,
|
|
|
};
|
|
|
|