Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-03 Thread James Hilliard
Something interesting I found, seems broadcom is building the driver in
this strange way precisely because of the GPL:

/* Where to get the declarations for mem, str, printf, bcopy's? Two basic
approaches.
 *
 * First, use the Linux header files and the C standard library
replacmenent versions
 * built-in to the kernel.  Use this approach when compiling non hybrid
code or compling
 * the OS port files.  The second approach is to use our own
defines/prototypes and
 * functions we have provided in the Linux OSL, i.e. linux_osl.c.  Use this
approach when
 * compiling the files that make up the hybrid binary.  We are ensuring we
 * don't directly link to the kernel replacement routines from the hybrid
binary.
 *
 * NOTE: The issue we are trying to avoid is any questioning of whether the
 * hybrid binary is derived from Linux.  The wireless common code (wlc) is
designed
 * to be OS independent through the use of the OSL API and thus the hybrid
binary doesn't
 * derive from the Linux kernel at all.  But since we defined our OSL API
to include
 * a small collection of standard C library routines and these routines are
provided in
 * the kernel we want to avoid even the appearance of deriving at all even
though clearly
 * usage of a C standard library API doesn't represent a derivation from
Linux.  Lastly
 * note at the time of this checkin 4 references to memcpy/memset could not
be eliminated
 * from the binary because they are created internally by GCC as part of
things like
 * structure assignment.  I don't think the compiler should be doing this
but there is
 * no options to disable it on Intel architectures (there is for MIPS so
somebody must
 * agree with me).  I may be able to even remove these references
eventually with
 * a GNU binutil such as objcopy via a symbol rename (i.e. memcpy to
osl_memcpy).
 */


On Sun, Nov 3, 2013 at 2:25 AM, James Hilliard wrote:

> That patch included a bit more than just the modifications needed to
> support the wl driver, that patch should be for the new broadcom ARM
> architecture. I think most of the dependencies for the wl driver and the
> ARM wl driver should be in here
> http://sourceforge.net/projects/routertesting/files/ea6900%20patches/src.tar.bz2/downloadwhich
>  is a bit cleaner than the patch.
> The .ko files are sometimes precompiled along with the .o files in GPL
> tarballs and sometimes there are only .o files, usually there are just the
> .o files though. It varies slightly between manufacturers. The ones in that
> tarball are pulled from the ea6900 source. Maybe ABI compatibility layer
> wasn't exactly the best way the phrase that. What method would you use to
> go about getting the driver working? I don't see a reason the ABI can't be
> fixed, all that information is in the broadcom components that are open
> source, at least as far as I can tell. I'm trying to figure out where start
> on all of this. Most of this seems to be just merging existing code and
> configuration changes. How would you go about getting a working broadcom
> driver on new devices?
>
>
> On Sun, Nov 3, 2013 at 1:55 AM, Felix Fietkau  wrote:
>
>> On 2013-11-02 23:47, James Hilliard wrote:
>> > I'm not actually trying to use a fully compiled .ko file, the file is a
>> > .o file such as wl_apsta.o(tools indicate it is a relocatable ELF for
>> > ARM) that gets compiled into a .ko when you build GPL tarballs. Seems to
>> > be the same as the wl_prebuilt.o files we have for the most part in the
>> > current driver implementation.
>> There's not that much difference between linking all those .o files into
>> one .ko and just using the prebuilt .ko.
>>
>> I realize that the driver depends on
>> > these data structures in the kernel, but we know exactly what these
>> > structures look like from the hnd kernel patch right? In the patch here
>> >
>> https://sourceforge.net/projects/routertesting/files/ea6900%20patches/linux-2.6.36.4-f70_000_BSP.patch/download
>> > it seems that there are changes to the sk_buff and net_device in the
>> > kernel to match the driver. I see that there are ABI differences but I
>> > don't see why we can't just change the kernel's ABI to be compatible, we
>> > have the patch-set for that. The way i'm looking at this is since we
>> > can't recompile the driver to fit the kernel we recompile the kernel to
>> > fit the driver.
>> Good luck... Given how much you're already struggling with understanding
>> the really simple parts, I'm not sure how you will be able to solve the
>> more complex problems related to the ABI/API issues.
>>
>> Either way, the result of such work will most likely not be acceptable
>> for merging into OpenWrt, since it'll break with every single kernel
>> upgrade and will create nasty kernel maintenance issues.
>> I know that, because I've done that sort of thing before...
>>
>> > One thing odd I noticed is that a mips .ko driver has
>> > the function names removed when compiled from the .o driver, while it
>> > appears the ARM one does not, both 

Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-03 Thread James Hilliard
That patch included a bit more than just the modifications needed to
support the wl driver, that patch should be for the new broadcom ARM
architecture. I think most of the dependencies for the wl driver and the
ARM wl driver should be in here
http://sourceforge.net/projects/routertesting/files/ea6900%20patches/src.tar.bz2/downloadwhich
is a bit cleaner than the patch.
The .ko files are sometimes precompiled along with the .o files in GPL
tarballs and sometimes there are only .o files, usually there are just the
.o files though. It varies slightly between manufacturers. The ones in that
tarball are pulled from the ea6900 source. Maybe ABI compatibility layer
wasn't exactly the best way the phrase that. What method would you use to
go about getting the driver working? I don't see a reason the ABI can't be
fixed, all that information is in the broadcom components that are open
source, at least as far as I can tell. I'm trying to figure out where start
on all of this. Most of this seems to be just merging existing code and
configuration changes. How would you go about getting a working broadcom
driver on new devices?


On Sun, Nov 3, 2013 at 1:55 AM, Felix Fietkau  wrote:

> On 2013-11-02 23:47, James Hilliard wrote:
> > I'm not actually trying to use a fully compiled .ko file, the file is a
> > .o file such as wl_apsta.o(tools indicate it is a relocatable ELF for
> > ARM) that gets compiled into a .ko when you build GPL tarballs. Seems to
> > be the same as the wl_prebuilt.o files we have for the most part in the
> > current driver implementation.
> There's not that much difference between linking all those .o files into
> one .ko and just using the prebuilt .ko.
>
> I realize that the driver depends on
> > these data structures in the kernel, but we know exactly what these
> > structures look like from the hnd kernel patch right? In the patch here
> >
> https://sourceforge.net/projects/routertesting/files/ea6900%20patches/linux-2.6.36.4-f70_000_BSP.patch/download
> > it seems that there are changes to the sk_buff and net_device in the
> > kernel to match the driver. I see that there are ABI differences but I
> > don't see why we can't just change the kernel's ABI to be compatible, we
> > have the patch-set for that. The way i'm looking at this is since we
> > can't recompile the driver to fit the kernel we recompile the kernel to
> > fit the driver.
> Good luck... Given how much you're already struggling with understanding
> the really simple parts, I'm not sure how you will be able to solve the
> more complex problems related to the ABI/API issues.
>
> Either way, the result of such work will most likely not be acceptable
> for merging into OpenWrt, since it'll break with every single kernel
> upgrade and will create nasty kernel maintenance issues.
> I know that, because I've done that sort of thing before...
>
> > One thing odd I noticed is that a mips .ko driver has
> > the function names removed when compiled from the .o driver, while it
> > appears the ARM one does not, both the ARM .ko and .o are very similar
> > with symbol names intact. Both start out as .o files with all the
> > function names.
> You forgot to mention, what .ko files you looked at and where you got
> them from.
>
> > From what I can tell wl_glue in the current driver is
> > the ABI compatability layer used currently rather than making the kernel
> > directly compatible, is that correct?
> "ABI compatability layer"? That doesn't make much sense.
>
> - Felix
> ___
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-02 Thread Felix Fietkau
On 2013-11-02 23:47, James Hilliard wrote:
> I'm not actually trying to use a fully compiled .ko file, the file is a
> .o file such as wl_apsta.o(tools indicate it is a relocatable ELF for
> ARM) that gets compiled into a .ko when you build GPL tarballs. Seems to
> be the same as the wl_prebuilt.o files we have for the most part in the
> current driver implementation. 
There's not that much difference between linking all those .o files into
one .ko and just using the prebuilt .ko.

I realize that the driver depends on
> these data structures in the kernel, but we know exactly what these
> structures look like from the hnd kernel patch right? In the patch here
> https://sourceforge.net/projects/routertesting/files/ea6900%20patches/linux-2.6.36.4-f70_000_BSP.patch/download
> it seems that there are changes to the sk_buff and net_device in the
> kernel to match the driver. I see that there are ABI differences but I
> don't see why we can't just change the kernel's ABI to be compatible, we
> have the patch-set for that. The way i'm looking at this is since we
> can't recompile the driver to fit the kernel we recompile the kernel to
> fit the driver.
Good luck... Given how much you're already struggling with understanding
the really simple parts, I'm not sure how you will be able to solve the
more complex problems related to the ABI/API issues.

Either way, the result of such work will most likely not be acceptable
for merging into OpenWrt, since it'll break with every single kernel
upgrade and will create nasty kernel maintenance issues.
I know that, because I've done that sort of thing before...

> One thing odd I noticed is that a mips .ko driver has
> the function names removed when compiled from the .o driver, while it
> appears the ARM one does not, both the ARM .ko and .o are very similar
> with symbol names intact. Both start out as .o files with all the
> function names.
You forgot to mention, what .ko files you looked at and where you got
them from.

> From what I can tell wl_glue in the current driver is
> the ABI compatability layer used currently rather than making the kernel
> directly compatible, is that correct?
"ABI compatability layer"? That doesn't make much sense.

- Felix
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-02 Thread James Hilliard
I'm not actually trying to use a fully compiled .ko file, the file is a .o
file such as wl_apsta.o(tools indicate it is a relocatable ELF for ARM)
that gets compiled into a .ko when you build GPL tarballs. Seems to be the
same as the wl_prebuilt.o files we have for the most part in the current
driver implementation. I realize that the driver depends on these data
structures in the kernel, but we know exactly what these structures look
like from the hnd kernel patch right? In the patch here
https://sourceforge.net/projects/routertesting/files/ea6900%20patches/linux-2.6.36.4-f70_000_BSP.patch/downloadit
seems that there are changes to the sk_buff and net_device in the
kernel
to match the driver. I see that there are ABI differences but I don't see
why we can't just change the kernel's ABI to be compatible, we have the
patch-set for that. The way i'm looking at this is since we can't recompile
the driver to fit the kernel we recompile the kernel to fit the driver. One
thing odd I noticed is that a mips .ko driver has the function names
removed when compiled from the .o driver, while it appears the ARM one does
not, both the ARM .ko and .o are very similar with symbol names intact.
Both start out as .o files with all the function names. From what I can
tell wl_glue in the current driver is the ABI compatability layer used
currently rather than making the kernel directly compatible, is that
correct?


On Sat, Nov 2, 2013 at 4:39 PM, Felix Fietkau  wrote:

> On 2013-11-02 08:59, James Hilliard wrote:
> > Well, maybe they didn't create the shared code because of the GPL but
> > they can't link a binary directly to a GPL component, only a LGPL
> > component I think or something like that.  I've object dumped and ran
> > decompilers on the broadcom-wl object files and I don't see anything
> > statically linked or any indication of anything that would be specific
> > to a kernel version
> You won't see the parts that matter in whatever tools you used to pick
> apart the binary. When compiling, the code includes header files from
> the kernel, which contain data structures, some of the most important
> ones being sk_buff and net_device.
> Stuff like that doesn't show up as symbols, and you won't find it by
> name in a disassembler.
> If you take a look at the data structures in the header files in a
> kernel tree, you might notice, that they even change depending on the
> kernel configuration.
> This makes attempts to reuse the prebuilt .ko file futile.
>
> > I see plenty of needed symbols though, but those
> > all appear to be available to build into the kernel.
>
> > I don't see a
> > reason why wl_linux.c can't be compiled from source
> >
> http://sourceforge.net/projects/routertesting/files/ea6900%20patches/wl_linux.c/download
> > , its not like its closed source as far as I can tell, is that the only
> > thing preventing us from using these tarball drivers?
> Did you actually look at that file? This is not even driver code.
>
> > Relocatable means
> > its not tied to any specific memory addresses right and that any memory
> > address are referenced only internally? All the decompilers I used
> > indicated the drivers were relocatable ELF's and I didn't see any
> > external memory addresses referenced from any functions.
> Memory addresses aren't the only thing that matter, there are other ABI
> issues, e.g. the one I described above.
>
> - Felix
> ___
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-02 Thread Felix Fietkau
On 2013-11-02 08:59, James Hilliard wrote:
> Well, maybe they didn't create the shared code because of the GPL but
> they can't link a binary directly to a GPL component, only a LGPL
> component I think or something like that.  I've object dumped and ran
> decompilers on the broadcom-wl object files and I don't see anything
> statically linked or any indication of anything that would be specific
> to a kernel version
You won't see the parts that matter in whatever tools you used to pick
apart the binary. When compiling, the code includes header files from
the kernel, which contain data structures, some of the most important
ones being sk_buff and net_device.
Stuff like that doesn't show up as symbols, and you won't find it by
name in a disassembler.
If you take a look at the data structures in the header files in a
kernel tree, you might notice, that they even change depending on the
kernel configuration.
This makes attempts to reuse the prebuilt .ko file futile.

> I see plenty of needed symbols though, but those
> all appear to be available to build into the kernel.

> I don't see a
> reason why wl_linux.c can't be compiled from source
> http://sourceforge.net/projects/routertesting/files/ea6900%20patches/wl_linux.c/download
> , its not like its closed source as far as I can tell, is that the only
> thing preventing us from using these tarball drivers?
Did you actually look at that file? This is not even driver code.

> Relocatable means
> its not tied to any specific memory addresses right and that any memory
> address are referenced only internally? All the decompilers I used
> indicated the drivers were relocatable ELF's and I didn't see any
> external memory addresses referenced from any functions.
Memory addresses aren't the only thing that matter, there are other ABI
issues, e.g. the one I described above.

- Felix
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-02 Thread James Hilliard
Well, maybe they didn't create the shared code because of the GPL but they
can't link a binary directly to a GPL component, only a LGPL component I
think or something like that.  I've object dumped and ran decompilers on
the broadcom-wl object files and I don't see anything statically linked or
any indication of anything that would be specific to a kernel version, I
see plenty of needed symbols though, but those all appear to be available
to build into the kernel. I don't see a reason why wl_linux.c can't be
compiled from source
http://sourceforge.net/projects/routertesting/files/ea6900%20patches/wl_linux.c/download,
its not like its closed source as far as I can tell, is that the only
thing preventing us from using these tarball drivers? Relocatable means its
not tied to any specific memory addresses right and that any memory address
are referenced only internally? All the decompilers I used indicated the
drivers were relocatable ELF's and I didn't see any external memory
addresses referenced from any functions.


On Sat, Nov 2, 2013 at 2:05 AM, Felix Fietkau  wrote:

> On 2013-11-02 00:30, James Hilliard wrote:
> > It's a very confusing way of building a package, but the reason seems to
> > come down to how the GPL works. The GPL prohibits statically linking any
> > closed source packages into the kernel, that however is how drivers are
> > often built. Broadcom came up with another way that gets around the
> > problem by creating the hnd shared libraries that allow them to
> > customize the way the driver interacts with the kernel while at this
> > same time allowing them to legally build a closed source relocatable
> > driver that links the open source hnd components.
> I think you're misunderstanding the purpose of the shared code. It was
> not created because of GPL issues at all. It's an OS abstraction layer
> that they use to port their drivers to different operating systems. The
> portability only works on a *source* level. Compiled binaries are still
> highly kernel version specific (at least in the wl_linux.o parts).
>
> > The current way
> > openwrt builds the broadcom-wl seems to quite a bit different than
> > normal, it appears that rather than building hnd components into the
> > kernel hnd was turned into an abstraction layer of some sort that
> > provides an interface layer for the driver without making major kernel
> > changes.
> It wasn't 'turned into an abstraction layer'. The code was simply moved
> someplace else. This was done because the loads of crappy code were only
> needed for broadcom-wl and nothing else.
> The part that allows broadcom-wl to be version independent is that all
> kernel ABI dependent files are provided with source code.
>
> > The issue with this seems to be that maintaining the driver
> > with this method is very difficult since broadcom does not release
> > drivers that support this method of integration. IMO the easiest and
> > most maintainable way of using the broadcom-wl driver is to patch the
> > kernel at compliation with the hnd shared libraries if the wl driver is
> > selected for installation.
> That only solves the easiest problem of all (unresolved symbols). You
> still need wl_linux.c to be compiled from source.
>
> > The patches I have are the patches broadcom
> > uses to add hnd to a stock kernel as well as other platform
> > modifications. I could be wrong about some of this but there should be a
> > way to get this driver working since it is relocatable.
> I think you're confused about what the word 'relocatable' means.
>
> - Felix
> ___
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-02 Thread Felix Fietkau
On 2013-11-02 00:30, James Hilliard wrote:
> It's a very confusing way of building a package, but the reason seems to
> come down to how the GPL works. The GPL prohibits statically linking any
> closed source packages into the kernel, that however is how drivers are
> often built. Broadcom came up with another way that gets around the
> problem by creating the hnd shared libraries that allow them to
> customize the way the driver interacts with the kernel while at this
> same time allowing them to legally build a closed source relocatable
> driver that links the open source hnd components.
I think you're misunderstanding the purpose of the shared code. It was
not created because of GPL issues at all. It's an OS abstraction layer
that they use to port their drivers to different operating systems. The
portability only works on a *source* level. Compiled binaries are still
highly kernel version specific (at least in the wl_linux.o parts).

> The current way
> openwrt builds the broadcom-wl seems to quite a bit different than
> normal, it appears that rather than building hnd components into the
> kernel hnd was turned into an abstraction layer of some sort that
> provides an interface layer for the driver without making major kernel
> changes.
It wasn't 'turned into an abstraction layer'. The code was simply moved
someplace else. This was done because the loads of crappy code were only
needed for broadcom-wl and nothing else.
The part that allows broadcom-wl to be version independent is that all
kernel ABI dependent files are provided with source code.

> The issue with this seems to be that maintaining the driver
> with this method is very difficult since broadcom does not release
> drivers that support this method of integration. IMO the easiest and
> most maintainable way of using the broadcom-wl driver is to patch the
> kernel at compliation with the hnd shared libraries if the wl driver is
> selected for installation.
That only solves the easiest problem of all (unresolved symbols). You
still need wl_linux.c to be compiled from source.

> The patches I have are the patches broadcom
> uses to add hnd to a stock kernel as well as other platform
> modifications. I could be wrong about some of this but there should be a
> way to get this driver working since it is relocatable.
I think you're confused about what the word 'relocatable' means.

- Felix
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-01 Thread James Hilliard
It's a very confusing way of building a package, but the reason seems to
come down to how the GPL works. The GPL prohibits statically linking any
closed source packages into the kernel, that however is how drivers are
often built. Broadcom came up with another way that gets around the problem
by creating the hnd shared libraries that allow them to customize the way
the driver interacts with the kernel while at this same time allowing them
to legally build a closed source relocatable driver that links the open
source hnd components. The current way openwrt builds the broadcom-wl seems
to quite a bit different than normal, it appears that rather than building
hnd components into the kernel hnd was turned into an abstraction layer of
some sort that provides an interface layer for the driver without making
major kernel changes. The issue with this seems to be that maintaining the
driver with this method is very difficult since broadcom does not release
drivers that support this method of integration. IMO the easiest and most
maintainable way of using the broadcom-wl driver is to patch the kernel at
compliation with the hnd shared libraries if the wl driver is selected for
installation. The patches I have are the patches broadcom uses to add hnd
to a stock kernel as well as other platform modifications. I could be wrong
about some of this but there should be a way to get this driver working
since it is relocatable.


On Fri, Nov 1, 2013 at 6:08 PM, Chirag Chhatriwala wrote:

> Without looking at any patches at all, I can safely say that this (your
> email) is the best explanation I have found so far with respect to progress
> with the Broadcom ARM based SoC's. Its very well articulated. Something
> that I could actually follow in these dev discussions.
> Thank you for the write up.
> I'm sorry I don't have any technical to contribute here, I'm fairly noob
> when it comes to patching drivers/kernels.
>
> Chirag
>
>
> On Fri, Nov 1, 2013 at 3:21 PM, James Hilliard 
> wrote:
>
>> From what I can tell the way the openwrt broadcom-wl is compiled makes it
>> extremely difficult to patch in any upstream changes from broadcom. The
>> broadcom-wl binary module distributed with stock routers does not appear to
>> be kernel version specific since it is not statically linked, however it is
>> kernel configuration specific, and by that I mean it requires a few
>> non-default packages be built directly into the kernel, mainly it seems to
>> require the hnd shared dependencies be included. Adding these dependencies
>> appears to be the method one would use to make broadcom-wl maintainable in
>> newer ARM and even MIPS devices. Basically hnd needs to be patched into any
>> kernel that we want to use on a broadcom device with broadcom drivers. We
>> can't simply patch the driver to work with the kernel, instead we have to
>> patch the kernel to work with the driver. This way we can use relocatable
>> binary drivers pulled directly from GPl tarballs rather than having to rely
>> on customized compiles, and both mips and arm binary drivers are
>> relocatable. Luckily I have the patches broadcom uses to add the
>> dependencies on the newer 2.6.36 kernel for ARM which should be easy enough
>> to port to openwrt in addition to necessary packages specific patches.
>> Basically the method currently used to handle the mips broadcom-wl driver
>> should be scrapped since it is nearly impossible to keep up to date and
>> maintain as it attempts to provide an interface layer rather than simply
>> building in the kernel dependencies directly. I've uploaded the kernel
>> patches as well as the current driver set for the ea6900 here
>> https://sourceforge.net/projects/routertesting/files/ea6900%20patches/ .
>> Ethernet drivers seems to be fully open source although the wireless driver
>> is a relocatable ELF but it should be compatible assuming we patch in the
>> needed kernel changes. The main patch that adds the neccesary hnd
>> dependencies to the kernel is the linux-2.6.36.4-f70_000_BSP.patch , I'm
>> fairly sure it should just be patched in directly of course dealing with
>> any kernel version change breaks. Mostly it is adding files to the kernel
>> build rather than actually changing files that already exist so breaks due
>> to kernel version changes should be minimal. The rest of the patches are
>> package specific patches for the broadcom ARM platform and ea6900. The src
>> tarball in that folder includes the wireless and ethernet drivers
>> themselves as well as some other dependencies. Ive also uploaded the
>> toolchain buildroot in the same directory which includes a number of
>> platform specific patches. Let me know if there are any patches you think
>> might be missing and I can also try get the patches for other Broadcom ARM
>> devices and boards. Some of these patches may be unneeded as they are used
>> for the stock configuration. The patch set is fairly extensive as it
>> encompasses multiple packages as well as significant

Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-01 Thread James Hilliard
>From what I can tell the way the openwrt broadcom-wl is compiled makes it
extremely difficult to patch in any upstream changes from broadcom. The
broadcom-wl binary module distributed with stock routers does not appear to
be kernel version specific since it is not statically linked, however it is
kernel configuration specific, and by that I mean it requires a few
non-default packages be built directly into the kernel, mainly it seems to
require the hnd shared dependencies be included. Adding these dependencies
appears to be the method one would use to make broadcom-wl maintainable in
newer ARM and even MIPS devices. Basically hnd needs to be patched into any
kernel that we want to use on a broadcom device with broadcom drivers. We
can't simply patch the driver to work with the kernel, instead we have to
patch the kernel to work with the driver. This way we can use relocatable
binary drivers pulled directly from GPl tarballs rather than having to rely
on customized compiles, and both mips and arm binary drivers are
relocatable. Luckily I have the patches broadcom uses to add the
dependencies on the newer 2.6.36 kernel for ARM which should be easy enough
to port to openwrt in addition to necessary packages specific patches.
Basically the method currently used to handle the mips broadcom-wl driver
should be scrapped since it is nearly impossible to keep up to date and
maintain as it attempts to provide an interface layer rather than simply
building in the kernel dependencies directly. I've uploaded the kernel
patches as well as the current driver set for the ea6900 here
https://sourceforge.net/projects/routertesting/files/ea6900%20patches/ .
Ethernet drivers seems to be fully open source although the wireless driver
is a relocatable ELF but it should be compatible assuming we patch in the
needed kernel changes. The main patch that adds the neccesary hnd
dependencies to the kernel is the linux-2.6.36.4-f70_000_BSP.patch , I'm
fairly sure it should just be patched in directly of course dealing with
any kernel version change breaks. Mostly it is adding files to the kernel
build rather than actually changing files that already exist so breaks due
to kernel version changes should be minimal. The rest of the patches are
package specific patches for the broadcom ARM platform and ea6900. The src
tarball in that folder includes the wireless and ethernet drivers
themselves as well as some other dependencies. Ive also uploaded the
toolchain buildroot in the same directory which includes a number of
platform specific patches. Let me know if there are any patches you think
might be missing and I can also try get the patches for other Broadcom ARM
devices and boards. Some of these patches may be unneeded as they are used
for the stock configuration. The patch set is fairly extensive as it
encompasses multiple packages as well as significant kernel
changes/additions.

James


On Fri, Nov 1, 2013 at 10:26 AM, Hauke Mehrtens  wrote:

> On 11/01/2013 01:22 PM, James Hilliard wrote:
> > I noticed that there is a broadcom ARM build option but it only seems to
> > build for the r6250 and I'm not sure if its actually making installable
> > builds. I have a number of very large patches that are part of the build
> > system for these routers. Has anyone been working on these recently? The
> > broadcom-wl arm driver for this appears to be relocatable to any kernel
> > provided the kernel is patched properly with the open source hnd
> > dependencies.
>
> Hi James,
>
> The Broadcom ARM target is for the Northstar BCM470{7,8,9} and BCM5310X
> Chips. I am working on that when I find some time. It currently
> generates only images for the Netgear R6250 because this is the only
> device with this SoC I have, the code should also work on other devices
> with this SoC.
>
> Images from this target are only booting, currently Ethernet, flash,
> wireless, pci and so on are not working.
>
> The broadcom-wl in OpenWrt does not have a ARM binary blob just Mips
> blobs and it does not support the BCM4331 or any ieee80211ac chip from
> Broadcom, this has to be replaced with a more recent one, but
> broadcom-wl is relocatable on MIPS, we use it with various different
> kernel versions and configurations.
>
> What patches do you have for this SoC?
>
> Hauke
>
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Broadcom ARM Status

2013-11-01 Thread Hauke Mehrtens
On 11/01/2013 01:22 PM, James Hilliard wrote:
> I noticed that there is a broadcom ARM build option but it only seems to
> build for the r6250 and I'm not sure if its actually making installable
> builds. I have a number of very large patches that are part of the build
> system for these routers. Has anyone been working on these recently? The
> broadcom-wl arm driver for this appears to be relocatable to any kernel
> provided the kernel is patched properly with the open source hnd
> dependencies.

Hi James,

The Broadcom ARM target is for the Northstar BCM470{7,8,9} and BCM5310X
Chips. I am working on that when I find some time. It currently
generates only images for the Netgear R6250 because this is the only
device with this SoC I have, the code should also work on other devices
with this SoC.

Images from this target are only booting, currently Ethernet, flash,
wireless, pci and so on are not working.

The broadcom-wl in OpenWrt does not have a ARM binary blob just Mips
blobs and it does not support the BCM4331 or any ieee80211ac chip from
Broadcom, this has to be replaced with a more recent one, but
broadcom-wl is relocatable on MIPS, we use it with various different
kernel versions and configurations.

What patches do you have for this SoC?

Hauke
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] Broadcom ARM Status

2013-11-01 Thread James Hilliard
I noticed that there is a broadcom ARM build option but it only seems to
build for the r6250 and I'm not sure if its actually making installable
builds. I have a number of very large patches that are part of the build
system for these routers. Has anyone been working on these recently? The
broadcom-wl arm driver for this appears to be relocatable to any kernel
provided the kernel is patched properly with the open source hnd
dependencies.
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel