1. 07 10月, 2015 1 次提交
  2. 06 10月, 2015 2 次提交
  3. 05 10月, 2015 27 次提交
    • D
      asix: Continue processing URB if no RX netdev buffer · 6a570814
      Dean Jenkins 提交于
      Avoid a loss of synchronisation of the Ethernet Data header 32-bit
      word due to a failure to get a netdev socket buffer.
      
      The ASIX RX handling algorithm returned 0 upon a failure to get
      an allocation of a netdev socket buffer. This causes the URB
      processing to stop which potentially causes a loss of synchronisation
      with the Ethernet Data header 32-bit word. Therefore, subsequent
      processing of URBs may be rejected due to a loss of synchronisation.
      This may cause additional good Ethernet frames to be discarded
      along with outputting of synchronisation error messages.
      
      Implement a solution which checks whether a netdev socket buffer
      has been allocated before trying to copy the Ethernet frame into
      the netdev socket buffer. But continue to process the URB so that
      synchronisation is maintained. Therefore, only a single Ethernet
      frame is discarded when no netdev socket buffer is available.
      Signed-off-by: NDean Jenkins <Dean_Jenkins@mentor.com>
      Signed-off-by: NMark Craske <Mark_Craske@mentor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6a570814
    • D
      asix: On RX avoid creating bad Ethernet frames · 3f30b158
      Dean Jenkins 提交于
      When RX Ethernet frames span multiple URB socket buffers,
      the data stream may suffer a discontinuity which will cause
      the current Ethernet frame in the netdev socket buffer
      to be incomplete. This frame needs to be discarded instead
      of appending unrelated data from the current URB socket buffer
      to the Ethernet frame in the netdev socket buffer. This avoids
      creating a corrupted Ethernet frame in the netdev socket buffer.
      
      A discontinuity can occur when the previous URB socket buffer
      held an incomplete Ethernet frame due to truncation or a
      URB socket buffer containing the end of the Ethernet frame
      was missing.
      
      Therefore, add a sanity test for when an Ethernet frame
      spans multiple URB socket buffers to check that the remaining
      bytes of the currently received Ethernet frame point to
      a good Data header 32-bit word of the next Ethernet
      frame. Upon error, reset the remaining bytes variable to
      zero and discard the current netdev socket buffer.
      Assume that the Data header is located at the start of
      the current socket buffer and attempt to process the next
      Ethernet frame from there. This avoids unnecessarily
      discarding a good URB socket buffer that contains a new
      Ethernet frame.
      Signed-off-by: NDean Jenkins <Dean_Jenkins@mentor.com>
      Signed-off-by: NMark Craske <Mark_Craske@mentor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3f30b158
    • D
      asix: Simplify asix_rx_fixup_internal() netdev alloc · 9a5ccd8e
      Dean Jenkins 提交于
      The code is checking that the Ethernet frame will fit into a
      netdev allocated socket buffer within the constraints of MTU size,
      Ethernet header length plus VLAN header length.
      
      The original code was checking rx->remaining each loop of the while
      loop that processes multiple Ethernet frames per URB and/or Ethernet
      frames that span across URBs. rx->remaining decreases per while loop
      so there is no point in potentially checking multiple times that the
      Ethernet frame (remaining part) will fit into the netdev socket buffer.
      
      The modification checks that the size of the Ethernet frame will fit
      the netdev socket buffer before allocating the netdev socket buffer.
      This avoids grabbing memory and then deciding that the Ethernet frame
      is too big and then freeing the memory.
      Signed-off-by: NDean Jenkins <Dean_Jenkins@mentor.com>
      Signed-off-by: NMark Craske <Mark_Craske@mentor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9a5ccd8e
    • D
      asix: Tidy-up 32-bit header word synchronisation · 3bfc69ab
      Dean Jenkins 提交于
      Tidy-up the Data header 32-bit word synchronisation logic in
      asix_rx_fixup_internal() by removing redundant logic tests.
      
      The code is looking at the following cases of the Data header
      32-bit word that is present before each Ethernet frame:
      
      a) all 32 bits of the Data header word are in the URB socket buffer
      b) first 16 bits of the Data header word are at the end of the URB
         socket buffer
      c) last 16 bits of the Data header word are at the start of the URB
         socket buffer eg. split_head = true
      
      Note that the lifetime of rx->split_head exists outside of the
      function call and is accessed per processing of each URB. Therefore,
      split_head being true acts on the next URB to be processed.
      
      To check for b) the offset will be 16 bits (2 bytes) from the end of
      the buffer then indicate split_head is true.
      To check for c) split_head must be true because the first 16 bits
      have been found.
      To check for a) else c)
      
      Note that the || logic of the old code included the state
      (skb->len - offset == sizeof(u16) && rx->split_head) which is not
      possible because the split_head cannot be true whilst checking for b).
      This is because the split_head indicates that the first 16 bits have
      been found and that is not possible whilst checking for the first 16
      bits. Therefore simplify the logic.
      Signed-off-by: NDean Jenkins <Dean_Jenkins@mentor.com>
      Signed-off-by: NMark Craske <Mark_Craske@mentor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3bfc69ab
    • D
      asix: Rename remaining and size for clarity · 7b0378f5
      Dean Jenkins 提交于
      The Data header synchronisation is easier to understand
      if the variables "remaining" and "size" are renamed.
      
      Therefore, the lifetime of the "remaining" variable exists
      outside of asix_rx_fixup_internal() and is used to indicate
      any remaining pending bytes of the Ethernet frame that need
      to be obtained from the next socket buffer. This allows an
      Ethernet frame to span across multiple socket buffers.
      
      "size" is now local to asix_rx_fixup_internal() and contains
      the size read from the Data header 32-bit word.
      
      Add "copy_length" to hold the number of the Ethernet frame
      bytes (maybe a part of a full frame) that are to be copied
      out of the socket buffer.
      Signed-off-by: NDean Jenkins <Dean_Jenkins@mentor.com>
      Signed-off-by: NMark Craske <Mark_Craske@mentor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7b0378f5
    • W
      vrf: fix a kernel warning · 0a15afd2
      WANG Cong 提交于
      This fixes:
      
       tried to remove device ip6gre0 from (null)
       ------------[ cut here ]------------
       kernel BUG at net/core/dev.c:5219!
       invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
       CPU: 3 PID: 161 Comm: kworker/u8:2 Not tainted 4.3.0-rc2+ #1142
       Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
       Workqueue: netns cleanup_net
       task: ffff8800d784a9c0 ti: ffff8800d74a4000 task.ti: ffff8800d74a4000
       RIP: 0010:[<ffffffff817f0797>]  [<ffffffff817f0797>] __netdev_adjacent_dev_remove+0x40/0xec
       RSP: 0018:ffff8800d74a7a98  EFLAGS: 00010282
       RAX: 000000000000002a RBX: 0000000000000000 RCX: 0000000000000000
       RDX: ffff88011adcf701 RSI: ffff88011adccbf8 RDI: ffff88011adccbf8
       RBP: ffff8800d74a7ab8 R08: 0000000000000001 R09: 0000000000000000
       R10: ffffffff81d190ff R11: 00000000ffffffff R12: ffff8800d599e7c0
       R13: 0000000000000000 R14: ffff8800d599e890 R15: ffffffff82385e00
       FS:  0000000000000000(0000) GS:ffff88011ac00000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
       CR2: 00007ffd6f003000 CR3: 000000000220c000 CR4: 00000000000006e0
       Stack:
        0000000000000000 ffff8800d599e7c0 0000000000000b00 ffff8800d599e8a0
        ffff8800d74a7ad8 ffffffff817f0861 0000000000000000 ffff8800d599e7c0
        ffff8800d74a7af8 ffffffff817f088f 0000000000000000 ffff8800d599e7c0
       Call Trace:
        [<ffffffff817f0861>] __netdev_adjacent_dev_unlink+0x1e/0x35
        [<ffffffff817f088f>] __netdev_adjacent_dev_unlink_neighbour+0x17/0x41
        [<ffffffff817f56e6>] netdev_upper_dev_unlink+0x6c/0x13d
        [<ffffffff81674a3d>] vrf_del_slave+0x26/0x7d
        [<ffffffff81674ac3>] vrf_device_event+0x2f/0x34
        [<ffffffff81098c40>] notifier_call_chain+0x75/0x9c
        [<ffffffff81098fa2>] raw_notifier_call_chain+0x14/0x16
        [<ffffffff817ee129>] call_netdevice_notifiers_info+0x52/0x59
        [<ffffffff817f179d>] call_netdevice_notifiers+0x13/0x15
        [<ffffffff817f6f18>] rollback_registered_many+0x14f/0x24f
        [<ffffffff817f70f2>] unregister_netdevice_many+0x19/0x64
        [<ffffffff819a2455>] ip6gre_exit_net+0x163/0x177
        [<ffffffff817eb019>] ops_exit_list+0x44/0x55
        [<ffffffff817ebcb7>] cleanup_net+0x193/0x226
        [<ffffffff81091e1c>] process_one_work+0x26c/0x4d8
        [<ffffffff81091d20>] ? process_one_work+0x170/0x4d8
        [<ffffffff81092296>] worker_thread+0x1df/0x2c2
        [<ffffffff810920b7>] ? process_scheduled_works+0x2f/0x2f
        [<ffffffff810920b7>] ? process_scheduled_works+0x2f/0x2f
        [<ffffffff81097a20>] kthread+0xd4/0xdc
        [<ffffffff810bc523>] ? trace_hardirqs_on_caller+0x17d/0x199
        [<ffffffff8109794c>] ? __kthread_parkme+0x83/0x83
        [<ffffffff81a5240f>] ret_from_fork+0x3f/0x70
        [<ffffffff8109794c>] ? __kthread_parkme+0x83/0x83
      
      Fixes: 93a7e7e8 ("net: Remove the now unused vrf_ptr")
      Cc: David Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: NCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: NDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0a15afd2
    • K
      net: encx24j600_exit() can be static · 9886ce2b
      kbuild test robot 提交于
      Signed-off-by: NFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9886ce2b
    • J
      net: Microchip encx24j600 driver · 04fbfce7
      Jon Ringle 提交于
      This ethernet driver supports the Micorchip enc424j600/626j600 Ethernet
      controller over a SPI bus interface. This driver makes use of the regmap API to
      optimize access to registers by caching registers where possible.
      
      Datasheet:
      http://ww1.microchip.com/downloads/en/DeviceDoc/39935b.pdfSigned-off-by: NJon Ringle <jringle@gridpoint.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      04fbfce7
    • G
      enic: do hang reset only in case of tx timeout · 937317c7
      Govindarajulu Varadarajan 提交于
      The current code invokes hang reset in case of error interrupt. We should
      hang reset only in case of tx timeout. This because of the way hang reset
      is implemented in firmware. Hang reset takes more firmware resources than
      soft reset. Adaptor does not generate error interrupt in case of tx
      timeout.
      
      Hang reset only in case of tx timeout, in .ndo_tx_timeout. Do soft reset
      otherwise. Introduce deferred work, enic_tx_hang_reset, to do hang reset.
      Signed-off-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      937317c7
    • G
      enic: handle spurious error interrupt · cc809237
      Govindarajulu Varadarajan 提交于
      Some of the enic adaptors are know to generate spurious interrupts. When
      error interrupt is generated, driver just resets the device. This patch
      resets the device only when an error is occurred.
      Signed-off-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cc809237
    • H
      cxgb4: Report correct link speed for unsupported ones · 85412255
      Hariprasad Shenai 提交于
      When we get garbage from the firmware with weird Port Speeds,
      etc. we should emit a warning regarding unsupported speeds rather than
      use the bogus default of "10Mbps" which isn't even an option in the
      firmware Port Information message
      Signed-off-by: NHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      85412255
    • H
      cxgb4: Adds a new Device Log Facility FW_DEVLOG_FACILITY_CF · da4976e1
      Hariprasad Shenai 提交于
      The firmware team added a new Device Log Facility FW_DEVLOG_FACILITY_CF,
      but the driver has been decoding Device Log messages with that Facility as
      "(NULL)", fixing it.
      Signed-off-by: NHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      da4976e1
    • H
      cxgb4: For T4, don't read the Firmware Mailbox Control register · b3695540
      Hariprasad Shenai 提交于
      T4 doesn't have the Shadow copy of the register which we can read without
      side effect. So don't read mbox control register for T4 adapter
      Signed-off-by: NHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b3695540
    • H
      cxgb4 : Update T4/T5/T6 register ranges · 8119c018
      Hariprasad Shenai 提交于
      Update T4/T5/T6 adapter register ranges so that it doesn't read non
      existent registers when dumped using ethtool
      Signed-off-by: NHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8119c018
    • L
      amd-xgbe: Remove the XGBE_LINK state bit · 50789845
      Lendacky, Thomas 提交于
      The XGBE_LINK bit is used just to determine whether to call the
      netif_carrier_on/off functions. Rather than define and use this bit,
      just call the functions. The netif_carrier_ok function can be used in
      place of checking the XGBE_LINK bit in the future.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      50789845
    • L
      amd-xgbe: Use device workqueue instead of system workqueue · afb43e8a
      Lendacky, Thomas 提交于
      The driver creates, flushes and destroys a device workqueue but queues
      work to the system workqueue. Switch from using the system workqueue to
      the device workqueue.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      afb43e8a
    • L
      amd-xgbe: Add receive buffer unavailable statistic · 72c9ac4e
      Lendacky, Thomas 提交于
      Add a statistic that tracks how many times an interrupt is generated for
      a receive buffer not being available to the hardware which prevents the
      hardware from being able to DMA the received data.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      72c9ac4e
    • L
      amd-xgbe: Simplify calculation and setting of queue fifos · 9c439e4b
      Lendacky, Thomas 提交于
      The calculation of the Tx and Rx fifo sizes can be calculated rather
      than hardcoded in a switch statement. Additionally, the per-queue fifo
      sizes can be calculated rather than hardcoded using if/else if statements
      that can possibly underutilize the available fifo area.
      
      Change the code to calculate the fifo sizes and the per-queue fifo sizes
      to simplify the code and make best use of the available fifo.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9c439e4b
    • L
      amd-xgbe: Add ethtool error and debug messages · e5dd8b81
      Lendacky, Thomas 提交于
      Add error and dynamic debug messages to various ethtool functions in
      the driver while also removing the DBGPR debug print calls. Also, change
      the message level for some error messages from alert to err.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e5dd8b81
    • L
      amd-xgbe: Add ethtool support for setting the msglevel · 349fb2d7
      Lendacky, Thomas 提交于
      Provide the ethtool functions to support getting and setting the
      msglevel for the driver.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      349fb2d7
    • L
      amd-xgbe: Use proper DT / ACPI precedence checking · 47f2e6c2
      Lendacky, Thomas 提交于
      Device tree presence takes precedence over ACPI in the device_* APIs.
      The amd-xgbe driver should follow the same precedence. Update the check
      on whether to use DT / ACPI to follow this.
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      47f2e6c2
    • L
      amd-xgbe: Remove an unneeded semicolon on a switch statement · 3947d78a
      Lendacky, Thomas 提交于
      Remove an unneeded semicolon at the end of a switch statement block.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3947d78a
    • A
      mwifiex: avoid gettimeofday in ba_threshold setting · 52f4f918
      Arnd Bergmann 提交于
      mwifiex_get_random_ba_threshold() uses a complex homegrown implementation
      to generate a pseudo-random number from the current time as returned
      from do_gettimeofday().
      
      This currently requires two 32-bit divisions plus a couple of other
      computations that are eventually discarded as only eight bits of
      the microsecond portion are used at all.
      
      We could replace this with a call to get_random_bytes(), but that
      might drain the entropy pool too fast if this is called for each
      packet.
      
      Instead, this patch converts it to use ktime_get_ns(), which is a
      bit faster than do_gettimeofday(), and then uses a similar algorithm
      as before, but in a way that takes both the nanosecond and second
      portion into account for slightly-more-but-still-not-very-random
      pseudorandom number.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Amitkumar Karwar <akarwar@marvell.com>
      Cc: Nishant Sarmukadam <nishants@marvell.com>
      Cc: Kalle Valo <kvalo@codeaurora.org>
      Cc: linux-wireless@vger.kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      52f4f918
    • A
      mwifiex: use ktime_get_real for timestamping · e253fb74
      Arnd Bergmann 提交于
      The mwifiex_11n_aggregate_pkt() function creates a ktime_t from
      a timeval returned by do_gettimeofday, which is slow and causes
      an overflow in 2038 on 32-bit architectures.
      
      This solves both problems by using the appropriate ktime_get_real()
      function.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Amitkumar Karwar <akarwar@marvell.com>
      Cc: Nishant Sarmukadam <nishants@marvell.com>
      Cc: Kalle Valo <kvalo@codeaurora.org>
      Cc: linux-wireless@vger.kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e253fb74
    • A
      net: igb: avoid using timespec · 40c9b079
      Arnd Bergmann 提交于
      We want to deprecate the use of 'struct timespec' on 32-bit
      architectures, as it is will overflow in 2038. The igb
      driver uses it to read the current time, and can simply
      be changed to use ktime_get_real_ts64() instead.
      
      Because of hardware limitations, there is still an overflow
      in year 2106, which we cannot really avoid, but this documents
      the overflow.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Cc: intel-wired-lan@lists.osuosl.org
      Reviewed-by: NRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      40c9b079
    • A
      net: stmmac: avoid using timespec · 0a624155
      Arnd Bergmann 提交于
      We want to deprecate the use of 'struct timespec' on 32-bit
      architectures, as it is will overflow in 2038. The stmmac
      driver uses it to read the current time, and can simply
      be changed to use ktime_get_real_ts64() instead.
      
      Because of hardware limitations, there is still an overflow
      in year 2106, which we cannot really avoid, but this documents
      the overflow.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Acked-by: NRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0a624155
    • A
      net: fec: avoid timespec use · be7ccdc3
      Arnd Bergmann 提交于
      The fec_ptp_enable_pps uses an open-coded implementation of ns_to_timespec,
      which will be removed eventually as it is not y2038-safe on 32-bit
      architectures. Two more instances of the same code in this file were
      already converted to use the safe ns_to_timespec64 in commit 6630514f
      ("ptp: fec: use helpers for converting ns to timespec"), this changes
      the last one as well.
      
      The seconds portion here is actually unused and we could just remove the
      timespec variable, but using ns_to_timespec64 can still be better as the
      implementation can be hand-optimized in the future.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Fugang Duan <b38611@freescale.com>
      Cc: Luwei Zhou <b45643@freescale.com>
      Cc: Frank Li <Frank.Li@freescale.com>
      Acked-by: NRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      be7ccdc3
  4. 04 10月, 2015 5 次提交
  5. 03 10月, 2015 5 次提交