Re: 答复: Problems about handling duplicate packets when frame retry is enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 08/11/2016 11:50 AM, Xue, Wenqian wrote:
> Hi, Alexander,
> 
> Thank you for your quick reply.
> I'm not sure if AACK is disabled (how can I know it?), but I'm using node interface not monitor interface.
>

yea, I should get it before because monitor interfaces doesn't run the
code which you changed. But monitor interfaces goes into promiscuous
mode and AACK is disabled there.

> When without kernel modification and setting frame retries=3 for both RPis, lots of error 'sequence number did not match" will occur. While, when with the modification to deal with duplicates, the error will not occur any more. I'm not sure if AACK could discard duplicates automatically.
> Thank you!
> 

Your modification handles in duplicates in a form which is not
acceptable. It will simple drop duplicates but how frame retries works
is the following:

1. Node A transmits frame for Node B with ackrequest bit set.
2. Node B receive that frame and see's "ackrequest bit is set" and
   sending an ACK back.
3. If Node A received an ack for the sequence number then no
   retransmission will occur.
OR
3. If Node A doesn't received an ack it will retransmit the frame.


On your nodes and if you are really using two at86rf233 transceivers,
this mechanism is completely done by hardware.

Transmit: ARET
Receive: AACK

On the receive side it's always imporant that the receiving node
supports AACK handling if Nodes sending frames with "ackrequest bit"
set.

---

First, you should sniff somehow the traffic if it's possible, to see
what's going on the traffic and you see that Node B sends ACKs back, if
not -> missing AACK handling.

On linux the openlabs transceiver (at86rf233) supports AACK handling...
don't know if you break it with your changes.

---

Also I detected that the ieee802154 sockets doesn't care about "iwpan
dev wpan0 set ackreq_default" setting [0]. This socket interface should
only be used as DGRAM sockets and there is a big TODO to make an
enhanced version of this socket interface. :-)

But that you have retransmits smells that the [0] is set.

---

I am here totally confused that you don't have AACK handling which the
at86rf233 supports, do you really using two openlabs with mainline Linux
kernel? Or do you talking with some contiki/RIOT etc. node?

- Alex

[0] http://lxr.free-electrons.com/source/net/ieee802154/socket.c#L667
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux