1. 14 3月, 2013 1 次提交
  2. 28 2月, 2013 1 次提交
    • S
      hlist: drop the node parameter from iterators · b67bfe0d
      Sasha Levin 提交于
      I'm not sure why, but the hlist for each entry iterators were conceived
      
              list_for_each_entry(pos, head, member)
      
      The hlist ones were greedy and wanted an extra parameter:
      
              hlist_for_each_entry(tpos, pos, head, member)
      
      Why did they need an extra pos parameter? I'm not quite sure. Not only
      they don't really need it, it also prevents the iterator from looking
      exactly like the list iterator, which is unfortunate.
      
      Besides the semantic patch, there was some manual work required:
      
       - Fix up the actual hlist iterators in linux/list.h
       - Fix up the declaration of other iterators based on the hlist ones.
       - A very small amount of places were using the 'node' parameter, this
       was modified to use 'obj->member' instead.
       - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
       properly, so those had to be fixed up manually.
      
      The semantic patch which is mostly the work of Peter Senna Tschudin is here:
      
      @@
      iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
      
      type T;
      expression a,c,d,e;
      identifier b;
      statement S;
      @@
      
      -T b;
          <+... when != b
      (
      hlist_for_each_entry(a,
      - b,
      c, d) S
      |
      hlist_for_each_entry_continue(a,
      - b,
      c) S
      |
      hlist_for_each_entry_from(a,
      - b,
      c) S
      |
      hlist_for_each_entry_rcu(a,
      - b,
      c, d) S
      |
      hlist_for_each_entry_rcu_bh(a,
      - b,
      c, d) S
      |
      hlist_for_each_entry_continue_rcu_bh(a,
      - b,
      c) S
      |
      for_each_busy_worker(a, c,
      - b,
      d) S
      |
      ax25_uid_for_each(a,
      - b,
      c) S
      |
      ax25_for_each(a,
      - b,
      c) S
      |
      inet_bind_bucket_for_each(a,
      - b,
      c) S
      |
      sctp_for_each_hentry(a,
      - b,
      c) S
      |
      sk_for_each(a,
      - b,
      c) S
      |
      sk_for_each_rcu(a,
      - b,
      c) S
      |
      sk_for_each_from
      -(a, b)
      +(a)
      S
      + sk_for_each_from(a) S
      |
      sk_for_each_safe(a,
      - b,
      c, d) S
      |
      sk_for_each_bound(a,
      - b,
      c) S
      |
      hlist_for_each_entry_safe(a,
      - b,
      c, d, e) S
      |
      hlist_for_each_entry_continue_rcu(a,
      - b,
      c) S
      |
      nr_neigh_for_each(a,
      - b,
      c) S
      |
      nr_neigh_for_each_safe(a,
      - b,
      c, d) S
      |
      nr_node_for_each(a,
      - b,
      c) S
      |
      nr_node_for_each_safe(a,
      - b,
      c, d) S
      |
      - for_each_gfn_sp(a, c, d, b) S
      + for_each_gfn_sp(a, c, d) S
      |
      - for_each_gfn_indirect_valid_sp(a, c, d, b) S
      + for_each_gfn_indirect_valid_sp(a, c, d) S
      |
      for_each_host(a,
      - b,
      c) S
      |
      for_each_host_safe(a,
      - b,
      c, d) S
      |
      for_each_mesh_entry(a,
      - b,
      c, d) S
      )
          ...+>
      
      [akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
      [akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
      [akpm@linux-foundation.org: checkpatch fixes]
      [akpm@linux-foundation.org: fix warnings]
      [akpm@linux-foudnation.org: redo intrusive kvm changes]
      Tested-by: NPeter Senna Tschudin <peter.senna@gmail.com>
      Acked-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: NSasha Levin <sasha.levin@oracle.com>
      Cc: Wu Fengguang <fengguang.wu@intel.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Gleb Natapov <gleb@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b67bfe0d
  3. 19 1月, 2013 2 次提交
  4. 12 1月, 2013 1 次提交
  5. 30 11月, 2012 1 次提交
  6. 21 11月, 2012 1 次提交
  7. 08 11月, 2012 1 次提交
    • A
      batman-adv: Distributed ARP Table - add snooping functions for ARP messages · c384ea3e
      Antonio Quartulli 提交于
      In case of an ARP message going in or out the soft_iface, it is intercepted and
      a special action is performed. In particular the DHT helper functions previously
      implemented are used to store all the ARP entries belonging to the network in
      order to provide a fast and unicast lookup instead of the classic broadcast
      flooding mechanism.
      Each node stores the entries it is responsible for (following the DHT rules) in
      its soft_iface ARP table. This makes it possible to reuse the kernel data
      structures and functions for ARP management.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      c384ea3e
  8. 23 8月, 2012 1 次提交
  9. 02 7月, 2012 4 次提交
  10. 28 6月, 2012 2 次提交
  11. 25 6月, 2012 3 次提交
  12. 21 6月, 2012 4 次提交
  13. 19 6月, 2012 2 次提交
  14. 14 5月, 2012 1 次提交
  15. 11 5月, 2012 1 次提交
  16. 18 4月, 2012 2 次提交
  17. 11 3月, 2012 2 次提交
  18. 17 2月, 2012 3 次提交
  19. 08 9月, 2011 2 次提交
  20. 22 8月, 2011 1 次提交
  21. 08 7月, 2011 1 次提交
  22. 05 7月, 2011 2 次提交
  23. 20 6月, 2011 1 次提交
    • A
      batman-adv: improved roaming mechanism · cc47f66e
      Antonio Quartulli 提交于
      With the current client announcement implementation, in case of roaming,
      an update is triggered on the new AP serving the client. At that point
      the new information is spread around by means of the OGM broadcasting
      mechanism. Until this operations is not executed, no node is able to
      correctly route traffic towards the client. This obviously causes packet
      drops and introduces a delay in the time needed by the client to recover
      its connections.
      
      A new packet type called ROAMING_ADVERTISEMENT is added to account this
      issue.
      
      This message is sent in case of roaming from the new AP serving the
      client to the old one and will contain the client MAC address. In this
      way an out-of-OGM update is immediately committed, so that the old node
      can update its global translation table. Traffic reaching this node will
      then be redirected to the correct destination utilising the fresher
      information. Thus reducing the packet drops and the connection recovery
      delay.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      cc47f66e