1. 28 Oct, 2014 11 commits
    • Olivier Blin's avatar
      usbnet: add a callback for set_rx_mode · 1efed2d0
      Olivier Blin authored
      To delegate promiscuous mode and multicast filtering to the subdriver.
      Signed-off-by: default avatarOlivier Blin <olivier.blin@softathome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1efed2d0
    • David S. Miller's avatar
      Merge branch 'systemport-net' · 9ffa1fca
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: systemport: RX path and suspend fixes
      
      These two patches fix a race condition where we have our RX interrupts
      enabled, but not NAPI for the RX path, and the second patch fixes an
      issue for packets stuck in RX fifo during a suspend/resume cycle.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9ffa1fca
    • Florian Fainelli's avatar
      net: systemport: reset UniMAC coming out of a suspend cycle · 704d33e7
      Florian Fainelli authored
      bcm_sysport_resume() was missing an UniMAC reset which can lead to
      various receive FIFO corruptions coming out of a suspend cycle. If the
      RX FIFO is stuck, it will deliver corrupted/duplicate packets towards
      the host CPU interface.
      
      This could be reproduced on crowded network and when Wake-on-LAN is
      enabled for this particular interface because the switch still forwards
      packets towards the host CPU interface (SYSTEMPORT), and we had to leave
      the UniMAC RX enable bit on to allow matching MagicPackets.
      
      Once we re-enter the resume function, there is a small window during
      which the UniMAC receive is still enabled, and we start queueing
      packets, but the RDMA and RBUF engines are not ready, which leads to
      having packets stuck in the UniMAC RX FIFO, ultimately delivered towards
      the host CPU as corrupted.
      
      Fixes: 40755a0f ("net: systemport: add suspend and resume support")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      704d33e7
    • Florian Fainelli's avatar
      net: systemport: enable RX interrupts after NAPI · 8edf0047
      Florian Fainelli authored
      There is currently a small window during which the SYSTEMPORT adapter
      enables its RX interrupts without having enabled its NAPI handler, which
      can result in packets to be discarded during interface bringup.
      
      A similar but more serious window exists in bcm_sysport_resume() during
      which we can have the RDMA engine not fully prepared to receive packets
      and yet having RX interrupts enabled.
      
      Fix this my moving the RX interrupt enable down to
      bcm_sysport_netif_start() after napi_enable() for the RX path is called,
      which fixes both call sites: bcm_sysport_open() and
      bcm_sysport_resume().
      
      Fixes: b02e6d9b ("net: systemport: add bcm_sysport_netif_{enable,stop}")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8edf0047
    • Randy Dunlap's avatar
      skbuff.h: fix kernel-doc warning for headers_end · ebcf34f3
      Randy Dunlap authored
      Fix kernel-doc warning in <linux/skbuff.h> by making both headers_start
      and headers_end private fields.
      
      Warning(..//include/linux/skbuff.h:654): No description found for parameter 'headers_end[0]'
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ebcf34f3
    • Vince Bridgers's avatar
      net: phy: Add SGMII Configuration for Marvell 88E1145 Initialization · 99d881f9
      Vince Bridgers authored
      Marvell phy 88E1145 configuration & initialization was missing a case
      for initializing SGMII mode. This patch adds that case.
      Signed-off-by: default avatarVince Bridgers <vbridger@opensource.altera.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      99d881f9
    • Mugunthan V N's avatar
      drivers: net:cpsw: fix probe_dt when only slave 1 is pinned out · 47276fcc
      Mugunthan V N authored
      when slave 0 has no phy and slave 1 connected to phy, driver probe will
      fail as there is no phy id present for slave 0 device tree, so continuing
      even though no phy-id found, also moving mac-id read later to ensure
      mac-id is read from device tree even when phy-id entry in not found.
      Signed-off-by: default avatarMugunthan V N <mugunthanvnm@ti.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      47276fcc
    • David S. Miller's avatar
      Merge tag 'master-2014-10-27' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless · 25946f20
      David S. Miller authored
      John W. Linville says:
      
      ====================
      pull request: wireless 2014-10-28
      
      Please pull this batch of fixes intended for the 3.18 stream!
      
      For the mac80211 bits, Johannes says:
      
      "Here are a few fixes for the wireless stack: one fixes the
      RTS rate, one for a debugfs file, one to return the correct
      channel to userspace, a sanity check for a userspace value
      and the remaining two are just documentation fixes."
      
      For the iwlwifi bits, Emmanuel says:
      
      "I revert here a patch that caused interoperability issues.
      dvm gets a fix for a bug that was reported by many users.
      Two minor fixes for BT Coex and platform power fix that helps
      reducing latency when the PCIe link goes to low power states."
      
      In addition...
      
      Felix Fietkau adds a couple of ath code fixes related to regulatory
      rule enforcement.
      
      Hauke Mehrtens fixes a build break with bcma when CONFIG_OF_ADDRESS
      is not set.
      
      Karsten Wiese provides a trio of minor fixes for rtl8192cu.
      
      Kees Cook prevents a potential information leak in rtlwifi.
      
      Larry Finger also brings a trio of minor fixes for rtlwifi.
      
      Rafał Miłecki adds a device ID to the bcma bus driver.
      
      Rickard Strandqvist offers some strn* -> strl* changes in brcmfmac
      to eliminate non-terminated string issues.
      
      Sujith Manoharan avoids some ath9k stalls by enabling HW queue control
      only for MCC.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25946f20
    • David S. Miller's avatar
      Merge branch 'dsa-net' · 3923d68d
      David S. Miller authored
      Andrew Lunn says:
      
      ====================
      DSA tagging mismatches
      
      The second patch is a fix, which should be applied to -rc. It is
      possible to get a DSA configuration which does not work. The patch
      stops this happening.
      
      The first patch detects this situation, and errors out the probe of
      DSA, making it more obvious something is wrong. It is not required to
      apply it -rc.
      
      v2 fixes the use case pointed out by Florian, that a switch driver
      may use DSA_TAG_PROTO_NONE which the patch did not correctly handle.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3923d68d
    • Andrew Lunn's avatar
      dsa: mv88e6171: Fix tagging protocol/Kconfig · c146b778
      Andrew Lunn authored
      The mv88e6171 can support two different tagging protocols, DSA and
      EDSA. The switch driver structure only allows one protocol to be
      enumerated, and DSA was chosen. However the Kconfig entry ensures the
      EDSA tagging code is built. With a minimal configuration, we then end
      up with a mismatch. The probe is successful, EDSA tagging is used, but
      the switch is configured for DSA, resulting in mangled packets.
      
      Change the switch driver structure to enumerate EDSA, fixing the
      mismatch.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Fixes: 42f27253 ("net: DSA: Marvell mv88e6171 switch driver")
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c146b778
    • Andrew Lunn's avatar
      net: dsa: Error out on tagging protocol mismatches · ae439286
      Andrew Lunn authored
      If there is a mismatch between enabled tagging protocols and the
      protocol the switch supports, error out, rather than continue with a
      situation which is unlikely to work.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      cc: alexander.h.duyck@intel.com
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae439286
  2. 27 Oct, 2014 12 commits
  3. 25 Oct, 2014 8 commits
    • Geert Uytterhoeven's avatar
      drivers: net: xgene: Rewrite buggy loop in xgene_enet_ecc_init() · b71e821d
      Geert Uytterhoeven authored
      drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c: In function ‘xgene_enet_ecc_init’:
      drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c:126: warning: ‘data’ may be used uninitialized in this function
      
      Depending on the arbitrary value on the stack, the loop may terminate
      too early, and cause a bogus -ENODEV failure.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b71e821d
    • Dan Carpenter's avatar
      i40e: _MASK vs _SHIFT typo in i40e_handle_mdd_event() · 013f6579
      Dan Carpenter authored
      We accidentally mask by the _SHIFT variable.  It means that "event" is
      always zero.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Tested-by: default avatarJim Young <jamesx.m.young@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      013f6579
    • Eric Dumazet's avatar
      macvlan: fix a race on port dismantle and possible skb leaks · fe0ca732
      Eric Dumazet authored
      We need to cancel the work queue after rcu grace period,
      otherwise it can be rescheduled by incoming packets.
      
      We need to purge queue if some skbs are still in it.
      
      We can use __skb_queue_head_init() variant in
      macvlan_process_broadcast()
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Fixes: 412ca155 ("macvlan: Move broadcasts into a work queue")
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe0ca732
    • Eric Dumazet's avatar
      tcp: md5: do not use alloc_percpu() · 349ce993
      Eric Dumazet authored
      percpu tcp_md5sig_pool contains memory blobs that ultimately
      go through sg_set_buf().
      
      -> sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf));
      
      This requires that whole area is in a physically contiguous portion
      of memory. And that @buf is not backed by vmalloc().
      
      Given that alloc_percpu() can use vmalloc() areas, this does not
      fit the requirements.
      
      Replace alloc_percpu() by a static DEFINE_PER_CPU() as tcp_md5sig_pool
      is small anyway, there is no gain to dynamically allocate it.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Fixes: 765cf997 ("tcp: md5: remove one indirection level in tcp_md5sig_pool")
      Reported-by: default avatarCrestez Dan Leonard <cdleonard@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      349ce993
    • David S. Miller's avatar
      Merge branch 'xen-netback' · 4cc40af0
      David S. Miller authored
      David Vrabel says:
      
      ====================
      xen-netback: guest Rx queue drain and stall fixes
      
      This series fixes two critical xen-netback bugs.
      
      1. Netback may consume all of host memory by queuing an unlimited
         number of skb on the internal guest Rx queue.  This behaviour is
         guest triggerable.
      
      2. Carrier flapping under high traffic rates which reduces
         performance.
      
      The first patch is a prerequite.  Removing support for frontends with
      feature-rx-notify makes it easier to reason about the correctness of
      netback since it no longer has to support this outdated and broken
      mode.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4cc40af0
    • David Vrabel's avatar
      xen-netback: reintroduce guest Rx stall detection · ecf08d2d
      David Vrabel authored
      If a frontend not receiving packets it is useful to detect this and
      turn off the carrier so packets are dropped early instead of being
      queued and drained when they expire.
      
      A to-guest queue is stalled if it doesn't have enough free slots for a
      an extended period of time (default 60 s).
      
      If at least one queue is stalled, the carrier is turned off (in the
      expectation that the other queues will soon stall as well).  The
      carrier is only turned on once all queues are ready.
      
      When the frontend connects, all the queues start in the stalled state
      and only become ready once the frontend queues enough Rx requests.
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Reviewed-by: default avatarWei Liu <wei.liu2@citrix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ecf08d2d
    • David Vrabel's avatar
      xen-netback: fix unlimited guest Rx internal queue and carrier flapping · f48da8b1
      David Vrabel authored
      Netback needs to discard old to-guest skb's (guest Rx queue drain) and
      it needs detect guest Rx stalls (to disable the carrier so packets are
      discarded earlier), but the current implementation is very broken.
      
      1. The check in hard_start_xmit of the slot availability did not
         consider the number of packets that were already in the guest Rx
         queue.  This could allow the queue to grow without bound.
      
         The guest stops consuming packets and the ring was allowed to fill
         leaving S slot free.  Netback queues a packet requiring more than S
         slots (ensuring that the ring stays with S slots free).  Netback
         queue indefinately packets provided that then require S or fewer
         slots.
      
      2. The Rx stall detection is not triggered in this case since the
         (host) Tx queue is not stopped.
      
      3. If the Tx queue is stopped and a guest Rx interrupt occurs, netback
         will consider this an Rx purge event which may result in it taking
         the carrier down unnecessarily.  It also considers a queue with
         only 1 slot free as unstalled (even though the next packet might
         not fit in this).
      
      The internal guest Rx queue is limited by a byte length (to 512 Kib,
      enough for half the ring).  The (host) Tx queue is stopped and started
      based on this limit.  This sets an upper bound on the amount of memory
      used by packets on the internal queue.
      
      This allows the estimatation of the number of slots for an skb to be
      removed (it wasn't a very good estimate anyway).  Instead, the guest
      Rx thread just waits for enough free slots for a maximum sized packet.
      
      skbs queued on the internal queue have an 'expires' time (set to the
      current time plus the drain timeout).  The guest Rx thread will detect
      when the skb at the head of the queue has expired and discard expired
      skbs.  This sets a clear upper bound on the length of time an skb can
      be queued for.  For a guest being destroyed the maximum time needed to
      wait for all the packets it sent to be dropped is still the drain
      timeout (10 s) since it will not be sending new packets.
      
      Rx stall detection is reintroduced in a later commit.
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Reviewed-by: default avatarWei Liu <wei.liu2@citrix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f48da8b1
    • David Vrabel's avatar
      xen-netback: make feature-rx-notify mandatory · bc96f648
      David Vrabel authored
      Frontends that do not provide feature-rx-notify may stall because
      netback depends on the notification from frontend to wake the guest Rx
      thread (even if can_queue is false).
      
      This could be fixed but feature-rx-notify was introduced in 2006 and I
      am not aware of any frontends that do not implement this.
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Acked-by: default avatarWei Liu <wei.liu2@citrix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bc96f648
  4. 24 Oct, 2014 5 commits
  5. 23 Oct, 2014 4 commits
    • Emmanuel Grumbach's avatar
      iwlwifi: pcie: fix polling in various places · 7f2ac8fb
      Emmanuel Grumbach authored
      iwl_poll_bit may return a strictly positive value when the
      poll doesn't match on the first try.
      This was caught when WoWLAN started failing upon resume
      even if the poll_bit actually succeeded.
      
      Also change a wrong print. If we reach the end of
      iwl_pcie_prepare_card_hw, it means that we couldn't
      get the devices.
      Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Reviewed-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      7f2ac8fb
    • Emmanuel Grumbach's avatar
      Revert "iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate" · 1ffde699
      Emmanuel Grumbach authored
      This reverts commit aa11bbf3.
      This commit was causing connection issues and is not needed
      if IWL_MVM_RS_RSSI_BASED_INIT_RATE is set to false by default.
      
      Regardless of the issues mentioned above, this patch added the
      following WARNING:
      
      WARNING: CPU: 0 PID: 3946 at drivers/net/wireless/iwlwifi/mvm/tx.c:190 iwl_mvm_set_tx_params+0x60a/0x6f0 [iwlmvm]()
      Got an HT rate for a non data frame 0x8
      CPU: 0 PID: 3946 Comm: wpa_supplicant Tainted: G           O   3.17.0+ #6
      Hardware name: LENOVO 20ANCTO1WW/20ANCTO1WW, BIOS GLET71WW (2.25 ) 07/02/2014
       0000000000000009 ffffffff814fa911 ffff8804288db8f8 ffffffff81064f52
       0000000000001808 ffff8804288db948 ffff88040add8660 ffff8804291b5600
       0000000000000000 ffffffff81064fb7 ffffffffa07b73d0 0000000000000020
      Call Trace:
       [<ffffffff814fa911>] ? dump_stack+0x41/0x51
       [<ffffffff81064f52>] ? warn_slowpath_common+0x72/0x90
       [<ffffffff81064fb7>] ? warn_slowpath_fmt+0x47/0x50
       [<ffffffffa07a39ea>] ? iwl_mvm_set_tx_params+0x60a/0x6f0 [iwlmvm]
       [<ffffffffa07a3cf8>] ? iwl_mvm_tx_skb+0x48/0x3c0 [iwlmvm]
       [<ffffffffa079cb9b>] ? iwl_mvm_mac_tx+0x7b/0x180 [iwlmvm]
       [<ffffffffa0746ce9>] ? __ieee80211_tx+0x2b9/0x3c0 [mac80211]
       [<ffffffffa07492f3>] ? ieee80211_tx+0xb3/0x100 [mac80211]
       [<ffffffffa0749c49>] ? ieee80211_subif_start_xmit+0x459/0xca0 [mac80211]
       [<ffffffff814116e7>] ? dev_hard_start_xmit+0x337/0x5f0
       [<ffffffff81430d46>] ? sch_direct_xmit+0x96/0x1f0
       [<ffffffff81411ba3>] ? __dev_queue_xmit+0x203/0x4f0
       [<ffffffff8142f670>] ? ether_setup+0x70/0x70
       [<ffffffff814e96a1>] ? packet_sendmsg+0xf81/0x1110
       [<ffffffff8140625c>] ? skb_free_datagram+0xc/0x40
       [<ffffffff813f7538>] ? sock_sendmsg+0x88/0xc0
       [<ffffffff813f7274>] ? move_addr_to_kernel.part.20+0x14/0x60
       [<ffffffff811c47c2>] ? __inode_wait_for_writeback+0x62/0xb0
       [<ffffffff813f7a91>] ? SYSC_sendto+0xf1/0x180
       [<ffffffff813f88f9>] ? __sys_recvmsg+0x39/0x70
       [<ffffffff8150066d>] ? system_call_fastpath+0x1a/0x1f
      ---[ end trace cc19a150d311fc63 ]---
      
      which was reported here: https://bugzilla.kernel.org/show_bug.cgi?id=85691
      
      CC: <stable@vger.kernel.org> [3.13+]
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      1ffde699
    • Emmanuel Grumbach's avatar
      iwlwifi: dvm: drop non VO frames when flushing · a0855054
      Emmanuel Grumbach authored
      When mac80211 wants to ensure that a frame is sent, it calls
      the flush() callback. Until now, iwldvm implemented this by
      waiting that all the frames are sent (ACKed or timeout).
      In case of weak signal, this can take a significant amount
      of time, delaying the next connection (in case of roaming).
      Many users have reported that the flush would take too long
      leading to the following error messages to be printed:
      
      iwlwifi 0000:03:00.0: fail to flush all tx fifo queues Q 2
      iwlwifi 0000:03:00.0: Current SW read_ptr 161 write_ptr 201
      iwl data: 00000000: 00 00 00 00 00 00 00 00 fe ff 01 00 00 00 00 00
      [snip]
      iwlwifi 0000:03:00.0: FH TRBs(0) = 0x00000000
      [snip]
      iwlwifi 0000:03:00.0: Q 0 is active and mapped to fifo 3 ra_tid 0x0000 [9,9]
      [snip]
      
      Instead of waiting for these packets, simply drop them. This
      significantly improves the responsiveness of the network.
      Note that all the queues are flushed, but the VO one. This
      is not typically used by the applications and it likely
      contains management frames that are useful for connection
      or roaming.
      
      This bug is tracked here:
      https://bugzilla.kernel.org/show_bug.cgi?id=56581
      
      But it is duplicated in distributions' trackers.
      A simple search in Ubuntu's database led to these bugs:
      
      https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1270808
      https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1305406
      https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1356236
      https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1360597
      https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1361809
      
      Cc: <stable@vger.kernel.org>
      Depends-on: 77be2c54 ("mac80211: add vif to flush call")
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      a0855054
    • Matti Gottlieb's avatar
      iwlwifi: mvm: ROC - bug fixes around time events and locking · a6cc5163
      Matti Gottlieb authored
      Don't add the time event to the list. We added it several
      times the same time event, which leads to an infinite loop
      when walking the list.
      
      Since we (currently) don't support more than one ROC for STA
      vif at a time, enforce this and don't add the time event
      to any list.
      
      We were also missing the locking of the mutex which led to
      a lockdep splat - fix that.
      Signed-off-by: default avatarMatti Gottlieb <matti.gottlieb@intel.com>
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      a6cc5163