add updates from whiterussian to head
SVN-Revision: 1626
This commit is contained in:
parent
56829f82c5
commit
b5e7f55f97
5 changed files with 89 additions and 20 deletions
|
@ -1,9 +1,5 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
ifeq ($(BOARD),)
|
|
||||||
BOARD:=brcm
|
|
||||||
endif
|
|
||||||
|
|
||||||
KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
|
KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
|
||||||
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_JFFS2),y)
|
ifeq ($(BR2_TARGET_ROOTFS_JFFS2),y)
|
||||||
|
|
|
@ -31,16 +31,14 @@ $(PKG_BUILD_DIR)/LzmaDecode.o: src/LzmaDecode.c
|
||||||
$(PKG_BUILD_DIR)/loader.o: src/loader.c
|
$(PKG_BUILD_DIR)/loader.o: src/loader.c
|
||||||
$(TARGET_CC) $(CFLAGS) -c -o $@ $<
|
$(TARGET_CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
$(PKG_BUILD_DIR)/srec2bin: src/srec2bin.c
|
$(STAGING_DIR)/bin/srec2bin: src/srec2bin.c
|
||||||
$(HOSTCC) -o $@ $<
|
$(HOSTCC) -o $@ $<
|
||||||
|
|
||||||
$(KDIR)/vmlinux.gz: $(KDIR)/vmlinux
|
|
||||||
gzip -c -vf9 < $< > $@
|
|
||||||
|
|
||||||
$(KDIR)/vmlinux.lzma: $(KDIR)/vmlinux
|
$(KDIR)/vmlinux.lzma: $(KDIR)/vmlinux
|
||||||
cat $^ | $(STAGING_DIR)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $@ || (rm -f $@ && false)
|
cat $^ | $(STAGING_DIR)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $@ || (rm -f $@ && false)
|
||||||
|
|
||||||
$(BIN_DIR)/openwrt-ar7-2.4-kernel.bin: $(KDIR)/vmlinux.lzma compile
|
ifeq ($(IB),)
|
||||||
|
$(KDIR)/vmlinux.bin: $(KDIR)/vmlinux.lzma
|
||||||
$(TARGET_CROSS)ld -T $(PKG_BUILD_DIR)/zimage.script -r -b binary $< -o $(KDIR)/zimage.o
|
$(TARGET_CROSS)ld -T $(PKG_BUILD_DIR)/zimage.script -r -b binary $< -o $(KDIR)/zimage.o
|
||||||
$(TARGET_CROSS)ld -static -G 0 --defsym kernel_entry=$(KERNEL_ENTRY) -T $(PKG_BUILD_DIR)/ld.script \
|
$(TARGET_CROSS)ld -static -G 0 --defsym kernel_entry=$(KERNEL_ENTRY) -T $(PKG_BUILD_DIR)/ld.script \
|
||||||
$(PKG_BUILD_DIR)/loader.o \
|
$(PKG_BUILD_DIR)/loader.o \
|
||||||
|
@ -48,7 +46,11 @@ $(BIN_DIR)/openwrt-ar7-2.4-kernel.bin: $(KDIR)/vmlinux.lzma compile
|
||||||
$(KDIR)/zimage.o \
|
$(KDIR)/zimage.o \
|
||||||
-o $(KDIR)/loader
|
-o $(KDIR)/loader
|
||||||
$(TARGET_CROSS)objcopy -O srec $(KDIR)/loader $(KDIR)/ram_zimage.sre
|
$(TARGET_CROSS)objcopy -O srec $(KDIR)/loader $(KDIR)/ram_zimage.sre
|
||||||
$(PKG_BUILD_DIR)/srec2bin $(KDIR)/ram_zimage.sre $@
|
$(STAGING_DIR)/bin/srec2bin $(KDIR)/ram_zimage.sre $@
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(BIN_DIR)/openwrt-ar7-2.4-kernel.bin: $(KDIR)/vmlinux.bin
|
||||||
|
cp $< $@
|
||||||
|
|
||||||
ifeq ($(FS),jffs2-8MB)
|
ifeq ($(FS),jffs2-8MB)
|
||||||
ALIGN:=bs=131072 conv=sync
|
ALIGN:=bs=131072 conv=sync
|
||||||
|
@ -79,6 +81,6 @@ clean:
|
||||||
rm -f $(BIN_DIR)/openwrt-ar7*
|
rm -f $(BIN_DIR)/openwrt-ar7*
|
||||||
|
|
||||||
prepare: $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/zimage.script $(PKG_BUILD_DIR)/ld.script
|
prepare: $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/zimage.script $(PKG_BUILD_DIR)/ld.script
|
||||||
compile: prepare $(PKG_BUILD_DIR)/loader.o $(PKG_BUILD_DIR)/LzmaDecode.o $(PKG_BUILD_DIR)/srec2bin
|
compile: prepare $(PKG_BUILD_DIR)/loader.o $(PKG_BUILD_DIR)/LzmaDecode.o $(STAGING_DIR)/bin/srec2bin
|
||||||
install: $(BIN_DIR)/openwrt-ar7-2.4-kernel.bin $(BIN_DIR)/openwrt-ar7-$(KERNEL)-$(FS).bin
|
install: $(BIN_DIR)/openwrt-ar7-2.4-kernel.bin $(BIN_DIR)/openwrt-ar7-$(KERNEL)-$(FS).bin
|
||||||
|
|
||||||
|
|
|
@ -29,15 +29,14 @@ FSNAME:=$(patsubst jffs2-%,jffs2,$(FS))
|
||||||
|
|
||||||
ifneq ($(FS),jffs2-8MB)
|
ifneq ($(FS),jffs2-8MB)
|
||||||
$(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx
|
$(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx
|
||||||
$(STAGING_DIR)/bin/addpattern -2 -i $< -o $@ -g
|
$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
|
||||||
$(SED) "1s,^W54S,W54G," $@
|
|
||||||
|
|
||||||
install: $(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin
|
install: $(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(FS),jffs2-4MB)
|
ifneq ($(FS),jffs2-4MB)
|
||||||
$(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx
|
$(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx
|
||||||
$(STAGING_DIR)/bin/addpattern -2 -i $< -o $@ -g
|
$(STAGING_DIR)/bin/addpattern -4 -p W54S -v v4.70.6 -i $< -o $@ -g
|
||||||
|
|
||||||
install: $(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin
|
install: $(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* wlcompat.c
|
* wlcompat.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2005 Mike Baker,
|
* Copyright (C) 2005 Mike Baker,
|
||||||
* Felix Fietkau <nbd@vd-s.ath.cx>
|
* Felix Fietkau <openwrt@nbd.name>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -31,9 +31,9 @@
|
||||||
|
|
||||||
#include <net/iw_handler.h>
|
#include <net/iw_handler.h>
|
||||||
#include <wlioctl.h>
|
#include <wlioctl.h>
|
||||||
#include <wlcompat.h>
|
|
||||||
|
|
||||||
static struct net_device *dev;
|
static struct net_device *dev;
|
||||||
|
static unsigned short bss_force;
|
||||||
char buf[WLC_IOCTL_MAXLEN];
|
char buf[WLC_IOCTL_MAXLEN];
|
||||||
|
|
||||||
/* The frequency of each channel in MHz */
|
/* The frequency of each channel in MHz */
|
||||||
|
@ -341,6 +341,10 @@ static int wlcompat_ioctl(struct net_device *dev,
|
||||||
case SIOCSIWAP:
|
case SIOCSIWAP:
|
||||||
{
|
{
|
||||||
int ap = 0;
|
int ap = 0;
|
||||||
|
int infra = 0;
|
||||||
|
rw_reg_t reg;
|
||||||
|
|
||||||
|
memset(®, 0, sizeof(reg));
|
||||||
|
|
||||||
if (wrqu->ap_addr.sa_family != ARPHRD_ETHER)
|
if (wrqu->ap_addr.sa_family != ARPHRD_ETHER)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -348,13 +352,42 @@ static int wlcompat_ioctl(struct net_device *dev,
|
||||||
if (wl_ioctl(dev, WLC_GET_AP, &ap, sizeof(ap)) < 0)
|
if (wl_ioctl(dev, WLC_GET_AP, &ap, sizeof(ap)) < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (wl_ioctl(dev, (ap ? WLC_SET_BSSID : WLC_REASSOC), wrqu->ap_addr.sa_data, 6) < 0)
|
if (wl_ioctl(dev, WLC_GET_INFRA, &infra, sizeof(infra)) < 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!infra) {
|
||||||
|
wl_ioctl(dev, WLC_SET_BSSID, wrqu->ap_addr.sa_data, 6);
|
||||||
|
|
||||||
|
reg.size = 4;
|
||||||
|
reg.byteoff = 0x184;
|
||||||
|
wl_ioctl(dev, WLC_R_REG, ®, sizeof(reg));
|
||||||
|
|
||||||
|
reg.val &= 0x0000ffff;
|
||||||
|
reg.val |= bss_force << 16;
|
||||||
|
wl_ioctl(dev, WLC_W_REG, ®, sizeof(reg));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wl_ioctl(dev, ((ap || !infra) ? WLC_SET_BSSID : WLC_REASSOC), wrqu->ap_addr.sa_data, 6) < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SIOCGIWAP:
|
case SIOCGIWAP:
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
rw_reg_t reg;
|
||||||
|
memset(®, 0, sizeof(reg));
|
||||||
|
|
||||||
|
reg.size = 4;
|
||||||
|
reg.byteoff = 0x184;
|
||||||
|
wl_ioctl(dev, WLC_R_REG, ®, sizeof(reg));
|
||||||
|
printk("bss time = 0x%08x", reg.val);
|
||||||
|
|
||||||
|
reg.byteoff = 0x180;
|
||||||
|
wl_ioctl(dev, WLC_R_REG, ®, sizeof(reg));
|
||||||
|
printk("%08x\n", reg.val);
|
||||||
|
#endif
|
||||||
|
|
||||||
wrqu->ap_addr.sa_family = ARPHRD_ETHER;
|
wrqu->ap_addr.sa_family = ARPHRD_ETHER;
|
||||||
if (wl_ioctl(dev,WLC_GET_BSSID,wrqu->ap_addr.sa_data,6) < 0)
|
if (wl_ioctl(dev,WLC_GET_BSSID,wrqu->ap_addr.sa_data,6) < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -661,6 +694,19 @@ static const iw_handler wlcompat_handler[] = {
|
||||||
wlcompat_ioctl, /* SIOCGIWENCODE */
|
wlcompat_ioctl, /* SIOCGIWENCODE */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define WLCOMPAT_SET_MONITOR SIOCIWFIRSTPRIV + 0
|
||||||
|
#define WLCOMPAT_GET_MONITOR SIOCIWFIRSTPRIV + 1
|
||||||
|
#define WLCOMPAT_SET_TXPWR_LIMIT SIOCIWFIRSTPRIV + 2
|
||||||
|
#define WLCOMPAT_GET_TXPWR_LIMIT SIOCIWFIRSTPRIV + 3
|
||||||
|
#define WLCOMPAT_SET_ANTDIV SIOCIWFIRSTPRIV + 4
|
||||||
|
#define WLCOMPAT_GET_ANTDIV SIOCIWFIRSTPRIV + 5
|
||||||
|
#define WLCOMPAT_SET_TXANT SIOCIWFIRSTPRIV + 6
|
||||||
|
#define WLCOMPAT_GET_TXANT SIOCIWFIRSTPRIV + 7
|
||||||
|
#define WLCOMPAT_SET_BSS_FORCE SIOCIWFIRSTPRIV + 8
|
||||||
|
#define WLCOMPAT_GET_BSS_FORCE SIOCIWFIRSTPRIV + 9
|
||||||
|
|
||||||
|
|
||||||
static int wlcompat_private_ioctl(struct net_device *dev,
|
static int wlcompat_private_ioctl(struct net_device *dev,
|
||||||
struct iw_request_info *info,
|
struct iw_request_info *info,
|
||||||
union iwreq_data *wrqu,
|
union iwreq_data *wrqu,
|
||||||
|
@ -738,6 +784,16 @@ static int wlcompat_private_ioctl(struct net_device *dev,
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case WLCOMPAT_SET_BSS_FORCE:
|
||||||
|
{
|
||||||
|
bss_force = (unsigned short) *value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WLCOMPAT_GET_BSS_FORCE:
|
||||||
|
{
|
||||||
|
*extra = (int) bss_force;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -789,6 +845,16 @@ static const struct iw_priv_args wlcompat_private_args[] =
|
||||||
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
|
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
|
||||||
"get_txant"
|
"get_txant"
|
||||||
},
|
},
|
||||||
|
{ WLCOMPAT_SET_BSS_FORCE,
|
||||||
|
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
|
||||||
|
0,
|
||||||
|
"set_bss_force"
|
||||||
|
},
|
||||||
|
{ WLCOMPAT_GET_BSS_FORCE,
|
||||||
|
0,
|
||||||
|
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
|
||||||
|
"get_bss_force"
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const iw_handler wlcompat_private[] =
|
static const iw_handler wlcompat_private[] =
|
||||||
|
@ -861,6 +927,7 @@ static int __init wlcompat_init()
|
||||||
{
|
{
|
||||||
int found = 0, i;
|
int found = 0, i;
|
||||||
char *devname = "eth0";
|
char *devname = "eth0";
|
||||||
|
bss_force = 0;
|
||||||
|
|
||||||
while (!found && (dev = dev_get_by_name(devname))) {
|
while (!found && (dev = dev_get_by_name(devname))) {
|
||||||
if ((dev->wireless_handlers == NULL) && ((wl_ioctl(dev, WLC_GET_MAGIC, &i, sizeof(i)) == 0) && i == WLC_IOCTL_MAGIC))
|
if ((dev->wireless_handlers == NULL) && ((wl_ioctl(dev, WLC_GET_MAGIC, &i, sizeof(i)) == 0) && i == WLC_IOCTL_MAGIC))
|
||||||
|
|
|
@ -76,7 +76,7 @@ void usage(void) __attribute__ (( __noreturn__ ));
|
||||||
|
|
||||||
void usage(void)
|
void usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-{0|1|2}]\n");
|
fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-{0|1|2|4}]\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +136,11 @@ int main(int argc, char **argv)
|
||||||
hdr->flags |= SUPPORT_INTEL_FLASH;
|
hdr->flags |= SUPPORT_INTEL_FLASH;
|
||||||
hdr->flags |= SUPPORT_5325E_SWITCH;
|
hdr->flags |= SUPPORT_5325E_SWITCH;
|
||||||
break;
|
break;
|
||||||
|
case '4':
|
||||||
|
/* V4 firmware sets the flags to 0x1f */
|
||||||
|
hdr->hw_ver = 1;
|
||||||
|
hdr->flags = 0x1f;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
|
|
Loading…
Reference in a new issue