diff options
author | Arend van Spriel <arend@broadcom.com> | 2012-12-05 09:25:54 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-12-10 15:33:05 -0500 |
commit | d9cb2596503d937ccf68b83d3aff1056765a6b1e (patch) | |
tree | 0f385f591bed005428b860700ef4104cf7853fa3 | |
parent | 9e2ff36beae4bedbad2a69d458f9404f35fcb528 (diff) |
brcmfmac: rework bus interface
Rework the bus interface between common driver part and bus-specific
driver part. It prepares for adding tracing in bus-specific callback
functions.
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | 92 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/usb.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | 3 |
9 files changed, 111 insertions, 47 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd.h index 24bc4e3e162b..fd672bf53867 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd.h | |||
@@ -470,7 +470,6 @@ struct brcmf_pub { | |||
470 | struct brcmf_bus *bus_if; | 470 | struct brcmf_bus *bus_if; |
471 | struct brcmf_proto *prot; | 471 | struct brcmf_proto *prot; |
472 | struct brcmf_cfg80211_info *config; | 472 | struct brcmf_cfg80211_info *config; |
473 | struct device *dev; /* fullmac dongle device pointer */ | ||
474 | 473 | ||
475 | /* Internal brcmf items */ | 474 | /* Internal brcmf items */ |
476 | uint hdrlen; /* Total BRCMF header length (proto + bus) */ | 475 | uint hdrlen; /* Total BRCMF header length (proto + bus) */ |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h index b8f248797f62..dd38b78a9726 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | |||
@@ -43,36 +43,90 @@ struct brcmf_bus_dcmd { | |||
43 | struct list_head list; | 43 | struct list_head list; |
44 | }; | 44 | }; |
45 | 45 | ||
46 | /* interface structure between common and bus layer */ | 46 | /** |
47 | * struct brcmf_bus_ops - bus callback operations. | ||
48 | * | ||
49 | * @init: prepare for communication with dongle. | ||
50 | * @stop: clear pending frames, disable data flow. | ||
51 | * @txdata: send a data frame to the dongle (callee disposes skb). | ||
52 | * @txctl: transmit a control request message to dongle. | ||
53 | * @rxctl: receive a control response message from dongle. | ||
54 | * | ||
55 | * This structure provides an abstract interface towards the | ||
56 | * bus specific driver. For control messages to common driver | ||
57 | * will assure there is only one active transaction. | ||
58 | */ | ||
59 | struct brcmf_bus_ops { | ||
60 | int (*init)(struct device *dev); | ||
61 | void (*stop)(struct device *dev); | ||
62 | int (*txdata)(struct device *dev, struct sk_buff *skb); | ||
63 | int (*txctl)(struct device *dev, unsigned char *msg, uint len); | ||
64 | int (*rxctl)(struct device *dev, unsigned char *msg, uint len); | ||
65 | }; | ||
66 | |||
67 | /** | ||
68 | * struct brcmf_bus - interface structure between common and bus layer | ||
69 | * | ||
70 | * @bus_priv: pointer to private bus device. | ||
71 | * @dev: device pointer of bus device. | ||
72 | * @drvr: public driver information. | ||
73 | * @state: operational state of the bus interface. | ||
74 | * @maxctl: maximum size for rxctl request message. | ||
75 | * @drvr_up: indicates driver up/down status. | ||
76 | * @tx_realloc: number of tx packets realloced for headroom. | ||
77 | * @dstats: dongle-based statistical data. | ||
78 | * @align: alignment requirement for the bus. | ||
79 | * @dcmd_list: bus/device specific dongle initialization commands. | ||
80 | */ | ||
47 | struct brcmf_bus { | 81 | struct brcmf_bus { |
48 | union { | 82 | union { |
49 | struct brcmf_sdio_dev *sdio; | 83 | struct brcmf_sdio_dev *sdio; |
50 | struct brcmf_usbdev *usb; | 84 | struct brcmf_usbdev *usb; |
51 | } bus_priv; | 85 | } bus_priv; |
52 | struct brcmf_pub *drvr; /* pointer to driver pub structure brcmf_pub */ | 86 | struct device *dev; |
87 | struct brcmf_pub *drvr; | ||
53 | enum brcmf_bus_state state; | 88 | enum brcmf_bus_state state; |
54 | uint maxctl; /* Max size rxctl request from proto to bus */ | 89 | uint maxctl; |
55 | bool drvr_up; /* Status flag of driver up/down */ | 90 | bool drvr_up; |
56 | unsigned long tx_realloc; /* Tx packets realloced for headroom */ | 91 | unsigned long tx_realloc; |
57 | struct dngl_stats dstats; /* Stats for dongle-based data */ | 92 | struct dngl_stats dstats; |
58 | u8 align; /* bus alignment requirement */ | 93 | u8 align; |
59 | struct list_head dcmd_list; | 94 | struct list_head dcmd_list; |
60 | 95 | ||
61 | /* interface functions pointers */ | 96 | struct brcmf_bus_ops *ops; |
62 | /* Stop bus module: clear pending frames, disable data flow */ | ||
63 | void (*brcmf_bus_stop)(struct device *); | ||
64 | /* Initialize bus module: prepare for communication w/dongle */ | ||
65 | int (*brcmf_bus_init)(struct device *); | ||
66 | /* Send a data frame to the dongle. Callee disposes of txp. */ | ||
67 | int (*brcmf_bus_txdata)(struct device *, struct sk_buff *); | ||
68 | /* Send/receive a control message to/from the dongle. | ||
69 | * Expects caller to enforce a single outstanding transaction. | ||
70 | */ | ||
71 | int (*brcmf_bus_txctl)(struct device *, unsigned char *, uint); | ||
72 | int (*brcmf_bus_rxctl)(struct device *, unsigned char *, uint); | ||
73 | }; | 97 | }; |
74 | 98 | ||
75 | /* | 99 | /* |
100 | * callback wrappers | ||
101 | */ | ||
102 | static inline int brcmf_bus_init(struct brcmf_bus *bus) | ||
103 | { | ||
104 | return bus->ops->init(bus->dev); | ||
105 | } | ||
106 | |||
107 | static inline void brcmf_bus_stop(struct brcmf_bus *bus) | ||
108 | { | ||
109 | bus->ops->stop(bus->dev); | ||
110 | } | ||
111 | |||
112 | static inline int brcmf_bus_txdata(struct brcmf_bus *bus, struct sk_buff *skb) | ||
113 | { | ||
114 | return bus->ops->txdata(bus->dev, skb); | ||
115 | } | ||
116 | |||
117 | static inline | ||
118 | int brcmf_bus_txctl(struct brcmf_bus *bus, unsigned char *msg, uint len) | ||
119 | { | ||
120 | return bus->ops->txctl(bus->dev, msg, len); | ||
121 | } | ||
122 | |||
123 | static inline | ||
124 | int brcmf_bus_rxctl(struct brcmf_bus *bus, unsigned char *msg, uint len) | ||
125 | { | ||
126 | return bus->ops->rxctl(bus->dev, msg, len); | ||
127 | } | ||
128 | |||
129 | /* | ||
76 | * interface functions from common layer | 130 | * interface functions from common layer |
77 | */ | 131 | */ |
78 | 132 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c index 87536d38a4ca..b123d25366cd 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c | |||
@@ -117,9 +117,7 @@ static int brcmf_proto_cdc_msg(struct brcmf_pub *drvr) | |||
117 | len = CDC_MAX_MSG_SIZE; | 117 | len = CDC_MAX_MSG_SIZE; |
118 | 118 | ||
119 | /* Send request */ | 119 | /* Send request */ |
120 | return drvr->bus_if->brcmf_bus_txctl(drvr->dev, | 120 | return brcmf_bus_txctl(drvr->bus_if, (unsigned char *)&prot->msg, len); |
121 | (unsigned char *)&prot->msg, | ||
122 | len); | ||
123 | } | 121 | } |
124 | 122 | ||
125 | static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) | 123 | static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) |
@@ -128,11 +126,10 @@ static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) | |||
128 | struct brcmf_proto *prot = drvr->prot; | 126 | struct brcmf_proto *prot = drvr->prot; |
129 | 127 | ||
130 | brcmf_dbg(TRACE, "Enter\n"); | 128 | brcmf_dbg(TRACE, "Enter\n"); |
131 | 129 | len += sizeof(struct brcmf_proto_cdc_dcmd); | |
132 | do { | 130 | do { |
133 | ret = drvr->bus_if->brcmf_bus_rxctl(drvr->dev, | 131 | ret = brcmf_bus_rxctl(drvr->bus_if, (unsigned char *)&prot->msg, |
134 | (unsigned char *)&prot->msg, | 132 | len); |
135 | len + sizeof(struct brcmf_proto_cdc_dcmd)); | ||
136 | if (ret < 0) | 133 | if (ret < 0) |
137 | break; | 134 | break; |
138 | } while (CDC_DCMD_ID(le32_to_cpu(prot->msg.flags)) != id); | 135 | } while (CDC_DCMD_ID(le32_to_cpu(prot->msg.flags)) != id); |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c index 7e58e8ce9aba..57671eddf79d 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <brcmu_wifi.h> | 20 | #include <brcmu_wifi.h> |
21 | #include <brcmu_utils.h> | 21 | #include <brcmu_utils.h> |
22 | #include "dhd.h" | 22 | #include "dhd.h" |
23 | #include "dhd_bus.h" | ||
23 | #include "dhd_dbg.h" | 24 | #include "dhd_dbg.h" |
24 | 25 | ||
25 | static struct dentry *root_folder; | 26 | static struct dentry *root_folder; |
@@ -42,10 +43,12 @@ void brcmf_debugfs_exit(void) | |||
42 | 43 | ||
43 | int brcmf_debugfs_attach(struct brcmf_pub *drvr) | 44 | int brcmf_debugfs_attach(struct brcmf_pub *drvr) |
44 | { | 45 | { |
46 | struct device *dev = drvr->bus_if->dev; | ||
47 | |||
45 | if (!root_folder) | 48 | if (!root_folder) |
46 | return -ENODEV; | 49 | return -ENODEV; |
47 | 50 | ||
48 | drvr->dbgfs_dir = debugfs_create_dir(dev_name(drvr->dev), root_folder); | 51 | drvr->dbgfs_dir = debugfs_create_dir(dev_name(dev), root_folder); |
49 | return PTR_RET(drvr->dbgfs_dir); | 52 | return PTR_RET(drvr->dbgfs_dir); |
50 | } | 53 | } |
51 | 54 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c index b6c86b046c15..421b49c95fb0 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | |||
@@ -219,7 +219,7 @@ static int brcmf_netdev_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
219 | brcmf_proto_hdrpush(drvr, ifp->idx, skb); | 219 | brcmf_proto_hdrpush(drvr, ifp->idx, skb); |
220 | 220 | ||
221 | /* Use bus module to send data frame */ | 221 | /* Use bus module to send data frame */ |
222 | ret = drvr->bus_if->brcmf_bus_txdata(drvr->dev, skb); | 222 | ret = brcmf_bus_txdata(drvr->bus_if, skb); |
223 | 223 | ||
224 | done: | 224 | done: |
225 | if (ret) | 225 | if (ret) |
@@ -397,7 +397,7 @@ static void brcmf_ethtool_get_drvinfo(struct net_device *ndev, | |||
397 | 397 | ||
398 | sprintf(info->driver, KBUILD_MODNAME); | 398 | sprintf(info->driver, KBUILD_MODNAME); |
399 | sprintf(info->version, "%lu", drvr->drv_version); | 399 | sprintf(info->version, "%lu", drvr->drv_version); |
400 | sprintf(info->bus_info, "%s", dev_name(drvr->dev)); | 400 | sprintf(info->bus_info, "%s", dev_name(drvr->bus_if->dev)); |
401 | } | 401 | } |
402 | 402 | ||
403 | static const struct ethtool_ops brcmf_ethtool_ops = { | 403 | static const struct ethtool_ops brcmf_ethtool_ops = { |
@@ -753,7 +753,6 @@ int brcmf_attach(uint bus_hdrlen, struct device *dev) | |||
753 | drvr->hdrlen = bus_hdrlen; | 753 | drvr->hdrlen = bus_hdrlen; |
754 | drvr->bus_if = dev_get_drvdata(dev); | 754 | drvr->bus_if = dev_get_drvdata(dev); |
755 | drvr->bus_if->drvr = drvr; | 755 | drvr->bus_if->drvr = drvr; |
756 | drvr->dev = dev; | ||
757 | 756 | ||
758 | /* create device debugfs folder */ | 757 | /* create device debugfs folder */ |
759 | brcmf_debugfs_attach(drvr); | 758 | brcmf_debugfs_attach(drvr); |
@@ -790,7 +789,7 @@ int brcmf_bus_start(struct device *dev) | |||
790 | brcmf_dbg(TRACE, "\n"); | 789 | brcmf_dbg(TRACE, "\n"); |
791 | 790 | ||
792 | /* Bring up the bus */ | 791 | /* Bring up the bus */ |
793 | ret = bus_if->brcmf_bus_init(dev); | 792 | ret = brcmf_bus_init(bus_if); |
794 | if (ret != 0) { | 793 | if (ret != 0) { |
795 | brcmf_dbg(ERROR, "brcmf_sdbrcm_bus_init failed %d\n", ret); | 794 | brcmf_dbg(ERROR, "brcmf_sdbrcm_bus_init failed %d\n", ret); |
796 | return ret; | 795 | return ret; |
@@ -809,7 +808,7 @@ int brcmf_bus_start(struct device *dev) | |||
809 | if (ret < 0) | 808 | if (ret < 0) |
810 | goto fail; | 809 | goto fail; |
811 | 810 | ||
812 | drvr->config = brcmf_cfg80211_attach(drvr); | 811 | drvr->config = brcmf_cfg80211_attach(drvr, bus_if->dev); |
813 | if (drvr->config == NULL) { | 812 | if (drvr->config == NULL) { |
814 | ret = -ENOMEM; | 813 | ret = -ENOMEM; |
815 | goto fail; | 814 | goto fail; |
@@ -842,7 +841,7 @@ static void brcmf_bus_detach(struct brcmf_pub *drvr) | |||
842 | brcmf_proto_stop(drvr); | 841 | brcmf_proto_stop(drvr); |
843 | 842 | ||
844 | /* Stop the bus module */ | 843 | /* Stop the bus module */ |
845 | drvr->bus_if->brcmf_bus_stop(drvr->dev); | 844 | brcmf_bus_stop(drvr->bus_if); |
846 | } | 845 | } |
847 | } | 846 | } |
848 | 847 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 45725454714d..f2293bbb3c9b 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | |||
@@ -3883,6 +3883,14 @@ static void brcmf_sdbrcm_release(struct brcmf_sdio *bus) | |||
3883 | brcmf_dbg(TRACE, "Disconnected\n"); | 3883 | brcmf_dbg(TRACE, "Disconnected\n"); |
3884 | } | 3884 | } |
3885 | 3885 | ||
3886 | static struct brcmf_bus_ops brcmf_sdio_bus_ops = { | ||
3887 | .stop = brcmf_sdbrcm_bus_stop, | ||
3888 | .init = brcmf_sdbrcm_bus_init, | ||
3889 | .txdata = brcmf_sdbrcm_bus_txdata, | ||
3890 | .txctl = brcmf_sdbrcm_bus_txctl, | ||
3891 | .rxctl = brcmf_sdbrcm_bus_rxctl, | ||
3892 | }; | ||
3893 | |||
3886 | void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev) | 3894 | void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev) |
3887 | { | 3895 | { |
3888 | int ret; | 3896 | int ret; |
@@ -3946,11 +3954,9 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev) | |||
3946 | spin_lock_init(&bus->dpc_tl_lock); | 3954 | spin_lock_init(&bus->dpc_tl_lock); |
3947 | 3955 | ||
3948 | /* Assign bus interface call back */ | 3956 | /* Assign bus interface call back */ |
3949 | bus->sdiodev->bus_if->brcmf_bus_stop = brcmf_sdbrcm_bus_stop; | 3957 | bus->sdiodev->bus_if->dev = bus->sdiodev->dev; |
3950 | bus->sdiodev->bus_if->brcmf_bus_init = brcmf_sdbrcm_bus_init; | 3958 | bus->sdiodev->bus_if->ops = &brcmf_sdio_bus_ops; |
3951 | bus->sdiodev->bus_if->brcmf_bus_txdata = brcmf_sdbrcm_bus_txdata; | 3959 | |
3952 | bus->sdiodev->bus_if->brcmf_bus_txctl = brcmf_sdbrcm_bus_txctl; | ||
3953 | bus->sdiodev->bus_if->brcmf_bus_rxctl = brcmf_sdbrcm_bus_rxctl; | ||
3954 | /* Attach to the brcmf/OS/network interface */ | 3960 | /* Attach to the brcmf/OS/network interface */ |
3955 | ret = brcmf_attach(SDPCM_RESERVE, bus->sdiodev->dev); | 3961 | ret = brcmf_attach(SDPCM_RESERVE, bus->sdiodev->dev); |
3956 | if (ret != 0) { | 3962 | if (ret != 0) { |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/brcm80211/brcmfmac/usb.c index 39a5baa92f21..5eb7bf861848 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c | |||
@@ -1228,6 +1228,14 @@ error: | |||
1228 | return NULL; | 1228 | return NULL; |
1229 | } | 1229 | } |
1230 | 1230 | ||
1231 | static struct brcmf_bus_ops brcmf_usb_bus_ops = { | ||
1232 | .txdata = brcmf_usb_tx, | ||
1233 | .init = brcmf_usb_up, | ||
1234 | .stop = brcmf_usb_down, | ||
1235 | .txctl = brcmf_usb_tx_ctlpkt, | ||
1236 | .rxctl = brcmf_usb_rx_ctlpkt, | ||
1237 | }; | ||
1238 | |||
1231 | static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo) | 1239 | static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo) |
1232 | { | 1240 | { |
1233 | struct brcmf_bus *bus = NULL; | 1241 | struct brcmf_bus *bus = NULL; |
@@ -1246,14 +1254,11 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo) | |||
1246 | goto fail; | 1254 | goto fail; |
1247 | } | 1255 | } |
1248 | 1256 | ||
1257 | bus->dev = dev; | ||
1249 | bus_pub->bus = bus; | 1258 | bus_pub->bus = bus; |
1250 | bus->brcmf_bus_txdata = brcmf_usb_tx; | ||
1251 | bus->brcmf_bus_init = brcmf_usb_up; | ||
1252 | bus->brcmf_bus_stop = brcmf_usb_down; | ||
1253 | bus->brcmf_bus_txctl = brcmf_usb_tx_ctlpkt; | ||
1254 | bus->brcmf_bus_rxctl = brcmf_usb_rx_ctlpkt; | ||
1255 | bus->bus_priv.usb = bus_pub; | 1259 | bus->bus_priv.usb = bus_pub; |
1256 | dev_set_drvdata(dev, bus); | 1260 | dev_set_drvdata(dev, bus); |
1261 | bus->ops = &brcmf_usb_bus_ops; | ||
1257 | 1262 | ||
1258 | /* Attach to the common driver interface */ | 1263 | /* Attach to the common driver interface */ |
1259 | ret = brcmf_attach(0, dev); | 1264 | ret = brcmf_attach(0, dev); |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index 96bc349d7f6c..4ddd58f1e9fe 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
@@ -4271,10 +4271,10 @@ static void wl_deinit_priv(struct brcmf_cfg80211_info *cfg) | |||
4271 | brcmf_deinit_priv_mem(cfg); | 4271 | brcmf_deinit_priv_mem(cfg); |
4272 | } | 4272 | } |
4273 | 4273 | ||
4274 | struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr) | 4274 | struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, |
4275 | struct device *busdev) | ||
4275 | { | 4276 | { |
4276 | struct net_device *ndev = drvr->iflist[0]->ndev; | 4277 | struct net_device *ndev = drvr->iflist[0]->ndev; |
4277 | struct device *busdev = drvr->dev; | ||
4278 | struct brcmf_cfg80211_info *cfg; | 4278 | struct brcmf_cfg80211_info *cfg; |
4279 | struct wiphy *wiphy; | 4279 | struct wiphy *wiphy; |
4280 | struct brcmf_cfg80211_vif *vif; | 4280 | struct brcmf_cfg80211_vif *vif; |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h index d60de187e7d9..c163e4dea972 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | |||
@@ -450,7 +450,8 @@ brcmf_cfg80211_connect_info *cfg_to_conn(struct brcmf_cfg80211_info *cfg) | |||
450 | return &cfg->conn_info; | 450 | return &cfg->conn_info; |
451 | } | 451 | } |
452 | 452 | ||
453 | struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr); | 453 | struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, |
454 | struct device *busdev); | ||
454 | void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg); | 455 | void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg); |
455 | s32 brcmf_cfg80211_up(struct net_device *ndev); | 456 | s32 brcmf_cfg80211_up(struct net_device *ndev); |
456 | s32 brcmf_cfg80211_down(struct net_device *ndev); | 457 | s32 brcmf_cfg80211_down(struct net_device *ndev); |