1. 08 Mar, 2011 5 commits
    • Florian Fainelli's avatar
    • Shawn Lin's avatar
      r6040: fix multicast operations · c60c9c71
      Shawn Lin authored
      The original code does not work well when the number of mulitcast
      address to handle is greater than MCAST_MAX. It only enable promiscous
      mode instead of multicast hash table mode, so the hash table function
      will not be activated and all multicast frames will be recieved in this
      condition.
      
      This patch fixes the following issues with the r6040 NIC operating in
      multicast:
      
      1) When the IFF_ALLMULTI flag is set, we should write 0xffff to the NIC
      hash table registers to make it process multicast traffic.
      
      2) When the number of multicast address to handle is smaller than
      MCAST_MAX, we should use the NIC multicast registers MID1_{L,M,H}.
      
      3) The hashing of the address was not correct, due to an invalid
      substraction (15 - (crc & 0x0f)) instead of (crc & 0x0f) and an
      incorrect crc algorithm (ether_crc_le) instead of (ether_crc).
      
      4) If necessary, we should set HASH_EN flag in MCR0 to enable multicast
      hash table function.
      Reported-by: default avatarMarc Leclerc <marc-leclerc@signaturealpha.com>
      Tested-by: default avatarMarc Leclerc <marc-leclerc@signaturealpha.com>
      Signed-off-by: default avatarShawn Lin <shawn@dmp.com.tw>
      Signed-off-by: default avatarAlbert Chen <albert.chen@rdc.com.tw>
      Signed-off-by: default avatarFlorian Fainelli <florian@openwrt.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c60c9c71
    • Neil Horman's avatar
      rds: prevent BUG_ON triggering on congestion map updates · 6094628b
      Neil Horman authored
      Recently had this bug halt reported to me:
      
      kernel BUG at net/rds/send.c:329!
      Oops: Exception in kernel mode, sig: 5 [#1]
      SMP NR_CPUS=1024 NUMA pSeries
      Modules linked in: rds sunrpc ipv6 dm_mirror dm_region_hash dm_log ibmveth sg
      ext4 jbd2 mbcache sd_mod crc_t10dif ibmvscsic scsi_transport_srp scsi_tgt
      dm_mod [last unloaded: scsi_wait_scan]
      NIP: d000000003ca68f4 LR: d000000003ca67fc CTR: d000000003ca8770
      REGS: c000000175cab980 TRAP: 0700   Not tainted  (2.6.32-118.el6.ppc64)
      MSR: 8000000000029032 <EE,ME,CE,IR,DR>  CR: 44000022  XER: 00000000
      TASK = c00000017586ec90[1896] 'krdsd' THREAD: c000000175ca8000 CPU: 0
      GPR00: 0000000000000150 c000000175cabc00 d000000003cb7340 0000000000002030
      GPR04: ffffffffffffffff 0000000000000030 0000000000000000 0000000000000030
      GPR08: 0000000000000001 0000000000000001 c0000001756b1e30 0000000000010000
      GPR12: d000000003caac90 c000000000fa2500 c0000001742b2858 c0000001742b2a00
      GPR16: c0000001742b2a08 c0000001742b2820 0000000000000001 0000000000000001
      GPR20: 0000000000000040 c0000001742b2814 c000000175cabc70 0800000000000000
      GPR24: 0000000000000004 0200000000000000 0000000000000000 c0000001742b2860
      GPR28: 0000000000000000 c0000001756b1c80 d000000003cb68e8 c0000001742b27b8
      NIP [d000000003ca68f4] .rds_send_xmit+0x4c4/0x8a0 [rds]
      LR [d000000003ca67fc] .rds_send_xmit+0x3cc/0x8a0 [rds]
      Call Trace:
      [c000000175cabc00] [d000000003ca67fc] .rds_send_xmit+0x3cc/0x8a0 [rds]
      (unreliable)
      [c000000175cabd30] [d000000003ca7e64] .rds_send_worker+0x54/0x100 [rds]
      [c000000175cabdb0] [c0000000000b475c] .worker_thread+0x1dc/0x3c0
      [c000000175cabed0] [c0000000000baa9c] .kthread+0xbc/0xd0
      [c000000175cabf90] [c000000000032114] .kernel_thread+0x54/0x70
      Instruction dump:
      4bfffd50 60000000 60000000 39080001 935f004c f91f0040 41820024 813d017c
      7d094a78 7d290074 7929d182 394a0020 <0b090000> 40e2ff68 4bffffa4 39200000
      Kernel panic - not syncing: Fatal exception
      Call Trace:
      [c000000175cab560] [c000000000012e04] .show_stack+0x74/0x1c0 (unreliable)
      [c000000175cab610] [c0000000005a365c] .panic+0x80/0x1b4
      [c000000175cab6a0] [c00000000002fbcc] .die+0x21c/0x2a0
      [c000000175cab750] [c000000000030000] ._exception+0x110/0x220
      [c000000175cab910] [c000000000004b9c] program_check_common+0x11c/0x180
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6094628b
    • Nils Carlson's avatar
      bonding 802.3ad: Rename rx_machine_lock to state_machine_lock · 9ac3524a
      Nils Carlson authored
      Rename the rx_machine_lock to state_machine_lock as this makes more
      sense in light of it now protecting all the state machines against
      concurrency.
      Signed-off-by: default avatarNils Carlson <nils.carlson@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9ac3524a
    • Nils Carlson's avatar
      bonding 802.3ad: Fix the state machine locking v2 · 16d79d7d
      Nils Carlson authored
      Changes since v1:
      * Clarify an unclear comment
      * Move a (possible) name change to a separate patch
      
      The ad_rx_machine, ad_periodic_machine and ad_port_selection_logic
      functions all inspect and alter common fields within the port structure.
      Previous to this patch, only the ad_rx_machines were mutexed, and the
      periodic and port_selection could run unmutexed against an ad_rx_machine
      trigged by an arriving LACPDU.
      
      This patch remedies the situation by protecting all the state machines
      from concurrency. This is accomplished by locking around all the state
      machines for a given port, which are executed at regular intervals; and
      the ad_rx_machine when handling an incoming LACPDU.
      Signed-off-by: default avatarNils Carlson <nils.carlson@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      16d79d7d
  2. 07 Mar, 2011 8 commits
  3. 03 Mar, 2011 27 commits