root/drivers/net/wimax/i2400m/sysfs.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. i2400m_idle_timeout_store

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Intel Wireless WiMAX Connection 2400m
   4  * Sysfs interfaces to show driver and device information
   5  *
   6  * Copyright (C) 2007 Intel Corporation <linux-wimax@intel.com>
   7  * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
   8  */
   9 
  10 #include <linux/netdevice.h>
  11 #include <linux/etherdevice.h>
  12 #include <linux/spinlock.h>
  13 #include <linux/device.h>
  14 #include "i2400m.h"
  15 
  16 
  17 #define D_SUBMODULE sysfs
  18 #include "debug-levels.h"
  19 
  20 
  21 /*
  22  * Set the idle timeout (msecs)
  23  *
  24  * FIXME: eventually this should be a common WiMAX stack method, but
  25  * would like to wait to see how other devices manage it.
  26  */
  27 static
  28 ssize_t i2400m_idle_timeout_store(struct device *dev,
  29                                   struct device_attribute *attr,
  30                                   const char *buf, size_t size)
  31 {
  32         ssize_t result;
  33         struct i2400m *i2400m = net_dev_to_i2400m(to_net_dev(dev));
  34         unsigned val;
  35 
  36         result = -EINVAL;
  37         if (sscanf(buf, "%u\n", &val) != 1)
  38                 goto error_no_unsigned;
  39         if (val != 0 && (val < 100 || val > 300000 || val % 100 != 0)) {
  40                 dev_err(dev, "idle_timeout: %u: invalid msecs specification; "
  41                         "valid values are 0, 100-300000 in 100 increments\n",
  42                         val);
  43                 goto error_bad_value;
  44         }
  45         result = i2400m_set_idle_timeout(i2400m, val);
  46         if (result >= 0)
  47                 result = size;
  48 error_no_unsigned:
  49 error_bad_value:
  50         return result;
  51 }
  52 
  53 static
  54 DEVICE_ATTR_WO(i2400m_idle_timeout);
  55 
  56 static
  57 struct attribute *i2400m_dev_attrs[] = {
  58         &dev_attr_i2400m_idle_timeout.attr,
  59         NULL,
  60 };
  61 
  62 struct attribute_group i2400m_dev_attr_group = {
  63         .name = NULL,           /* we want them in the same directory */
  64         .attrs = i2400m_dev_attrs,
  65 };

/* [<][>][^][v][top][bottom][index][help] */