diff options
Diffstat (limited to 'drivers/net/wireless/libertas')
-rw-r--r-- | drivers/net/wireless/libertas/main.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/persistcfg.c | 30 |
2 files changed, 24 insertions, 21 deletions
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index 14d5d61cec4c..bd32ac0b4e07 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c | |||
@@ -297,9 +297,7 @@ static ssize_t lbs_rtap_set(struct device *dev, | |||
297 | lbs_add_rtap(priv); | 297 | lbs_add_rtap(priv); |
298 | } | 298 | } |
299 | priv->monitormode = monitor_mode; | 299 | priv->monitormode = monitor_mode; |
300 | } | 300 | } else { |
301 | |||
302 | else { | ||
303 | if (!priv->monitormode) | 301 | if (!priv->monitormode) |
304 | return strlen(buf); | 302 | return strlen(buf); |
305 | priv->monitormode = 0; | 303 | priv->monitormode = 0; |
@@ -1242,8 +1240,6 @@ int lbs_start_card(struct lbs_private *priv) | |||
1242 | lbs_pr_err("cannot register ethX device\n"); | 1240 | lbs_pr_err("cannot register ethX device\n"); |
1243 | goto done; | 1241 | goto done; |
1244 | } | 1242 | } |
1245 | if (device_create_file(&dev->dev, &dev_attr_lbs_rtap)) | ||
1246 | lbs_pr_err("cannot register lbs_rtap attribute\n"); | ||
1247 | 1243 | ||
1248 | lbs_update_channel(priv); | 1244 | lbs_update_channel(priv); |
1249 | 1245 | ||
@@ -1275,6 +1271,13 @@ int lbs_start_card(struct lbs_private *priv) | |||
1275 | 1271 | ||
1276 | if (device_create_file(&dev->dev, &dev_attr_lbs_mesh)) | 1272 | if (device_create_file(&dev->dev, &dev_attr_lbs_mesh)) |
1277 | lbs_pr_err("cannot register lbs_mesh attribute\n"); | 1273 | lbs_pr_err("cannot register lbs_mesh attribute\n"); |
1274 | |||
1275 | /* While rtap isn't related to mesh, only mesh-enabled | ||
1276 | * firmware implements the rtap functionality via | ||
1277 | * CMD_802_11_MONITOR_MODE. | ||
1278 | */ | ||
1279 | if (device_create_file(&dev->dev, &dev_attr_lbs_rtap)) | ||
1280 | lbs_pr_err("cannot register lbs_rtap attribute\n"); | ||
1278 | } | 1281 | } |
1279 | } | 1282 | } |
1280 | 1283 | ||
@@ -1306,9 +1309,9 @@ void lbs_stop_card(struct lbs_private *priv) | |||
1306 | netif_carrier_off(priv->dev); | 1309 | netif_carrier_off(priv->dev); |
1307 | 1310 | ||
1308 | lbs_debugfs_remove_one(priv); | 1311 | lbs_debugfs_remove_one(priv); |
1309 | device_remove_file(&dev->dev, &dev_attr_lbs_rtap); | ||
1310 | if (priv->mesh_tlv) { | 1312 | if (priv->mesh_tlv) { |
1311 | device_remove_file(&dev->dev, &dev_attr_lbs_mesh); | 1313 | device_remove_file(&dev->dev, &dev_attr_lbs_mesh); |
1314 | device_remove_file(&dev->dev, &dev_attr_lbs_rtap); | ||
1312 | } | 1315 | } |
1313 | 1316 | ||
1314 | /* Flush pending command nodes */ | 1317 | /* Flush pending command nodes */ |
diff --git a/drivers/net/wireless/libertas/persistcfg.c b/drivers/net/wireless/libertas/persistcfg.c index 6d0ff8decaf7..3309a9c3cfef 100644 --- a/drivers/net/wireless/libertas/persistcfg.c +++ b/drivers/net/wireless/libertas/persistcfg.c | |||
@@ -48,7 +48,7 @@ static ssize_t bootflag_get(struct device *dev, | |||
48 | if (ret) | 48 | if (ret) |
49 | return ret; | 49 | return ret; |
50 | 50 | ||
51 | return snprintf(buf, 12, "0x%x\n", le32_to_cpu(defs.bootflag)); | 51 | return snprintf(buf, 12, "%d\n", le32_to_cpu(defs.bootflag)); |
52 | } | 52 | } |
53 | 53 | ||
54 | /** | 54 | /** |
@@ -63,8 +63,8 @@ static ssize_t bootflag_set(struct device *dev, struct device_attribute *attr, | |||
63 | int ret; | 63 | int ret; |
64 | 64 | ||
65 | memset(&cmd, 0, sizeof(cmd)); | 65 | memset(&cmd, 0, sizeof(cmd)); |
66 | ret = sscanf(buf, "%x", &datum); | 66 | ret = sscanf(buf, "%d", &datum); |
67 | if (ret != 1) | 67 | if ((ret != 1) || (datum > 1)) |
68 | return -EINVAL; | 68 | return -EINVAL; |
69 | 69 | ||
70 | *((__le32 *)&cmd.data[0]) = cpu_to_le32(!!datum); | 70 | *((__le32 *)&cmd.data[0]) = cpu_to_le32(!!datum); |
@@ -91,7 +91,7 @@ static ssize_t boottime_get(struct device *dev, | |||
91 | if (ret) | 91 | if (ret) |
92 | return ret; | 92 | return ret; |
93 | 93 | ||
94 | return snprintf(buf, 12, "0x%x\n", defs.boottime); | 94 | return snprintf(buf, 12, "%d\n", defs.boottime); |
95 | } | 95 | } |
96 | 96 | ||
97 | /** | 97 | /** |
@@ -106,8 +106,8 @@ static ssize_t boottime_set(struct device *dev, | |||
106 | int ret; | 106 | int ret; |
107 | 107 | ||
108 | memset(&cmd, 0, sizeof(cmd)); | 108 | memset(&cmd, 0, sizeof(cmd)); |
109 | ret = sscanf(buf, "%x", &datum); | 109 | ret = sscanf(buf, "%d", &datum); |
110 | if (ret != 1) | 110 | if ((ret != 1) || (datum > 255)) |
111 | return -EINVAL; | 111 | return -EINVAL; |
112 | 112 | ||
113 | /* A too small boot time will result in the device booting into | 113 | /* A too small boot time will result in the device booting into |
@@ -143,7 +143,7 @@ static ssize_t channel_get(struct device *dev, | |||
143 | if (ret) | 143 | if (ret) |
144 | return ret; | 144 | return ret; |
145 | 145 | ||
146 | return snprintf(buf, 12, "0x%x\n", le16_to_cpu(defs.channel)); | 146 | return snprintf(buf, 12, "%d\n", le16_to_cpu(defs.channel)); |
147 | } | 147 | } |
148 | 148 | ||
149 | /** | 149 | /** |
@@ -154,11 +154,11 @@ static ssize_t channel_set(struct device *dev, struct device_attribute *attr, | |||
154 | { | 154 | { |
155 | struct lbs_private *priv = to_net_dev(dev)->priv; | 155 | struct lbs_private *priv = to_net_dev(dev)->priv; |
156 | struct cmd_ds_mesh_config cmd; | 156 | struct cmd_ds_mesh_config cmd; |
157 | uint16_t datum; | 157 | uint32_t datum; |
158 | int ret; | 158 | int ret; |
159 | 159 | ||
160 | memset(&cmd, 0, sizeof(cmd)); | 160 | memset(&cmd, 0, sizeof(cmd)); |
161 | ret = sscanf(buf, "%hx", &datum); | 161 | ret = sscanf(buf, "%d", &datum); |
162 | if (ret != 1 || datum < 1 || datum > 11) | 162 | if (ret != 1 || datum < 1 || datum > 11) |
163 | return -EINVAL; | 163 | return -EINVAL; |
164 | 164 | ||
@@ -274,8 +274,8 @@ static ssize_t protocol_id_set(struct device *dev, | |||
274 | int ret; | 274 | int ret; |
275 | 275 | ||
276 | memset(&cmd, 0, sizeof(cmd)); | 276 | memset(&cmd, 0, sizeof(cmd)); |
277 | ret = sscanf(buf, "%x", &datum); | 277 | ret = sscanf(buf, "%d", &datum); |
278 | if (ret != 1) | 278 | if ((ret != 1) || (datum > 255)) |
279 | return -EINVAL; | 279 | return -EINVAL; |
280 | 280 | ||
281 | /* fetch all other Information Element parameters */ | 281 | /* fetch all other Information Element parameters */ |
@@ -328,8 +328,8 @@ static ssize_t metric_id_set(struct device *dev, struct device_attribute *attr, | |||
328 | int ret; | 328 | int ret; |
329 | 329 | ||
330 | memset(&cmd, 0, sizeof(cmd)); | 330 | memset(&cmd, 0, sizeof(cmd)); |
331 | ret = sscanf(buf, "%x", &datum); | 331 | ret = sscanf(buf, "%d", &datum); |
332 | if (ret != 1) | 332 | if ((ret != 1) || (datum > 255)) |
333 | return -EINVAL; | 333 | return -EINVAL; |
334 | 334 | ||
335 | /* fetch all other Information Element parameters */ | 335 | /* fetch all other Information Element parameters */ |
@@ -382,8 +382,8 @@ static ssize_t capability_set(struct device *dev, struct device_attribute *attr, | |||
382 | int ret; | 382 | int ret; |
383 | 383 | ||
384 | memset(&cmd, 0, sizeof(cmd)); | 384 | memset(&cmd, 0, sizeof(cmd)); |
385 | ret = sscanf(buf, "%x", &datum); | 385 | ret = sscanf(buf, "%d", &datum); |
386 | if (ret != 1) | 386 | if ((ret != 1) || (datum > 255)) |
387 | return -EINVAL; | 387 | return -EINVAL; |
388 | 388 | ||
389 | /* fetch all other Information Element parameters */ | 389 | /* fetch all other Information Element parameters */ |