compat: add skb_complete_wifi_ack & feature flag

This just needs to be empty -- older kernels don't
have the necessary infrastructure for this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
compat: use separate CONFIG_COMPAT_KFIFO option for building kfifo.o

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: add CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP

Some kernels have versions of (struct bin_attribute)->{read,write}
that require a struct file * as their first argument.  This change
accommodates them in the firmware loader class.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: check CONFIG_COMPAT_FIRMWARE_CLASS in compat-2.6.33.h

If a pre-2.6.33 kernel has backported suitable firmware loader
functionality, then it doesn't need the compat_firmware_class.  In that
case, compat-2.6.33 should not redefine the *_firmware function names.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: support RHEL6 as a build target

This patch enables compatibility with RHEL6 as a build target, mostly
with simple tricks similar to what was added for compatibility with
Debian Squeeze.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: add support for kernel 3.2

This adds suport for kernel 3.2.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: backport kfree_rcu()

This adds a nested function everywhere kfree_rcu() was called. This
function frees the memory and is given as a function to call_rcu().
The kfree_rcu define was made by Johannes Berg.
The rcu callback could happen every time also after the module was
unloaded and this will cause problems.
A rcu_barrier() was added into every module_exit so that this will not
be called after the module was unloaded.

The define overwriting module_exit is based on the original module_exit
which looks like this:
/* This is only required if you want to be unloadable. */
/#define module_exit(exitfn)                                    \
        static inline exitcall_t __exittest(void)               \
        { return exitfn; }                                      \
        void cleanup_module(void) __attribute__((alias(#exitfn)));

We replaced the call to the actual function exitfn() with a call to our
function which calls the original exitfn() and then rcu_barrier()

As a module will not be unloaded that ofter it should not have a big
performance impact when rcu_barrier() is called on every module exit,
also when no kfree_rcu() backport is used in that module.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
CC: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: backport netdev_features_t

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
compat: avoid warning in compat_system_workqueue_create

The check in the WARN_ON is inverted.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
compat: fix misplaced #ifdef for the workqueue backport

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
compat: implement dummy security_sk_clone

This has been defined in include/linux/security.h for some time, but was
only given an EXPORT_SYMBOL for 3.1.  Add a compat_* definition to avoid
breaking the module load with an undefined symbol.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
compat: backport atomic64 support

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
compat: fix security_sk_clone dummy backport compile

linux/security.h needs to be included before the dummy function overrides it,
otherwise the macro that redirects it to the compat version will apply to
the kernel function as well, causing multiple conflicting definitions

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
compat: add config var for CORDIC and CRC8

Sometimes the kernel version compat-wireless is build against has
support for cordic and crc8 in its source, but these modules were not
build when the kernel was build, because no one selected them. The modules are
needed for the bcmsmac driver and they should be build every time when
they were not already build while the kernel was build.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
compat: add module_usb_driver and module_platform_driver

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Add dma_zalloc_coherent to fix build with kernels older than 3.2

Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
compat: backport __netdev_printk()

This was added in v3.2, and will be used by the new
shiny alx Ethernet driver which is not yet upstream.

Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
compat: move br_port_exists() to compat-2.6.36.h

br_port_exists() was moved to a new compat-*.h file for every new
kernel release, as it is not in mainline. This patch moves it to compat-
2.6.36.h so it has not to be moved any more for a new kernel version.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
compat: use kconfig.h in compat-2.6.h for 3.1 and later kernels

This file was introduced in commit 2a11c8ea20bf850b3a2c60db8c2e7497d28aba99
and included in 3.1 and later kernels.  It includes <generated/autoconf.h>
itself, as well as some other definitions that are used elsewhere.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
Revert "compat: backport __netdev_printk()"

Reverting for now until this is fixed for all kernels
that we support.

This reverts commit fd3a74e12f687509da0a996b4e01c4fa6ca32ff8.