1. 17 Oct, 2012 22 commits
  2. 10 Oct, 2012 18 commits
    • Ben Hutchings's avatar
      Linux 3.2.31 · a2b4bcbf
      Ben Hutchings authored
      a2b4bcbf
    • Yevgeniy Melnichuk's avatar
      Bluetooth: Add support for Sony Vaio T-Series · 748e7f2a
      Yevgeniy Melnichuk authored
      commit bc21fde2 upstream.
      
      Add Sony Vaio T-Series Bluetooth Module( 0x489:0xE036) to
      the blacklist of btusb module and add it to the ath3k module.
      
      output of cat /sys/kernel/debug/usb/devices
      
      T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  5 Spd=12   MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0489 ProdID=e036 Rev= 0.02
      S:  Manufacturer=Atheros Communications
      S:  Product=Bluetooth USB Host Controller
      S:  SerialNumber=Alaska Day 2006
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: default avatarYevgeniy Melnichuk <yevgeniy.melnichuk@googlemail.com>
      Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
      Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      748e7f2a
    • Peng Chen's avatar
      Bluetooth: add support for atheros 0489:e057 · db50e323
      Peng Chen authored
      commit 2096ae6c upstream.
      
          Add support for the AR3012 chip found on Fioxconn.
      
          usb-devices shows:
      
          T:  Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 44 Spd=12   MxCh= 0
          D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
          P:  Vendor=0489 ProdID=e057 Rev= 0.02
          C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
          I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
          E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
          E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
          I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
          E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
          I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
          E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
          I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
          E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
          I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
          E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
          I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
          E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
          I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
          E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
          E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: default avatarPeng Chen <pengchen@qca.qualcomm.com>
      Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      db50e323
    • Giancarlo Formicuccia's avatar
      Bluetooth: add support for atheros 0930:0219 · 65c5e411
      Giancarlo Formicuccia authored
      commit 6c4ae5c2 upstream.
      
      Add support for the AR3012 chip found on the Toshiba Sallite M840-1000-XQ.
      
      usb-devices shows:
      
      T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0930 ProdID=0219 Rev=00.02
      S:  Manufacturer=Atheros Communications
      S:  Product=Bluetooth USB Host Controller
      S:  SerialNumber=Alaska Day 2006
      C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      Signed-off-by: default avatarGiancarlo Formicuccia <giancarlo.formicuccia@gmail.com>
      Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      65c5e411
    • Marek Vasut's avatar
      Bluetooth: Support AR3011 in Acer Iconia Tab W500 · e9fb4c8e
      Marek Vasut authored
      commit 6eda541d upstream.
      
      Acer used this chip connected via USB:
      
      Bus 005 Device 005: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               1.10
        bDeviceClass          224 Wireless
        bDeviceSubClass         1 Radio Frequency
        bDeviceProtocol         1 Bluetooth
        bMaxPacketSize0        64
        idVendor           0x0cf3 Atheros Communications, Inc.
        idProduct          0x3005 AR3011 Bluetooth
        bcdDevice            0.01
        iManufacturer           0
        iProduct                0
        iSerial                 0
        bNumConfigurations      1
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Gustavo Padovan <gustavo@padovan.org>
      Cc: Johan Hedberg <johan.hedberg@gmail.com>
      Cc: Marcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      e9fb4c8e
    • Matt Carlson's avatar
      tg3: Fix TSO CAP for 5704 devs w / ASF enabled · 3a0d367c
      Matt Carlson authored
      [ Upstream commit cf9ecf4b ]
      
      On the earliest TSO capable devices, TSO was accomplished through
      firmware.  The TSO cannot coexist with ASF management firmware though.
      The tg3 driver determines whether or not ASF is enabled by calling
      tg3_get_eeprom_hw_cfg(), which checks a particular bit of NIC memory.
      Commit dabc5c67, entitled "tg3: Move
      TSO_CAPABLE assignment", accidentally moved the code that determines
      TSO capabilities earlier than the call to tg3_get_eeprom_hw_cfg().  As a
      consequence, the driver was attempting to determine TSO capabilities
      before it had all the data it needed to make the decision.
      
      This patch fixes the problem by revisiting and reevaluating the decision
      after tg3_get_eeprom_hw_cfg() is called.
      Signed-off-by: default avatarMatt Carlson <mcarlson@broadcom.com>
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      3a0d367c
    • Ed Cashin's avatar
      aoe: assert AoE packets marked as requiring no checksum · c660b90b
      Ed Cashin authored
      [ Upstream commit 8babe8cc ]
      
      In order for the network layer to see that AoE requires
      no checksumming in a generic way, the packets must be
      marked as requiring no checksum, so we make this requirement
      explicit with the assertion.
      Signed-off-by: default avatarEd Cashin <ecashin@coraid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      c660b90b
    • Ed Cashin's avatar
      net: do not disable sg for packets requiring no checksum · 9d222e39
      Ed Cashin authored
      [ Upstream commit c0d680e5 ]
      
      A change in a series of VLAN-related changes appears to have
      inadvertently disabled the use of the scatter gather feature of
      network cards for transmission of non-IP ethernet protocols like ATA
      over Ethernet (AoE).  Below is a reference to the commit that
      introduces a "harmonize_features" function that turns off scatter
      gather when the NIC does not support hardware checksumming for the
      ethernet protocol of an sk buff.
      
        commit f01a5236
        Author: Jesse Gross <jesse@nicira.com>
        Date:   Sun Jan 9 06:23:31 2011 +0000
      
            net offloading: Generalize netif_get_vlan_features().
      
      The can_checksum_protocol function is not equipped to consider a
      protocol that does not require checksumming.  Calling it for a
      protocol that requires no checksum is inappropriate.
      
      The patch below has harmonize_features call can_checksum_protocol when
      the protocol needs a checksum, so that the network layer is not forced
      to perform unnecessary skb linearization on the transmission of AoE
      packets.  Unnecessary linearization results in decreased performance
      and increased memory pressure, as reported here:
      
        http://www.spinics.net/lists/linux-mm/msg15184.html
      
      The problem has probably not been widely experienced yet, because
      only recently has the kernel.org-distributed aoe driver acquired the
      ability to use payloads of over a page in size, with the patchset
      recently included in the mm tree:
      
        https://lkml.org/lkml/2012/8/28/140
      
      The coraid.com-distributed aoe driver already could use payloads of
      greater than a page in size, but its users generally do not use the
      newest kernels.
      Signed-off-by: default avatarEd Cashin <ecashin@coraid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      9d222e39
    • Alan Cox's avatar
      netrom: copy_datagram_iovec can fail · 85c5e1ba
      Alan Cox authored
      [ Upstream commit 6cf5c951 ]
      
      Check for an error from this and if so bail properly.
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      85c5e1ba
    • Eric Dumazet's avatar
      l2tp: fix a typo in l2tp_eth_dev_recv() · d1cf1d01
      Eric Dumazet authored
      [ Upstream commit c0cc88a7 ]
      
      While investigating l2tp bug, I hit a bug in eth_type_trans(),
      because not enough bytes were pulled in skb head.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      d1cf1d01
    • Eric Dumazet's avatar
      ipv6: mip6: fix mip6_mh_filter() · ef15da3b
      Eric Dumazet authored
      [ Upstream commit 96af69ea ]
      
      mip6_mh_filter() should not modify its input, or else its caller
      would need to recompute ipv6_hdr() if skb->head is reallocated.
      
      Use skb_header_pointer() instead of pskb_may_pull()
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      ef15da3b
    • Eric Dumazet's avatar
      ipv6: raw: fix icmpv6_filter() · c3fc2c27
      Eric Dumazet authored
      [ Upstream commit 1b05c4b5 ]
      
      icmpv6_filter() should not modify its input, or else its caller
      would need to recompute ipv6_hdr() if skb->head is reallocated.
      
      Use skb_header_pointer() instead of pskb_may_pull() and
      change the prototype to make clear both sk and skb are const.
      
      Also, if icmpv6 header cannot be found, do not deliver the packet,
      as we do in IPv4.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      c3fc2c27
    • Eric Dumazet's avatar
      ipv4: raw: fix icmp_filter() · 65a48427
      Eric Dumazet authored
      [ Upstream commit ab43ed8b ]
      
      icmp_filter() should not modify its input, or else its caller
      would need to recompute ip_hdr() if skb->head is reallocated.
      
      Use skb_header_pointer() instead of pskb_may_pull() and
      change the prototype to make clear both sk and skb are const.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      65a48427
    • Eric Dumazet's avatar
      net: guard tcp_set_keepalive() to tcp sockets · 9a2ed90a
      Eric Dumazet authored
      [ Upstream commit 3e10986d ]
      
      Its possible to use RAW sockets to get a crash in
      tcp_set_keepalive() / sk_reset_timer()
      
      Fix is to make sure socket is a SOCK_STREAM one.
      Reported-by: default avatarDave Jones <davej@redhat.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      9a2ed90a
    • Chema Gonzalez's avatar
      net: small bug on rxhash calculation · 0dda7b56
      Chema Gonzalez authored
      [ Upstream commit 68622342 ]
      
      In the current rxhash calculation function, while the
      sorting of the ports/addrs is coherent (you get the
      same rxhash for packets sharing the same 4-tuple, in
      both directions), ports and addrs are sorted
      independently. This implies packets from a connection
      between the same addresses but crossed ports hash to
      the same rxhash.
      
      For example, traffic between A=S:l and B=L:s is hashed
      (in both directions) from {L, S, {s, l}}. The same
      rxhash is obtained for packets between C=S:s and D=L:l.
      
      This patch ensures that you either swap both addrs and ports,
      or you swap none. Traffic between A and B, and traffic
      between C and D, get their rxhash from different sources
      ({L, S, {l, s}} for A<->B, and {L, S, {s, l}} for C<->D)
      
      The patch is co-written with Eric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarChema Gonzalez <chema@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      0dda7b56
    • Xiaodong Xu's avatar
      pppoe: drop PPPOX_ZOMBIEs in pppoe_release · db8dbd5b
      Xiaodong Xu authored
      [ Upstream commit 2b018d57 ]
      
      When PPPOE is running over a virtual ethernet interface (e.g., a
      bonding interface) and the user tries to delete the interface in case
      the PPPOE state is ZOMBIE, the kernel will loop forever while
      unregistering net_device for the reference count is not decreased to
      zero which should have been done with dev_put().
      Signed-off-by: default avatarXiaodong Xu <stid.smth@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      db8dbd5b
    • Thomas Graf's avatar
      sctp: Don't charge for data in sndbuf again when transmitting packet · 73eca9b3
      Thomas Graf authored
      [ Upstream commit 4c3a5bda ]
      
      SCTP charges wmem_alloc via sctp_set_owner_w() in sctp_sendmsg() and via
      skb_set_owner_w() in sctp_packet_transmit(). If a sender runs out of
      sndbuf it will sleep in sctp_wait_for_sndbuf() and expects to be waken up
      by __sctp_write_space().
      
      Buffer space charged via sctp_set_owner_w() is released in sctp_wfree()
      which calls __sctp_write_space() directly.
      
      Buffer space charged via skb_set_owner_w() is released via sock_wfree()
      which calls sk->sk_write_space() _if_ SOCK_USE_WRITE_QUEUE is not set.
      sctp_endpoint_init() sets SOCK_USE_WRITE_QUEUE on all sockets.
      
      Therefore if sctp_packet_transmit() manages to queue up more than sndbuf
      bytes, sctp_wait_for_sndbuf() will never be woken up again unless it is
      interrupted by a signal.
      
      This could be fixed by clearing the SOCK_USE_WRITE_QUEUE flag but ...
      
      Charging for the data twice does not make sense in the first place, it
      leads to overcharging sndbuf by a factor 2. Therefore this patch only
      charges a single byte in wmem_alloc when transmitting an SCTP packet to
      ensure that the socket stays alive until the packet has been released.
      
      This means that control chunks are no longer accounted for in wmem_alloc
      which I believe is not a problem as skb->truesize will typically lead
      to overcharging anyway and thus compensates for any control overhead.
      Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
      CC: Vlad Yasevich <vyasevic@redhat.com>
      CC: Neil Horman <nhorman@tuxdriver.com>
      CC: David Miller <davem@davemloft.net>
      Acked-by: default avatarVlad Yasevich <vyasevich@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      73eca9b3
    • Michal Kubeček's avatar
      tcp: flush DMA queue before sk_wait_data if rcv_wnd is zero · f189aa26
      Michal Kubeček authored
      [ Upstream commit 15c04175 ]
      
      If recv() syscall is called for a TCP socket so that
        - IOAT DMA is used
        - MSG_WAITALL flag is used
        - requested length is bigger than sk_rcvbuf
        - enough data has already arrived to bring rcv_wnd to zero
      then when tcp_recvmsg() gets to calling sk_wait_data(), receive
      window can be still zero while sk_async_wait_queue exhausts
      enough space to keep it zero. As this queue isn't cleaned until
      the tcp_service_net_dma() call, sk_wait_data() cannot receive
      any data and blocks forever.
      
      If zero receive window and non-empty sk_async_wait_queue is
      detected before calling sk_wait_data(), process the queue first.
      Signed-off-by: default avatarMichal Kubecek <mkubecek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      f189aa26