1. 10 Jan, 2008 16 commits
  2. 09 Jan, 2008 24 commits
    • FUJITA Tomonori's avatar
      [SCSI] qla1280: fix 32 bit segment code · 3a43e69c
      FUJITA Tomonori authored
      There's an error remaining in the 32 bit descriptor code after the
      conversion to dma accessors:  req_cnt is left uninitialised.
      
      qla1280_32bit_start_scsi gives the following warnings:
      
      drivers/scsi/qla1280.c: In function 'qla1280_32bit_start_scsi':
      drivers/scsi/qla1280.c:3044: warning: unused variable 'dma_handle'
      drivers/scsi/qla1280.c: In function 'qla1280_queuecommand':
      drivers/scsi/qla1280.c:3060: warning: 'req_cnt' is used uninitialized in this function
      drivers/scsi/qla1280.c:3042: note: 'req_cnt' was declared here
      Signed-off-by: default avatarFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
      3a43e69c
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · fd0b45df
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (36 commits)
        [ATM]: Check IP header validity in mpc_send_packet
        [IPV6]: IPV6_MULTICAST_IF setting is ignored on link-local connect()
        [CONNECTOR]: Don't touch queue dev after decrement of ref count.
        [SOCK]: Adds a rcu_dereference() in sk_filter
        [XFRM]: xfrm_algo_clone() allocates too much memory
        [FORCEDETH]: Fix reversing the MAC address on suspend.
        [NET]: mcs7830 passes msecs instead of jiffies to usb_control_msg
        [LRO] Fix lro_mgr->features checks
        [NET]: Clone the sk_buff 'iif' field in __skb_clone()
        [IPV4] ROUTE: ip_rt_dump() is unecessary slow
        [NET]: kaweth was forgotten in msec switchover of usb_start_wait_urb
        [NET] Intel ethernet drivers: update MAINTAINERS
        [NET]: Make ->poll() breakout consistent in Intel ethernet drivers.
        [NET]: Stop polling when napi_disable() is pending.
        [NET]: Fix drivers to handle napi_disable() disabling interrupts.
        [NETXEN]: Fix ->poll() done logic.
        mac80211: return an error when SIWRATE doesn't match any rate
        ssb: Fix probing of PCI cores if PCI and PCIE core is available
        [NET]: Do not check netif_running() and carrier state in ->poll()
        [NET]: Add NAPI_STATE_DISABLE.
        ...
      fd0b45df
    • Roland McGrath's avatar
      show_task: real_parent · fcfd50af
      Roland McGrath authored
      The show_task function invoked by sysrq-t et al displays the
      pid and parent's pid of each task.  It seems more useful to
      show the actual process hierarchy here than who is using
      ptrace on each process.
      Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fcfd50af
    • Herbert Xu's avatar
      [ATM]: Check IP header validity in mpc_send_packet · 1c9b7aa1
      Herbert Xu authored
      Al went through the ip_fast_csum callers and found this piece of code
      that did not validate the IP header.  While root crashing the machine
      by sending bogus packets through raw or AF_PACKET sockets isn't that
      serious, it is still nice to react gracefully.
      
      This patch ensures that the skb has enough data for an IP header and
      that the header length field is valid.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c9b7aa1
    • Brian Haley's avatar
    • Li Zefan's avatar
      [CONNECTOR]: Don't touch queue dev after decrement of ref count. · cf585ae8
      Li Zefan authored
      cn_queue_free_callback() will touch 'dev'(i.e. cbq->pdev), so it
      should be called before atomic_dec(&dev->refcnt).
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cf585ae8
    • Eric Dumazet's avatar
      [SOCK]: Adds a rcu_dereference() in sk_filter · 9d3e4442
      Eric Dumazet authored
      It seems commit fda9ef5d introduced a RCU 
      protection for sk_filter(), without a rcu_dereference()
      
      Either we need a rcu_dereference(), either a comment should explain why we 
      dont need it. I vote for the former.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Acked-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9d3e4442
    • Eric Dumazet's avatar
      [XFRM]: xfrm_algo_clone() allocates too much memory · 0f99be0d
      Eric Dumazet authored
      alg_key_len is the length in bits of the key, not in bytes.
      
      Best way to fix this is to move alg_len() function from net/xfrm/xfrm_user.c 
      to include/net/xfrm.h, and to use it in xfrm_algo_clone()
      
      alg_len() is renamed to xfrm_alg_len() because of its global exposition.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0f99be0d
    • Björn Steinbrink's avatar
      [FORCEDETH]: Fix reversing the MAC address on suspend. · 2e3884b5
      Björn Steinbrink authored
      For cards that initially have the MAC address stored in reverse order,
      the forcedeth driver uses a flag to signal whether the address was
      already corrected, so that it is not reversed again on a subsequent
      probe.
      
      Unfortunately this flag, which is stored in a register of the card,
      seems to get lost during suspend, resulting in the MAC address being
      reversed again. To fix that, the MAC address needs to be written back
      in reversed order before we suspend and the flag needs to be reset.
      
      The flag is still required because at least kexec will never write
      back the reversed address and thus needs to know what state the card
      is in.
      Signed-off-by: default avatarBjörn Steinbrink <B.Steinbrink@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2e3884b5
    • Russ Dill's avatar
      [NET]: mcs7830 passes msecs instead of jiffies to usb_control_msg · 1d39da3d
      Russ Dill authored
      usb_control_msg was changed long ago (2.6.12-pre) to take milliseconds
      instead of jiffies. Oddly, mcs7830 wasn't added until 2.6.19-rc3.
      Signed-off-by: default avatarRuss Dill <Russ.Dill@asu.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d39da3d
    • Brice Goglin's avatar
      [LRO] Fix lro_mgr->features checks · 877364e6
      Brice Goglin authored
      lro_mgr->features contains a bitmask of LRO_F_* values which are
      defined as power of two, not as bit indexes.
      They must be checked with x&LRO_F_FOO, not with test_bit(LRO_F_FOO,&x).
      Signed-off-by: default avatarBrice Goglin <Brice.Goglin@inria.fr>
      Acked-by: default avatarAndrew Gallatin <gallatin@myri.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      877364e6
    • Paul Moore's avatar
      [NET]: Clone the sk_buff 'iif' field in __skb_clone() · 02f1c89d
      Paul Moore authored
      Both NetLabel and SELinux (other LSMs may grow to use it as well) rely
      on the 'iif' field to determine the receiving network interface of
      inbound packets.  Unfortunately, at present this field is not
      preserved across a skb clone operation which can lead to garbage
      values if the cloned skb is sent back through the network stack.  This
      patch corrects this problem by properly copying the 'iif' field in
      __skb_clone() and removing the 'iif' field assignment from
      skb_act_clone() since it is no longer needed.
      
      Also, while we are here, put the assignments in the same order as the
      offsets to reduce cacheline bounces.
      Signed-off-by: default avatarPaul Moore <paul.moore@hp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02f1c89d
    • Eric Dumazet's avatar
      [IPV4] ROUTE: ip_rt_dump() is unecessary slow · d8c92830
      Eric Dumazet authored
      I noticed "ip route list cache x.y.z.t" can be *very* slow.
      
      While strace-ing -T it I also noticed that first part of route cache
      is fetched quite fast :
      
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
      GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3772 <0.000047>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\
      202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3736 <0.000042>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\
      202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3740 <0.000055>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\
      202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3712 <0.000043>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\
      202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3732 <0.000053>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
      GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3708 <0.000052>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
      GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3680 <0.000041>
      
      while the part at the end of the table is more expensive:
      
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3656 <0.003857>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3772 <0.003891>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3712 <0.003765>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3700 <0.003879>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3676 <0.003797>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3724 <0.003856>
      recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3736 <0.003848>
      
      The following patch corrects this performance/latency problem,
      removing quadratic behavior.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d8c92830
    • Russ Dill's avatar
      [NET]: kaweth was forgotten in msec switchover of usb_start_wait_urb · 2b2b2e35
      Russ Dill authored
      Back in 2.6.12-pre, usb_start_wait_urb was switched over to take
      milliseconds instead of jiffies. kaweth.c was never updated to match.
      Signed-off-by: default avatarRuss Dill <Russ.Dill@asu.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2b2b2e35
    • Auke Kok's avatar
      [NET] Intel ethernet drivers: update MAINTAINERS · 20424659
      Auke Kok authored
      Unfortunately Jeb decided to move away from our group. We wish Jeb
      good luck with his new group!
      
      Reordered people a bit so most active team members are on top.
      Signed-off-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      20424659
    • David S. Miller's avatar
      [NET]: Make ->poll() breakout consistent in Intel ethernet drivers. · 53e52c72
      David S. Miller authored
      This makes the ->poll() routines of the E100, E1000, E1000E, IXGB, and
      IXGBE drivers complete ->poll() consistently.
      
      Now they will all break out when the amount of RX work done is less
      than 'budget'.
      
      At a later time, we may want put back code to include the TX work as
      well (as at least one other NAPI driver does, but by in large NAPI
      drivers do not do this).  But if so, it should be done consistently
      across the board to all of these drivers.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Acked-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
      53e52c72
    • David S. Miller's avatar
      [NET]: Stop polling when napi_disable() is pending. · fed17f30
      David S. Miller authored
      This finally adds the code in net_rx_action() to break out of the
      ->poll()'ing loop when a napi_disable() is found to be pending.
      
      Now, even if a device is being flooded with packets it can be cleanly
      brought down.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fed17f30
    • David S. Miller's avatar
      [NET]: Fix drivers to handle napi_disable() disabling interrupts. · d1d08d12
      David S. Miller authored
      When we add the generic napi_disable_pending() breakout
      logic to net_rx_action() it means that napi_disable()
      can cause NAPI poll interrupt events to be disabled.
      
      And this is exactly what we want.  If a napi_disable()
      is pending, and we are looping in the ->poll(), we want
      ->poll() event interrupts to stay disabled and we want
      to complete the NAPI poll ASAP.
      
      When ->poll() break out during device down was being handled on a
      per-driver basis, often these drivers would turn interrupts back on
      when '!netif_running()' was detected.
      
      And this would just cause a reschedule of the NAPI ->poll() in the
      interrupt handler before the napi_disable() could get in there and
      grab the NAPI_STATE_SCHED bit.
      
      The vast majority of drivers don't care if napi_disable() might have
      the side effect of disabling NAPI ->poll() event interrupts.  In all
      such cases, when a napi_disable() is performed, the driver just
      disabled interrupts or is about to.
      
      However there were three exceptions to this in PCNET32, R8169, and
      SKY2.  To fix those cases, at the subsequent napi_enable() points, I
      added code to ensure that the ->poll() interrupt events are enabled in
      the hardware.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Acked-by: default avatarDon Fry <pcnet32@verizon.net>
      d1d08d12
    • David S. Miller's avatar
      [NETXEN]: Fix ->poll() done logic. · 1706287f
      David S. Miller authored
      If work_done >= budget we should always elide the NAPI
      completion.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1706287f
    • Andrew Lutomirski's avatar
      mac80211: return an error when SIWRATE doesn't match any rate · 5cdfed54
      Andrew Lutomirski authored
      Currently mac80211 fails silently when trying to set a nonexistent
      rate.  Return an error instead.
      Signed-Off-By: default avatarAndy Lutomirski <luto@myrealbox.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5cdfed54
    • Michael Buesch's avatar
      ssb: Fix probing of PCI cores if PCI and PCIE core is available · 87c4ac84
      Michael Buesch authored
      This will make sure that always the correct core is selected, even if
      there are both a PCI and PCI-E core on a PCI or PCI-E card.
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      87c4ac84
    • David S. Miller's avatar
      [NET]: Do not check netif_running() and carrier state in ->poll() · 4ec24119
      David S. Miller authored
      Drivers do this to try to break out of the ->poll()'ing loop
      when the device is being brought administratively down.
      
      Now that we have a napi_disable() "pending" state we are going
      to solve that problem generically.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4ec24119
    • David S. Miller's avatar
      [NET]: Add NAPI_STATE_DISABLE. · a0a46196
      David S. Miller authored
      Create a bit to signal that a napi_disable() is in progress.
      
      This sets up infrastructure such that net_rx_action() can generically
      break out of the ->poll() loop on a NAPI context that has a pending
      napi_disable() yet is being bombed with packets (and thus would
      otherwise poll endlessly and not allow the napi_disable() to finish).
      
      Now, what napi_disable() does is first set the NAPI_STATE_DISABLE bit
      (to indicate that a disable is pending), then it polls for the
      NAPI_STATE_SCHED bit, and once the NAPI_STATE_SCHED bit is acquired
      the NAPI_STATE_DISABLE bit is cleared.  Here, the test_and_set_bit()
      provides the necessary memory barrier between the various bitops.
      
      napi_schedule_prep() now tests for a pending disable as it's first
      action and won't try to obtain the NAPI_STATE_SCHED bit if a disable
      is pending.
      
      As a result, we can remove the netif_running() check in
      netif_rx_schedule_prep() because the NAPI disable pending state serves
      this purpose.  And, it does so in a NAPI centric manner which is what
      we really want.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0a46196
    • David S. Miller's avatar
      [NET]: Do not grab device reference when scheduling a NAPI poll. · bdb95b17
      David S. Miller authored
      It is pointless, because everything that can make a device go away
      will do a napi_disable() first.
      
      The main impetus behind this is that now we can legally do a NAPI
      completion in generic code like net_rx_action() which a following
      changeset needs to do.  net_rx_action() can only perform actions
      in NAPI centric ways, because there may be a one to many mapping
      between NAPI contexts and network devices (SKY2 is one example).
      
      We also want to get rid of this because it's an extra atomic in the
      NAPI paths, and also because it is one of the last instances where the
      NAPI interfaces care about net devices.
      
      The one remaining netdev detail the NAPI stuff cares about is the
      netif_running() check which will be killed off in a subsequent
      changeset.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bdb95b17