|
@@ -1069,9 +1069,52 @@ static ssize_t fallback_store(struct device *dev, struct device_attribute *attr,
|
|
return size;
|
|
return size;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static ssize_t queue_len_show(struct device *dev, struct device_attribute *attr,
|
|
|
|
+ char *buf)
|
|
|
|
+{
|
|
|
|
+ struct omap_aes_dev *dd = dev_get_drvdata(dev);
|
|
|
|
+
|
|
|
|
+ return sprintf(buf, "%d\n", dd->engine->queue.max_qlen);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static ssize_t queue_len_store(struct device *dev,
|
|
|
|
+ struct device_attribute *attr, const char *buf,
|
|
|
|
+ size_t size)
|
|
|
|
+{
|
|
|
|
+ struct omap_aes_dev *dd;
|
|
|
|
+ ssize_t status;
|
|
|
|
+ long value;
|
|
|
|
+ unsigned long flags;
|
|
|
|
+
|
|
|
|
+ status = kstrtol(buf, 0, &value);
|
|
|
|
+ if (status)
|
|
|
|
+ return status;
|
|
|
|
+
|
|
|
|
+ if (value < 1)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Changing the queue size in fly is safe, if size becomes smaller
|
|
|
|
+ * than current size, it will just not accept new entries until
|
|
|
|
+ * it has shrank enough.
|
|
|
|
+ */
|
|
|
|
+ spin_lock_bh(&list_lock);
|
|
|
|
+ list_for_each_entry(dd, &dev_list, list) {
|
|
|
|
+ spin_lock_irqsave(&dd->lock, flags);
|
|
|
|
+ dd->engine->queue.max_qlen = value;
|
|
|
|
+ dd->aead_queue.base.max_qlen = value;
|
|
|
|
+ spin_unlock_irqrestore(&dd->lock, flags);
|
|
|
|
+ }
|
|
|
|
+ spin_unlock_bh(&list_lock);
|
|
|
|
+
|
|
|
|
+ return size;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static DEVICE_ATTR_RW(queue_len);
|
|
static DEVICE_ATTR_RW(fallback);
|
|
static DEVICE_ATTR_RW(fallback);
|
|
|
|
|
|
static struct attribute *omap_aes_attrs[] = {
|
|
static struct attribute *omap_aes_attrs[] = {
|
|
|
|
+ &dev_attr_queue_len.attr,
|
|
&dev_attr_fallback.attr,
|
|
&dev_attr_fallback.attr,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
};
|