1. 18 2月, 2016 7 次提交
  2. 17 2月, 2016 33 次提交
    • D
      drivers: net: cpsw-phy-sel: add dev_warn() for unsupported PHY mode · d148bbd3
      David Rivshin 提交于
      The cpsw-phy-sel driver supports only MII, RMII, and RGMII PHY modes,
      and silently handled any other values as if MII was specified. In a
      case where the PHY mode was incorrectly specified, or a bug elsewhere,
      there would be no indication of a problem. If MII was the correct mode,
      then this will go unnoticed, otherwise the symptom will be a failure
      to transmit/receive data over the RMII/RGMII link.
      
      Add a dev_warn() to make this condition obvious and provide a
      breadcrumb to follow.
      
      Cc: Mugunthan V N <mugunthanvnm@ti.com>
      Signed-off-by: NDavid Rivshin <drivshin@allworx.com>
      Acked-by: NMugunthan V N <mugunthanvnm@ti.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d148bbd3
    • W
      phy: keep pause flags in phy driver features · cd772de3
      Woojung.Huh@microchip.com 提交于
      genphy_config_init() masked out pause flags set in phy driver structure.
      Pause flags needs to be preserved in phydev->supported &
      phydev->advertising.
      Signed-off-by: NWoojung Huh <woojung.huh@microchip.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cd772de3
    • D
      Merge branch 'mlx4-fixes' · 1543b765
      David S. Miller 提交于
      Or Gerlitz says:
      
      ====================
      Mellanox 10/40G mlx4 driver fixes for 4.5-rc
      
      Bunch of fixes from the team to the mlx4 Eth and core drivers.
      
      Series generated against net commit aac8d3c2 "qmi_wwan: add "4G LTE usb-modem U901""
      
      Please push patches 1,2 and 6 to -stable  as well
      
      changes from v0:
       - handled another wrongly accounted HW counter in patch #1 (Rick)
       - fixed coding style issues in patch #4 (Sergei)
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1543b765
    • E
      net/mlx4_en: Avoid changing dev->features directly in run-time · 925ab1aa
      Eugenia Emantayev 提交于
      It's forbidden to manually change dev->features in run-time. Currently, this is
      done in the driver to make sure that GSO_UDP_TUNNEL is advertized only when
      VXLAN tunnel is set. However, since the stack actually does features intersection
      with hw_enc_features, we can safely revert to advertizing features early when
      registering the netdevice.
      
      Fixes: f4a1edd5 ('net/mlx4_en: Advertize encapsulation offloads [...]')
      Signed-off-by: NEugenia Emantayev <eugenia@mellanox.com>
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      925ab1aa
    • H
      net/mlx4_core: Set UAR page size to 4KB regardless of system page size · 85743f1e
      Huy Nguyen 提交于
      problem description:
      
      The current code sets UAR page size equal to system page size.
      The ConnectX-3 and ConnectX-3 Pro HWs require minimum 128 UAR pages.
      The mlx4 kernel drivers are not loaded if there is less than 128 UAR pages.
      
      solution:
      
      Always set UAR page to 4KB. This allows more UAR pages if the OS
      has PAGE_SIZE larger than 4KB. For example, PowerPC kernel use 64KB
      system page size, with 4MB uar region, there are 4MB/2/64KB = 32
      uars (half for uar, half for blueflame). This does not meet minimum 128
      UAR pages requirement. With 4KB UAR page, there are 4MB/2/4KB = 512 uars
      which meet the minimum requirement.
      
      Note that only codes in mlx4_core that deal with firmware know that uar
      page size is 4KB. Codes that deal with usr page in cq and qp context
      (mlx4_ib, mlx4_en and part of mlx4_core) still have the same assumption
      that uar page size equals to system page size.
      
      Note that with this implementation, on 64KB system page size kernel, there
      are 16 uars per system page but only one uars is used. The other 15
      uars are ignored because of the above assumption.
      
      Regarding SR-IOV, mlx4_core in hypervisor will set the uar page size
      to 4KB and mlx4_core code in virtual OS will obtain the uar page size from
      firmware.
      
      Regarding backward compatibility in SR-IOV, if hypervisor has this new code,
      the virtual OS must be updated. If hypervisor has old code, and the virtual
      OS has this new code, the new code will be backward compatible with the
      old code. If the uar size is big enough, this new code in VF continues to
      work with 64 KB uar page size (on PowerPc kernel). If the uar size does not
      meet 128 uars requirement, this new code not loaded in VF and print the same
      error message as the old code in Hypervisor.
      Signed-off-by: NHuy Nguyen <huyn@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      85743f1e
    • D
      net/mlx4_core: Do not BUG_ON during reset when PCI is offline · 22e3817e
      Daniel Jurgens 提交于
      The PCI channel could go offline during reset due to EEH.  Don't bug on in
      this case, the error is recoverable.
      
      Fixes: f6bc11e4 ('net/mlx4_core: Enhance the catas flow to support device reset')
      Signed-off-by: NDaniel Jurgens <danielj@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22e3817e
    • E
      net/mlx4_core: Fix potential corruption in counters database · 6b94bab0
      Eran Ben Elisha 提交于
      The error flow in procedure handle_existing_counter() is wrong.
      
      The procedure should exit after encountering the error, not continue
      as if everything is OK.
      
      Fixes: 68230242 ('net/mlx4_core: Add port attribute when tracking counters')
      Signed-off-by: NEran Ben Elisha <eranbe@mellanox.com>
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6b94bab0
    • E
      net/mlx4_en: Choose time-stamping shift value according to HW frequency · 31c128b6
      Eugenia Emantayev 提交于
      Previously, the shift value used for time-stamping was constant and didn't
      depend on the HW chip frequency. Change that to take the frequency into account
      and calculate the maximal value in cycles per wraparound of ten seconds. This
      time slot was chosen since it gives a good accuracy in time synchronization.
      
      Algorithm for shift value calculation:
       * Round up the maximal value in cycles to nearest power of two
      
       * Calculate maximal multiplier by division of all 64 bits set
         to above result
      
       * Then, invert the function clocksource_khz2mult() to get the shift from
         maximal mult value
      
      Fixes: ec693d47 ('net/mlx4_en: Add HW timestamping (TS) support')
      Signed-off-by: NEugenia Emantayev <eugenia@mellanox.com>
      Reviewed-by: NMatan Barak <matanb@mellanox.com>
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      31c128b6
    • A
      net/mlx4_en: Count HW buffer overrun only once · 281e8b2f
      Amir Vadai 提交于
      RdropOvflw counts overrun of HW buffer, therefore should
      be used for rx_fifo_errors only.
      
      Currently RdropOvflw counter is mistakenly also set into
      rx_missed_errors and rx_over_errors too, which makes the
      device total dropped packets accounting to show wrong results.
      
      Fix that. Use it for rx_fifo_errors only.
      
      Fixes: c27a02cd ('mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC')
      Signed-off-by: NAmir Vadai <amir@vadai.me>
      Signed-off-by: NEugenia Emantayev <eugenia@mellanox.com>
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      281e8b2f
    • B
      qmi_wwan: add "4G LTE usb-modem U901" · aac8d3c2
      Bjørn Mork 提交于
      Thomas reports:
      
      T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=05c6 ProdID=6001 Rev=00.00
      S:  Manufacturer=USB Modem
      S:  Product=USB Modem
      S:  SerialNumber=1234567890ABCDEF
      C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
      Reported-by: NThomas Schäfer <tschaefer@t-online.de>
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aac8d3c2
    • E
      tcp: md5: release request socket instead of listener · 72923555
      Eric Dumazet 提交于
      If tcp_v4_inbound_md5_hash() returns an error, we must release
      the refcount on the request socket, not on the listener.
      
      The bug was added for IPv4 only.
      
      Fixes: 079096f1 ("tcp/dccp: install syn_recv requests into ehash table")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      72923555
    • E
      tcp: do not set rtt_min to 1 · 37202283
      Eric Dumazet 提交于
      There are some cases where rtt_us derives from deltas of jiffies,
      instead of using usec timestamps.
      
      Since we want to track minimal rtt, better to assume a delta of 0 jiffie
      might be in fact be very close to 1 jiffie.
      
      It is kind of sad jiffies_to_usecs(1) calls a function instead of simply
      using a constant.
      
      Fixes: f6722583 ("tcp: track min RTT using windowed min-filter")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NNeal Cardwell <ncardwell@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      37202283
    • K
      pcnet_cs: add new id · 6c5d89a3
      Ken Kawasaki 提交于
      add new id (CONTEC C-NET(PC)C-100TX2)
      Signed-off-by: NKen Kawasaki <ken_kawasaki@nifty.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6c5d89a3
    • S
      net: dsa: remove phy_disconnect from error path · a407054f
      Sascha Hauer 提交于
      The phy has not been initialized, disconnecting it in the error
      path results in a NULL pointer exception. Drop the phy_disconnect
      from the error path.
      Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Acked-by: NNeil Armstrong <narmstrong@baylibre.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a407054f
    • S
      net: dsa: mv88e6xxx: Add support for Marvell 88E6240 · bd16a724
      Sascha Hauer 提交于
      The Marvell 88E6240 has been tested successfully without further
      changes. Add entry to the table of supported devices.
      Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bd16a724
    • J
      tipc: fix premature addition of node to lookup table · d5c91fb7
      Jon Paul Maloy 提交于
      In commit 52666986 ("tipc: let broadcast packet reception
      use new link receive function") we introduced a new per-node
      broadcast reception link instance. This link is created at the
      moment the node itself is created. Unfortunately, the allocation
      is done after the node instance has already been added to the node
      lookup hash table. This creates a potential race condition, where
      arriving broadcast packets are able to find and access the node
      before it has been fully initialized, and before the above mentioned
      link has been created. The result is occasional crashes in the function
      tipc_bcast_rcv(), which is trying to access the not-yet existing link.
      
      We fix this by deferring the addition of the node instance until after
      it has been fully initialized in the function tipc_node_create().
      Acked-by: NYing Xue <ying.xue@windriver.com>
      Signed-off-by: NJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d5c91fb7
    • D
      Merge branch 'bnxt_en-fixes' · 7facc5fb
      David S. Miller 提交于
      Michael Chan says:
      
      ====================
      bnxt_en: Bug fixes.
      
      Fixed autoneg logic and some related cleanups, fixed tx push operation,
      and reduced default ring sizes.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7facc5fb
    • M
      bnxt_en: Reduce default ring sizes. · 51dd55b5
      Michael Chan 提交于
      The current default tx ring size of 512 causes an extra page to be
      allocated for the tx ring with only 1 entry in it.  Reduce it to
      511.  The default rx ring size is also reduced to 511 to use less
      memory by default.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      51dd55b5
    • M
      bnxt_en: Fix implementation of tx push operation. · 4419dbe6
      Michael Chan 提交于
      tx push is supported for small packets to reduce DMA latency.  The
      following bugs are fixed in this patch:
      
      1. Fix the definition of the push BD which is different from the DMA BD.
      2. The push buffer has to be zero padded to the next 64-bit word boundary
      or tx checksum won't be correct.
      3. Increase the tx push packet threshold to 164 bytes (192 bytes with the BD)
      so that small tunneled packets are within the threshold.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4419dbe6
    • M
      bnxt_en: Remove 20G support and advertise only 40GbaseCR4. · 1c49c421
      Michael Chan 提交于
      20G is not supported by production hardware and only the 40GbaseCR4 standard
      is supported.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1c49c421
    • M
      bnxt_en: Cleanup and Fix flow control setup logic · 0d8abf02
      Michael Chan 提交于
      Cleanup bnxt_probe_phy() to cleanly separate 2 code blocks for autoneg
      on and off.  Autoneg flow control is possible only if autoneg is enabled.
      
      In bnxt_get_settings(), Pause and Asym_Pause are always supported.
      Only the advertisement bits change depending on the ethtool -A setting
      in auto mode.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0d8abf02
    • M
      bnxt_en: Fix ethtool autoneg logic. · b763499e
      Michael Chan 提交于
      1. Determine autoneg on|off setting from link_info->autoneg.  Using the
      firmware returned setting can be misleading if autoneg is changed and
      there hasn't been a phy update from the firmware.
      
      2. If autoneg is disabled, link_info->autoneg should be set to 0 to
      indicate both speed and flow control autoneg are disabled.
      
      3. To enable autoneg flow control, speed autoneg must be enabled.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b763499e
    • A
      bridge: mdb: avoid uninitialized variable warning · 56bb7fd9
      Arnd Bergmann 提交于
      A recent change to the mdb code confused the compiler to the point
      where it did not realize that the port-group returned from
      br_mdb_add_group() is always valid when the function returns a nonzero
      return value, so we get a spurious warning:
      
      net/bridge/br_mdb.c: In function 'br_mdb_add':
      net/bridge/br_mdb.c:542:4: error: 'pg' may be used uninitialized in this function [-Werror=maybe-uninitialized]
          __br_mdb_notify(dev, entry, RTM_NEWMDB, pg);
      
      Slightly rearranging the code in br_mdb_add_group() makes the problem
      go away, as gcc is clever enough to see that both functions check
      for 'ret != 0'.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: 9e8430f8 ("bridge: mdb: Passing the port-group pointer to br_mdb module")
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      56bb7fd9
    • H
    • D
      Merge branch 'arc_emac-fixes' · 9c80a5d2
      David S. Miller 提交于
      Alexander Kochetkov says:
      
      ====================
      Fixes for rockchip EMAC
      
      Here is a set of 3 patches what fix koops, memory leak and
      rockchip EMAC hang. Tested on radxarock lite.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9c80a5d2
    • A
      net: arc_emac: fix sk_buff leak · b530b164
      Alexander Kochetkov 提交于
      EMAC could be disabled, while there is some sb_buff
      in use. That buffers got lost for linux.
      
      In order to reproduce run on device during active ethernet work:
          ifconfig eth0 down
      Signed-off-by: NAlexander Kochetkov <al.kochet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b530b164
    • A
      net: arc_emac: reset txbd_curr and txbd_dirty pointers to zero · 99f93a15
      Alexander Kochetkov 提交于
      EMAC reset internal tx ring pointer to zero at statup.
      txbd_curr and txbd_dirty can be different from zero.
      That cause ethernet transfer hang (no packets transmitted).
      
      In order to reproduce, run on device:
          ifconfig eth0 down
          ifconfig eth0 up
      Signed-off-by: NAlexander Kochetkov <al.kochet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      99f93a15
    • A
      net: arc_emac: fix koops caused by sk_buff free · c278c253
      Alexander Kochetkov 提交于
      There is a race between arc_emac_tx() and arc_emac_tx_clean().
      sk_buff got freed by arc_emac_tx_clean() while arc_emac_tx()
      submitting sk_buff.
      
      In order to free sk_buff arc_emac_tx_clean() checks:
          if ((info & FOR_EMAC) || !txbd->data)
              break;
          ...
          dev_kfree_skb_irq(skb);
      
      If condition false, arc_emac_tx_clean() free sk_buff.
      
      In order to submit txbd, arc_emac_tx() do:
          priv->tx_buff[*txbd_curr].skb = skb;
          ...
          priv->txbd[*txbd_curr].data = cpu_to_le32(addr);
          ...
          ...  <== arc_emac_tx_clean() check condition here
          ...  <== (info & FOR_EMAC) is false
          ...  <== !txbd->data is false
          ...
          *info = cpu_to_le32(FOR_EMAC | FIRST_OR_LAST_MASK | len);
      
      In order to reproduce the situation,
      run device:
          # iperf -s
      run on host:
          # iperf -t 600 -c <device-ip-addr>
      
      [   28.396284] ------------[ cut here ]------------
      [   28.400912] kernel BUG at .../net/core/skbuff.c:1355!
      [   28.414019] Internal error: Oops - BUG: 0 [#1] SMP ARM
      [   28.419150] Modules linked in:
      [   28.422219] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G    B           4.4.0+ #120
      [   28.429516] Hardware name: Rockchip (Device Tree)
      [   28.434216] task: c0665070 ti: c0660000 task.ti: c0660000
      [   28.439622] PC is at skb_put+0x10/0x54
      [   28.443381] LR is at arc_emac_poll+0x260/0x474
      [   28.447821] pc : [<c03af580>]    lr : [<c028fec4>]    psr: a0070113
      [   28.447821] sp : c0661e58  ip : eea68502  fp : ef377000
      [   28.459280] r10: 0000012c  r9 : f08b2000  r8 : eeb57100
      [   28.464498] r7 : 00000000  r6 : ef376594  r5 : 00000077  r4 : ef376000
      [   28.471015] r3 : 0030488b  r2 : ef13e880  r1 : 000005ee  r0 : eeb57100
      [   28.477534] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      [   28.484658] Control: 10c5387d  Table: 8eaf004a  DAC: 00000051
      [   28.490396] Process swapper/0 (pid: 0, stack limit = 0xc0660210)
      [   28.496393] Stack: (0xc0661e58 to 0xc0662000)
      [   28.500745] 1e40:                                                       00000002 00000000
      [   28.508913] 1e60: 00000000 ef376520 00000028 f08b23b8 00000000 ef376520 ef7b6900 c028fc64
      [   28.517082] 1e80: 2f158000 c0661ea8 c0661eb0 0000012c c065e900 c03bdeac ffff95e9 c0662100
      [   28.525250] 1ea0: c0663924 00000028 c0661ea8 c0661ea8 c0661eb0 c0661eb0 0000001e c0660000
      [   28.533417] 1ec0: 40000003 00000008 c0695a00 0000000a c066208c 00000100 c0661ee0 c0027410
      [   28.541584] 1ee0: ef0fb700 2f158000 00200000 ffff95e8 00000004 c0662100 c0662080 00000003
      [   28.549751] 1f00: 00000000 00000000 00000000 c065b45c 0000001e ef005000 c0647a30 00000000
      [   28.557919] 1f20: 00000000 c0027798 00000000 c005cf40 f0802100 c0662ffc c0661f60 f0803100
      [   28.566088] 1f40: c0661fb8 c00093bc c000ffb4 60070013 ffffffff c0661f94 c0661fb8 c00137d4
      [   28.574267] 1f60: 00000001 00000000 00000000 c001ffa0 00000000 c0660000 00000000 c065a364
      [   28.582441] 1f80: c0661fb8 c0647a30 00000000 00000000 00000000 c0661fb0 c000ffb0 c000ffb4
      [   28.590608] 1fa0: 60070013 ffffffff 00000051 00000000 00000000 c005496c c0662400 c061bc40
      [   28.598776] 1fc0: ffffffff ffffffff 00000000 c061b680 00000000 c0647a30 00000000 c0695294
      [   28.606943] 1fe0: c0662488 c0647a2c c066619c 6000406a 413fc090 6000807c 00000000 00000000
      [   28.615127] [<c03af580>] (skb_put) from [<ef376520>] (0xef376520)
      [   28.621218] Code: e5902054 e590c090 e3520000 0a000000 (e7f001f2)
      [   28.627307] ---[ end trace 4824734e2243fdb6 ]---
      
      [   34.377068] Internal error: Oops: 17 [#1] SMP ARM
      [   34.382854] Modules linked in:
      [   34.385947] CPU: 0 PID: 3 Comm: ksoftirqd/0 Not tainted 4.4.0+ #120
      [   34.392219] Hardware name: Rockchip (Device Tree)
      [   34.396937] task: ef02d040 ti: ef05c000 task.ti: ef05c000
      [   34.402376] PC is at __dev_kfree_skb_irq+0x4/0x80
      [   34.407121] LR is at arc_emac_poll+0x130/0x474
      [   34.411583] pc : [<c03bb640>]    lr : [<c028fd94>]    psr: 60030013
      [   34.411583] sp : ef05de68  ip : 0008e83c  fp : ef377000
      [   34.423062] r10: c001bec4  r9 : 00000000  r8 : f08b24c8
      [   34.428296] r7 : f08b2400  r6 : 00000075  r5 : 00000019  r4 : ef376000
      [   34.434827] r3 : 00060000  r2 : 00000042  r1 : 00000001  r0 : 00000000
      [   34.441365] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      [   34.448507] Control: 10c5387d  Table: 8f25c04a  DAC: 00000051
      [   34.454262] Process ksoftirqd/0 (pid: 3, stack limit = 0xef05c210)
      [   34.460449] Stack: (0xef05de68 to 0xef05e000)
      [   34.464827] de60:                   ef376000 c028fd94 00000000 c0669480 c0669480 ef376520
      [   34.473022] de80: 00000028 00000001 00002ae4 ef376520 ef7b6900 c028fc64 2f158000 ef05dec0
      [   34.481215] dea0: ef05dec8 0000012c c065e900 c03bdeac ffff983f c0662100 c0663924 00000028
      [   34.489409] dec0: ef05dec0 ef05dec0 ef05dec8 ef05dec8 ef7b6000 ef05c000 40000003 00000008
      [   34.497600] dee0: c0695a00 0000000a c066208c 00000100 ef05def8 c0027410 ef7b6000 40000000
      [   34.505795] df00: 04208040 ffff983e 00000004 c0662100 c0662080 00000003 ef05c000 ef027340
      [   34.513985] df20: ef05c000 c0666c2c 00000000 00000001 00000002 00000000 00000000 c0027568
      [   34.522176] df40: ef027340 c003ef48 ef027300 00000000 ef027340 c003edd4 00000000 00000000
      [   34.530367] df60: 00000000 c003c37c ffffff7f 00000001 00000000 ef027340 00000000 00030003
      [   34.538559] df80: ef05df80 ef05df80 00000000 00000000 ef05df90 ef05df90 ef05dfac ef027300
      [   34.546750] dfa0: c003c2a4 00000000 00000000 c000f578 00000000 00000000 00000000 00000000
      [   34.554939] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      [   34.563129] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 ffffffff dfff7fff
      [   34.571360] [<c03bb640>] (__dev_kfree_skb_irq) from [<c028fd94>] (arc_emac_poll+0x130/0x474)
      [   34.579840] [<c028fd94>] (arc_emac_poll) from [<c03bdeac>] (net_rx_action+0xdc/0x28c)
      [   34.587712] [<c03bdeac>] (net_rx_action) from [<c0027410>] (__do_softirq+0xcc/0x1f8)
      [   34.595482] [<c0027410>] (__do_softirq) from [<c0027568>] (run_ksoftirqd+0x2c/0x50)
      [   34.603168] [<c0027568>] (run_ksoftirqd) from [<c003ef48>] (smpboot_thread_fn+0x174/0x18c)
      [   34.611466] [<c003ef48>] (smpboot_thread_fn) from [<c003c37c>] (kthread+0xd8/0xec)
      [   34.619075] [<c003c37c>] (kthread) from [<c000f578>] (ret_from_fork+0x14/0x3c)
      [   34.626317] Code: e8bd8010 e3a00000 e12fff1e e92d4010 (e59030a4)
      [   34.632572] ---[ end trace cca5a3d86a82249a ]---
      Signed-off-by: NAlexander Kochetkov <al.kochet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c278c253
    • A
      net: Copy inner L3 and L4 headers as unaligned on GRE TEB · 78565208
      Alexander Duyck 提交于
      This patch corrects the unaligned accesses seen on GRE TEB tunnels when
      generating hash keys.  Specifically what this patch does is make it so that
      we force the use of skb_copy_bits when the GRE inner headers will be
      unaligned due to NET_IP_ALIGNED being a non-zero value.
      Signed-off-by: NAlexander Duyck <aduyck@mirantis.com>
      Acked-by: NTom Herbert <tom@herbertland.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      78565208
    • D
      Merge branch 'mlx5-fixes' · 7b4c534e
      David S. Miller 提交于
      Saeed Mahameed says:
      
      ====================
      mlx5 driver fixes for 4.5-rc2
      
      We added here a patch from Matan and Alaa for addressing Linus comments on
      the mess w.r.t reserved field names in the driver/firmware auto-generated file.
      
      Once the patch hits linus tree, we'll ask Doug to rebase his tree on that
      rc so both net-next and rdma-next development for 4.6 will be done under
      the fixed robust form.
      
      Also provided two patches that addresses the dynamic ndo initialization
      issue of mlx5e netdevice.
      
      Or and Saeed.
      
      changes from V1: (Only first patch was changed)
      In this V we fixed the issues addressed in Or's previous e-mail.
      	1. Offsets took into account two dimensional u8 arrays
      	2. Offsets took into account nesting unions and structs
      	3. Offsets for unions
      	4. Offsets for any reserved field
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7b4c534e
    • S
      net/mlx5e: Use static constant netdevice ndos · b0eed40e
      Saeed Mahameed 提交于
      Currently our netdevice ops is a one static global variable which
      is referenced by all mlx5e netdevice instances. This can be
      problematic when different driver instances do not share same
      HW capabilities (e.g SRIOV PF and VFs probed to the host).
      
      Now we have two constant global netdevice ops variables, one
      for basic netdevice ops and the other with extended SRIOV ops,
      on netdevice construction we choose the one suitable for
      current device capabilities.
      
      Fixes: 66e49ded ("net/mlx5e: Add support for SR-IOV ndos")
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b0eed40e
    • S
      net/mlx5e: Remove select queue ndo initialization · b2368727
      Saeed Mahameed 提交于
      Currently mlx5e_select_queue is redundant since num_tc is always 1.
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b2368727
    • M
      net/mlx5: Use offset based reserved field names in the IFC header file · b4ff3a36
      Matan Barak 提交于
      mlx5_ifc.h is a header file representing the API and ABI between
      the driver to the firmware and hardware. This file is used from
      both the mlx5_ib and mlx5_core drivers.
      
      Previously, this file used incrementing counter to indicate
      reserved fields, for example:
      
      struct mlx5_ifc_odp_per_transport_service_cap_bits {
              u8         send[0x1];
              u8         receive[0x1];
              u8         write[0x1];
              u8         read[0x1];
              u8         reserved_0[0x1];
              u8         srq_receive[0x1];
              u8         reserved_1[0x1a];
      };
      
      If one developer implements through net-next feature A that uses
      reserved_0, they replace it with featureA and renames reserved_1 to
      reserved_0. In the same kernel cycle, a 2nd developer could implement
      feature B through the rdma tree, that uses reserved_1 and split it to
      featureB and a smaller reserved_1 field. This will cause a conflict
      when the two trees are merged.
      
      The source of this conflict is that the 1st developer changed *all*
      reserved fields.
      
      As Linus suggested, we change the layout of structs to:
      
      struct mlx5_ifc_odp_per_transport_service_cap_bits {
      	u8         send[0x1];
      	u8         receive[0x1];
      	u8         write[0x1];
      	u8         read[0x1];
      	u8         reserved_at_4[0x1];
      	u8         srq_receive[0x1];
      	u8         reserved_at_6[0x1a];
      };
      
      This makes the conflicts much more rare and preserves the locality of
      changes.
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Signed-off-by: NAlaa Hleihel <alaa@mellanox.com>
      Reported-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b4ff3a36