I'm trying to use 6lowpan between two avr32 boards. On each board there are two at86rf231 sharing one IRQ. I have patched at86rf230 and mac802154 into the mainline kernel 3.3.1. The board setup code is the following:
static struct at86rf230_platform_data at86rf230_info_a = { .rstn = -1, .slp_tr = GPIO_PIN_PB(10), .dig2 = -1, .reset = NULL, .reset_data = NULL, }; static struct at86rf230_platform_data at86rf230_info_b = { .rstn = -1, .slp_tr = GPIO_PIN_PB(11), .dig2 = -1, .reset = NULL, .reset_data = NULL, }; static struct spi_board_info spi0_board_info[] __initdata = { { .modalias = "at86rf230", .max_speed_hz = 1000000, .irq = AT32_EXTINT(1), .chip_select = 2, .mode = SPI_MODE_0, .platform_data = &at86rf230_info_a, }, { .modalias = "at86rf230", .max_speed_hz = 1000000, .irq = AT32_EXTINT(1), .chip_select = 1, .mode = SPI_MODE_0, .platform_data = &at86rf230_info_b, } }; static int __init lw_dimm_cpu_cb09_init(void) { . . at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info)); . . } Following modules have been loaded: ~ # lsmod Module Size Used by Tainted: G 6lowpan 8589 0 af_802154 6440 0 at86rf230 9083 0 mac802154 13803 1 at86rf230 ieee802154 10769 1 mac802154 mcp251x 6460 0 spidev 3231 0 spi_atmel 3601 0 macb On both boards I use following sequence to start up 6lowpan: ~ # /usr/sbin/iz add wpan-phy0 Registered new device ('wpan0') on phy wpan-phy0 ~ # /sbin/ip link set wpan0 address de:ad:be:af:ca:fe:ba:be (resp. de:ad:be:af:ca:fe:ba:ce on the second board) ~ # /sbin/ifconfig wpan0 up ~ # /usr/sbin/iz assoc wpan0 777 1 14 short Received short address 8001, status 00 ~ # /sbin/ip link add link wpan0 name lowpan0 type lowpan ~ # /sbin/ifconfig lowpan0 up ~ # /sbin/ip -6 addr add 2001:0db8:0:f101::1/64 dev lowpan0 (resp. 2001:0db8:0:f101::2/64 on the second board) Ping6 succeeds: ~ # ping6 2001:0db8:0:f101::2 PING 2001:0db8:0:f101::2 (2001:db8:0:f101::2): 56 data bytes 64 bytes from 2001:db8:0:f101::2: seq=0 ttl=64 time=117.366 ms 64 bytes from 2001:db8:0:f101::2: seq=1 ttl=64 time=72.838 ms 64 bytes from 2001:db8:0:f101::2: seq=2 ttl=64 time=67.647 ms 64 bytes from 2001:db8:0:f101::2: seq=3 ttl=64 time=57.074 ms 64 bytes from 2001:db8:0:f101::2: seq=4 ttl=64 time=54.589 ms ^C --- 2001:0db8:0:f101::2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 54.589/73.902/117.366 ms ~ # During transmitting udp packets (e.g. RFC868 time protocole via udp) the receiving kernel freezes with following output: Oops: Unhandled exception in kernel mode, sig: 7 [#1] FRAME_POINTER chip: 0x01f:0x1e82 rev 2 Modules linked in: 6lowpan af_802154 at86rf230 mac802154 ieee802154 mcp251x spidev spi_atmel macb PC is at lowpan_rcv+0x576/0x714 [6lowpan] LR is at lowpan_rcv+0x576/0x714 [6lowpan] pc : [<c08d97c2>] lr : [<c08d97c2>] Tainted: G W <0>sp : 97c31e04 r12: 97e3623e r11: 97e3623e r10: 00000008 r9 : 00000000 r8 : 97e3623a r7 : 97c31e40 r6 : 000000f0 r5 : 97e36217 r4 : 00000000 r3 : 97e603c0 r2 : c08da4f0 r1 : c08da4e4 r0 : 0000007e Flags: qvNzc Mode bits: hjmde....g CPU Mode: Supervisor Process: kworker/u:0 [5] (task: 97c22b00 thread: 97c30000) Stack: (0x97c31e04 to 0x97c32000) 1e00: 00000006 00000004 00000078 60000000 c08c1a40 20010db8 0000f101 1e20: 00000000 00000002 20010db8 0000f101 00000000 00000001 90270a4c 00400022 1e40: 90149dfc 97c31e6c c08ce184 902938a4 00000000 000000f6 97ded400 00000000 1e60: 9028e1ec 97e603c0 c08ce1a4 9014ab64 97c31e90 90289200 90289240 00000000 1e80: 00000000 00000001 ffff7d8a 9028e1ec 9014c866 97c31eb4 90289240 00000040 1ea0: 00000000 00000003 0000012c ffff7d8a 9028e1ec 90021644 97c31edc 00000100 1ec0: 97c30000 00000000 00000003 00000000 0000000c 9028e1ec 0000000a 9002184e 1ee0: 97c31f00 00400022 97ded760 00000000 c08b2588 97e60a80 97decd60 c08b255c 1f00: 9014c700 97c31f14 00000000 97ded760 00000000 c08b0dc4 97c31f2c 97e603c0 1f20: 97ded760 00000000 97ded760 c08b00c6 97c31f50 97e60a80 97decd60 00000000 1f40: 97c0e180 9028e7d0 97d86800 0000009a c08b00f8 97c31f64 97e204e0 00000000 1f60: 00000000 90029a80 97c31f80 97e204e4 00000000 00000000 c08b00e8 97d86805 1f80: 9002a5a8 97c31fa4 97c0e180 97c0e190 00000000 9028e7d0 97c0e190 9002ce18 1fa0: 97c25f3c 9002ce72 97c31fdc 97c25f3c 97c0e180 00000000 9002a4a8 9002018e 1fc0: 9002ce18 97c25f3c 00000000 97c0e180 00000000 97c31fd4 97c31fd4 9002018e 1fe0: 00000000 00000000 00000000 00000000 00000000 9002018e 9002ce18 97c25f3c Call trace: [<90149dfc>] __netif_receive_skb+0x2f4/0x350 [<9014ab64>] process_backlog+0x40/0xac [<9014c866>] net_rx_action+0x2e/0xc8 [<90021644>] __do_softirq+0x54/0xbc [<9002184e>] do_softirq+0x22/0x3c [<9014c700>] netif_rx_ni+0x14/0x1c [<c08b0dc4>] mac802154_wpans_rx+0x2b8/0x328 [mac802154] [<c08b00c6>] mac802154_subif_rx+0x46/0x68 [mac802154] [<c08b00f8>] mac802154_rx_worker+0x10/0x1c [mac802154] [<90029a80>] process_one_work+0x134/0x212 [<9002a5a8>] worker_thread+0x100/0x1c4 [<9002ce72>] kthread+0x5a/0x68 [<9002018e>] do_exit+0x0/0x432 Disabling lock debugging due to kernel taint Kernel panic - not syncing: Fatal exception in interrupt On the transmitting board 'dmesg' shows the following: ~ # dmesg Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create): IPv6 header dump: Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: version = 6 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: length = 40 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: nexthdr = 0x3a Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: hop_lim = 255 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create) raw skb network header dump: Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000000: 60 00 00 00 00 28 3a ff 20 01 0d b8 00 00 f1 01 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000010: 00 00 00 00 00 00 00 02 ff 02 00 00 00 00 00 00 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000020: 00 00 00 01 ff 00 00 01 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create): send the full source address Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create): destination address is multicast Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: compressed to 6 octets Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create) raw skb data dump: Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000000: 7b 09 3a 20 01 0d b8 00 00 f1 01 00 00 00 00 00 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000010: 00 00 02 02 01 ff 00 00 01 87 00 3c 1c 00 00 00 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000020: 00 20 01 0d b8 00 00 f1 01 00 00 00 00 00 00 00 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000030: 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: 00000040: 00 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: (lowpan_xmit): package xmit Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_xmit Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_state 4 Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_state val1 = 6 Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_state val2 = 9 Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_isr: IRQ! Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.1: at86rf230_isr: IRQ! Apr 11 15:13:10 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_irqwork: IRQ status: 08 Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_state 6 Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_state val1 = 9 Apr 11 15:13:10 Dimm-CPU-cb09 user.err kernel: at86rf230_state val2 = 6 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_isr: IRQ! Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.1: at86rf230_isr: IRQ! Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_irqwork: IRQ status: 04 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_isr: IRQ! Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.1: at86rf230_isr: IRQ! Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_irqwork: IRQ status: 08 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_process_data) raw skb data dump: Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000000: 7b 00 3a 20 01 0d b8 00 00 f1 01 00 00 00 00 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000010: 00 00 01 20 01 0d b8 00 00 f1 01 00 00 00 00 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000020: 00 00 02 88 00 b9 65 60 00 00 00 20 01 0d b8 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000030: 00 f1 01 00 00 00 00 00 00 00 01 02 02 00 00 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000040: 00 00 00 00 00 00 00 00 00 00 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_uncompress_addr): uncompressing 0 + 16 => Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_uncompress_addr): uncompressing 0 + 16 => Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_process_data) raw header dump: Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000000: 60 00 00 00 00 28 3a ff 20 01 0d b8 00 00 f1 01 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000010: 00 00 00 00 00 00 00 01 20 01 0d b8 00 00 f1 01 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000020: 00 00 00 00 00 00 00 02 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: got frame, type 804, dev 97e12000 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: ieee802154_rcv 88 00 b9 65 60 00 00 00 20 01 0d b8 00 00 f1 01 ...e`... ....... Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: ieee802154_rcv 00 00 00 00 00 00 00 01 02 02 00 00 00 00 00 00 ................ Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: ieee802154_rcv 00 00 00 00 00 00 00 00 ........ Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create): IPv6 header dump: Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: version = 6 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000000: 60 00 00 00 00 1c 11 40 20 01 0d b8 00 00 f1 01 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000010: 00 00 00 00 00 00 00 02 20 01 0d b8 00 00 f1 01 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000020: 00 00 00 00 00 00 00 01 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create): send the full source address Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create): destination address is unicast: Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: using full address Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_compress_udp_header): UDP header compression Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_compress_udp_header): can't compress header Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_header_create) raw skb data dump: Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000000: 7e 00 20 01 0d b8 00 00 f1 01 00 00 00 00 00 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000010: 00 02 20 01 0d b8 00 00 f1 01 00 00 00 00 00 00 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000020: 00 01 f0 84 d0 30 39 14 a9 84 d0 30 39 00 1c 14 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000030: a9 44 69 6d 6d 2d 43 50 55 2d 63 62 30 39 2e 6c Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: 00000040: 77 2e 6e 65 74 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: (lowpan_xmit): package xmit Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_xmit Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_state 4 Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_state val1 = 6 Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_state val2 = 9 Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_isr: IRQ! Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.1: at86rf230_isr: IRQ! Apr 11 15:13:11 Dimm-CPU-cb09 user.debug kernel: at86rf230 spi0.2: at86rf230_irqwork: IRQ status: 08 Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_state 6 Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_state val1 = 9 Apr 11 15:13:11 Dimm-CPU-cb09 user.err kernel: at86rf230_state val2 = 6 Can anybody help me,please ? -- Thomas Fechner ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ Linux-zigbee-devel mailing list Linux-zigbee-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel