diff options
author | Franky Lin <frankyl@broadcom.com> | 2011-12-16 21:37:16 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-12-19 14:40:47 -0500 |
commit | fcf094f414f9e9c088f6c2aa9e19a59f7b41e1f5 (patch) | |
tree | 694594dea83a93724ac6b4cb3ff8e346483a1daa /drivers | |
parent | b9692d17e842fadb8c18faf24f550db80886763e (diff) |
brcm80211: fmac: abstract ctrl frames interface function pointers
Abstract bus layer brcmf_bus_txctl/brcmf_bus_rxctl function
pointers for common layer. This patch is part of the fullmac bus
interface refactoring.
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | 17 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 6 |
3 files changed, 13 insertions, 17 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h index d5e0ec36d202..ad9be2410b59 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | |||
@@ -55,6 +55,11 @@ struct brcmf_bus { | |||
55 | int (*brcmf_bus_init)(struct device *); | 55 | int (*brcmf_bus_init)(struct device *); |
56 | /* Send a data frame to the dongle. Callee disposes of txp. */ | 56 | /* Send a data frame to the dongle. Callee disposes of txp. */ |
57 | int (*brcmf_bus_txdata)(struct device *, struct sk_buff *); | 57 | int (*brcmf_bus_txdata)(struct device *, struct sk_buff *); |
58 | /* Send/receive a control message to/from the dongle. | ||
59 | * Expects caller to enforce a single outstanding transaction. | ||
60 | */ | ||
61 | int (*brcmf_bus_txctl)(struct device *, unsigned char *, uint); | ||
62 | int (*brcmf_bus_rxctl)(struct device *, unsigned char *, uint); | ||
58 | }; | 63 | }; |
59 | 64 | ||
60 | /* | 65 | /* |
@@ -97,16 +102,4 @@ extern int brcmf_bus_start(struct device *dev); | |||
97 | 102 | ||
98 | extern int brcmf_add_if(struct device *dev, int ifidx, | 103 | extern int brcmf_add_if(struct device *dev, int ifidx, |
99 | char *name, u8 *mac_addr); | 104 | char *name, u8 *mac_addr); |
100 | |||
101 | /* | ||
102 | * Exported from brcmf bus module (brcmf_usb, brcmf_sdio) | ||
103 | */ | ||
104 | /* Send/receive a control message to/from the dongle. | ||
105 | * Expects caller to enforce a single outstanding transaction. | ||
106 | */ | ||
107 | extern int | ||
108 | brcmf_sdbrcm_bus_txctl(struct device *dev, unsigned char *msg, uint msglen); | ||
109 | |||
110 | extern int | ||
111 | brcmf_sdbrcm_bus_rxctl(struct device *dev, unsigned char *msg, uint msglen); | ||
112 | #endif /* _BRCMF_BUS_H_ */ | 105 | #endif /* _BRCMF_BUS_H_ */ |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c index 65c948e28bca..ac8d1f437888 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c | |||
@@ -117,8 +117,9 @@ 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 brcmf_sdbrcm_bus_txctl(drvr->dev, (unsigned char *)&prot->msg, | 120 | return drvr->bus_if->brcmf_bus_txctl(drvr->dev, |
121 | len); | 121 | (unsigned char *)&prot->msg, |
122 | len); | ||
122 | } | 123 | } |
123 | 124 | ||
124 | static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) | 125 | static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) |
@@ -129,7 +130,7 @@ static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) | |||
129 | brcmf_dbg(TRACE, "Enter\n"); | 130 | brcmf_dbg(TRACE, "Enter\n"); |
130 | 131 | ||
131 | do { | 132 | do { |
132 | ret = brcmf_sdbrcm_bus_rxctl(drvr->dev, | 133 | ret = drvr->bus_if->brcmf_bus_rxctl(drvr->dev, |
133 | (unsigned char *)&prot->msg, | 134 | (unsigned char *)&prot->msg, |
134 | len + sizeof(struct brcmf_proto_cdc_dcmd)); | 135 | len + sizeof(struct brcmf_proto_cdc_dcmd)); |
135 | if (ret < 0) | 136 | if (ret < 0) |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 6a3095038dd6..800007f17d9c 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | |||
@@ -2892,7 +2892,7 @@ static int brcmf_tx_frame(struct brcmf_sdio *bus, u8 *frame, u16 len) | |||
2892 | return ret; | 2892 | return ret; |
2893 | } | 2893 | } |
2894 | 2894 | ||
2895 | int | 2895 | static int |
2896 | brcmf_sdbrcm_bus_txctl(struct device *dev, unsigned char *msg, uint msglen) | 2896 | brcmf_sdbrcm_bus_txctl(struct device *dev, unsigned char *msg, uint msglen) |
2897 | { | 2897 | { |
2898 | u8 *frame; | 2898 | u8 *frame; |
@@ -3010,7 +3010,7 @@ brcmf_sdbrcm_bus_txctl(struct device *dev, unsigned char *msg, uint msglen) | |||
3010 | return ret ? -EIO : 0; | 3010 | return ret ? -EIO : 0; |
3011 | } | 3011 | } |
3012 | 3012 | ||
3013 | int | 3013 | static int |
3014 | brcmf_sdbrcm_bus_rxctl(struct device *dev, unsigned char *msg, uint msglen) | 3014 | brcmf_sdbrcm_bus_rxctl(struct device *dev, unsigned char *msg, uint msglen) |
3015 | { | 3015 | { |
3016 | int timeleft; | 3016 | int timeleft; |
@@ -3956,6 +3956,8 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev) | |||
3956 | bus->sdiodev->bus_if->brcmf_bus_stop = brcmf_sdbrcm_bus_stop; | 3956 | bus->sdiodev->bus_if->brcmf_bus_stop = brcmf_sdbrcm_bus_stop; |
3957 | bus->sdiodev->bus_if->brcmf_bus_init = brcmf_sdbrcm_bus_init; | 3957 | bus->sdiodev->bus_if->brcmf_bus_init = brcmf_sdbrcm_bus_init; |
3958 | bus->sdiodev->bus_if->brcmf_bus_txdata = brcmf_sdbrcm_bus_txdata; | 3958 | bus->sdiodev->bus_if->brcmf_bus_txdata = brcmf_sdbrcm_bus_txdata; |
3959 | bus->sdiodev->bus_if->brcmf_bus_txctl = brcmf_sdbrcm_bus_txctl; | ||
3960 | bus->sdiodev->bus_if->brcmf_bus_rxctl = brcmf_sdbrcm_bus_rxctl; | ||
3959 | /* Attach to the brcmf/OS/network interface */ | 3961 | /* Attach to the brcmf/OS/network interface */ |
3960 | ret = brcmf_attach(SDPCM_RESERVE, bus->sdiodev->dev); | 3962 | ret = brcmf_attach(SDPCM_RESERVE, bus->sdiodev->dev); |
3961 | if (ret != 0) { | 3963 | if (ret != 0) { |