~ubuntu-branches/ubuntu/hardy/linux-backports-modules-2.6.24/hardy-security

« back to all changes in this revision

Viewing changes to updates/wireless/iwlwifi/mac80211/modified/net/mac80211/ieee80211_cfg.c

  • Committer: Bazaar Package Importer
  • Author(s): , Ben Collins
  • Date: 2008-04-02 06:59:04 UTC
  • Revision ID: james.westby@ubuntu.com-20080402065904-e5knh2gn2hms3xbb
Tags: 2.6.24-14.11
[Ben Collins]

* iwlwifi: Update to iwlwifi-1.2.25 and mac80211-10.0.4
  - LP: #200950
* ubuntu: Slight cleanups to module hiearchy and Makefiles
* mac80211: Enable LED triggers
* iwlwifi: Add LED trigger support (rx and tx only)
  - LP: #176090

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * mac80211 configuration hooks for cfg80211
 
3
 *
 
4
 * Copyright 2006       Johannes Berg <johannes@sipsolutions.net>
 
5
 *
 
6
 * This file is GPLv2 as found in COPYING.
 
7
 */
 
8
 
 
9
#include <linux/nl80211.h>
 
10
#include <linux/rtnetlink.h>
 
11
#include <net/cfg80211.h>
 
12
#include "ieee80211_i.h"
 
13
#include "ieee80211_cfg.h"
 
14
 
 
15
static int ieee80211_add_iface(struct wiphy *wiphy, char *name,
 
16
                               unsigned int type)
 
17
{
 
18
        struct ieee80211_local *local = wiphy_priv(wiphy);
 
19
        int itype;
 
20
 
 
21
        if (unlikely(local->reg_state != IEEE80211_DEV_REGISTERED))
 
22
                return -ENODEV;
 
23
 
 
24
        switch (type) {
 
25
        case NL80211_IFTYPE_UNSPECIFIED:
 
26
                itype = IEEE80211_IF_TYPE_STA;
 
27
                break;
 
28
        case NL80211_IFTYPE_ADHOC:
 
29
                itype = IEEE80211_IF_TYPE_IBSS;
 
30
                break;
 
31
        case NL80211_IFTYPE_STATION:
 
32
                itype = IEEE80211_IF_TYPE_STA;
 
33
                break;
 
34
        case NL80211_IFTYPE_MONITOR:
 
35
                itype = IEEE80211_IF_TYPE_MNTR;
 
36
                break;
 
37
        default:
 
38
                return -EINVAL;
 
39
        }
 
40
 
 
41
        return ieee80211_if_add(local->mdev, name, NULL, itype);
 
42
}
 
43
 
 
44
static int ieee80211_del_iface(struct wiphy *wiphy, int ifindex)
 
45
{
 
46
        struct ieee80211_local *local = wiphy_priv(wiphy);
 
47
        struct net_device *dev;
 
48
        char *name;
 
49
 
 
50
        if (unlikely(local->reg_state != IEEE80211_DEV_REGISTERED))
 
51
                return -ENODEV;
 
52
 
 
53
        dev = dev_get_by_index(&init_net, ifindex);
 
54
        if (!dev)
 
55
                return 0;
 
56
 
 
57
        name = dev->name;
 
58
        dev_put(dev);
 
59
 
 
60
        return ieee80211_if_remove(local->mdev, name, -1);
 
61
}
 
62
 
 
63
struct cfg80211_ops mac80211_config_ops = {
 
64
        .add_virtual_intf = ieee80211_add_iface,
 
65
        .del_virtual_intf = ieee80211_del_iface,
 
66
};