cregit-Linux how code gets into the kernel

Release 4.11 drivers/net/wireless/ath/ath5k/sysfs.c


#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/device.h>
#include <linux/pci.h>

#include "ath5k.h"
#include "reg.h"


#define SIMPLE_SHOW_STORE(name, get, set)				\
static ssize_t ath5k_attr_show_##name(struct device *dev,               \
                        struct device_attribute *attr,                  \
                        char *buf)                                      \
{                                                                       \
        struct ieee80211_hw *hw = dev_get_drvdata(dev);                 \
        struct ath5k_hw *ah = hw->priv;                         \
        return snprintf(buf, PAGE_SIZE, "%d\n", get);                   \
}                                                                       \
                                                                        \
static ssize_t ath5k_attr_store_##name(struct device *dev,              \
                        struct device_attribute *attr,                  \
                        const char *buf, size_t count)                  \
{                                                                       \
        struct ieee80211_hw *hw = dev_get_drvdata(dev);                 \
        struct ath5k_hw *ah = hw->priv;                         \
        int val, ret;                                                   \
                                                                        \
        ret = kstrtoint(buf, 10, &val);                                 \
        if (ret < 0)                                                    \
                return ret;                                             \
        set(ah, val);                                           \
        return count;                                                   \
}                                                                       \
static DEVICE_ATTR(name, S_IRUGO | S_IWUSR,                             \
                   ath5k_attr_show_##name, ath5k_attr_store_##name)


#define SIMPLE_SHOW(name, get)						\
static ssize_t ath5k_attr_show_##name(struct device *dev,               \
                        struct device_attribute *attr,                  \
                        char *buf)                                      \
{                                                                       \
        struct ieee80211_hw *hw = dev_get_drvdata(dev);                 \
        struct ath5k_hw *ah = hw->priv;                         \
        return snprintf(buf, PAGE_SIZE, "%d\n", get);                   \
}                                                                       \
static DEVICE_ATTR(name, S_IRUGO, ath5k_attr_show_##name, NULL)

/*** ANI ***/

SIMPLE_SHOW_STORE(ani_mode, ah->ani_state.ani_mode, ath5k_ani_init);
SIMPLE_SHOW_STORE(noise_immunity_level, ah->ani_state.noise_imm_level,
			ath5k_ani_set_noise_immunity_level);
SIMPLE_SHOW_STORE(spur_level, ah->ani_state.spur_level,
			ath5k_ani_set_spur_immunity_level);
SIMPLE_SHOW_STORE(firstep_level, ah->ani_state.firstep_level,
			ath5k_ani_set_firstep_level);
SIMPLE_SHOW_STORE(ofdm_weak_signal_detection, ah->ani_state.ofdm_weak_sig,
			ath5k_ani_set_ofdm_weak_signal_detection);
SIMPLE_SHOW_STORE(cck_weak_signal_detection, ah->ani_state.cck_weak_sig,
			ath5k_ani_set_cck_weak_signal_detection);
SIMPLE_SHOW(spur_level_max, ah->ani_state.max_spur_level);


static ssize_t ath5k_attr_show_noise_immunity_level_max(struct device *dev, struct device_attribute *attr, char *buf) { return snprintf(buf, PAGE_SIZE, "%d\n", ATH5K_ANI_MAX_NOISE_IMM_LVL); }

Contributors

PersonTokensPropCommitsCommitProp
Bruno Randolf32100.00%1100.00%
Total32100.00%1100.00%

static DEVICE_ATTR(noise_immunity_level_max, S_IRUGO, ath5k_attr_show_noise_immunity_level_max, NULL);
static ssize_t ath5k_attr_show_firstep_level_max(struct device *dev, struct device_attribute *attr, char *buf) { return snprintf(buf, PAGE_SIZE, "%d\n", ATH5K_ANI_MAX_FIRSTEP_LVL); }

Contributors

PersonTokensPropCommitsCommitProp
Bruno Randolf32100.00%1100.00%
Total32100.00%1100.00%

static DEVICE_ATTR(firstep_level_max, S_IRUGO, ath5k_attr_show_firstep_level_max, NULL); static struct attribute *ath5k_sysfs_entries_ani[] = { &dev_attr_ani_mode.attr, &dev_attr_noise_immunity_level.attr, &dev_attr_spur_level.attr, &dev_attr_firstep_level.attr, &dev_attr_ofdm_weak_signal_detection.attr, &dev_attr_cck_weak_signal_detection.attr, &dev_attr_noise_immunity_level_max.attr, &dev_attr_spur_level_max.attr, &dev_attr_firstep_level_max.attr, NULL }; static struct attribute_group ath5k_attribute_group_ani = { .name = "ani", .attrs = ath5k_sysfs_entries_ani, }; /*** register / unregister ***/
int ath5k_sysfs_register(struct ath5k_hw *ah) { struct device *dev = ah->dev; int err; err = sysfs_create_group(&dev->kobj, &ath5k_attribute_group_ani); if (err) { ATH5K_ERR(ah, "failed to create sysfs group\n"); return err; } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Bruno Randolf5092.59%150.00%
Pavel Roskin47.41%150.00%
Total54100.00%2100.00%


void ath5k_sysfs_unregister(struct ath5k_hw *ah) { struct device *dev = ah->dev; sysfs_remove_group(&dev->kobj, &ath5k_attribute_group_ani); }

Contributors

PersonTokensPropCommitsCommitProp
Bruno Randolf2790.00%150.00%
Pavel Roskin310.00%150.00%
Total30100.00%2100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Bruno Randolf35493.90%133.33%
Pavel Roskin164.24%133.33%
Joe Perches71.86%133.33%
Total377100.00%3100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.