aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorFranky Lin <frankyl@broadcom.com>2011-12-16 21:37:16 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-12-19 14:40:47 -0500
commitfcf094f414f9e9c088f6c2aa9e19a59f7b41e1f5 (patch)
tree694594dea83a93724ac6b4cb3ff8e346483a1daa /drivers
parentb9692d17e842fadb8c18faf24f550db80886763e (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.h17
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c7
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c6
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
98extern int brcmf_add_if(struct device *dev, int ifidx, 103extern 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 */
107extern int
108brcmf_sdbrcm_bus_txctl(struct device *dev, unsigned char *msg, uint msglen);
109
110extern int
111brcmf_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
124static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len) 125static 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
2895int 2895static int
2896brcmf_sdbrcm_bus_txctl(struct device *dev, unsigned char *msg, uint msglen) 2896brcmf_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
3013int 3013static int
3014brcmf_sdbrcm_bus_rxctl(struct device *dev, unsigned char *msg, uint msglen) 3014brcmf_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) {