aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/wext.c
diff options
context:
space:
mode:
authorLuis Carlos Cobo Rus <luisca@cozybit.com>2007-05-25 23:08:34 -0400
committerJohn W. Linville <linville@tuxdriver.com>2007-06-11 14:28:44 -0400
commitf5e05b697d2105e5c3f9d837046a8c33ee5b7e14 (patch)
treeaed9aa4f8de574367c95ad420a8fd0a78ec9599f /drivers/net/wireless/libertas/wext.c
parent0a0d08aca5d0a77da4b66de289acfd891a3e72e1 (diff)
[PATCH] libertas: split wext for eth and msh
Separate wireless handlers of mshX and ethX. ethX remains as before. For mshX, it has been disabled set/get essid, wap and set mode. Get mode always returns "Repeater" and by now we use the Nickname to show if the mesh is active ("Mesh") or not (empty). The rest remains as before. Signed-off-by: Luis Carlos Cobo Rus <luisca@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/wext.c')
-rw-r--r--drivers/net/wireless/libertas/wext.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index 2edc10c3327..e91de104ad6 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -372,6 +372,30 @@ static int wlan_get_nick(struct net_device *dev, struct iw_request_info *info,
372 return 0; 372 return 0;
373} 373}
374 374
375static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info,
376 struct iw_point *dwrq, char *extra)
377{
378 wlan_private *priv = dev->priv;
379 wlan_adapter *adapter = priv->adapter;
380
381 lbs_deb_enter(LBS_DEB_WEXT);
382
383 /* Use nickname to indicate that mesh is on */
384
385 if (adapter->connect_status == libertas_connected) {
386 strncpy(extra, "Mesh", 12);
387 extra[12] = '\0';
388 dwrq->length = strlen(extra) + 1;
389 }
390
391 else {
392 extra[0] = '\0';
393 dwrq->length = 1 ;
394 }
395
396 lbs_deb_leave(LBS_DEB_WEXT);
397 return 0;
398}
375static int wlan_set_rts(struct net_device *dev, struct iw_request_info *info, 399static int wlan_set_rts(struct net_device *dev, struct iw_request_info *info,
376 struct iw_param *vwrq, char *extra) 400 struct iw_param *vwrq, char *extra)
377{ 401{
@@ -492,6 +516,18 @@ static int wlan_get_mode(struct net_device *dev,
492 return 0; 516 return 0;
493} 517}
494 518
519static int mesh_wlan_get_mode(struct net_device *dev,
520 struct iw_request_info *info, u32 * uwrq,
521 char *extra)
522{
523 lbs_deb_enter(LBS_DEB_WEXT);
524
525 *uwrq = IW_MODE_REPEAT ;
526
527 lbs_deb_leave(LBS_DEB_WEXT);
528 return 0;
529}
530
495static int wlan_get_txpow(struct net_device *dev, 531static int wlan_get_txpow(struct net_device *dev,
496 struct iw_request_info *info, 532 struct iw_request_info *info,
497 struct iw_param *vwrq, char *extra) 533 struct iw_param *vwrq, char *extra)
@@ -2342,6 +2378,63 @@ static const iw_handler wlan_handler[] = {
2342 (iw_handler) NULL, /* SIOCSIWPMKSA */ 2378 (iw_handler) NULL, /* SIOCSIWPMKSA */
2343}; 2379};
2344 2380
2381static const iw_handler mesh_wlan_handler[] = {
2382 (iw_handler) NULL, /* SIOCSIWCOMMIT */
2383 (iw_handler) wlan_get_name, /* SIOCGIWNAME */
2384 (iw_handler) NULL, /* SIOCSIWNWID */
2385 (iw_handler) NULL, /* SIOCGIWNWID */
2386 (iw_handler) wlan_set_freq, /* SIOCSIWFREQ */
2387 (iw_handler) wlan_get_freq, /* SIOCGIWFREQ */
2388 (iw_handler) NULL, /* SIOCSIWMODE */
2389 (iw_handler) mesh_wlan_get_mode, /* SIOCGIWMODE */
2390 (iw_handler) NULL, /* SIOCSIWSENS */
2391 (iw_handler) NULL, /* SIOCGIWSENS */
2392 (iw_handler) NULL, /* SIOCSIWRANGE */
2393 (iw_handler) wlan_get_range, /* SIOCGIWRANGE */
2394 (iw_handler) NULL, /* SIOCSIWPRIV */
2395 (iw_handler) NULL, /* SIOCGIWPRIV */
2396 (iw_handler) NULL, /* SIOCSIWSTATS */
2397 (iw_handler) NULL, /* SIOCGIWSTATS */
2398 iw_handler_set_spy, /* SIOCSIWSPY */
2399 iw_handler_get_spy, /* SIOCGIWSPY */
2400 iw_handler_set_thrspy, /* SIOCSIWTHRSPY */
2401 iw_handler_get_thrspy, /* SIOCGIWTHRSPY */
2402 (iw_handler) NULL, /* SIOCSIWAP */
2403 (iw_handler) NULL, /* SIOCGIWAP */
2404 (iw_handler) NULL, /* SIOCSIWMLME */
2405 (iw_handler) NULL, /* SIOCGIWAPLIST - deprecated */
2406 (iw_handler) libertas_set_scan, /* SIOCSIWSCAN */
2407 (iw_handler) libertas_get_scan, /* SIOCGIWSCAN */
2408 (iw_handler) NULL, /* SIOCSIWESSID */
2409 (iw_handler) NULL, /* SIOCGIWESSID */
2410 (iw_handler) NULL, /* SIOCSIWNICKN */
2411 (iw_handler) mesh_get_nick, /* SIOCGIWNICKN */
2412 (iw_handler) NULL, /* -- hole -- */
2413 (iw_handler) NULL, /* -- hole -- */
2414 (iw_handler) wlan_set_rate, /* SIOCSIWRATE */
2415 (iw_handler) wlan_get_rate, /* SIOCGIWRATE */
2416 (iw_handler) wlan_set_rts, /* SIOCSIWRTS */
2417 (iw_handler) wlan_get_rts, /* SIOCGIWRTS */
2418 (iw_handler) wlan_set_frag, /* SIOCSIWFRAG */
2419 (iw_handler) wlan_get_frag, /* SIOCGIWFRAG */
2420 (iw_handler) wlan_set_txpow, /* SIOCSIWTXPOW */
2421 (iw_handler) wlan_get_txpow, /* SIOCGIWTXPOW */
2422 (iw_handler) wlan_set_retry, /* SIOCSIWRETRY */
2423 (iw_handler) wlan_get_retry, /* SIOCGIWRETRY */
2424 (iw_handler) wlan_set_encode, /* SIOCSIWENCODE */
2425 (iw_handler) wlan_get_encode, /* SIOCGIWENCODE */
2426 (iw_handler) wlan_set_power, /* SIOCSIWPOWER */
2427 (iw_handler) wlan_get_power, /* SIOCGIWPOWER */
2428 (iw_handler) NULL, /* -- hole -- */
2429 (iw_handler) NULL, /* -- hole -- */
2430 (iw_handler) wlan_set_genie, /* SIOCSIWGENIE */
2431 (iw_handler) wlan_get_genie, /* SIOCGIWGENIE */
2432 (iw_handler) wlan_set_auth, /* SIOCSIWAUTH */
2433 (iw_handler) wlan_get_auth, /* SIOCGIWAUTH */
2434 (iw_handler) wlan_set_encodeext,/* SIOCSIWENCODEEXT */
2435 (iw_handler) wlan_get_encodeext,/* SIOCGIWENCODEEXT */
2436 (iw_handler) NULL, /* SIOCSIWPMKSA */
2437};
2345struct iw_handler_def libertas_handler_def = { 2438struct iw_handler_def libertas_handler_def = {
2346 .num_standard = sizeof(wlan_handler) / sizeof(iw_handler), 2439 .num_standard = sizeof(wlan_handler) / sizeof(iw_handler),
2347 .num_private = sizeof(wlan_private_handler) / sizeof(iw_handler), 2440 .num_private = sizeof(wlan_private_handler) / sizeof(iw_handler),
@@ -2352,3 +2445,14 @@ struct iw_handler_def libertas_handler_def = {
2352 .private_args = (struct iw_priv_args *)wlan_private_args, 2445 .private_args = (struct iw_priv_args *)wlan_private_args,
2353 .get_wireless_stats = wlan_get_wireless_stats, 2446 .get_wireless_stats = wlan_get_wireless_stats,
2354}; 2447};
2448
2449struct iw_handler_def mesh_handler_def = {
2450 .num_standard = sizeof(mesh_wlan_handler) / sizeof(iw_handler),
2451 .num_private = sizeof(wlan_private_handler) / sizeof(iw_handler),
2452 .num_private_args = sizeof(wlan_private_args) /
2453 sizeof(struct iw_priv_args),
2454 .standard = (iw_handler *) mesh_wlan_handler,
2455 .private = (iw_handler *) wlan_private_handler,
2456 .private_args = (struct iw_priv_args *)wlan_private_args,
2457 .get_wireless_stats = wlan_get_wireless_stats,
2458};