1. 01 Nov, 2007 3 commits
    • Andrew Gallatin's avatar
      Fix myri10ge NAPI oops & warnings · c956a240
      Andrew Gallatin authored
      When testing the myri10ge driver with 2.6.24-rc1, I found
      that the machine crashed under heavy load:
      
      Unable to handle kernel paging request at 0000000000100108 RIP:
        [<ffffffff803cc8dd>] net_rx_action+0x11b/0x184
      
      The address corresponds to the list_move_tail() in
      netif_rx_complete():
                           if (unlikely(work == weight))
                                   list_move_tail(&n->poll_list, list);
      
      Eventually, I traced the crashes to calling netif_rx_complete() with
      work_done == budget.  From looking at other drivers, it appears that
      one should only call netif_rx_complete() when work_done < budget.
      
      To fix it, I changed the test in myri10ge_poll() so that it refers
      to to work_done rather than looking at the rx ring status.  If
      work_done is < budget, then that implies we have no more packets to
      process. Any races will be resolved by the NIC when the write to
      irq_claim is made.
      
      In myri10ge_clean_rx_done(), if we ever exceeded our budget, it would
      report a work_done one larger than was acutally done.  This is because
      the increment was done in the conditional, so work_done would be
      incremented regardless of whether or not the test passed or failed.
      This would lead to the WARN_ON_ONCE(work > weight); warning in
      net_rx_action triggering.  I've moved the increment of work_done
      inside the loop.  Note that this would only be a problem when we had
      exceeded our budget.
      
      Signed off by: Andrew Gallatin <gallatin@myri.com>
      
      Andrew Gallatin Myricom Inc
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      c956a240
    • Grant Likely's avatar
      Fix region size check in mpc5200 FEC driver · 48d58459
      Grant Likely authored
      Driver shouldn't complain if the register range is larger than what
      it expects.  This works around failures with some device trees.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      48d58459
    • Grant Likely's avatar
      mpc5200: Fix Kconfig dependancies on MPC5200 FEC device driver · 644fdf9b
      Grant Likely authored
      When not building an arch/powerpc kernel, the mpc5200 FEC driver depends
      on some symbols which are not defined (BESTCOMM & BESTCOMM_FEC).
      
      This patch flips around the dependancy logic so that it cannot be
      selected unless BESTCOMM_FEC is selected first.  Kconfig stops
      complaining this way.
      
      Also, the driver only works for arch/powerpc (not arch/ppc) anyway so
      it should depend on PPC_MERGE also.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      644fdf9b
  2. 30 Oct, 2007 37 commits