linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
@ 2014-08-29 16:24 Geert Uytterhoeven
  2014-08-29 18:18 ` Franky Lin
  2014-09-01  8:21 ` Arend van Spriel
  0 siblings, 2 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2014-08-29 16:24 UTC (permalink / raw)
  To: Brett Rudley, John W. Linville, David S. Miller
  Cc: linux-wireless, brcm80211-dev-list, netdev, linux-kernel,
	Geert Uytterhoeven

If NO_DMA=y:

drivers/built-in.o: In function `brcmf_msgbuf_release_array':
msgbuf.c:(.text+0x34dbbe): undefined reference to `dma_unmap_single'
drivers/built-in.o: In function `brcmf_proto_msgbuf_detach':
(.text+0x34dca4): undefined reference to `dma_free_coherent'
drivers/built-in.o: In function `brcmf_msgbuf_get_pktid':
msgbuf.c:(.text+0x34dd2a): undefined reference to `dma_unmap_single'
drivers/built-in.o: In function `brcmf_msgbuf_alloc_pktid':
msgbuf.c:(.text+0x34de12): undefined reference to `dma_map_single'
msgbuf.c:(.text+0x34de20): undefined reference to `dma_mapping_error'
drivers/built-in.o: In function `brcmf_msgbuf_remove_flowring':
msgbuf.c:(.text+0x34e3d6): undefined reference to `dma_free_coherent'
drivers/built-in.o: In function `brcmf_msgbuf_flowring_create':
msgbuf.c:(.text+0x34e4f8): undefined reference to `dma_alloc_coherent'
drivers/built-in.o: In function `brcmf_proto_msgbuf_attach':
(.text+0x34f5fe): undefined reference to `dma_alloc_coherent'
drivers/built-in.o: In function `brcmf_proto_msgbuf_attach':
(.text+0x34f798): undefined reference to `dma_free_coherent'

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/net/wireless/brcm80211/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/brcm80211/Kconfig b/drivers/net/wireless/brcm80211/Kconfig
index b8e2561ea645..2e0da8925834 100644
--- a/drivers/net/wireless/brcm80211/Kconfig
+++ b/drivers/net/wireless/brcm80211/Kconfig
@@ -19,7 +19,7 @@ config BRCMSMAC
 
 config BRCMFMAC
 	tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
-	depends on CFG80211
+	depends on CFG80211A && HAS_DMA
 	select BRCMUTIL
 	---help---
 	  This module adds support for embedded wireless adapters based on
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-08-29 16:24 [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA Geert Uytterhoeven
@ 2014-08-29 18:18 ` Franky Lin
  2014-08-29 19:23   ` Geert Uytterhoeven
  2014-09-01  8:21 ` Arend van Spriel
  1 sibling, 1 reply; 8+ messages in thread
From: Franky Lin @ 2014-08-29 18:18 UTC (permalink / raw)
  To: Geert Uytterhoeven, Brett Rudley, John W. Linville, David S. Miller
  Cc: linux-wireless, brcm80211-dev-list, netdev, linux-kernel

Hi Geert,

On 8/29/2014 9:24 AM, Geert Uytterhoeven wrote:
> If NO_DMA=y:
>
> drivers/built-in.o: In function `brcmf_msgbuf_release_array':
> msgbuf.c:(.text+0x34dbbe): undefined reference to `dma_unmap_single'
> drivers/built-in.o: In function `brcmf_proto_msgbuf_detach':
> (.text+0x34dca4): undefined reference to `dma_free_coherent'
> drivers/built-in.o: In function `brcmf_msgbuf_get_pktid':
> msgbuf.c:(.text+0x34dd2a): undefined reference to `dma_unmap_single'
> drivers/built-in.o: In function `brcmf_msgbuf_alloc_pktid':
> msgbuf.c:(.text+0x34de12): undefined reference to `dma_map_single'
> msgbuf.c:(.text+0x34de20): undefined reference to `dma_mapping_error'
> drivers/built-in.o: In function `brcmf_msgbuf_remove_flowring':
> msgbuf.c:(.text+0x34e3d6): undefined reference to `dma_free_coherent'
> drivers/built-in.o: In function `brcmf_msgbuf_flowring_create':
> msgbuf.c:(.text+0x34e4f8): undefined reference to `dma_alloc_coherent'
> drivers/built-in.o: In function `brcmf_proto_msgbuf_attach':
> (.text+0x34f5fe): undefined reference to `dma_alloc_coherent'
> drivers/built-in.o: In function `brcmf_proto_msgbuf_attach':
> (.text+0x34f798): undefined reference to `dma_free_coherent'
>
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
>   drivers/net/wireless/brcm80211/Kconfig | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/brcm80211/Kconfig b/drivers/net/wireless/brcm80211/Kconfig
> index b8e2561ea645..2e0da8925834 100644
> --- a/drivers/net/wireless/brcm80211/Kconfig
> +++ b/drivers/net/wireless/brcm80211/Kconfig
> @@ -19,7 +19,7 @@ config BRCMSMAC
>
>   config BRCMFMAC
>   	tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
> -	depends on CFG80211
> +	depends on CFG80211A && HAS_DMA
>   	select BRCMUTIL
>   	---help---
>   	  This module adds support for embedded wireless adapters based on

Thanks for reporting this. All complaints are from msgbuf code. So the 
dependency should belong to BRCMFMAC_PCIE not BRCMFMAC.

Thanks,
Franky

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-08-29 18:18 ` Franky Lin
@ 2014-08-29 19:23   ` Geert Uytterhoeven
  2014-08-29 19:24     ` Geert Uytterhoeven
  0 siblings, 1 reply; 8+ messages in thread
From: Geert Uytterhoeven @ 2014-08-29 19:23 UTC (permalink / raw)
  To: Franky Lin
  Cc: Brett Rudley, John W. Linville, David S. Miller, linux-wireless,
	brcm80211-dev-list, netdev, linux-kernel

Hi Franky,

On Fri, Aug 29, 2014 at 8:18 PM, Franky Lin <frankyl@broadcom.com> wrote:
>>   config BRCMFMAC
>>         tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
>> -       depends on CFG80211
>> +       depends on CFG80211A && HAS_DMA
>>         select BRCMUTIL
>>         ---help---
>>           This module adds support for embedded wireless adapters based on
>
> Thanks for reporting this. All complaints are from msgbuf code. So the
> dependency should belong to BRCMFMAC_PCIE not BRCMFMAC.

I have PCI=n, hence BRCMFMAC_PCIE=n.

IIRC, I did try adding the HAS_DMA dependencies to the suboptions,
but then it still failed to link. Hence I restored to the main BRCMFMAC.

Besides, msgbuf.o is part of the core.
I've just tried moving it to brcmfmac-$(CONFIG_BRCMFMAC_PCIE),
but that doesn't help. Other parts use msgbuf, too.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-08-29 19:23   ` Geert Uytterhoeven
@ 2014-08-29 19:24     ` Geert Uytterhoeven
  0 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2014-08-29 19:24 UTC (permalink / raw)
  To: Franky Lin
  Cc: Brett Rudley, John W. Linville, David S. Miller, linux-wireless,
	brcm80211-dev-list, netdev, linux-kernel

On Fri, Aug 29, 2014 at 9:23 PM, Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> but then it still failed to link. Hence I restored to the main BRCMFMAC.

s/restored/resorted/

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-08-29 16:24 [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA Geert Uytterhoeven
  2014-08-29 18:18 ` Franky Lin
@ 2014-09-01  8:21 ` Arend van Spriel
  2014-09-01  8:44   ` Geert Uytterhoeven
  1 sibling, 1 reply; 8+ messages in thread
From: Arend van Spriel @ 2014-09-01  8:21 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Brett Rudley, John W. Linville, David S. Miller, linux-wireless,
	brcm80211-dev-list, netdev, linux-kernel

On 08/29/14 18:24, Geert Uytterhoeven wrote:
> If NO_DMA=y:
>
> drivers/built-in.o: In function `brcmf_msgbuf_release_array':
> msgbuf.c:(.text+0x34dbbe): undefined reference to `dma_unmap_single'
> drivers/built-in.o: In function `brcmf_proto_msgbuf_detach':
> (.text+0x34dca4): undefined reference to `dma_free_coherent'
> drivers/built-in.o: In function `brcmf_msgbuf_get_pktid':
> msgbuf.c:(.text+0x34dd2a): undefined reference to `dma_unmap_single'
> drivers/built-in.o: In function `brcmf_msgbuf_alloc_pktid':
> msgbuf.c:(.text+0x34de12): undefined reference to `dma_map_single'
> msgbuf.c:(.text+0x34de20): undefined reference to `dma_mapping_error'
> drivers/built-in.o: In function `brcmf_msgbuf_remove_flowring':
> msgbuf.c:(.text+0x34e3d6): undefined reference to `dma_free_coherent'
> drivers/built-in.o: In function `brcmf_msgbuf_flowring_create':
> msgbuf.c:(.text+0x34e4f8): undefined reference to `dma_alloc_coherent'
> drivers/built-in.o: In function `brcmf_proto_msgbuf_attach':
> (.text+0x34f5fe): undefined reference to `dma_alloc_coherent'
> drivers/built-in.o: In function `brcmf_proto_msgbuf_attach':
> (.text+0x34f798): undefined reference to `dma_free_coherent'
>
> Signed-off-by: Geert Uytterhoeven<geert@linux-m68k.org>
> ---
>   drivers/net/wireless/brcm80211/Kconfig | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/brcm80211/Kconfig b/drivers/net/wireless/brcm80211/Kconfig
> index b8e2561ea645..2e0da8925834 100644
> --- a/drivers/net/wireless/brcm80211/Kconfig
> +++ b/drivers/net/wireless/brcm80211/Kconfig
> @@ -19,7 +19,7 @@ config BRCMSMAC
>
>   config BRCMFMAC
>   	tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
> -	depends on CFG80211
> +	depends on CFG80211A&&  HAS_DMA

Hi Geert,

Not sure what happened here, but CFG80211 kconfig option did was not 
renamed as far as I know. Anyway, I would like to propose a different 
solution. Will get back to you when I have it ready.

Regards,
Arend

>   	select BRCMUTIL
>   	---help---
>   	  This module adds support for embedded wireless adapters based on


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-09-01  8:21 ` Arend van Spriel
@ 2014-09-01  8:44   ` Geert Uytterhoeven
  2014-09-01 12:54     ` Arend van Spriel
  0 siblings, 1 reply; 8+ messages in thread
From: Geert Uytterhoeven @ 2014-09-01  8:44 UTC (permalink / raw)
  To: Arend van Spriel
  Cc: Brett Rudley, John W. Linville, David S. Miller, linux-wireless,
	brcm80211-dev-list, netdev, linux-kernel

Hi Arend,

On Mon, Sep 1, 2014 at 10:21 AM, Arend van Spriel <arend@broadcom.com> wrote:
>>   config BRCMFMAC
>>         tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
>> -       depends on CFG80211
>> +       depends on CFG80211A&&  HAS_DMA
>
> Not sure what happened here, but CFG80211 kconfig option did was not renamed
> as far as I know. Anyway, I would like to propose a different solution. Will

Oops, that was me typing the vim append-command twice :-(
Thanks for noticing!

> get back to you when I have it ready.

OK. Thanks again!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-09-01  8:44   ` Geert Uytterhoeven
@ 2014-09-01 12:54     ` Arend van Spriel
  2014-09-01 16:51       ` Geert Uytterhoeven
  0 siblings, 1 reply; 8+ messages in thread
From: Arend van Spriel @ 2014-09-01 12:54 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Brett Rudley, John W. Linville, David S. Miller, linux-wireless,
	brcm80211-dev-list, netdev, linux-kernel

On 09/01/14 10:44, Geert Uytterhoeven wrote:
> Hi Arend,
>
> On Mon, Sep 1, 2014 at 10:21 AM, Arend van Spriel<arend@broadcom.com>  wrote:
>>>    config BRCMFMAC
>>>          tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
>>> -       depends on CFG80211
>>> +       depends on CFG80211A&&   HAS_DMA
>>
>> Not sure what happened here, but CFG80211 kconfig option did was not renamed
>> as far as I know. Anyway, I would like to propose a different solution. Will
>
> Oops, that was me typing the vim append-command twice :-(
> Thanks for noticing!
>
>> get back to you when I have it ready.
>
> OK. Thanks again!

Hi Geert,

I added Kconfig options for the proto layer which are selected by the 
host interface selection. So the HAS_DMA dependency is checked for 
BRCMFMAC_PCIE. I am wondering whether GENERIC_IO should also be checked.

Can you verify the patch below works with your configuration?

Regards,
Arend
---
diff --git a/drivers/net/wireless/brcm80211/Kconfig 
b/drivers/net/wireless/brcm80211/Kconfig
index b8e2561..fe3dc12 100644
--- a/drivers/net/wireless/brcm80211/Kconfig
+++ b/drivers/net/wireless/brcm80211/Kconfig
@@ -27,10 +27,17 @@ config BRCMFMAC
  	  one of the bus interface support. If you choose to build a module,
  	  it'll be called brcmfmac.ko.

+config BRCMFMAC_PROTO_BCDC
+	bool
+
+config BRCMFMAC_PROTO_MSGBUF
+	bool
+
  config BRCMFMAC_SDIO
  	bool "SDIO bus interface support for FullMAC driver"
  	depends on (MMC = y || MMC = BRCMFMAC)
  	depends on BRCMFMAC
+	select BRCMFMAC_PROTO_BCDC
  	select FW_LOADER
  	default y
  	---help---
@@ -42,6 +49,7 @@ config BRCMFMAC_USB
  	bool "USB bus interface support for FullMAC driver"
  	depends on (USB = y || USB = BRCMFMAC)
  	depends on BRCMFMAC
+	select BRCMFMAC_PROTO_BCDC
  	select FW_LOADER
  	---help---
  	  This option enables the USB bus interface support for Broadcom
@@ -52,6 +60,8 @@ config BRCMFMAC_PCIE
  	bool "PCIE bus interface support for FullMAC driver"
  	depends on BRCMFMAC
  	depends on PCI
+	depends on HAS_DMA
+	select BRCMFMAC_PROTO_MSGBUF
  	select FW_LOADER
  	---help---
  	  This option enables the PCIE bus interface support for Broadcom
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/Makefile 
b/drivers/net/wireless/brcm80211/brcmfmac/Makefile
index c35adf4..90a977f 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/Makefile
+++ b/drivers/net/wireless/brcm80211/brcmfmac/Makefile
@@ -30,16 +30,18 @@ brcmfmac-objs += \
  		fwsignal.o \
  		p2p.o \
  		proto.o \
-		bcdc.o \
-		commonring.o \
-		flowring.o \
-		msgbuf.o \
  		dhd_common.o \
  		dhd_linux.o \
  		firmware.o \
  		feature.o \
  		btcoex.o \
  		vendor.o
+brcmfmac-$(CONFIG_BRCMFMAC_PROTO_BCDC) += \
+		bcdc.o
+brcmfmac-$(CONFIG_BRCMFMAC_PROTO_MSGBUF) += \
+		commonring.o \
+		flowring.o \
+		msgbuf.o
  brcmfmac-$(CONFIG_BRCMFMAC_SDIO) += \
  		dhd_sdio.o \
  		bcmsdh.o
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h 
b/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h
index 17e8c03..6003179 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h
@@ -16,9 +16,12 @@
  #ifndef BRCMFMAC_BCDC_H
  #define BRCMFMAC_BCDC_H

-
+#ifdef CONFIG_BRCMFMAC_PROTO_BCDC
  int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
  void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
-
+#else
+static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { 
return 0; }
+static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
+#endif

  #endif /* BRCMFMAC_BCDC_H */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h 
b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
index f901ae5..e6395ee 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
@@ -32,9 +32,16 @@


  int brcmf_proto_msgbuf_rx_trigger(struct device *dev);
+void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid);
+#ifdef CONFIG_BRCMFMAC_PROTO_MSGBUF
  int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr);
  void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr);
-void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid);
-
+#else
+static inline int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
+{
+	return 0;
+}
+static inline void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr) {}
+#endif

  #endif /* BRCMFMAC_MSGBUF_H */
> Gr{oetje,eeting}s,
>
>                          Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                  -- Linus Torvalds


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA
  2014-09-01 12:54     ` Arend van Spriel
@ 2014-09-01 16:51       ` Geert Uytterhoeven
  0 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2014-09-01 16:51 UTC (permalink / raw)
  To: Arend van Spriel
  Cc: Brett Rudley, John W. Linville, David S. Miller, linux-wireless,
	brcm80211-dev-list, netdev, linux-kernel

Hi Arend,

On Mon, Sep 1, 2014 at 2:54 PM, Arend van Spriel <arend@broadcom.com> wrote:
> On 09/01/14 10:44, Geert Uytterhoeven wrote:
>> On Mon, Sep 1, 2014 at 10:21 AM, Arend van Spriel<arend@broadcom.com>
>> wrote:
>>>>
>>>>    config BRCMFMAC
>>>>          tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
>>>> -       depends on CFG80211
>>>> +       depends on CFG80211A&&   HAS_DMA
>>>
>>> Not sure what happened here, but CFG80211 kconfig option did was not
>>> renamed
>>> as far as I know. Anyway, I would like to propose a different solution.
>>> Will get back to you when I have it ready.

> I added Kconfig options for the proto layer which are selected by the host
> interface selection. So the HAS_DMA dependency is checked for BRCMFMAC_PCIE.

Thanks!

> I am wondering whether GENERIC_IO should also be checked.

Probably not. Let's see if anyone complains ;-)

> Can you verify the patch below works with your configuration?

Yes, it compiles and links fine now (after applying it manually due to
whitespace mess-up).

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-09-01 16:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-29 16:24 [PATCH] brcmfmac: BRCMFMAC should depend on HAS_DMA Geert Uytterhoeven
2014-08-29 18:18 ` Franky Lin
2014-08-29 19:23   ` Geert Uytterhoeven
2014-08-29 19:24     ` Geert Uytterhoeven
2014-09-01  8:21 ` Arend van Spriel
2014-09-01  8:44   ` Geert Uytterhoeven
2014-09-01 12:54     ` Arend van Spriel
2014-09-01 16:51       ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).