git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
brcmfmac: start netif queues only when setup is completed successful
[pandora-kernel.git]
/
drivers
/
net
/
wireless
/
brcm80211
/
brcmfmac
/
dhd_linux.c
diff --git
a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index
64e9cff
..
f4eeaa1
100644
(file)
--- a/
drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/
drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@
-769,7
+769,6
@@
static int brcmf_netdev_open(struct net_device *ndev)
struct brcmf_pub *drvr = ifp->drvr;
struct brcmf_bus *bus_if = drvr->bus_if;
u32 toe_ol;
struct brcmf_pub *drvr = ifp->drvr;
struct brcmf_bus *bus_if = drvr->bus_if;
u32 toe_ol;
- s32 ret = 0;
brcmf_dbg(TRACE, "Enter, idx=%d\n", ifp->bssidx);
brcmf_dbg(TRACE, "Enter, idx=%d\n", ifp->bssidx);
@@
-788,14
+787,14
@@
static int brcmf_netdev_open(struct net_device *ndev)
else
ndev->features &= ~NETIF_F_IP_CSUM;
else
ndev->features &= ~NETIF_F_IP_CSUM;
- /* Allow transmit calls */
- netif_start_queue(ndev);
if (brcmf_cfg80211_up(ndev)) {
brcmf_err("failed to bring up cfg80211\n");
if (brcmf_cfg80211_up(ndev)) {
brcmf_err("failed to bring up cfg80211\n");
- return -
1
;
+ return -
EIO
;
}
}
- return ret;
+ /* Allow transmit calls */
+ netif_start_queue(ndev);
+ return 0;
}
static const struct net_device_ops brcmf_netdev_ops_pri = {
}
static const struct net_device_ops brcmf_netdev_ops_pri = {
@@
-1016,7
+1015,7
@@
void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
}
}
}
}
-int brcmf_attach(
uint bus_hdrlen,
struct device *dev)
+int brcmf_attach(struct device *dev)
{
struct brcmf_pub *drvr = NULL;
int ret = 0;
{
struct brcmf_pub *drvr = NULL;
int ret = 0;
@@
-1031,7
+1030,7
@@
int brcmf_attach(uint bus_hdrlen, struct device *dev)
mutex_init(&drvr->proto_block);
/* Link to bus module */
mutex_init(&drvr->proto_block);
/* Link to bus module */
- drvr->hdrlen =
bus_hdrlen
;
+ drvr->hdrlen =
0
;
drvr->bus_if = dev_get_drvdata(dev);
drvr->bus_if->drvr = drvr;
drvr->bus_if = dev_get_drvdata(dev);
drvr->bus_if->drvr = drvr;
@@
-1048,8
+1047,6
@@
int brcmf_attach(uint bus_hdrlen, struct device *dev)
/* attach firmware event handler */
brcmf_fweh_attach(drvr);
/* attach firmware event handler */
brcmf_fweh_attach(drvr);
- INIT_LIST_HEAD(&drvr->bus_if->dcmd_list);
-
return ret;
fail:
return ret;
fail:
@@
-1138,6
+1135,16
@@
fail:
return 0;
}
return 0;
}
+void brcmf_bus_add_txhdrlen(struct device *dev, uint len)
+{
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+ struct brcmf_pub *drvr = bus_if->drvr;
+
+ if (drvr) {
+ drvr->hdrlen += len;
+ }
+}
+
static void brcmf_bus_detach(struct brcmf_pub *drvr)
{
brcmf_dbg(TRACE, "Enter\n");
static void brcmf_bus_detach(struct brcmf_pub *drvr)
{
brcmf_dbg(TRACE, "Enter\n");
@@
-1196,6
+1203,14
@@
void brcmf_detach(struct device *dev)
kfree(drvr);
}
kfree(drvr);
}
+s32 brcmf_iovar_data_set(struct device *dev, char *name, void *data, u32 len)
+{
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+ struct brcmf_if *ifp = bus_if->drvr->iflist[0];
+
+ return brcmf_fil_iovar_data_set(ifp, name, data, len);
+}
+
static int brcmf_get_pend_8021x_cnt(struct brcmf_if *ifp)
{
return atomic_read(&ifp->pend_8021x_cnt);
static int brcmf_get_pend_8021x_cnt(struct brcmf_if *ifp)
{
return atomic_read(&ifp->pend_8021x_cnt);