diff options
Diffstat (limited to 'package/madwifi/patches-testing/102-multicall_binary.patch')
-rw-r--r-- | package/madwifi/patches-testing/102-multicall_binary.patch | 359 |
1 files changed, 359 insertions, 0 deletions
diff --git a/package/madwifi/patches-testing/102-multicall_binary.patch b/package/madwifi/patches-testing/102-multicall_binary.patch new file mode 100644 index 0000000000..7ddd45632b --- /dev/null +++ b/package/madwifi/patches-testing/102-multicall_binary.patch @@ -0,0 +1,359 @@ +--- a/tools/80211debug.c ++++ b/tools/80211debug.c +@@ -48,6 +48,7 @@ + #include <ctype.h> + #include <getopt.h> + #include <err.h> ++#include "do_multi.h" + + #undef ARRAY_SIZE + #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +@@ -185,7 +186,7 @@ + #endif /* __linux__ */ + + int +-main(int argc, char *argv[]) ++CMD(a80211debug)(int argc, char *argv[]) + { + const char *ifname = "ath0"; + const char *cp, *tp; +--- a/tools/80211stats.c ++++ b/tools/80211stats.c +@@ -59,6 +59,7 @@ + #include "net80211/ieee80211.h" + #include "net80211/ieee80211_crypto.h" + #include "net80211/ieee80211_ioctl.h" ++#include "do_multi.h" + + #ifndef SIOCG80211STATS + #define SIOCG80211STATS (SIOCDEVPRIVATE + 2) +@@ -241,7 +242,7 @@ + } + + int +-main(int argc, char *argv[]) ++CMD(a80211stats)(int argc, char *argv[]) + { + int c, len; + struct ieee80211req_sta_info *si; +--- a/tools/athchans.c ++++ b/tools/athchans.c +@@ -58,6 +58,7 @@ + #include "net80211/ieee80211.h" + #include "net80211/ieee80211_crypto.h" + #include "net80211/ieee80211_ioctl.h" ++#include "do_multi.h" + + static int s = -1; + static const char *progname; +@@ -140,8 +141,9 @@ + } + + #define MAXCHAN ((int)(sizeof(struct ieee80211req_chanlist) * NBBY)) ++ + int +-main(int argc, char *argv[]) ++CMD(athchans)(int argc, char *argv[]) + { + const char *ifname = "wifi0"; + struct ieee80211req_chanlist chanlist; +--- a/tools/athctrl.c ++++ b/tools/athctrl.c +@@ -52,6 +52,7 @@ + #include <err.h> + + #include <net/if.h> ++#include "do_multi.h" + + static int + setsysctrl(const char *dev, const char *control , u_long value) +@@ -88,7 +89,7 @@ + } + + int +-main(int argc, char *argv[]) ++CMD(athctrl)(int argc, char *argv[]) + { + char device[IFNAMSIZ + 1]; + int distance = -1; +--- a/tools/athdebug.c ++++ b/tools/athdebug.c +@@ -51,6 +51,7 @@ + #include <ctype.h> + #include <getopt.h> + #include <err.h> ++#include "do_multi.h" + + #undef ARRAY_SIZE + #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +@@ -194,7 +195,7 @@ + #endif /* __linux__ */ + + int +-main(int argc, char *argv[]) ++CMD(athdebug)(int argc, char *argv[]) + { + #ifdef __linux__ + const char *ifname = "wifi0"; +--- a/tools/athkey.c ++++ b/tools/athkey.c +@@ -58,6 +58,7 @@ + #include "net80211/ieee80211.h" + #include "net80211/ieee80211_crypto.h" + #include "net80211/ieee80211_ioctl.h" ++#include "do_multi.h" + + static int s = -1; + static const char *progname; +@@ -213,8 +214,7 @@ + exit(-1); + } + +-int +-main(int argc, char *argv[]) ++int CMD(athkey)(int argc, char *argv[]) + { + const char *ifname = "wifi0"; + struct ieee80211req_key setkey; +--- a/tools/athstats.c ++++ b/tools/athstats.c +@@ -65,6 +65,7 @@ + + #undef ARRAY_SIZE + #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) ++#include "do_multi.h" + + static const struct { + u_int phyerr; +@@ -228,7 +229,7 @@ + } + + int +-main(int argc, char *argv[]) ++CMD(athstats)(int argc, char *argv[]) + { + #ifdef __linux__ + const char *ifname = "wifi0"; +--- /dev/null ++++ b/tools/do_multi.c +@@ -0,0 +1,36 @@ ++#include <string.h> ++#include "do_multi.h" ++ ++int ++main(int argc, char *argv[]) ++{ ++ char *progname; ++ int ret = 0; ++ ++ progname = basename(argv[0]); ++ ++ if(strcmp(progname, "80211debug") == 0) ++ ret = a80211debug_init(argc, argv); ++ if(strcmp(progname, "80211stats") == 0) ++ ret = a80211stats_init(argc, argv); ++ if(strcmp(progname, "athchans") == 0) ++ ret = athchans_init(argc, argv); ++ if(strcmp(progname, "athctrl") == 0) ++ ret = athctrl_init(argc, argv); ++ if(strcmp(progname, "athdebug") == 0) ++ ret = athdebug_init(argc, argv); ++ if(strcmp(progname, "athkey") == 0) ++ ret = athkey_init(argc, argv); ++ if(strcmp(progname, "athstats") == 0) ++ ret = athstats_init(argc, argv); ++ if(strcmp(progname, "wlanconfig") == 0) ++ ret = wlanconfig_init(argc, argv); ++ if(strcmp(progname, "wpakey") == 0) ++ ret = wpakey_init(argc, argv); ++ if(strcmp(progname, "athchans") == 0) ++ ret = athchans_init(argc, argv); ++ if(strcmp(progname, "ath_info") == 0) ++ ret = athinfo_init(argc, argv); ++ ++ return ret; ++} +--- /dev/null ++++ b/tools/do_multi.h +@@ -0,0 +1,15 @@ ++#ifdef DO_MULTI ++int a80211debug_init(int argc, char *argv[]); ++int a80211stats_init(int argc, char *argv[]); ++int athchans_init(int argc, char *argv[]); ++int athctrl_init(int argc, char *argv[]); ++int athdebug_init(int argc, char *argv[]); ++int athkey_init(int argc, char *argv[]); ++int athstats_init(int argc, char *argv[]); ++int wlanconfig_init(int argc, char *argv[]); ++int athinfo_init(int argc, char *argv[]); ++ ++#define CMD(name) name##_init ++#else ++#define CMD(name) main ++#endif +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -50,42 +50,43 @@ + PROGRAMS = athstats 80211stats athkey athchans athctrl \ + athdebug 80211debug wlanconfig wpakey + ++OBJS = $(patsubst %,%.o,$(PROGRAMS)) ath_info/ath_info.o + SUBDIRS = ath_info + +-INCS = -I. -I$(HAL) -I$(TOP) -I$(ATH_HAL) ++INCS = -I. -I$(HAL) -I$(TOP) -I$(ATH_HAL) -I$(TOP)/ath + CFLAGS = -g -O2 -Wall + ALL_CFLAGS = $(CFLAGS) $(INCS) + LDFLAGS = + +-all: all-subdirs $(PROGRAMS) ++all: all-subdirs compile + + all-subdirs: + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d || exit 1; \ + done + +-athstats: athstats.c +- $(CC) -o athstats $(ALL_CFLAGS) -I$(TOP)/ath $(LDFLAGS) athstats.c +-80211stats: 80211stats.c +- $(CC) -o 80211stats $(ALL_CFLAGS) $(LDFLAGS) 80211stats.c +-athkey: athkey.c +- $(CC) -o athkey $(ALL_CFLAGS) $(LDFLAGS) athkey.c +-athchans: athchans.c +- $(CC) -o athchans $(ALL_CFLAGS) $(LDFLAGS) athchans.c +-athctrl: athctrl.c +- $(CC) -o athctrl $(ALL_CFLAGS) $(LDFLAGS) athctrl.c +-athdebug: athdebug.c +- $(CC) -o athdebug $(ALL_CFLAGS) $(LDFLAGS) athdebug.c +-wlanconfig: wlanconfig.c +- $(CC) -o wlanconfig $(ALL_CFLAGS) $(LDFLAGS) wlanconfig.c +-80211debug: 80211debug.c +- $(CC) -o 80211debug $(ALL_CFLAGS) $(LDFLAGS) 80211debug.c +-wpakey: wpakey.c +- $(CC) -o wpakey $(ALL_CFLAGS) $(LDFLAGS) wpakey.c ++%.o: %.c ++ ${CC} $(ALL_CFLAGS) -c -o $@ $< ++ ++ifneq ($(DO_MULTI),) ++ALL_CFLAGS += -DDO_MULTI=1 ++madwifi_multi: $(OBJS) do_multi.o ++ $(CC) $(LDFLAGS) -o $@ $^ ++ ++compile: madwifi_multi ++ for i in $(PROGRAMS); do \ ++ ln -sf madwifi_multi $$i; \ ++ done ++else ++$(PROGRAMS): ++ $(CC) $(ALL_CFLAGS) -o $@ $@.c ++ ++compile: $(PROGRAMS) ++endif + + install: all + install -d $(DESTDIR)$(BINDIR) +- for i in $(PROGRAMS); do \ ++ for i in $(PROGRAMS) $(if $(DO_MULTI),madwifi_multi); do \ + install $$i $(DESTDIR)$(BINDIR)/$$i; \ + $(STRIP) $(DESTDIR)$(BINDIR)/$$i; \ + done +@@ -97,7 +98,7 @@ + done + + uninstall: +- for i in $(PROGRAMS); do \ ++ for i in $(PROGRAMS) $(if $(DO_MULTI),madwifi_multi); do \ + rm -f $(DESTDIR)$(BINDIR)/$$i; \ + done + for i in $(PROGRAMS:=.8); do \ +@@ -108,7 +109,7 @@ + done + + clean: +- rm -f $(PROGRAMS) core a.out ++ rm -f $(if $(DO_MULTI), madwifi_multi) $(PROGRAMS) core a.out *.o + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d clean; \ + done +--- a/tools/wlanconfig.c ++++ b/tools/wlanconfig.c +@@ -61,6 +61,7 @@ + #include "net80211/ieee80211.h" + #include "net80211/ieee80211_crypto.h" + #include "net80211/ieee80211_ioctl.h" ++#include "do_multi.h" + + /* + * These are taken from ieee80211_node.h +@@ -100,7 +101,7 @@ + static int verbose = 0; + + int +-main(int argc, char *argv[]) ++CMD(wlanconfig)(int argc, char *argv[]) + { + const char *ifname, *cmd; + unsigned char bnounit = 0; +--- a/tools/ath_info/Makefile ++++ b/tools/ath_info/Makefile +@@ -17,11 +17,18 @@ + + all: $(PROGRAMS) + ++ ++ifneq ($(DO_MULTI),) ++ath_info: ath_info.o ++ rm -f $@ ++ ln -s ../madwifi_multi $@ ++else + ath_info: ath_info.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< ++endif + + .c.o: +- $(CC) $(CFLAGS) -c $< ++ $(CC) $(CFLAGS) $(if $(DO_MULTI),-DDO_MULTI=1 -I..) -c $< + + clean: + rm -f *.o $(PROGRAMS) +--- a/tools/ath_info/ath_info.c ++++ b/tools/ath_info/ath_info.c +@@ -28,6 +28,7 @@ + #include <sys/mman.h> + #include <endian.h> + #include <byteswap.h> ++#include "do_multi.h" + + #undef ARRAY_SIZE + #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +@@ -1982,7 +1983,8 @@ + printf("\n"); + } + +-int main(int argc, char *argv[]) ++int ++CMD(athinfo)(int argc, char *argv[]) + { + unsigned long long dev_addr; + u_int16_t srev, phy_rev_5ghz, phy_rev_2ghz, ee_magic; +--- a/tools/wpakey.c ++++ b/tools/wpakey.c +@@ -25,6 +25,7 @@ + + #include <unistd.h> + #include <sys/ioctl.h> ++#include "do_multi.h" + + #define MACS "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx" + #define MACP(mac) (mac)[0], (mac)[1], (mac)[2], (mac)[3], (mac)[4], (mac)[5] +@@ -234,7 +235,8 @@ + "", dev); + } + +-int main(int argc, char** argv) { ++int ++CMD(wpakey)(int argc, char** argv) { + int keyidx = 0; + uint8_t mac[6]; + int cipher = IEEE80211_CIPHER_AES_CCM; |