Re: [OpenWrt-Devel] GCC4.3 patch (wip)
Luigi 'Comio' Mantellini wrote: > Ciao again, > > > On ven, 2008-06-13 at 11:22 +0200, Luigi 'Comio' Mantellini wrote: >> Ciao, > >> make[4]: Entering directory >> `/mnt/devel/openwrt/OpenWRT.git/build_dir/toolchain-m68k_gcc4.3.1/uClibc-0.9.29' >> install -d >> /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib >> install -m 644 lib/lib*-0.9.29.so \ >> >> /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib >> cd lib && tar -cf - *.so.* | tar -xf - -C >> /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib >> tar: error while loading shared libraries: libpthread.so.0: ELF file data >> encoding not little-endian >> tar: error while loading shared libraries: libpthread.so.0: ELF file data >> encoding not little-endian You've seem to remove some some mandatory path in system library search - if your had LD_LIBRARY_PATH set you've might need to do: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/lib in contrast to export LD_LIBRARY_PATH=/path/to/your/lib > > My self-answer: This error is caused by the "LD_LIBRARY_PATH" that I > defined into rule.mk. At this point I need to resolve an issue: GCC4.3 > requires gmp and mpfr libraries. I added the makefile under the > toolchain directory in order to create the needed libraries (libgmp.so > and libmpfr.so). I placed these libraries into the > staging_dir/host/lib/ directory... but (cross)gcc doesn't start because > this directory is not in the ld path... I thought to solve this issue > using the LD_LIBRARY_PATH=$(TOP)/staging_dir/host/lib/ ... but this > creates the error in tar application > > Now, with LD_LIBRARY_PATH env. variable removed, I'm compiling the > gcc-final... but I will need it when the (cross)gcc is invoked. > > question: Where can I place the host libraries (__NOT TARGET__) in order > to be visible to cross-compiler (and in general, to crosstools)? Maybe all you need to do is correctly supply the full path to the includes/libraries via C(PP)FLAGS/LDFLAGS in the makefile, or on the command line instead of using LD_LIBRARY_PATH. Another approach would be to statically build/link the tar app inside the openWRT SDK and use the LD_LIBRARY_PATH after all. HTH, Hinko -- ČETRTA POT, d.o.o., Kranj Planina 3 4000 Kranj Slovenia, Europe Tel. +386 (0) 4 280 66 03 E-mail: [EMAIL PROTECTED] Http: www.cetrtapot.si ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] GCC4.3 patch (wip)
Hi Hinko, Hi List, see my inline comments. On lun, 2008-06-16 at 10:05 +0200, Hinko Kocevar wrote: > Luigi 'Comio' Mantellini wrote: > > Ciao again, > > > > > > On ven, 2008-06-13 at 11:22 +0200, Luigi 'Comio' Mantellini wrote: > >> Ciao, > > > >> make[4]: Entering directory > >> `/mnt/devel/openwrt/OpenWRT.git/build_dir/toolchain-m68k_gcc4.3.1/uClibc-0.9.29' > >> install -d > >> /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib > >> install -m 644 lib/lib*-0.9.29.so \ > >> > >> /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib > >> cd lib && tar -cf - *.so.* | tar -xf - -C > >> /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib > >> tar: error while loading shared libraries: libpthread.so.0: ELF file data > >> encoding not little-endian > >> tar: error while loading shared libraries: libpthread.so.0: ELF file data > >> encoding not little-endian > > You've seem to remove some some mandatory path in system library search - if > your had LD_LIBRARY_PATH set you've might need to do: > export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/lib > in contrast to > export LD_LIBRARY_PATH=/path/to/your/lib > I added the following into $(TOP)/rule.mk (and I don't like what I do...): export LD_LIBRARY_PATH=$(TOP)/staging_dir/host/lib:$(LD_LIBRARY_PATH) Anyway I decided to change approach: install directly on the host environment the GMP and MPFR library need to GCC4.3 compiler... OpenWRT should make some check to recognize these libraries: ifneq ($(CONFIG_GCC_VERSION_4_3_X),) define Require/gmp echo 'int main(int argc, char **argv) { return ((__GNU_MP_VERSION*1000+__GNU_MP_VERSION_MINOR)*1000+__GNU_MP_VERSION_PATCHLEVEL)>=004001000?0:1; }' | gcc -include gmp.h -x c -o $(TMP_DIR)/gmptest.o -lgmp - endef $(eval $(call Require,gmp, \ Please install lib gmp >= 4.1.0 \ )) define Require/mpfr echo 'int main(int argc, char **argv) { return (MPFR_VERSION>=MPFR_VERSION_NUM(2,3,0))?0:1; }' | \ gcc -include mpfr.h -x c -o $(TMP_DIR)/a.out -lmpfr - endef $(eval $(call Require,mpfr, \ Please install lib mpfr >= 2.3.0 \ )) endif Unfortunately, this code cannot be performed by prereq-build.mk because we don't know if we need gcc4.3 or not. > > > > My self-answer: This error is caused by the "LD_LIBRARY_PATH" that I > > defined into rule.mk. At this point I need to resolve an issue: GCC4.3 > > requires gmp and mpfr libraries. I added the makefile under the > > toolchain directory in order to create the needed libraries (libgmp.so > > and libmpfr.so). I placed these libraries into the > > staging_dir/host/lib/ directory... but (cross)gcc doesn't start because > > this directory is not in the ld path... I thought to solve this issue > > using the LD_LIBRARY_PATH=$(TOP)/staging_dir/host/lib/ ... but this > > creates the error in tar application > > > > Now, with LD_LIBRARY_PATH env. variable removed, I'm compiling the > > gcc-final... but I will need it when the (cross)gcc is invoked. > > > > question: Where can I place the host libraries (__NOT TARGET__) in order > > to be visible to cross-compiler (and in general, to crosstools)? > > Maybe all you need to do is correctly supply the full path to the > includes/libraries via C(PP)FLAGS/LDFLAGS in the makefile, or on the command > line instead of using LD_LIBRARY_PATH. Another approach would be to > statically build/link the tar app inside the openWRT SDK and use the > LD_LIBRARY_PATH after all. > > HTH, > > Hinko > I would patch OpenWRT as little as possible, of course. The solution should be to link statically libgmp and libmpfr to gcc cross-compiler... but How can I say this to the gcc configure? Furthermore I chosen to avoid to compile the mpfr and gmp into the OpenWRT environment... Now I have an error during the gcc-final regarding ctype_base... Thanks and Best regards, luigi Industrie Dial Face S.p.A. Luigi Mantellini R&D - Software Industrie Dial Face S.p.A. Via Canzo, 4 20068 Peschiera Borromeo (MI), Italy Tel.: +39 02 5167 2813 Fax:+39 02 5167 2459 E-mail: [EMAIL PROTECTED] GPG fingerprint: 3DD1 7B71 FBDF 6376 1B4A B003 175F E979 907E 1650 <>___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] GCC4.3 patch (wip)
Luigi 'Comio' Mantellini wrote: > Hi Hinko, > Hi List, > > see my inline comments. > > On lun, 2008-06-16 at 10:05 +0200, Hinko Kocevar wrote: > >> Luigi 'Comio' Mantellini wrote: >>> Ciao again, >>> >>> >>> On ven, 2008-06-13 at 11:22 +0200, Luigi 'Comio' Mantellini wrote: Ciao, make[4]: Entering directory `/mnt/devel/openwrt/OpenWRT.git/build_dir/toolchain-m68k_gcc4.3.1/uClibc-0.9.29' install -d /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib install -m 644 lib/lib*-0.9.29.so \ /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib cd lib && tar -cf - *.so.* | tar -xf - -C /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1//lib tar: error while loading shared libraries: libpthread.so.0: ELF file data encoding not little-endian tar: error while loading shared libraries: libpthread.so.0: ELF file data encoding not little-endian >> You've seem to remove some some mandatory path in system library search - if >> your had LD_LIBRARY_PATH set you've might need to do: >> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/lib >> in contrast to >> export LD_LIBRARY_PATH=/path/to/your/lib >> > > > I added the following into $(TOP)/rule.mk (and I don't like what I > do...): > > export LD_LIBRARY_PATH=$(TOP)/staging_dir/host/lib:$(LD_LIBRARY_PATH) > > > Anyway I decided to change approach: install directly on the host > environment the GMP and MPFR library need to GCC4.3 compiler... OpenWRT > should make some check to recognize these libraries: > > > ifneq ($(CONFIG_GCC_VERSION_4_3_X),) > define Require/gmp > echo 'int main(int argc, char **argv) { return > ((__GNU_MP_VERSION*1000+__GNU_MP_VERSION_MINOR)*1000+__GNU_MP_VERSION_PATCHLEVEL)>=004001000?0:1; > }' | > gcc -include gmp.h -x c -o $(TMP_DIR)/gmptest.o -lgmp > - > endef > > $(eval $(call Require,gmp, \ > Please install lib gmp >= 4.1.0 \ > )) > > define Require/mpfr > echo 'int main(int argc, char **argv) { return > (MPFR_VERSION>=MPFR_VERSION_NUM(2,3,0))?0:1; }' | \ > gcc -include mpfr.h -x c -o $(TMP_DIR)/a.out -lmpfr - > endef > > $(eval $(call Require,mpfr, \ > Please install lib mpfr >= 2.3.0 \ > )) > > endif > > > Unfortunately, this code cannot be performed by prereq-build.mk because > we don't know if we need gcc4.3 or not. > > >>> My self-answer: This error is caused by the "LD_LIBRARY_PATH" that I >>> defined into rule.mk. At this point I need to resolve an issue: GCC4.3 >>> requires gmp and mpfr libraries. I added the makefile under the >>> toolchain directory in order to create the needed libraries (libgmp.so >>> and libmpfr.so). I placed these libraries into the >>> staging_dir/host/lib/ directory... but (cross)gcc doesn't start because >>> this directory is not in the ld path... I thought to solve this issue >>> using the LD_LIBRARY_PATH=$(TOP)/staging_dir/host/lib/ ... but this >>> creates the error in tar application >>> >>> Now, with LD_LIBRARY_PATH env. variable removed, I'm compiling the >>> gcc-final... but I will need it when the (cross)gcc is invoked. >>> >>> question: Where can I place the host libraries (__NOT TARGET__) in order >>> to be visible to cross-compiler (and in general, to crosstools)? >> Maybe all you need to do is correctly supply the full path to the >> includes/libraries via C(PP)FLAGS/LDFLAGS in the makefile, or on the command >> line instead of using LD_LIBRARY_PATH. Another approach would be to >> statically build/link the tar app inside the openWRT SDK and use the >> LD_LIBRARY_PATH after all. >> >> HTH, >> >> Hinko >> > > > I would patch OpenWRT as little as possible, of course. The solution > should be to link statically libgmp and libmpfr to gcc cross-compiler... > but How can I say this to the gcc configure? > > Furthermore I chosen to avoid to compile the mpfr and gmp into the > OpenWRT environment... Now I have an error during the gcc-final > regarding ctype_base... > I guess you could look at the uclibc buildroot at http://buildroot.uclibc.org/ and the way they handle the mpfr/gmp for gcc toolchain. -- ČETRTA POT, d.o.o., Kranj Planina 3 4000 Kranj Slovenia, Europe Tel. +386 (0) 4 280 66 03 E-mail: [EMAIL PROTECTED] Http: www.cetrtapot.si ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [patch] (1/3) r6040.c: added debugs, more global procedures
Hi, this is the first of three patches to fix the ethernet driver of RDC R32xx applied to svn r10754. It adds debugs and make some procedures (r6040_*) global symbols in order to help with debugging kernel oops. Version is increased from 0.16 to 0.18 to avoid conflicts with the driver variant metioned in the X-WRT forum (call 0.17.3) Tested on a Sitecom WL-153. Signed-Off-By: Joerg Albert <[EMAIL PROTECTED]> Index: r6040.c === --- r6040.c (revision 11401) +++ r6040.c (working copy) @@ -50,9 +50,46 @@ #include #define DRV_NAME "r6040" -#define DRV_VERSION"0.16" -#define DRV_RELDATE"10Nov2007" +#define DRV_VERSION"0.18" +#define DRV_RELDATE"13Jun2008" +/* define bits of a debug mask */ +#define DBG_PHY (1<< 0) /*!< show PHY read/write */ +#define DBG_FREE_BUFS (1<< 1) /*!< show calls to r6040_free_*bufs */ +#define DBG_RING (1<< 2) /*!< debug init./freeing of descr rings */ +#define DBG_RX_BUF(1<< 3) /*!< show alloc. of new rx buf (in IRQ context !) */ +#define DBG_TX_BUF(1<< 4) /*!< show arrival of new tx buf */ +#define DBG_RX_IRQ(1<< 5) /*!< show RX IRQ handling */ +#define DBG_TX_IRQ(1<< 6) /*!< debug TX done IRQ */ +#define DBG_RX_DESCR (1<< 7) /*!< debug rx descr to be processed */ +#define DBG_RX_DATA (1<< 8) /*!< show some user data of incoming packet */ +#define DBG_EXIT (1<< 9) /*!< show exit code calls */ +#define DBG_INIT (1<<10) /*!< show init. code calls */ +#define DBG_TX_RING_DUMP (1<<11) /*!< dump the tx ring after creation */ +#define DBG_RX_RING_DUMP (1<<12) /*!< dump the rx ring after creation */ +#define DBG_TX_DESCR (1<<13) /*!< dump the setting of a descr for tx */ +#define DBG_TX_DATA (1<<14) /*!< dump some tx data */ +#define DBG_IRQ (1<<15) /*!< print inside the irq handler */ +#define DBG_POLL (1<<16) /*!< dump info on poll procedure */ +#define DBG_MAC_ADDR (1<<17) /*!< debug mac address setting */ +#define DBG_OPEN (1<<18) /*!< debug open proc. */ + +static int debug = 0; +module_param(debug, int, 0); +MODULE_PARM_DESC(debug, "debug mask (-1 for all)"); + +/* define wcd hich debugs are left in the code during compilation */ +#define DEBUG (-1) /* all debugs */ + +#define dbg(l, f, ...) \ + do { \ +if ((DEBUG & l) && (debug & l)) { \ + printk(KERN_INFO DRV_NAME " %s: " f, __FUNCTION__, ## __VA_ARGS__); \ +} \ + } while (0) + +#define err(f, ...) printk(KERN_WARNING DRV_NAME " %s: " f, __FUNCTION__, ## __VA_ARGS__) + /* PHY CHIP Address */ #define PHY1_ADDR 1 /* For MAC1 */ #define PHY2_ADDR 2 /* For MAC2 */ @@ -182,11 +219,43 @@ static int phy_table[] = { PHY1_ADDR, PHY2_ADDR }; +/* jal2: comment out to get more symbols for debugging */ +//#define STATIC static +#define STATIC + +#if DEBUG +/*! hexdump an memory area into a string. delim is taken as the delimiter between two bytes. +It is omitted if delim == '\0' */ +STATIC char *hex2str(void *addr, char *buf, int nr_bytes, int delim) +{ + unsigned char *dst = addr; + char *outb = buf; + +#define BIN2HEXDIGIT(x) ((x) < 10 ? '0'+(x) : 'A'-10+(x)) + + while (nr_bytes > 0) { + *outb++ = BIN2HEXDIGIT(*dst>>4); + *outb++ = BIN2HEXDIGIT(*dst&0xf); + if (delim) + *outb++ = delim; + nr_bytes--; + dst++; + } + + if (delim) + dst--; + *dst = '\0'; + return buf; +} + +#endif /* #if DEBUG */ + /* Read a word data from PHY Chip */ -static int phy_read(void __iomem *ioaddr, int phy_addr, int reg) +STATIC int phy_read(void __iomem *ioaddr, int phy_addr, int reg) { int limit = 2048; u16 cmd; + int rc; iowrite16(MDIO_READ + reg + (phy_addr << 8), ioaddr + MMDIO); /* Wait for the read bit to be cleared */ @@ -196,15 +265,24 @@ break; } - return ioread16(ioaddr + MMRD); + if (limit <= 0) + err("phy addr x%x reg x%x timed out\n", + phy_addr, reg); + + rc=ioread16(ioaddr + MMRD); + + dbg(DBG_PHY, "phy addr x%x reg x%x val x%x\n", phy_addr, reg, rc); + return rc; } /* Write a word data from PHY Chip */ -static void phy_write(void __iomem *ioaddr, int phy_addr, int reg, u16 val) +STATIC void phy_write(void __iomem *ioaddr, int phy_addr, int reg, u16 val) { int limit = 2048; u16 cmd; + dbg(DBG_PHY, "phy addr x%x reg x%x val x%x\n", phy_addr, reg, val); + iowrite16(val, ioaddr + MMWD); /* Write the command to the MDIO bus */ iowrite16(MDIO_WRITE + reg + (phy_addr << 8), ioaddr + MMDIO); @@ -214,9 +292,12 @@ if (cmd & MDIO_WRITE) break; } + if (limit <= 0) +
[OpenWrt-Devel] [patch] (2/3) r6040.c: re-added parent modparam, fixed tx timeouts
This patch applies to the RDC 32xx ethernet driver (svn r10754, first patch applied) and fixes the following issues: - re-added the parent parameter to specify a netdevice to steal the MAC address from (optional). - fixed null pointer access in r6040_rx() (lp->dev init. was missing) - fixed "scheduling while atomic" endless loop if tx_timeout() was called (caused by the re-allocs of the buffers) - fixed tx timeouts (tx irq weren't re-enabled on rx irq) It adds some defines and cleans the code a bit (IMHO). Signed-Off by Joerg Albert <[EMAIL PROTECTED]> --- r6040.c.300 2008-06-12 00:42:01.0 +0200 +++ r6040.c 2008-06-12 16:05:23.0 +0200 @@ -128,6 +128,15 @@ #define MISR 0x3C/* Status register */ #define MIER 0x40/* INT enable register */ #define MSK_INT 0x /* Mask off interrupts */ +#define RX_FINISH 0x0001 /* rx finished irq */ +#define RX_NO_DESC 0x0002 /* rx no descr. avail. irq */ +#define RX_FIFO_FULL 0x0004 /* rx fifo full irq */ +#define RX_EARLY 0x0008 /* rx early irq */ +#define TX_FINISH 0x0010 /* tx finished irq */ +#define TX_EARLY 0x0080 /* tx early irq */ +#define EVENT_OVRFL0x0100 /* event counter overflow irq */ +#define LINK_CHANGED 0x0200 /* PHY link changed irq */ + #define ME_CISR0x44/* Event counter INT status */ #define ME_CIER0x48/* Event counter INT enable */ #define MR_CNT 0x50/* Successfully received packet counter */ @@ -164,7 +173,12 @@ #define MAX_BUF_SIZE 0x600 #define RX_DESC_SIZE (RX_DCNT * sizeof(struct r6040_descriptor)) #define TX_DESC_SIZE (TX_DCNT * sizeof(struct r6040_descriptor)) -#define MBCR_DEFAULT 0x012A /* MAC Bus Control Register */ +#define MBCR_DEFAULT 0x012A /* MAC Bus Control Register: + - wait 1 host clock until SDRAM bus request +becomes high priority + - RX FIFO: 32 byte + - TX FIFO: 64 byte + - FIFO transfer length: 16 byte */ #define MCAST_MAX 4 /* Max number multicast addresses to filter */ /* PHY settings */ @@ -176,10 +190,11 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("RDC R6040 NAPI PCI FastEthernet driver"); -#define RX_INT 0x0001 -#define TX_INT 0x0010 -#define RX_NO_DESC_INT 0x0002 -#define INT_MASK (RX_INT | TX_INT) +/*! which rx interrupts do we allow */ +#define RX_INTS(RX_FIFO_FULL|RX_NO_DESC|RX_FINISH) +/*! which tx interrupts do we allow */ +#define TX_INTS(TX_FINISH) +#define INT_MASK (RX_INTS | TX_INTS) struct r6040_descriptor { u16 status, len;/* 0-3 */ @@ -213,12 +228,20 @@ void __iomem *base; }; +struct net_device *parent_dev; +static char *parent; +module_param(parent, charp, 0444); +MODULE_PARM_DESC(parent, "Parent network device name to get the MAC address from"); + static char version[] __devinitdata = KERN_INFO DRV_NAME ": RDC R6040 NAPI net driver," "version "DRV_VERSION " (" DRV_RELDATE ")\n"; static int phy_table[] = { PHY1_ADDR, PHY2_ADDR }; +/* forward declarations */ +void r6040_multicast_list(struct net_device *dev); + /* jal2: comment out to get more symbols for debugging */ //#define STATIC static #define STATIC @@ -362,7 +385,7 @@ desc_ring, desc_dma, size); while (size-- > 0) { - mapping += sizeof(sizeof(*desc)); + mapping += sizeof(*desc); desc->ndesc = cpu_to_le32(mapping); desc->vndescp = desc + 1; desc++; @@ -376,7 +399,6 @@ STATIC void rx_buf_alloc(struct r6040_private *lp, struct net_device *dev) { struct r6040_descriptor *descptr; - void __iomem *ioaddr = lp->base; dbg(DBG_RX_BUF, "rx_insert %p rx_free_desc x%x dev %p\n", lp->rx_insert_ptr, lp->rx_free_desc, dev); @@ -399,8 +421,6 @@ descptr, descptr->skb_ptr->data, descptr->buf, lp->rx_free_desc); descptr = descptr->vndescp; lp->rx_free_desc++; - /* Trigger RX DMA */ - iowrite16(lp->mcr0 | 0x0002, ioaddr); } lp->rx_insert_ptr = descptr; } @@ -432,7 +452,6 @@ void r6040_alloc_txbufs(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); - void __iomem *ioaddr = lp->base; lp->tx_free_desc = TX_DCNT; @@ -444,8 +463,6 @@ dump_tx_ring(lp); } #endif - iowrite16(lp->tx_ring_dma, ioaddr + MTD_SA0); - iowrite16(lp->tx_ring_dma >> 16, ioaddr + MTD_SA1); } #if (DEBUG & DBG_RX_RING_DUMP) @@ -475,7 +492,6 @@ void r6040_alloc_rxbufs(struct net_device *dev) { struct r6040_priv
[OpenWrt-Devel] [patch] (3/3) r6040.c: fix long delay in outgoing pings
This patch mainly fixes the huge delay when we ping from the RDC device to another host (160-230 ms). r6040_rx() was rewritten. Further changes: - fix a bug in hex2str(), which overwrote the source with a zero - removed rx_free_desc counter; allocate skb inside r6040_rx() on the fly - r6040_rx: don't take the error from the MLSR register (may be too late) but from the descriptor (we may have to allow these errors (via MCR0) there - r6040_alloc_rxbufs() may fail due to lack of skb, added a return value - changed some debugs - more defines - version: 0.18 -> 0.19 Signed-Off by Joerg Albert <[EMAIL PROTECTED]> --- r6040.c.301 2008-06-12 17:15:45.0 +0200 +++ r6040.c 2008-06-16 12:25:26.0 +0200 @@ -50,35 +50,34 @@ #include #define DRV_NAME "r6040" -#define DRV_VERSION"0.18" -#define DRV_RELDATE"13Jun2008" +#define DRV_VERSION"0.19" +#define DRV_RELDATE"16Jun2008" /* define bits of a debug mask */ -#define DBG_PHY (1<< 0) /*!< show PHY read/write */ -#define DBG_FREE_BUFS (1<< 1) /*!< show calls to r6040_free_*bufs */ -#define DBG_RING (1<< 2) /*!< debug init./freeing of descr rings */ -#define DBG_RX_BUF(1<< 3) /*!< show alloc. of new rx buf (in IRQ context !) */ -#define DBG_TX_BUF(1<< 4) /*!< show arrival of new tx buf */ -#define DBG_RX_IRQ(1<< 5) /*!< show RX IRQ handling */ -#define DBG_TX_IRQ(1<< 6) /*!< debug TX done IRQ */ -#define DBG_RX_DESCR (1<< 7) /*!< debug rx descr to be processed */ -#define DBG_RX_DATA (1<< 8) /*!< show some user data of incoming packet */ -#define DBG_EXIT (1<< 9) /*!< show exit code calls */ -#define DBG_INIT (1<<10) /*!< show init. code calls */ -#define DBG_TX_RING_DUMP (1<<11) /*!< dump the tx ring after creation */ -#define DBG_RX_RING_DUMP (1<<12) /*!< dump the rx ring after creation */ -#define DBG_TX_DESCR (1<<13) /*!< dump the setting of a descr for tx */ -#define DBG_TX_DATA (1<<14) /*!< dump some tx data */ -#define DBG_IRQ (1<<15) /*!< print inside the irq handler */ -#define DBG_POLL (1<<16) /*!< dump info on poll procedure */ -#define DBG_MAC_ADDR (1<<17) /*!< debug mac address setting */ -#define DBG_OPEN (1<<18) /*!< debug open proc. */ +#define DBG_PHY 0x0001 /*!< show PHY read/write */ +#define DBG_FREE_BUFS 0x0002 /*!< show calls to r6040_free_*bufs */ +#define DBG_RING 0x0004 /*!< debug init./freeing of descr rings */ +#define DBG_RX_BUF0x0008 /*!< show alloc. of new rx buf (in IRQ context !) */ +#define DBG_TX_BUF0x0010 /*!< show arrival of new tx buf */ +#define DBG_TX_DONE 0x0020 /*!< debug TX done */ +#define DBG_RX_DESCR 0x0040 /*!< debug rx descr to be processed */ +#define DBG_RX_DATA 0x0080 /*!< show some user data of incoming packet */ +#define DBG_EXIT 0x0100 /*!< show exit code calls */ +#define DBG_INIT 0x0200 /*!< show init. code calls */ +#define DBG_TX_RING_DUMP 0x0400 /*!< dump the tx ring after creation */ +#define DBG_RX_RING_DUMP 0x0800 /*!< dump the rx ring after creation */ +#define DBG_TX_DESCR 0x1000 /*!< dump the setting of a descr for tx */ +#define DBG_TX_DATA 0x2000 /*!< dump some tx data */ +#define DBG_IRQ 0x4000 /*!< print inside the irq handler */ +#define DBG_POLL 0x8000 /*!< dump info on poll procedure */ +#define DBG_MAC_ADDR 0x0001 /*!< debug mac address setting */ +#define DBG_OPEN 0x0002 /*!< debug open proc. */ static int debug = 0; module_param(debug, int, 0); MODULE_PARM_DESC(debug, "debug mask (-1 for all)"); -/* define wcd hich debugs are left in the code during compilation */ +/* define which debugs are left in the code during compilation */ #define DEBUG (-1) /* all debugs */ #define dbg(l, f, ...) \ @@ -207,6 +206,21 @@ struct r6040_descriptor { u32 rev2; /* 1C-1F */ } __attribute__((aligned(32))); +/*! defines for the status field in the r6040_descriptor */ +#define DESC_STATUS_OWNER_MAC (1<<15) /*!< if set the MAC is the owner of this descriptor */ +#define DESC_STATUS_RX_OK (1<<14) /*!< rx was successful */ +#define DESC_STATUS_RX_ERR (1<<11) /*!< rx PHY error */ +#define DESC_STATUS_RX_ERR_DRIBBLE (1<<10) /*!< rx dribble packet */ +#define DESC_STATUS_RX_ERR_BUFLEN (1<< 9) /*!< rx length exceeded buffer size */ +#define DESC_STATUS_RX_ERR_LONG (1<< 8) /*!< rx length > maximum packet length */ +#define DESC_STATUS_RX_ERR_RUNT (1<< 7) /*!< rx: packet length < 64 byte */ +#define DESC_STATUS_RX_ERR_CRC (1<< 6) /*!< rx: crc error */ +#define DESC_STATUS_RX_BROADCAST(1<< 5) /*!< rx: broadcast (no error) */ +#define DESC_STATUS_RX_MULTICAST(1<< 4) /*!< rx: multicast (no error) */ +#define DESC_STATUS_RX_MCH_HIT (1<<
Re: [OpenWrt-Devel] [patch] (3/3) r6040.c: fix long delay in outgoing pings
Le Monday 16 June 2008 13:51:19 Joerg Albert, vous avez écrit : > his patch mainly fixes the huge delay when we ping from the RDC device to > another host (160-230 ms). r6040_rx() was rewritten. > Further changes: > - fix a bug in hex2str(), which overwrote the source with a zero > - removed rx_free_desc counter; allocate skb inside r6040_rx() on the fly > - r6040_rx: don't take the error from the MLSR register (may be too late) > but from the descriptor (we may have to allow these errors (via MCR0) there > - r6040_alloc_rxbufs() may fail due to lack of skb, added a return value > - changed some debugs > - more defines > - version: 0.18 -> 0.19 Whole serie applied as of [11506] to [11508], huge thanks ! -- Best regards, Florian Fainelli Email : [EMAIL PROTECTED] http://openwrt.org --- signature.asc Description: This is a digitally signed message part. ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] /sbin/usb-storage now works on NSLU2
The original /sbin/usb-storage script didn't work on my NSLU2. The below patch should be backwards compatible with the original script. I've tested it thoroughly, and it even works with hotplug, although I currently have to edit /etc/fstab prior to the hotplug, if the volume is a different file system then the previous volume that was mounted. Signed-off-by: Ross Smith --- Index: usb-storage === --- usb-storage (revision 11495) +++ usb-storage (working copy) @@ -8,19 +8,34 @@ logger "waiting on usb drive $i ..." i=$(($i+1)) cd /sys${DEVPATH} - for blk in `find host* -type d 2>/dev/null`; do + for blk in `find host* -maxdepth 0 -type d 2>/dev/null`; do cd /sys/${DEVPATH}/${blk} - BLK=$(find block* -type l 2>/dev/null) + BLK=$(find . -name 'block*' \( -type l -o -type d \) 2>/dev/null) [ -n "${BLK}" ] && { cd /sys${DEVPATH}/${blk}/${BLK} ls /dev/ > /tmp/d sleep 2 for node in `find sd* -type d 2>/dev/null| grep -v "/"`; do - echo "mounting /dev/${node} on /mnt/usbdrive" - mkdir -p /mnt/usbdrive - mount /dev/${node} /mnt/usbdrive - exit 0 + cd /sys${DEVPATH}/${blk}/${BLK}/${node} + PARTS=`find ${node}* -type d 2>/dev/null | grep -v "/"` + if [ -z "${PARTS}" ] + then + echo "mounting /dev/${node} on /mnt/usbdrive" + mkdir -p /mnt/usbdrive + mount /dev/${node} /mnt/usbdrive + exit 0 + fi + for part in ${PARTS} + do + DEV=/dev/${part} + MNT=/mnt/${part} + logger "mounting ${DEV} on ${MNT}" + test -d ${MNT} || mkdir -p ${MNT} + mount | grep ${MNT} && umount ${DEV} + mount ${DEV} ${MNT} + done done + exit 0 } done sleep 1 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH 0/2] PC Speaker support
The following patches add support for PC Speaker. ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH 1/2] Add support for pcspkr module
Signed-off-by: Vasilis Tsiligiannis <[EMAIL PROTECTED]> --- trunk/package/kernel/modules/other.mk | 17 + 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/trunk/package/kernel/modules/other.mk b/trunk/package/kernel/modules/other.mk index a096552..5f0316f 100644 --- a/trunk/package/kernel/modules/other.mk +++ b/trunk/package/kernel/modules/other.mk @@ -71,6 +71,23 @@ endef $(eval $(call KernelPackage,lp)) +define KernelPackage/pcspkr + SUBMENU:=$(OTHER_MENU) + TITLE:=PC speaker support + DEPENDS:[EMAIL PROTECTED] + KCONFIG:=CONFIG_INPUT_PCSPKR + FILES:= \ + $(LINUX_DIR)/drivers/input/misc/pcspkr.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,50, \ + pcspkr \ + ) +endef + +define KernelPackage/pcspkr/description + This enables sounds (tones) through the pc speaker +endef + +$(eval $(call KernelPackage,pcspkr)) define KernelPackage/pcmcia-core SUBMENU:=$(OTHER_MENU) -- 1.5.4.3 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] Fix aes_i586 module dependency to aes_generic for x86 target
Signed-off-by: Vasilis Tsiligiannis <[EMAIL PROTECTED]> --- trunk/package/kernel/modules/crypto.mk | 13 +++-- 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/trunk/package/kernel/modules/crypto.mk b/trunk/package/kernel/modules/crypto.mk index 68ccb60..e33ee6e 100644 --- a/trunk/package/kernel/modules/crypto.mk +++ b/trunk/package/kernel/modules/crypto.mk @@ -69,17 +69,18 @@ define KernelPackage/crypto-aes SUBMENU:=$(CRYPTO_MENU) TITLE:=AES cipher CryptoAPI module DEPENDS:=+kmod-crypto-core - KCONFIG:= \ - CONFIG_CRYPTO_AES \ - CONFIG_CRYPTO_AES_586 + KCONFIG:= CONFIG_CRYPTO_AES FILES:=$(LINUX_DIR)/crypto/aes$(CRYPTO_GENERIC).$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoLoad,09,aes$(CRYPTO_GENERIC)) endef define KernelPackage/crypto-aes/x86-2.6 - KCONFIG:=CONFIG_CRYPTO_AES_586 - FILES:=$(LINUX_DIR)/arch/x86/crypto/aes-i586.$(LINUX_KMOD_SUFFIX) - AUTOLOAD:=$(call AutoLoad,09,aes-i586) + KCONFIG+=CONFIG_CRYPTO_AES_586 + FILES+=$(LINUX_DIR)/arch/x86/crypto/aes-i586.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,09, \ + aes$(CRYPTO_GENERIC) \ + aes-i586 \ + ) endef $(eval $(call KernelPackage,crypto-aes)) -- 1.5.4.3 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH 2/2] Enable misc input devices support to linux kernel
Signed-off-by: Vasilis Tsiligiannis <[EMAIL PROTECTED]> --- trunk/target/linux/generic-2.6/config-2.6.22 |2 +- trunk/target/linux/generic-2.6/config-2.6.23 |2 +- trunk/target/linux/generic-2.6/config-2.6.24 |2 +- trunk/target/linux/generic-2.6/config-2.6.25 |2 +- trunk/target/linux/generic-2.6/config-2.6.26 |2 +- trunk/target/linux/generic-2.6/config-default |2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/trunk/target/linux/generic-2.6/config-2.6.22 b/trunk/target/linux/generic-2.6/config-2.6.22 index a09e0af..fb66806 100644 --- a/trunk/target/linux/generic-2.6/config-2.6.22 +++ b/trunk/target/linux/generic-2.6/config-2.6.22 @@ -474,7 +474,7 @@ CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_MISC is not set +CONFIG_INPUT_MISC=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_PCSPKR is not set diff --git a/trunk/target/linux/generic-2.6/config-2.6.23 b/trunk/target/linux/generic-2.6/config-2.6.23 index b2860f9..d8d78f8 100644 --- a/trunk/target/linux/generic-2.6/config-2.6.23 +++ b/trunk/target/linux/generic-2.6/config-2.6.23 @@ -485,7 +485,7 @@ CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_MISC is not set +CONFIG_INPUT_MISC=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_PCSPKR is not set diff --git a/trunk/target/linux/generic-2.6/config-2.6.24 b/trunk/target/linux/generic-2.6/config-2.6.24 index 579df9f..ff1440c 100644 --- a/trunk/target/linux/generic-2.6/config-2.6.24 +++ b/trunk/target/linux/generic-2.6/config-2.6.24 @@ -500,7 +500,7 @@ CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_MISC is not set +CONFIG_INPUT_MISC=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_PCSPKR is not set diff --git a/trunk/target/linux/generic-2.6/config-2.6.25 b/trunk/target/linux/generic-2.6/config-2.6.25 index 6773e20..2210b3e 100644 --- a/trunk/target/linux/generic-2.6/config-2.6.25 +++ b/trunk/target/linux/generic-2.6/config-2.6.25 @@ -511,7 +511,7 @@ CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_MISC is not set +CONFIG_INPUT_MISC=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_PCSPKR is not set diff --git a/trunk/target/linux/generic-2.6/config-2.6.26 b/trunk/target/linux/generic-2.6/config-2.6.26 index 5f3bc76..0c91057 100644 --- a/trunk/target/linux/generic-2.6/config-2.6.26 +++ b/trunk/target/linux/generic-2.6/config-2.6.26 @@ -511,7 +511,7 @@ CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_MISC is not set +CONFIG_INPUT_MISC=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_PCSPKR is not set diff --git a/trunk/target/linux/generic-2.6/config-default b/trunk/target/linux/generic-2.6/config-default index cbef536..395bf9b 100644 --- a/trunk/target/linux/generic-2.6/config-default +++ b/trunk/target/linux/generic-2.6/config-default @@ -444,7 +444,7 @@ CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_MISC is not set +CONFIG_INPUT_MISC=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_PCSPKR is not set -- 1.5.4.3 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] Exit post-install script successfully when PCI IDs update fails
Signed-off-by: Vasilis Tsiligiannis <[EMAIL PROTECTED]> --- packages/utils/pciutils/Makefile |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/packages/utils/pciutils/Makefile b/packages/utils/pciutils/Makefile index d20f2f5..8b5c344 100644 --- a/packages/utils/pciutils/Makefile +++ b/packages/utils/pciutils/Makefile @@ -34,6 +34,7 @@ endef define Package/pciutils/postinst #!/bin/sh $${IPKG_INSTROOT}/usr/sbin/update-pciids.sh +exit 0 endef MAKE_FLAGS += \ -- 1.5.4.3 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] Empty directories problem - package/uci Patch
Yuji Mano wrote: > Yuji Mano wrote: >> Yuji Mano wrote: >>> Hi. >>> >>> I checkout from the git repository but noticed it doesn't pull down empty >>> directories (trunk/package/base-files/files/etc/uci-defaults). >>> This wasn't a problem for me until I set CONFIG_UCI_PRECONFIG. >>> The build expects the '/etc/uci-defaults' to exist in the root fs and >>> otherwise causes errors: >>> >>> make[3]: Entering directory `/home/ymano/openwrt/trunk' >>> ( \ >>> echo "uci set 'network.lan.dns='"; \ >>> echo "uci set 'network.lan.proto=dhcp'"; \ >>> echo "uci set 'network.lan.gateway='"; \ >>> echo "uci set 'network.lan.netmask=255.255.255.0'"; \ >>> echo "uci set 'network.lan.ipaddr=192.168.1.1'"; \ >>> \ >>> ) > >>> /home/ymano/openwrt/trunk/build_dir/powerpc/root-ps3/etc/uci-defaults/base-files >>> --: line 7: >>> /home/ymano/openwrt/trunk/build_dir/powerpc/root-ps3/etc/uci-defaults/base-files: >>> No such file or directory >>> make[3]: *** >>> [/home/ymano/openwrt/trunk/build_dir/powerpc/root-ps3/etc/uci-defaults/base-files] >>> Error 1 >>> make[3]: Leaving directory `/home/ymano/openwrt/trunk' >>> make[2]: [package/rootfs-prepare] Error 2 (ignored) >>> >>> The build otherwise continues on without really letting me know that >>> something has gone horribly wrong, leaving me confused during runtime why >>> my proto is set to 'static' even though I swore I set it to 'dhcp'... >>> should the build stop on such an error? >>> >>> Can we either add dummy files to empty directories in the repository so git >>> will properly pull them down? >>> Or can we make sure the build creates necessary directories? >> >> Bumping my previous post. >> Am I the only one using git and having this problem? >> >> Can we at least fix package uci to create the necessary directory at build >> time? > > The more I think about it the more I think it makes no sense to have the > empty directory (trunk/package/base-files/files/etc/uci-defaults). > Package uci should create the directory during package install unless there > is some other package that depends on it, > in which case that package should create the directory as well during install. > > The patch below fixes the package uci build. > Also 'trunk/package/base-files/files/etc/uci-defaults/' should be removed > from the repository. > > Regards, > Yuji > > --- > package/uci/Makefile |1 + > 1 file changed, 1 insertion(+) > > --- a/package/uci/Makefile > +++ b/package/uci/Makefile > @@ -78,6 +78,7 @@ define Package/libuci-lua/install > endef > > define Package/uci/install > + $(INSTALL_DIR) $(1)/etc/uci-defaults > $(INSTALL_DIR) $(1)/sbin > $(INSTALL_BIN) $(PKG_BUILD_DIR)/uci $(1)/sbin/ > $(CP) ./files/uci/* $(1)/ Still no comments regarding this patch... Can somebody comment or commit the patch? - Yuji ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH][trunk/package/busybox/patches] - udhcpc request rootpath option
Yuji Mano wrote: > This adds a patch for busybox for udhcpc to request the rootpath option from > dhcp server. > > Signed-off-by: Yuji Mano <[EMAIL PROTECTED]> > > --- > package/busybox/patches/244-udhcpc_request_rootpath.patch | 19 > ++ > 1 file changed, 19 insertions(+) > > --- /dev/null > +++ b/package/busybox/patches/244-udhcpc_request_rootpath.patch > @@ -0,0 +1,19 @@ > +This patches udhcpc to request the rootpath option from dhcp server. > + > +Signed-off-by: Yuji Mano <[EMAIL PROTECTED]> > + > +--- > + networking/udhcp/options.c |2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +--- a/networking/udhcp/options.c > b/networking/udhcp/options.c > +@@ -25,7 +25,7 @@ const struct dhcp_option dhcp_options[] > + {"bootsize",OPTION_U16, 0x0d}, > + {"domain", OPTION_STRING | OPTION_LIST | OPTION_REQ, 0x0f}, > + {"swapsvr", OPTION_IP, 0x10}, > +-{"rootpath",OPTION_STRING, 0x11}, > ++{"rootpath",OPTION_STRING | OPTION_REQ, 0x11}, > + {"ipttl", OPTION_U8, 0x17}, > + {"mtu", OPTION_U16, 0x1a}, > + {"broadcast", OPTION_IP | OPTION_REQ, 0x1c}, It's been awhile since I posted this patch. Are there any comments or objections to it? Will someone commit this patch? - Yuji ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] nousepeerdns ppp uci option
Here's a patch to force not using the ppp peer's DNS servers. Signed-off-by: Brian J. Murrell <[EMAIL PROTECTED]>; Index: package/ppp/files/ppp.sh === --- package/ppp/files/ppp.sh(revision 11518) +++ package/ppp/files/ppp.sh(working copy) @@ -35,7 +35,10 @@ config_get pppd_options "$cfg" pppd_options config_get_bool defaultroute "$cfg" defaultroute 1 [ "$defaultroute" -eq 1 ] && defaultroute="defaultroute replacedefaultroute" || defaultroute="" + config_get_bool nousepeerdns "$cfg" nousepeerdns 1 +[ "$nousepeerdns" -eq 1 ] && usepeerdns="" || usepeerdns="usepeerdns" + interval="${keepalive##*[, ]}" [ "$interval" != "$keepalive" ] || interval=5 signature.asc Description: This is a digitally signed message part ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] nousepeerdns option for DHCP interfaces
Here's a patch to enable not using the DHCP server assigned DNS servers via a UCI option. Signed-off-by: Brian J. Murrell <[EMAIL PROTECTED]> Index: package/base-files/files/usr/share/udhcpc/default.script === --- package/base-files/files/usr/share/udhcpc/default.script(revision 11518) +++ package/base-files/files/usr/share/udhcpc/default.script(working copy) @@ -14,6 +14,18 @@ config_get proto $ifc proto [ "$proto" = "dhcp" ] || continue [ ifup = "$1" ] && { +config_get_bool nousepeerdns "$ifc" nousepeerdns 0 +[ "$nousepeerdns" -eq 0 ] && { +[ -n "$dns" ] && { +echo -n > "${RESOLV_CONF}.tmp" +${domain:+echo search $domain} >> "${RESOLV_CONF}.tmp" +for i in $dns ; do +echo "adding dns $i" +echo "nameserver $i" >> "${RESOLV_CONF}.tmp" +done +mv "${RESOLV_CONF}.tmp" "$RESOLV_CONF" +} +} uci_set_state network "$ifc" ipaddr "$ip" uci_set_state network "$ifc" netmask "${subnet:-255.255.255.0}" uci_set_state network "$ifc" dnsdomain "$domain" @@ -46,16 +58,6 @@ $(route -n | awk '/^0.0.0.0\W{9}('$valid')\W/ {next} /^0.0.0.0/ {print "route del -net "$1" gw "$2";"}') } - [ -n "$dns" ] && { - echo -n > "${RESOLV_CONF}.tmp" - ${domain:+echo search $domain} >> "${RESOLV_CONF}.tmp" - for i in $dns ; do - echo "adding dns $i" - echo "nameserver $i" >> "${RESOLV_CONF}.tmp" - done - mv "${RESOLV_CONF}.tmp" "$RESOLV_CONF" - } - hotplug_event ifup # user rules signature.asc Description: This is a digitally signed message part ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] new hotplug.d/iface script for adding /etc/hosts entries.
Here's a new hotplug script I created in hotplug.d/iface/01-hosts that I'd like to propose for addition to the standard hotplug scripts. The result of that script after a reboot of my router is: root at gw:~# cat /etc/hosts 127.0.0.1 localhost. 10.75.22.254lan 33.1.73.242 wan1 167.9.10.202wan0 The idea is to populate a local host entry for each interface and it's address so that configuration files which want a hostname can get one before any DDNS is updated with new addresses, etc. Signed-off-by: Brian J. Murrell <[EMAIL PROTECTED]> --- /dev/null 2008-04-20 11:31:37.0 -0400 +++ package/base-files/files/etc/hotplug.d/iface/01-hosts 2008-06-06 13:00:18.0 -0400 @@ -0,0 +1,36 @@ +config_load network +config_get ifname "$INTERFACE" ifname + +config_load /var/state/network + +# standard hosts file already has a loopback/localhost entry +[ "$INTERFACE" = loopback ] && exit 0 + +# need to wait for others to be done +n=0 +while [ -f /tmp/edit_hosts -a $n -lt 5 ]; do + sleep 1 + let n=n+1 +done + +[ -f /tmp/edit_hosts ] && { + logger "Unable to update /etc/hosts due to lock file /tmp/edit_hosts being present for more than 5 seconds" + exit 0 +} + +# tell others we are working +echo $$ > /tmp/edit_hosts + +[ ifup = "$ACTION" ] && { + config_get addr "$INTERFACE" ipaddr + + [ -n "$addr" ] && \ + sed -i -e "/^.* $INTERFACE$/d" -e "\$a$addr $INTERFACE" /etc/hosts +} + +[ ifdown = "$ACTION" ] && { + sed -i -e "/^.* $INTERFACE$/d" /etc/hosts +} + +rm -f /tmp/edit_hosts + signature.asc Description: This is a digitally signed message part ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel