1. 25 Jun, 2012 27 commits
  2. 24 Jun, 2012 8 commits
  3. 23 Jun, 2012 5 commits
    • Antonio Quartulli's avatar
      batman-adv: fix race condition in TT full-table replacement · 8b8e4bc0
      Antonio Quartulli authored
      bug introduced with cea194d90b11aff7fc289149e4c7f305fad3535a
      
      In the current TT code, when a TT_Response containing a full table is received
      from an originator, first the node purges all the clients for that originator in
      the global translation-table and then merges the newly received table.
      During the purging phase each client deletion is done by means of a call_rcu()
      invocation and at the end of this phase the global entry counter for that
      originator is set to 0. However the invoked rcu function decreases the global
      entry counter for that originator by one too and since the rcu invocation is
      likely to be postponed, the node will end up in first setting the counter to 0
      and then decreasing it one by one for each deleted client.
      
      This bug leads to having a wrong global entry counter for the related node, say
      X. Then when the node with the broken counter will answer to a TT_REQUEST on
      behalf of node X, it will create faulty TT_RESPONSE that will generate an
      unrecoverable situation on the node that asked for the full table recover.
      
      The non-recoverability is given by the fact that the node with the broken
      counter will keep answering on behalf of X because its knowledge about X's state
      (ttvn + tt_crc) is correct.
      
      To solve this problem the counter is not explicitly set to 0 anymore and the
      counter decrement is performed right before the invocation of call_rcu().
      Signed-off-by: default avatarAntonio Quartulli <ordex@autistici.org>
      8b8e4bc0
    • Marek Lindner's avatar
      batman-adv: only drop packets of known wifi clients · 5870adc6
      Marek Lindner authored
      bug introduced with 59b699cd
      
      If the source or destination mac address of an ethernet packet
      could not be found in the translation table the packet was
      dropped if AP isolation was turned on. This behavior would
      make it impossible to send broadcast packets over the mesh as
      the broadcast address will never enter the translation table.
      Signed-off-by: default avatarMarek Lindner <lindner_marek@yahoo.de>
      Acked-by: default avatarAntonio Quartulli <ordex@autistici.org>
      5870adc6
    • David S. Miller's avatar
    • Yoshihiro Shimoda's avatar
      net: sh_eth: fix the condition to fix the cur_tx/dirty_rx · a18e08bd
      Yoshihiro Shimoda authored
      The following commit couldn't work if the RMCR is not set to 1.
      
      "net: sh_eth: fix the rxdesc pointer when rx descriptor empty happens"
      commit id 79fba9f5
      
      If RMCR is not set, the controller will clear the EDRRR after it received
      a frame. In this case, the driver doesn't need to fix the value of
      cur_rx/dirty_rx. The driver only needs it when the controll detects
      receive descriptors are empty.
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Tested-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a18e08bd
    • françois romieu's avatar
      r8169: RxConfig hack for the 8168evl. · eb2dc35d
      françois romieu authored
      The 8168evl (RTL_GIGA_MAC_VER_34) based Gigabyte GA-990FXA motherboards
      are very prone to NETDEV watchdog problems without this change. See
      https://bugzilla.kernel.org/show_bug.cgi?id=42899 for instance.
      
      I don't know why it *works*. It's depressingly effective though.
      
      For the record:
      - the problem may go along IOMMU (AMD-Vi) errors but it really looks
        like a red herring.
      - the patch sets the RX_MULTI_EN bit. If the 8168c doc is any guide,
        the chipset now fetches several Rx descriptors at a time.
      - long ago the driver ignored the RX_MULTI_EN bit.
        e542a226 changed the RxConfig
        settings. Whatever the problem it's now labeled a regression.
      - Realtek's own driver can identify two different 8168evl devices
        (CFG_METHOD_16 and CFG_METHOD_17) where the r8169 driver only
        sees one. It sucks.
      Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eb2dc35d