06 Dec, 2006

1 commit


03 Dec, 2006

5 commits

  • As Steve left netpoll beast, hopefully not to return soon.
    He noticed that the header was messy. He straightened it
    up and polished it a little, then waved goodbye.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • The beast had a long and not very happy history. At one
    point, a friend (netdump) had asked that he open up a little.
    Well, the friend was long gone now, and the beast had
    this dangling piece hanging (netpoll_queue).

    It wasn't hard to stitch the netpoll_queue back in
    where it belonged and make everything tidy.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • The netpoll beast was still not happy. If the beast got
    clogged pipes, it tended to stare blankly off in space
    for a long time.

    The problem couldn't be completely fixed because the
    beast talked with irq's disabled. But it could be made
    less painful and shorter.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • When the netpoll beast got really busy, it tended to clog
    things, so it stored them for later. But the beast was putting
    all it's skb's in one basket. This was bad because maybe some
    pipes were clogged and others were not.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • After looking harder, Steve noticed that the netpoll
    beast leaked a little every time it shutdown for a nap.
    Not a big leak, but a nuisance kind of thing.

    He took out his refcount duct tape and patched the
    leak. It was overkill since there was already other
    locking in that area, but it looked clean and wouldn't
    attract fleas.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     

26 Jun, 2006

1 commit

  • The netpoll system currently has a rx to tx path via:

    netpoll_rx
    __netpoll_rx
    arp_reply
    netpoll_send_skb
    dev->hard_start_tx

    This rx->tx loop places network drivers at risk of inadvertently causing a
    deadlock or BUG halt by recursively trying to acquire a spinlock that is
    used in both their rx and tx paths (this problem was origionally reported
    to me in the 3c59x driver, which shares a spinlock between the
    boomerang_interrupt and boomerang_start_xmit routines).

    This patch breaks this loop, by queueing arp frames, so that they can be
    responded to after all receive operations have been completed. Tested by
    myself and the reported with successful results.

    Specifically it was tested with netdump. Heres the BZ with details:
    https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=194055

    Signed-off-by: Neil Horman
    Acked-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Neil Horman
     

13 Oct, 2005

1 commit


12 Aug, 2005

2 commits

  • This fixes a race during initialization with the NAPI softirq
    processing by using an RCU approach.

    This race was discovered when refill_skbs() was added to
    the setup code.

    Signed-off-by: Matt Mackall
    Signed-off-by: David S. Miller

    Matt Mackall
     
  • Add limited retry logic to netpoll_send_skb

    Each time we attempt to send, decrement our per-device retry counter.
    On every successful send, we reset the counter.

    We delay 50us between attempts with up to 20000 retries for a total of
    1 second. After we've exhausted our retries, subsequent failed
    attempts will try only once until reset by success.

    Signed-off-by: Matt Mackall
    Signed-off-by: David S. Miller

    Matt Mackall
     

23 Jun, 2005

3 commits

  • This patch provides support for registering multiple netpoll clients to the
    same network device. Only one of these clients may register an rx_hook,
    however. In practice, this restriction has not been problematic. It is
    worth mentioning, though, that the current design can be easily extended to
    allow for the registration of multiple rx_hooks.

    The basic idea of the patch is that the rx_np pointer in the netpoll_info
    structure points to the struct netpoll that has rx_hook filled in. Aside
    from this one case, there is no need for a pointer from the struct
    net_device to an individual struct netpoll.

    A lock is introduced to protect the setting and clearing of the np_rx
    pointer. The pointer will only be cleared upon netpoll client module
    removal, and the lock should be uncontested.

    Signed-off-by: Jeff Moyer
    Signed-off-by: David S. Miller

    Jeff Moyer
     
  • This patch introduces a netpoll_info structure, which the struct net_device
    will now point to instead of pointing to a struct netpoll. The reason for
    this is two-fold: 1) fields such as the rx_flags, poll_owner, and poll_lock
    should be maintained per net_device, not per netpoll; and 2) this is a first
    step in providing support for multiple netpoll clients to register against the
    same net_device.

    The struct netpoll is now pointed to by the netpoll_info structure. As
    such, the previous behaviour of the code is preserved.

    Signed-off-by: Jeff Moyer
    Signed-off-by: David S. Miller

    Jeff Moyer
     
  • This trivial patch moves the assignment of poll_owner to -1 inside of
    the lock. This fixes a potential SMP race in the code.

    Signed-off-by: Jeff Moyer
    Signed-off-by: David S. Miller

    Jeff Moyer
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds