1. 04 Oct, 2004 11 commits
    • François Romieu's avatar
      [PATCH] via-velocity: wrong buffer offset in velocity_init_td_ring() · 204b3de7
      François Romieu authored
      Buffer offset calculation was incorrect in velocity_init_td_ring().
      This didn't cause any trouble because we only use the first td ring.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      204b3de7
    • François Romieu's avatar
      [PATCH] via-velocity: removal of incomplete endianness handling · 1e62860a
      François Romieu authored
      Removed cpu_to_le32 call on OWNED_BY_NIC. This will produce 0x01000000 on
      big endian machines while rdesc0.owner still evaluates to 0x00000000 or
      0x00000001. BTW, unless we reorder bit fields on big endian machines or
      use u32's and cpu_to_le32'd bit mask macros, current code won't work on big
      endian machines.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      1e62860a
    • François Romieu's avatar
      [PATCH] via-velocity: early invocation of init_cam_filter() · f5ee43fe
      François Romieu authored
      In velocity_init_registers(), init_cam_filter() clears mCAMmask which
      might have been set by set_multi() (not sure if this can ever occur).
      Modified to invoke init_cam_filter() first. Also, clear_isr() is called
      twice. Removed the first invocation.
      
      In velocity_found1(), there was a unneeded assignment from vptr to
      dev->priv.  Removed.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      f5ee43fe
    • François Romieu's avatar
      [PATCH] via-velocity: received ring wrong index and missing barriers · 2f652923
      François Romieu authored
      There were several receive ring related bugs.
      
      In velocity_give_many_rx_descs(), index calculation was incorrect.
      This and bugs in velocity_rx_srv() described in the following paragraph
      caused packet loss, truncation and infinite error interrupt generation.
      
      In velocity_rx_srv(), velocity_rx_refill() could be called without any
      dirty slot.  With proper timing, This can result in refilling yet
      unreceived packets and pushing dirty pointer ahead of the current pointer.
      And vptr->rd_curr which is used by velocity_rx_refill() was updated after
      calling velocity_rx_refill() thus screwing receive descriptor ring.
      Also, between checking owner and reading the packet, rmb() is missing.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      2f652923
    • François Romieu's avatar
      [PATCH] via-velocity: velocity_give_rx_desc() removal · 9030eb03
      François Romieu authored
      In velocity_give_rx_desc(), there should be a wmb() between resetting the
      first four bytes of rdesc0 and setting owner. As resetting the first four
      bytes isn't necessary, I just removed the function and directly set owner.
      Another rationale for removing the function:
      The function doesn't handle synchronization. We should do wmb() before
      calling the function.  So, I think using bare assignment makes the fact
      more explicit.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      9030eb03
    • François Romieu's avatar
      [PATCH] via-velocity: removal of unused velocity_info.xmit_lock · 997a0c68
      François Romieu authored
      Removed unused velocity_info.xmit_lock.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      997a0c68
    • François Romieu's avatar
      [PATCH] via-velocity: properly manage the count of adapters · 984fac04
      François Romieu authored
      velocity_nics wasn't managed properly.
      Signed-off-by: default avatarTejun Heo <tj@home-tj.org>
      984fac04
    • Jeff Garzik's avatar
      Merge pobox.com:/spare/repo/linux-2.6 · 61033167
      Jeff Garzik authored
      into pobox.com:/spare/repo/net-drivers-2.6
      61033167
    • Neil Horman's avatar
      [PATCH] olympic driver: fix kernel oops on lobe fault · 8998ae21
      Neil Horman authored
      It fixes an oops that results when a lobe fault is detected.  The oops
      occurs because a lobe fault triggers an interrupt which is handled
      in the current version of the driver by effectively shutting down the
      card, and freeing its requisite irq.  The former is fine, the latter
      is not, as its illegal to free an irq from within an interrupt context.
      
      I've fixed this bug by removing the call to free_irq from the interrupt
      handler (specifically the chunk around line 964 fixes that).  While I
      was in there I noticed that there were several other conditions in
      the interrupt handler that contained the same condition, so I made
      the same fix there.  I re-added.
      
      I also modified the contents of olympic_freemem (the chunk around line
      898 to correct a misuse of a pointer after it requisite memory has
      been free in the case the the adapter is re-initalized after a fault
      to prevent that oops.  And then I clean up the interrupt handler to
      simply use olympic_freemem from the close routine since the ring buffer
      doesn't need to be freed until the driver is closed.
      
      In addition to these changes I added a call to olympic init in
      olympic_open and reset the spinlock so the adapter can be reset and
      rejoin the ring without needing to rmmod/insmod the module.  Lastly I
      cleaned up the wait queue code so that the close routine didn't have
      to wait 60 seconds to close the adapter if a fatal fault has closed
      the adapter.
      Signed-off-by: default avatarNeil Horman <nhorman@redhat.com>
      8998ae21
    • Linus Torvalds's avatar
      ppc64: fix non-C99 named initializers · 1e3cc3f5
      Linus Torvalds authored
      Al suggested a sparse warning. And sure enough, it found
      these ones.
      1e3cc3f5
    • Linus Torvalds's avatar
      Merge bk://ppc.bkbits.net/for-linus-ppc · edd2ffb9
      Linus Torvalds authored
      into ppc970.osdl.org:/home/torvalds/v2.6/linux
      edd2ffb9
  2. 03 Oct, 2004 29 commits