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 000000000..7ddd45632 --- /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;  | 
