1. 14 3月, 2013 3 次提交
    • M
      batman-adv: network coding - save overheard and tx packets for decoding · 612d2b4f
      Martin Hundebøll 提交于
      To be able to decode a network coded packet, a node must already know
      one of the two coded packets. This is done by buffering skbs before
      transmission and buffering packets sniffed with promiscuous mode from
      other hosts.
      
      Packets are kept in a buffer similar to the one with forward-skbs: A
      hash table, where each entry, which corresponds to a src-dst pair, has a
      linked list packets.
      Signed-off-by: NMartin Hundebøll <martin@hundeboll.net>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      612d2b4f
    • M
      batman-adv: network coding - code and transmit packets if possible · 3c12de9a
      Martin Hundebøll 提交于
      Before adding forward-skbs to the coding buffer, the buffer is searched
      for a potential coding opportunity. If one is found, the two packets are
      network coded and transmitted right away. If not, the forward-skb is
      added to the buffer.
      
      Network coded packets are transmitted with information about the two
      receivers and the two coded packets. The first receiver is given by the
      MAC header, while the second is given in the payload/bat-header. The
      second receiver uses promiscuous mode to receive the packet and check
      the second destination.
      Signed-off-by: NMartin Hundebøll <martin@hundeboll.net>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      3c12de9a
    • M
      batman-adv: network coding - add the initial infrastructure code · d353d8d4
      Martin Hundebøll 提交于
      Network coding exploits the 802.11 shared medium to allow multiple
      packets to be sent in a single transmission. In brief, a relay can XOR
      two packets, and send the coded packet to two destinations. The
      receivers can decode one of the original packets by XOR'ing the coded
      packet with the other original packet. This will lead to increased
      throughput in topologies where two packets cross one relay.
      
      In a simple topology with three nodes, it takes four transmissions
      without network coding to get one packet from Node A to Node B and one
      from Node B to Node A:
      
       1.  Node A  ---- p1 --->  Node R                Node B
       2.  Node A                Node R  <--- p2 ----  Node B
       3.  Node A  <--- p2 ----  Node R                Node B
       4.  Node A                Node R  ---- p1 --->  Node B
      
      With network coding, the relay only needs one transmission, which saves
      us one slot of valuable airtime:
      
       1.  Node A  ---- p1 --->  Node R                Node B
       2.  Node A                Node R  <--- p2 ----  Node B
       3.  Node A  <- p1 x p2 -  Node R  - p1 x p2 ->  Node B
      
      The same principle holds for a topology including five nodes. Here the
      packets from Node A and Node B are overheard by Node C and Node D,
      respectively. This allows Node R to send a network coded packet to save
      one transmission:
      
         Node A                  Node B
      
          |     \              /    |
          |      p1          p2     |
          |       \          /      |
          p1       > Node R <       p2
          |                         |
          |         /      \        |
          |    p1 x p2    p1 x p2   |
          v       /          \      v
                 /            \
         Node C <              > Node D
      
      More information is available on the open-mesh.org wiki[1].
      
      This patch adds the initial code to support network coding in
      batman-adv. It sets up a worker thread to do house keeping and adds a
      sysfs file to enable/disable network coding. The feature is disabled by
      default, as it requires a wifi-driver with working promiscuous mode, and
      also because it adds a small delay at each hop.
      
      [1] http://www.open-mesh.org/projects/batman-adv/wiki/CatwomanSigned-off-by: NMartin Hundebøll <martin@hundeboll.net>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      d353d8d4
  2. 19 1月, 2013 2 次提交
  3. 12 1月, 2013 3 次提交
  4. 07 1月, 2013 1 次提交
  5. 04 1月, 2013 1 次提交
  6. 30 11月, 2012 1 次提交
  7. 16 11月, 2012 1 次提交
  8. 15 11月, 2012 1 次提交
    • A
      batman-adv: substitute tt_poss_change with a per-tt_entry flag · 7c1fd91d
      Antonio Quartulli 提交于
      tt_poss_change is a node-wide flag which tells whether the node is in a roaming
      state (a client recently moved to/away from it) in order to let it apply special
      re-routing rules. However this flag does not give a clear idea of the current
      state because it is not possible to understand *which client* is actually
      involved in the roaming. For this reason a better approach has been chosen:
      instead of using a node-wide variable, the roaming state is now given by a
      per-tt_entry ROAM flag which, in case of packet coming through the node, tells
      the node whether the real destination is in roaming state or not.
      
      With this flag change, batadv_check_unicast_ttvn() has also been rearranged in
      order to better fit the new re-routing logic and to be much more readable.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      7c1fd91d
  9. 08 11月, 2012 4 次提交
  10. 29 10月, 2012 2 次提交
  11. 24 9月, 2012 1 次提交
  12. 23 8月, 2012 4 次提交
  13. 06 7月, 2012 1 次提交
  14. 02 7月, 2012 8 次提交
  15. 28 6月, 2012 3 次提交
  16. 25 6月, 2012 3 次提交
  17. 21 6月, 2012 1 次提交