Re: [Bcm43xx-dev] crypto code
Hi! .. bcm43xx: Could not generate tssi2dBm table Ah, cool! :-) ACPI: PCI interrupt for device :02:02.0 disabled And that's the end of the story. What is this tssi2dBm table? Recently st3 added some code for dynamic generation of the tssi2dbm table based on the paXbY values in sprom. (Ask some physician about what this table is good for ;-) ) Your error indicates that the specification for this function is still broken... shame on me! ;-) Could you add some printk's to bcm43xx_read_sprom to print out all paXbY (with X \in {0,1}, Y \in {0,1,2}) and send those values to me? Sven PS: Happy new year to everybody! ___ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de http://lists.berlios.de/mailman/listinfo/bcm43xx-dev
[Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
I am running rev 991 on an iBook G4 (openfirmware id PowerBook6,5) and Airport Extreme. I can associate with the base station, but I obtain TX timeouts after the driver has transmitted approximately 410 packets, where 410 is 80% of the number of DMA slots (512). Upon further investigation, it appears that the function handle_irq_transmit_status() is never called, and therefore the driver never frees DMA slots in bcm43xx_dma_handle_xmitstatus(). Therefore, the driver suspends when reaching suspend_mark in request_slot() and never recovers. This behavior seems consistent with the reports of ``occasional'' TX timeouts by other people on this mailing list. I do observe bcm43xx_interrupt_handler() being invoked, but the ``reason'' variable never has the BCM43xx_IRQ_XMIT_STATUS set. I would appreciate if other people could confirm whether handle_irq_transmit_status() is called on their system, so that I can try to further diagnose the problem. Cheers, Matteo Frigo ___ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de http://lists.berlios.de/mailman/listinfo/bcm43xx-dev
Re: [Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
On Sun, 2006-01-01 at 08:54 -0600, Matteo Frigo wrote: I would appreciate if other people could confirm whether handle_irq_transmit_status() is called on their system, so that I can try to further diagnose the problem. It's not being called here -- I see precisely the same as you. It stops after sending about 410 packets. With the built-in wireless (PowerBook5,3) this leads to a TX timeout, a reset, and then I need to set the ESSID again before it works any more. With a Belkin F5D7010 I found lying around, it didn't recover from the error... SoftMAC: assoc request timed out! NETDEV WATCHDOG: eth2: transmit timed out bcm43xx_interrupt_disable(), 0-0 bcm43xx: FATAL ERROR (TX timeout): Resetting the chip... bcm43xx: Radio turned off bcm43xx: DMA 0x0260 (RX) max used slots: 0/64 bcm43xx: DMA 0x0200 (RX) max used slots: 0/64 bcm43xx: DMA 0x0260 (TX) max used slots: 0/512 bcm43xx: DMA 0x0240 (TX) max used slots: 0/512 bcm43xx: DMA 0x0220 (TX) max used slots: 2/512 bcm43xx: DMA 0x0200 (TX) max used slots: 0/512 bcm43xx: Card IRQ register not responding. Giving up. bcm43xx: Chip reset failed! The only way to recover was to physically remove the card... which was OK a couple of times but then http://david.woodhou.se/dcp_1910.jpg happened when I removed the card a third time. Since rebooting, the Belkin card does seem to recover OK from the TX timeout. -- dwmw2 ___ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de http://lists.berlios.de/mailman/listinfo/bcm43xx-dev
Re: [Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
On Sunday 01 January 2006 19:35, David Woodhouse wrote: On Sun, 2006-01-01 at 08:54 -0600, Matteo Frigo wrote: I would appreciate if other people could confirm whether handle_irq_transmit_status() is called on their system, so that I can try to further diagnose the problem. It's not being called here -- I see precisely the same as you. It stops after sending about 410 packets. With the built-in wireless (PowerBook5,3) this leads to a TX timeout, a reset, and then I need to set the ESSID again before it works any more. With a Belkin F5D7010 I found lying around, it didn't recover from the error... SoftMAC: assoc request timed out! NETDEV WATCHDOG: eth2: transmit timed out bcm43xx_interrupt_disable(), 0-0 bcm43xx: FATAL ERROR (TX timeout): Resetting the chip... I am not sure why this happens. It is currently a bit hard to audit the code for the issue, because the webserver with the specifications is down and I don't have an up-to-date mirror. -- Greetings Michael. pgpBKqi1FnLhz.pgp Description: PGP signature
[Bcm43xx-dev] authentication problem
Hello everyone - almost have the driver functional, but am running into this message when I try to iwconfig the device up: SoftMAC: cannot associate without being authenticated, requested authentication The machine is a beige G3 Powermac running Debian Sarge 3.1r0. The driver tarball i have is 20051230. The same goes for my SoftMAC module. Any help would be greatly appreciated Lordgoatman __ Yahoo! for Good - Make a difference this year. http://brand.yahoo.com/cybergivingweek2005/ ___ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de http://lists.berlios.de/mailman/listinfo/bcm43xx-dev
Re: [Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
On Sunday 01 January 2006 19:35, David Woodhouse wrote: On Sun, 2006-01-01 at 08:54 -0600, Matteo Frigo wrote: I would appreciate if other people could confirm whether handle_irq_transmit_status() is called on their system, so that I can try to further diagnose the problem. It's not being called here -- I see precisely the same as you. It stops after sending about 410 packets. With the built-in wireless (PowerBook5,3) this leads to a TX timeout, a reset, and then I need to set the ESSID again before it works any more. With a Belkin F5D7010 I found lying around, it didn't recover from the error... SoftMAC: assoc request timed out! NETDEV WATCHDOG: eth2: transmit timed out bcm43xx_interrupt_disable(), 0-0 bcm43xx: FATAL ERROR (TX timeout): Resetting the chip... bcm43xx: Radio turned off bcm43xx: DMA 0x0260 (RX) max used slots: 0/64 bcm43xx: DMA 0x0200 (RX) max used slots: 0/64 bcm43xx: DMA 0x0260 (TX) max used slots: 0/512 bcm43xx: DMA 0x0240 (TX) max used slots: 0/512 bcm43xx: DMA 0x0220 (TX) max used slots: 2/512 bcm43xx: DMA 0x0200 (TX) max used slots: 0/512 bcm43xx: Card IRQ register not responding. Giving up. bcm43xx: Chip reset failed! Can you please check if latest SVN (r994 or later) has the same behaviour? -- Greetings Michael. pgpS0bIsLMizf.pgp Description: PGP signature
Re: [Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
On Sunday 01 January 2006 22:21, Matteo Frigo wrote: Michael Buesch [EMAIL PROTECTED] writes: You have a device with a wlcore rev 5, which uses one DMA engine for TX status blobs. This code is untested and indeed likely to be wrong. I have no facilities to test it (neither has any other developer). Well, I do have a card with rev 5, so I can test it. On my machine, the code does invoke dma_rx() to read from rx_ring1, so at least this part is working. However, I always get len == 0 when (ring-mmio_base == BCM43xx_MMIO_DMA4_BASE), the packet is dropped, and the bcm43xx_rx_transmitstatus() mechanism is not invoked. Any suggestion? Ok, it should not be dropped. Afaik the len should be ignored on DMA4. (I can not check, as the specs server is down). But you may play around by yourself. Do a hack to ignore the len on DMA4 and pass the xmitstatus blob to bcm43xx_rx_transmitstatus(). The xmitstatus blob is at the beginning of the descriptor buffer (_no_ frame offset is used) and has a length of sizeof(struct bcm43xx_hwxmitstatus). So instead of doing: len = le16_to_cpu(rxhdr-frame_length); You might hack something like that: if (ring-mmio_base == BCM43xx_MMIO_DMA4_BASE) len = sizeof(struct bcm43xx_hwxmitstatus); else len = le16_to_cpu(rxhdr-frame_length); Please also do another thing. dump the xmitstatus blob, using bcm43xx_printk_dump() and post the hexdump here. Just to see if we actually receive sane data. -- Greetings Michael. pgpP8LV1pMy7v.pgp Description: PGP signature
Re: [Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
This patch seems to do the trick. I am ignoring the bcm43xx_rx_transmitstatus() mechanism and calling bcm43xx_dma_handle_xmitstatus() directly. patch Description: Binary data
[Bcm43xx-dev] Support for BCM47XX (dscape branch)
Hi BCM43xx hackers. I'm one of the OpenWrt developers and I'm currently working on integrating your driver into our development branch. I've written a patch which adds support for a BCM43xx core integrated into the main SB of the BCM47xx SoC. It applies against the dscape branch, which I intend to use, but it should be easy to port it to trunk. Some people on irc.sipsolutions already reviewed an earlier version, so it would be nice if you could commit this version to SVN. While testing it, I was able to associate with another AP, but couldn't transfer any data (had to hack some of the rate stuff for testing, this might be the problem). Have fun, Felix Index: bcm43xx_main.h === --- bcm43xx_main.h (revision 994) +++ bcm43xx_main.h (working copy) @@ -33,7 +33,26 @@ #include bcm43xx.h +#ifdef CONFIG_BCM947XX +#define atoi(str) simple_strtoul(((str != NULL) ? str : ), NULL, 0) +static inline void e_aton(char *str, char *dest) +{ + int i = 0; + u16 *d = (u16 *) dest; + + for (;;) { + dest[i++] = (char) simple_strtoul(str, NULL, 16); + str += 2; + if (!*str++ || i == 6) + break; + } + for (i = 0; i 3; i++) + d[i] = cpu_to_be16(d[i]); +} +#endif + + #define _bcm43xx_declare_plcp_hdr(size) \ struct bcm43xx_plcp_hdr##size { \ union { \ Index: bcm43xx_dma.c === --- bcm43xx_dma.c (revision 994) +++ bcm43xx_dma.c (working copy) @@ -338,7 +338,7 @@ meta-skb = skb; meta-dmaaddr = dmaaddr; skb-dev = ring-bcm-net_dev; - desc_addr = (u32)(dmaaddr + BCM43xx_DMA_DMABUSADDROFFSET); + desc_addr = (u32)(dmaaddr + ring-memoffset); desc_ctl = (BCM43xx_DMADTOR_BYTECNT_MASK (u32)(ring-rx_buffersize - ring-frameoffset)); if (slot == ring-nr_slots - 1) @@ -407,7 +407,7 @@ /* Set Transmit Descriptor ring address. */ bcm43xx_write32(ring-bcm, ring-mmio_base + BCM43xx_DMA_TX_DESC_RING, -ring-dmabase + BCM43xx_DMA_DMABUSADDROFFSET); +ring-dmabase + ring-memoffset); } else { err = alloc_initial_descbuffers(ring); if (err) @@ -421,7 +421,7 @@ /* Set Receive Descriptor ring address. */ bcm43xx_write32(ring-bcm, ring-mmio_base + BCM43xx_DMA_RX_DESC_RING, -ring-dmabase + BCM43xx_DMA_DMABUSADDROFFSET); +ring-dmabase + ring-memoffset); /* Init the descriptor pointer. */ bcm43xx_write32(ring-bcm, ring-mmio_base + BCM43xx_DMA_RX_DESC_INDEX, @@ -496,6 +496,13 @@ if (!ring-meta) goto err_kfree_ring; + ring-memoffset = BCM43xx_DMA_DMABUSADDROFFSET; +#ifdef CONFIG_BCM947XX + if (bcm-pci_dev-bus-number == 0) + ring-memoffset = 0; +#endif + + spin_lock_init(ring-lock); ring-bcm = bcm; ring-nr_slots = nr_descriptor_slots; @@ -808,7 +815,7 @@ return -ENOMEM; } - desc_addr = (u32)(meta-dmaaddr + BCM43xx_DMA_DMABUSADDROFFSET); + desc_addr = (u32)(meta-dmaaddr + ring-memoffset); desc_ctl = BCM43xx_DMADTOR_FRAMESTART | (BCM43xx_DMADTOR_BYTECNT_MASK (u32)(hdr_skb-len)); if (slot == ring-nr_slots - 1) @@ -837,7 +844,7 @@ return -ENOMEM; } - desc_addr = (u32)(meta-dmaaddr + BCM43xx_DMA_DMABUSADDROFFSET); + desc_addr = (u32)(meta-dmaaddr + ring-memoffset); desc_ctl = (BCM43xx_DMADTOR_BYTECNT_MASK (u32)(skb-len)); if (slot == ring-nr_slots - 1) desc_ctl |= BCM43xx_DMADTOR_DTABLEEND; Index: bcm43xx_dma.h === --- bcm43xx_dma.h (revision 994) +++ bcm43xx_dma.h (working copy) @@ -123,6 +123,8 @@ struct bcm43xx_private *bcm; /* Kernel virtual base address of the ring memory. */ struct bcm43xx_dmadesc *vbase; + /* DMA memory offset */ + dma_addr_t memoffset; /* (Unadjusted) DMA base bus-address of the ring memory. */ dma_addr_t dmabase; /* Meta data about all descriptors. */ Index: bcm43xx_debugfs.c === --- bcm43xx_debugfs.c (revision 994) +++ bcm43xx_debugfs.c (working copy) @@ -88,7 +88,7 @@ pci_dev-vendor, pci_dev-device); fappend(subsystem_vendor: 0x%04x subsystem_device: 0x%04x\n, pci_dev-subsystem_vendor, pci_dev-subsystem_device); - fappend(IRQ: %d\n, pci_dev-irq); + fappend(IRQ: %d\n, bcm-irq); fappend(mmio_addr: 0x%p mmio_len: %u\n, bcm-mmio_addr, bcm-mmio_len); fappend(chip_id: 0x%04x chip_rev: 0x%02x\n, bcm-chip_id, bcm-chip_rev); if ((bcm-core_80211[0].rev = 3) (bcm43xx_read32(bcm, 0x0158) (1 16))) Index: bcm43xx_main.c === --- bcm43xx_main.c (revision 994) +++ bcm43xx_main.c (working copy) @@ -57,6 +57,10 @@ MODULE_AUTHOR(Michael Buesch); MODULE_LICENSE(GPL); +#ifdef CONFIG_BCM947XX +extern char *nvram_get(char *name); +#endif + /* Module parameters */ static int modparam_pio; module_param_named(pio, modparam_pio, int, 0444); @@ -107,6 +111,11 @@ * http://openfacts.berlios.de/index-en.phtml?title=Bcm43xxDevices */ +#ifdef
Re: [Bcm43xx-dev] handle_irq_transmit_status() never called on iBook, Airport Extreme
On Sunday 01 January 2006 23:52, you wrote: This patch seems to do the trick. I am ignoring the bcm43xx_rx_transmitstatus() mechanism and calling bcm43xx_dma_handle_xmitstatus() directly. Ok, very good. I will apply this patch and also remove the dead bcm43xx_rx_transmitstatus code. Thanks. -- Greetings Michael. pgp86mIQOMTHh.pgp Description: PGP signature