1. 30 10月, 2016 2 次提交
    • L
      batman-adv: Simple (re)broadcast avoidance · 3111beed
      Linus Lüssing 提交于
      With this patch, (re)broadcasting on a specific interfaces is avoided:
      
      * No neighbor: There is no need to broadcast on an interface if there
        is no node behind it.
      
      * Single neighbor is source: If there is just one neighbor on an
        interface and if this neighbor is the one we actually got this
        broadcast packet from, then we do not need to echo it back.
      
      * Single neighbor is originator: If there is just one neighbor on
        an interface and if this neighbor is the originator of this
        broadcast packet, then we do not need to echo it back.
      
      Goodies for BATMAN V:
      
      ("Upgrade your BATMAN IV network to V now to get these for free!")
      
      Thanks to the split of OGMv1 into two packet types, OGMv2 and ELP
      that is, we can now apply the same optimizations stated above to OGMv2
      packets, too.
      
      Furthermore, with BATMAN V, rebroadcasts can be reduced in certain
      multi interface cases, too, where BATMAN IV cannot. This is thanks to
      the removal of the "secondary interface originator" concept in BATMAN V.
      Signed-off-by: NLinus Lüssing <linus.luessing@c0d3.blue>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NSimon Wunderlich <sw@simonwunderlich.de>
      3111beed
    • L
      batman-adv: Remove unused skb_reset_mac_header() · eb6915e2
      Linus Lüssing 提交于
      During broadcast queueing, the skb_reset_mac_header() sets the skb
      to a place invalid for a MAC header, pointing right into the
      batman-adv broadcast packet. Luckily, no one seems to actually use
      eth_hdr(skb) afterwards until batadv_send_skb_packet() resets the
      header to a valid position again.
      
      Therefore removing this unnecessary, weird skb_reset_mac_header()
      call.
      Signed-off-by: NLinus Lüssing <linus.luessing@c0d3.blue>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NSimon Wunderlich <sw@simonwunderlich.de>
      eb6915e2
  2. 19 10月, 2016 1 次提交
  3. 09 8月, 2016 2 次提交
  4. 06 7月, 2016 1 次提交
  5. 04 7月, 2016 1 次提交
  6. 30 6月, 2016 3 次提交
  7. 13 6月, 2016 1 次提交
  8. 10 5月, 2016 1 次提交
    • S
      batman-adv: Check hard_iface refcnt before calling function · 27353446
      Sven Eckelmann 提交于
      The batadv_hardif_list list is checked in many situations and the items
      in this list are given to specialized functions to modify the routing
      behavior. At the moment each of these called functions has to check
      itself whether the received batadv_hard_iface has a refcount > 0 before
      it can increase the reference counter and use it in other objects.
      
      This can easily lead to problems because it is not easily visible where
      all callers of a function got the batadv_hard_iface object from and
      whether they already hold a valid reference.
      
      Checking the reference counter directly before calling a subfunction
      with a pointer from the batadv_hardif_list avoids this problem.
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NMarek Lindner <mareklindner@neomailbox.ch>
      Signed-off-by: NAntonio Quartulli <a@unstable.cc>
      27353446
  9. 04 5月, 2016 1 次提交
  10. 24 4月, 2016 1 次提交
  11. 29 2月, 2016 1 次提交
    • A
      batman-adv: keep track of when unicast packets are sent · 95d39278
      Antonio Quartulli 提交于
      To enable ELP to send probing packets over wireless links
      only if needed, batman-adv must keep track of the last time
      it sent a unicast packet towards every neighbour.
      
      For this purpose a 2 main changes are introduced:
      1) a new member of the elp_neigh_node structure stores the
         last time a unicast packet was sent towards this neighbour;
      2) a wrapper function for sending unicast packets is
         implemented. This function will simply update the member
         describe din point 1) and then forward the packet to the
         real sending routine.
      
      Point 2) implies that any code-path leading to a unicast
      sending now has to use the new wrapper.
      Signed-off-by: NAntonio Quartulli <antonio@open-mesh.com>
      Signed-off-by: NMarek Lindner <mareklindner@neomailbox.ch>
      95d39278
  12. 23 2月, 2016 3 次提交
  13. 02 2月, 2016 4 次提交
  14. 09 1月, 2016 1 次提交
  15. 25 8月, 2015 1 次提交
  16. 15 8月, 2015 1 次提交
  17. 07 6月, 2015 1 次提交
    • S
      batman-adv: Add required includes to all files · 1e2c2a4f
      Sven Eckelmann 提交于
      The header files could not be build indepdent from each other. This is
      happened because headers didn't include the files for things they've used.
      This was problematic because the success of a build depended on the
      knowledge about the right order of local includes.
      
      Also source files were not including everything they've used explicitly.
      Instead they required that transitive includes are always stable. This is
      problematic because some transitive includes are not obvious, depend on
      config settings and may not be stable in the future.
      
      The order for include blocks are:
      
       * primary headers (main.h and the *.h file of a *.c file)
       * global linux headers
       * required local headers
       * extra forward declarations for pointers in function/struct declarations
      
      The only exceptions are linux/bitops.h and linux/if_ether.h in packet.h.
      This header file is shared with userspace applications like batctl and must
      therefore build together with userspace applications. The header
      linux/bitops.h is not part of the uapi headers and linux/if_ether.h
      conflicts with the musl implementation of netinet/if_ether.h. The
      maintainers rejected the use of __KERNEL__ preprocessor checks and thus
      these two headers are only in main.h. All files using packet.h first have
      to include main.h to work correctly.
      Reported-by: NMarkus Pargmann <mpa@pengutronix.de>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NMarek Lindner <mareklindner@neomailbox.ch>
      1e2c2a4f
  18. 29 5月, 2015 2 次提交
  19. 22 3月, 2014 5 次提交
  20. 18 2月, 2014 1 次提交
  21. 12 1月, 2014 2 次提交
  22. 09 1月, 2014 2 次提交
  23. 28 12月, 2013 1 次提交
  24. 19 10月, 2013 1 次提交