diff options
Diffstat (limited to 'net/wireless/sysfs.c')
-rw-r--r-- | net/wireless/sysfs.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/net/wireless/sysfs.c b/net/wireless/sysfs.c index 79a382877641..efe3c5c92b2d 100644 --- a/net/wireless/sysfs.c +++ b/net/wireless/sysfs.c | |||
@@ -31,7 +31,7 @@ static ssize_t name ## _show(struct device *dev, \ | |||
31 | return sprintf(buf, fmt "\n", dev_to_rdev(dev)->member); \ | 31 | return sprintf(buf, fmt "\n", dev_to_rdev(dev)->member); \ |
32 | } | 32 | } |
33 | 33 | ||
34 | SHOW_FMT(index, "%d", idx); | 34 | SHOW_FMT(index, "%d", wiphy_idx); |
35 | SHOW_FMT(macaddress, "%pM", wiphy.perm_addr); | 35 | SHOW_FMT(macaddress, "%pM", wiphy.perm_addr); |
36 | 36 | ||
37 | static struct device_attribute ieee80211_dev_attrs[] = { | 37 | static struct device_attribute ieee80211_dev_attrs[] = { |
@@ -55,6 +55,41 @@ static int wiphy_uevent(struct device *dev, struct kobj_uevent_env *env) | |||
55 | } | 55 | } |
56 | #endif | 56 | #endif |
57 | 57 | ||
58 | static int wiphy_suspend(struct device *dev, pm_message_t state) | ||
59 | { | ||
60 | struct cfg80211_registered_device *rdev = dev_to_rdev(dev); | ||
61 | int ret = 0; | ||
62 | |||
63 | rdev->suspend_at = get_seconds(); | ||
64 | |||
65 | if (rdev->ops->suspend) { | ||
66 | rtnl_lock(); | ||
67 | ret = rdev->ops->suspend(&rdev->wiphy); | ||
68 | rtnl_unlock(); | ||
69 | } | ||
70 | |||
71 | return ret; | ||
72 | } | ||
73 | |||
74 | static int wiphy_resume(struct device *dev) | ||
75 | { | ||
76 | struct cfg80211_registered_device *rdev = dev_to_rdev(dev); | ||
77 | int ret = 0; | ||
78 | |||
79 | /* Age scan results with time spent in suspend */ | ||
80 | spin_lock_bh(&rdev->bss_lock); | ||
81 | cfg80211_bss_age(rdev, get_seconds() - rdev->suspend_at); | ||
82 | spin_unlock_bh(&rdev->bss_lock); | ||
83 | |||
84 | if (rdev->ops->resume) { | ||
85 | rtnl_lock(); | ||
86 | ret = rdev->ops->resume(&rdev->wiphy); | ||
87 | rtnl_unlock(); | ||
88 | } | ||
89 | |||
90 | return ret; | ||
91 | } | ||
92 | |||
58 | struct class ieee80211_class = { | 93 | struct class ieee80211_class = { |
59 | .name = "ieee80211", | 94 | .name = "ieee80211", |
60 | .owner = THIS_MODULE, | 95 | .owner = THIS_MODULE, |
@@ -63,6 +98,8 @@ struct class ieee80211_class = { | |||
63 | #ifdef CONFIG_HOTPLUG | 98 | #ifdef CONFIG_HOTPLUG |
64 | .dev_uevent = wiphy_uevent, | 99 | .dev_uevent = wiphy_uevent, |
65 | #endif | 100 | #endif |
101 | .suspend = wiphy_suspend, | ||
102 | .resume = wiphy_resume, | ||
66 | }; | 103 | }; |
67 | 104 | ||
68 | int wiphy_sysfs_init(void) | 105 | int wiphy_sysfs_init(void) |