]> www.infradead.org Git - users/jedix/linux-maple.git/log
users/jedix/linux-maple.git
13 years agocnic: Fix parity error code conflict
Michael Chan [Tue, 22 May 2012 22:21:12 +0000 (15:21 -0700)]
cnic: Fix parity error code conflict

The recently added parity error handling used an error code that was
already defined for a different error.  This could lead to bnx2x
firmware assert.  We need to fix this with new error codes that are
defined for parity error only.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Reviewed-by: Eddie Wai <eddie.wai@broadcom.com>
Reviewed-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agobnx2x: Clear MDC/MDIO warning message
Yaniv Rosner [Tue, 22 May 2012 22:04:17 +0000 (15:04 -0700)]
bnx2x: Clear MDC/MDIO warning message

This patch clears a warning message of "MDC/MDIO access timeout" which may
appear when interface is loaded due to missing clock setting before resetting
the LED, and starting periodic function too early.

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agobnx2x: Fix BCM578x0-SFI pre-emphasis settings
Yaniv Rosner [Tue, 22 May 2012 21:59:44 +0000 (14:59 -0700)]
bnx2x: Fix BCM578x0-SFI pre-emphasis settings

Fix 578x0-SFI pre-emphasis settings per HW recommendations to achieve better
link strength.

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agobnx2x: Fix BCM57810-KR AN speed transition
Yaniv Rosner [Tue, 22 May 2012 21:20:50 +0000 (14:20 -0700)]
bnx2x: Fix BCM57810-KR AN speed transition

BCM57810-KR link may not come up in 1G after running loopback test, so set
the relevant registers to their default values before starting KR autoneg.

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agocnic: Re-init dev->stats_addr after chip reset
Michael Chan [Wed, 4 Jan 2012 12:12:27 +0000 (12:12 +0000)]
cnic: Re-init dev->stats_addr after chip reset

because bnx2x frees the old and allocates new memory during chip reset.

(cherry picked from commit a9e0a4f2ca5e97ae2cff0bda72b9645e047c1a3d)
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoconfig: turn on CONFIG_HVC_XEN_FRONTEND
Maxim Uvarov [Mon, 21 May 2012 18:39:16 +0000 (11:39 -0700)]
config: turn on CONFIG_HVC_XEN_FRONTEND

Orabug: 14064174
Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
13 years agoixgbe: Don't set ip checksum if did not enable tso.
Joe Jin [Mon, 21 May 2012 01:30:57 +0000 (09:30 +0800)]
ixgbe: Don't set ip checksum if did not enable tso.

After apply commit c108d12 - "ixgbe: Modify setup of descriptor flags to
avoid conditional jumps", X540-AT2 did not worked properly, it caused by
inconsistent olinfo_status, when enable ip checksum, make sure tso be
supported.

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoMerge branch 'uek2-for-ol6u3' of git://ca-git.us.oracle.com/linux-joejin-public into...
Maxim Uvarov [Fri, 18 May 2012 21:19:16 +0000 (14:19 -0700)]
Merge branch 'uek2-for-ol6u3' of git://ca-git.us.oracle.com/linux-joejin-public into uek-2.6.39-200

13 years agoRevert "x86, efi: Pass a minimal map to SetVirtualAddressMap()"
Maxim Uvarov [Fri, 18 May 2012 21:14:59 +0000 (14:14 -0700)]
Revert "x86, efi: Pass a minimal map to SetVirtualAddressMap()"

Orabug: 14076004
This reverts commit 7cb00b72876ea2451eb79d468da0e8fb9134aa8a.

Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
13 years agor8169: add firmware files
Joe Jin [Fri, 18 May 2012 07:02:55 +0000 (15:02 +0800)]
r8169: add firmware files

Add firmware files for r8169.

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoe1000e: fix build warning.
Joe Jin [Fri, 18 May 2012 03:56:48 +0000 (11:56 +0800)]
e1000e: fix build warning.

The waring introduced by commit ffd3d6, for different declare
of get_rxnfc().

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agobnx2x: file build warning
Joe Jin [Fri, 18 May 2012 03:47:37 +0000 (11:47 +0800)]
bnx2x: file build warning

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago8139too: Add 64bit statistics
Junchang Wang [Mon, 5 Mar 2012 17:13:05 +0000 (17:13 +0000)]
8139too: Add 64bit statistics

Switch to use ndo_get_stats64 to get 64bit statistics.
Two sync entries are used (one for Rx and one for Tx).

(cherry picked from commit 9184a22701ed257974e7950be11da4cbd3116c63)
Signed-off-by: Junchang Wang <junchangwang@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agonet: export netdev_stats_to_stats64
Eric Dumazet [Mon, 5 Mar 2012 04:50:09 +0000 (04:50 +0000)]
net: export netdev_stats_to_stats64

Some drivers use internal netdev stats member to store part of their
stats, yet advertize ndo_get_stats64() to implement some 64bit fields.

Allow them to use netdev_stats_to_stats64() helper to make the copy of
netdev stats before they compute their 64bit counters.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 77a1abf54f4b003ad6e59c535045b2ad89fedfeb)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: enable transmit time stamping.
Joe Jin [Fri, 18 May 2012 03:35:23 +0000 (11:35 +0800)]
r8169: enable transmit time stamping.

This patch has been tested on a machine with the Realtek
RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 05).

Cc: Realtek linux nic maintainers <nic_swsd@realtek.com>
Cc: Francois Romieu <romieu@fr.zoreil.com>
(backported from commit 5047fb5d1dfcc92cf2133f246c1fe7b447ec4e5f)
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: stop using net_device.{base_addr, irq}.
Francois Romieu [Sat, 10 Mar 2012 09:42:12 +0000 (10:42 +0100)]
r8169: stop using net_device.{base_addr, irq}.

The driver does not need this leftover of the ISA drivers era.

(cherry picked from commit 92a7c4e7183bcd29e2366f1ee784ad395c291134)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: move the driver removal method to the end of the driver file.
Francois Romieu [Thu, 8 Mar 2012 08:54:01 +0000 (09:54 +0100)]
r8169: move the driver removal method to the end of the driver file.

(cherry picked from commit e27566ed370da09e3b812d3d76dce002915a5bdd)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix unsigned int wraparound with TSO
Julien Ducourthial [Tue, 8 May 2012 22:00:06 +0000 (00:00 +0200)]
r8169: fix unsigned int wraparound with TSO

The r8169 may get stuck or show bad behaviour after activating TSO :
the net_device is not stopped when it has no more TX descriptors.
This problem comes from TX_BUFS_AVAIL which may reach -1 when all
transmit descriptors are in use. The patch simply tries to keep positive
values.

Tested with 8111d(onboard) on a D510MO, and with 8111e(onboard) on a
Zotac 890GXITX.

(cherry picked from commit 477206a018f902895bfcd069dd820bfe94c187b1)
Signed-off-by: Julien Ducourthial <jducourt@free.fr>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago8139cp: set intr mask after its handler is registered
Jason Wang [Wed, 11 Apr 2012 22:10:54 +0000 (22:10 +0000)]
8139cp: set intr mask after its handler is registered

We set intr mask before its handler is registered, this does not work well when
8139cp is sharing irq line with other devices. As the irq could be enabled by
the device before 8139cp's hander is registered which may lead unhandled
irq. Fix this by introducing an helper cp_irq_enable() and call it after
request_irq().

(cherry picked from commit a8c9cb106fe79c28d6b7f1397652cadd228715ff)
Signed-off-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: enable napi on resume.
Artem Savkov [Tue, 3 Apr 2012 10:29:11 +0000 (10:29 +0000)]
r8169: enable napi on resume.

NAPI is disabled during suspend and needs to be enabled on resume. Without
this the driver locks up during resume in rtl_reset_work() trying to disable
NAPI again.

(cherry picked from commit cff4c16296754888b6fd8c886bc860a888e20257)
Signed-off-by: Artem Savkov <artem.savkov@gmail.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: runtime resume before shutdown.
françois romieu [Tue, 6 Mar 2012 01:14:12 +0000 (01:14 +0000)]
r8169: runtime resume before shutdown.

With runtime PM, if the ethernet cable is disconnected, the device is
transitioned to D3 state to conserve energy. If the system is shutdown
in this state, any register accesses in rtl_shutdown are dropped on
the floor. As the device was programmed by .runtime_suspend() to wake
on link changes, it is thus brought back up as soon as the link recovers.

Resuming every suspended device through the driver core would slow things
down and it is not clear how many devices really need it now.

Original report and D0 transition patch by Sameer Nanda. Patch has been
changed to comply with advices by Rafael J. Wysocki and the PM folks.

Reported-by: Sameer Nanda <snanda@chromium.org>
(cherry picked from commit 2a15cd2ff488a9fdb55e5e34060f499853b27c77)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Hayes Wang <hayeswang@realtek.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: add 64bit statistics.
Junchang Wang [Sun, 4 Mar 2012 22:30:32 +0000 (23:30 +0100)]
r8169: add 64bit statistics.

Switch to use ndo_get_stats64 to get 64bit statistics.
Two sync entries are used (one for Rx and one for Tx).

(cherry picked from commit 8027aa245bbd125350f6a78c5a78771d143aba55)
Signed-off-by: Junchang Wang <junchangwang@gmail.com>
Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: corrupted IP fragments fix for large mtu.
françois romieu [Fri, 2 Mar 2012 04:43:14 +0000 (04:43 +0000)]
r8169: corrupted IP fragments fix for large mtu.

Noticed with the 8168d (-vb-gr, aka RTL_GIGA_MAC_VER_26).

ConfigX registers should only be written while the Config9346 lock
is held.

(cherry picked from commit 9c5028e9da1255dd2b99762d8627b88b29f68cce)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Reported-by: Nick Bowler <nbowler@elliptictech.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: spinlock redux.
Francois Romieu [Tue, 31 Jan 2012 10:20:34 +0000 (11:20 +0100)]
r8169: spinlock redux.

rtl8169_get_regs operates under RTNL and rtl task mutex whereas
rtl_set_rx_mode is either called under RTNL or rtl task mutex protection.

(cherry picked from commit 6c05d25267ebb371c4311de6904f740342e82f7c)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: avoid a useless work scheduling.
Francois Romieu [Tue, 31 Jan 2012 10:09:21 +0000 (11:09 +0100)]
r8169: avoid a useless work scheduling.

(cherry picked from commit 934714d088f35b81edafdce89397969baf77fb8a)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Suggested-by: Michał Mirosław <mirqus@gmail.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: move task enable boolean to bitfield.
Francois Romieu [Tue, 31 Jan 2012 09:56:44 +0000 (10:56 +0100)]
r8169: move task enable boolean to bitfield.

Simpler, more consistent, with negligible cost in non-critical paths.

(cherry picked from commit 6c4a70c5f286077e78b294b3f3a93dc45c40db89)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Suggested-by: Michał Mirosław <mirqus@gmail.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: bh locking redux and task scheduling.
Francois Romieu [Tue, 31 Jan 2012 09:47:34 +0000 (10:47 +0100)]
r8169: bh locking redux and task scheduling.

- atomic bit operations are globally visible
- pending status is always cleared before execution
- scheduled works are either idempotent or only required to happen once
  after a series of originating events, say link events for instance

(cherry picked from commit 98ddf986fca17840e46e070354b7e2cd2169da15)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Suggested-by: Michał Mirosław <mirqus@gmail.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix early queue wake-up.
Francois Romieu [Mon, 30 Jan 2012 23:00:19 +0000 (00:00 +0100)]
r8169: fix early queue wake-up.

With infinite gratitude to Eric Dumazet for allowing me to identify
the error.

(cherry picked from commit ae1f23fb433ac0aaff8aeaa5a7b14348e9aa8277)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: remove work from irq handler.
Joe Jin [Fri, 18 May 2012 03:27:31 +0000 (11:27 +0800)]
r8169: remove work from irq handler.

The irq handler was a mess.

See 7ab87ff4c770eed71e3777936299292739fcd0fe ("via-rhine: move work from
irq handler to softirq and beyond") for similar changes. One can notice:
- all non-napi tasks are explicitely scheduled trough a single work queue.
- hiding software tx queue start behind the rtl_hw_start method is mildly
  natural. Move it in the caller where needed.
- as can be seen from the heavy use of bh disabling locks, the driver is
  not safe for irq context messages with netconsole. It is still quite
  usable for general messaging though. Tested ok with concurrent registers
  dump (ethtool -d) + background traffic + "echo t > /proc/sysrq-trigger".

Tested with old PCI chipset, PCIe 8168 and 810x:
- XID 0c900800 RTL8168evl/8111evl
- XID 18000000 RTL8168b/8111b
- XID 98000000 RTL8169sc/8110sc
- XID 083000c0 RTL8168d/8111d
- XID 081000c0 RTL8168d/8111d
- XID 00b00000 RTL8105e
- XID 04a00000 RTL8102e

As a side note, the comments in f11a377b3f4e897d11f0e8d1fc688667e2f19708
("r8169: avoid losing MSI interrupts") does not seem completely clear: if
I hack the driver further to stop acking the irq link event bit, MSI
interrupts keep being delivered (RTL8168b/8111b, XID 18000000).

(backported from commit da78dbff2e05630921c551dbbc70a4b7981a8fff)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: missing barriers.
Francois Romieu [Fri, 27 Jan 2012 14:05:38 +0000 (15:05 +0100)]
r8169: missing barriers.

(cherry picked from commit 1e874e041fc7c222cbd85b20c4406070be1f687a)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: irq mask helpers.
Francois Romieu [Thu, 26 Jan 2012 11:59:08 +0000 (12:59 +0100)]
r8169: irq mask helpers.

(cherry picked from commit 9085cdfa2f9f04d8678465748e2cced6e3f02e26)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: factor out IntrMask writes.
Francois Romieu [Thu, 26 Jan 2012 11:50:01 +0000 (12:50 +0100)]
r8169: factor out IntrMask writes.

(cherry picked from commit 3e990ff5f119c2f9b142f3e2548dc90ca9b7dfa1)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: stop delaying workqueue.
Francois Romieu [Thu, 26 Jan 2012 10:23:32 +0000 (11:23 +0100)]
r8169: stop delaying workqueue.

Though motivated by the move of the driver to a single work queue of
sequential events and removal of hard irq processing, it looks safe as
a standalone change.

(cherry picked from commit 4422bcd4907d1bbb9f63e049e3c3819132c047a1)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: remove rtl8169_reinit_task.
Francois Romieu [Thu, 26 Jan 2012 08:59:50 +0000 (09:59 +0100)]
r8169: remove rtl8169_reinit_task.

I see no good reason to keep both rtl8169_reinit_task and rtl8169_reset_task:
- rtl8169_reinit_task adds a software failure point which does relate to
  any hardware state
- they handle hardware the same. Remember that rtl8169_reinit_task was
  introduced in the 8169 only era to handle PCI errors way before the 8168
  asked for pll and firmware ops and compare :

      rtl8169_reinit_task     |    rtl8169_reset_task
  ----------------------------+--------------------------
  rtl8169_wait_for_quiescence | rtl8169_hw_reset
  rtl8169_update_counters     | rtl8169_wait_for_quiescence
  rtl8169_hw_reset            | rtl_hw_start
  rtl8169_rx_missed           | rtl8169_check_link_status
  rtl_pll_power_down          |
  rtl_request_firmware        |
  rtl8169_init_phy            |
  rtl_pll_power_up            |
  rtl_hw_start                |
  rtl8169_check_link_status   |

(cherry picked from commit 209e5ac83b4d038ffb52cabc793f75031602a031)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: remove hardcoded PCIe registers accesses.
Francois Romieu [Thu, 22 Dec 2011 17:59:37 +0000 (18:59 +0100)]
r8169: remove hardcoded PCIe registers accesses.

(cherry picked from commit 4512ff9f361a2786a18cb805d1f64b8d8719f121)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago8139cp: fix missing napi_gro_flush.
françois romieu [Sun, 8 Jan 2012 13:41:33 +0000 (13:41 +0000)]
8139cp: fix missing napi_gro_flush.

The driver uses __napi_complete and napi_gro_receive. Without it, the
driver hits the BUG_ON(n->gro_list) assertion hard in __napi_complete.

(cherry picked from commit b189e810619a676e6b931a942a3e8387f3d39c21)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Tested-by: Marin Glibic <zhilla2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago8139cp/8139too: do not read into reserved registers
Jason Wang [Fri, 30 Dec 2011 23:44:33 +0000 (23:44 +0000)]
8139cp/8139too: do not read into reserved registers

delay_eeprom() use long read for Cfg9346 register(offset 0x50) which may read
into the area of reserved register(offset 0x53). Use byte read instead.

(cherry picked from commit 7d03f5a48e4d90854275b06433626243b3b3db17)
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix Config2 MSIEnable bit setting.
françois romieu [Thu, 15 Dec 2011 08:37:43 +0000 (08:37 +0000)]
r8169: fix Config2 MSIEnable bit setting.

The MSIEnable bit is only available for the 8169.

Avoid Config2 writes for the post-8169 8168 and 810x.

Reported-by: Su Kang Yin <cantona@cantona.net>
(cherry picked from commit 2ca6cf06d988fea21e812a86be79353352677c9c)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix Rx index race between FIFO overflow recovery and NAPI handler.
françois romieu [Sun, 4 Dec 2011 20:30:52 +0000 (20:30 +0000)]
r8169: fix Rx index race between FIFO overflow recovery and NAPI handler.

Since 92fc43b4159b518f5baae57301f26d770b0834c9, rtl8169_tx_timeout ends up
resetting Rx and Tx indexes and thus racing with the NAPI handler via
-> rtl8169_hw_reset
   -> rtl_hw_reset
      -> rtl8169_init_ring_indexes

What about returning to the original state ?

rtl_hw_reset is only used by rtl8169_hw_reset and rtl8169_init_one.

The latter does not need rtl8169_init_ring_indexes because the indexes
still contain their original values from the newly allocated network
device private data area (i.e. 0).

rtl8169_hw_reset is used by:
1. rtl8169_down
   Helper for rtl8169_close. rtl8169_open explicitely inits the indexes
   anyway.
2. rtl8169_pcierr_interrupt
   Indexes are set by rtl8169_reinit_task.
3. rtl8169_interrupt
   rtl8169_hw_reset is needed when the device goes down. See 1.
4. rtl_shutdown
   System shutdown handler. Indexes are irrelevant.
5. rtl8169_reset_task
   Indexes must be set before rtl_hw_start is called.
6. rtl8169_tx_timeout
   Indexes should not be set. This is the job of rtl8169_reset_task anyway.

The removal of rtl8169_hw_reset in rtl8169_tx_timeout and its move in
rtl8169_reset_task do not change the analysis.

(cherry picked from commit c7c2c39be8ed4e503e987151f4599455060e219a)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: hayeswang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: Rx FIFO overflow fixes.
françois romieu [Sun, 4 Dec 2011 20:30:45 +0000 (20:30 +0000)]
r8169: Rx FIFO overflow fixes.

Realtek has specified that the post 8168c gigabit chips and the post
8105e fast ethernet chips recover automatically from a Rx FIFO overflow.
The driver does not need to clear the RxFIFOOver bit of IntrStatus and
it should rather avoid messing it.

The implementation deserves some explanation:
1. events outside of the intr_event bit mask are now ignored. It enforces
   a no-processing policy for the events that either should not be there
   or should be ignored.

2. RxFIFOOver was already ignored in rtl_cfg_infos[RTL_CFG_1] for the
   whole 8168 line of chips with two exceptions:
   - RTL_GIGA_MAC_VER_22 since b5ba6d12bdac21bc0620a5089e0f24e362645efd
     ("use RxFIFO overflow workaround for 8168c chipset.").
     This one should now be correctly handled.
   - RTL_GIGA_MAC_VER_11 (8168b) which requires a different Rx FIFO
     overflow processing.

   Though it does not conform to Realtek suggestion above, the updated
   driver includes no change for RTL_GIGA_MAC_VER_12 and RTL_GIGA_MAC_VER_17.
   Both are 8168b. RTL_GIGA_MAC_VER_12 is common and a bit old so I'd rather
   wait for experimental evidence that the change suggested by Realtek really
   helps or does not hurt in unexpected ways.

   Removed case statements in rtl8169_interrupt are only 8168 relevant.

3. RxFIFOOver is masked for post 8105e 810x chips, namely the sole 8105e
   (RTL_GIGA_MAC_VER_30) itself.

(cherry picked from commit 811fd3010cf512f2e23e6c4c912aad54516dc706)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: hayeswang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agocorral some wayward N/A fw_version dust bunnies
Rick Jones [Tue, 22 Nov 2011 14:06:26 +0000 (14:06 +0000)]
corral some wayward N/A fw_version dust bunnies

Round-up some wayward "N/A" fw_version dust bunnies as part of that
clean-up.

(cherry picked from commit 8ac72d167198f52cba8637cc9bec89339b8e4e64)
Signed-off-by: Rick Jones <rick.jones2@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoethernet: Convert MAC_ADDR_LEN uses to ETH_ALEN
Joe Jin [Fri, 18 May 2012 03:10:25 +0000 (11:10 +0800)]
ethernet: Convert MAC_ADDR_LEN uses to ETH_ALEN

Reduce the number of #defines, use the normal #define from if_ether.h

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(backported from commit 6a3c910ca04ecd69b16dae47b26097a92c533828)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agosweep the floors and convert some .get_drvinfo routines to strlcpy
Joe Jin [Fri, 18 May 2012 03:04:27 +0000 (11:04 +0800)]
sweep the floors and convert some .get_drvinfo routines to strlcpy

Per the mention made by Ben Hutchings that strlcpy is now the preferred
string copy routine for a .get_drvinfo routine, do a bit of floor
sweeping and convert some of the as-yet unconverted ethernet drivers to
it.

(backported from commit 68aad78c5023b8aa82da99b47f9d8cf40e8ca453)
Signed-off-by: Rick Jones <rick.jones2@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: check firmware content sooner.
Francois Romieu [Fri, 17 Jun 2011 22:10:29 +0000 (00:10 +0200)]
r8169: check firmware content sooner.

Firmware checking is only performed when the firmware is loaded
instead of each time the driver inits the phy.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit fd112f2e15ba85d387de446a81aeb11e46ecc55d)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: support new firmware format.
Hayes Wang [Sat, 18 Jun 2011 09:37:48 +0000 (11:37 +0200)]
r8169: support new firmware format.

The new firmware format adds versioning as firmware for a specific
chipset appears to be subject to change. Current "legacy" format is
still supported.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit 960aee6c7d5951ac20c0227ad73bad56392f0afc)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: explicit firmware format check.
Francois Romieu [Fri, 17 Jun 2011 15:16:24 +0000 (17:16 +0200)]
r8169: explicit firmware format check.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit 1c361efb226d609a07403057a71557faf500b17a)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: move the firmware down into the device private data.
Francois Romieu [Fri, 17 Jun 2011 15:00:05 +0000 (17:00 +0200)]
r8169: move the firmware down into the device private data.

No functional difference.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit b6ffd97f5bcfd12df88ece6bc6df7a761ac5a049)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: increase the delay parameter of pm_schedule_suspend
hayeswang [Mon, 7 Nov 2011 20:44:37 +0000 (20:44 +0000)]
r8169: increase the delay parameter of pm_schedule_suspend

The link down would occur when reseting PHY. And it would take about 2 ~ 5 seconds
from link down to link up. If the delay of pm_schedule_suspend is not long enough,
the device would enter runtime_suspend before link up. After link up, the device
would wake up and reset PHY again. Then, you would find the driver keep in a loop
of runtime_suspend and rumtime_resume.

(cherry picked from commit 10953db8e1a278742ef7e64a3d1491802bcfa98b)
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix wrong eee setting for rlt8111evl
hayeswang [Thu, 13 Oct 2011 20:14:37 +0000 (20:14 +0000)]
r8169: fix wrong eee setting for rlt8111evl

Correct the wrong parameter for setting EEE for RTL8111E-VL.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 1b23a3e3d1b969e285c57a2d38f3739283ecfb80)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix driver shutdown WoL regression.
françois romieu [Fri, 14 Oct 2011 00:57:45 +0000 (00:57 +0000)]
r8169: fix driver shutdown WoL regression.

Due to commit 92fc43b4159b518f5baae57301f26d770b0834c9 ("r8169: modify the
flow of the hw reset."), rtl8169_hw_reset stomps during driver shutdown on
RxConfig bits which are needed for WOL on some versions of the hardware.

As these bits were formerly set from the r81{0x, 68}_pll_power_down methods,
factor them out for use in the driver shutdown (rtl_shutdown) handler.

I favored __rtl8169_get_wol() -hardware state indication- over
RTL_FEATURE_WOL as the latter has become a good candidate for removal.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes <hayeswang@realtek.com>
Tested-by: Marc Ballarin <ballarin.marc@gmx.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 649b3b8c4e8681de443b4dc9e387c3036369e02e)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoAdd ethtool -g support to 8139cp
Rick Jones [Fri, 7 Oct 2011 06:42:21 +0000 (06:42 +0000)]
Add ethtool -g support to 8139cp

Add support for reporting ring sizes via ethtool -g to the 8139cp driver.

(cherry picked from commit 1d0861acfb24d0ca0661ff5a156b992b2c589458)
Signed-off-by: Rick Jones <rick.jones2@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agosc92031: use standard #defines from mii.h.
françois romieu [Fri, 30 Sep 2011 00:38:02 +0000 (00:38 +0000)]
sc92031: use standard #defines from mii.h.

(cherry picked from commit 3235de1684ae88e5e380de254a2a674dcd558acc)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: jumbo fixes.
Francois Romieu [Tue, 3 May 2011 14:38:29 +0000 (16:38 +0200)]
r8169: jumbo fixes.

- fix features : jumbo frames and checksumming can not be used at the
  same time.

- introduce hw_jumbo_{enable / disable} helpers. Their content has been
  creatively extracted from Realtek's own drivers. As an illustration,
  it would be nice to know how/if the MaxTxPacketSize register operates
  when the device can work with a 9k jumbo frame as its documentation
  (8168c) can not be applied beyond ~7k.

- rtl_tx_performance_tweak is moved forward. No change.

(cherry picked from commit d58d46b5d85139d18eb939aa7279c160bab70484)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: expand received packet length indication.
Francois Romieu [Tue, 12 Jul 2011 06:24:28 +0000 (08:24 +0200)]
r8169: expand received packet length indication.

8168d and above allow jumbo frames beyond 8k. Bump the received
packet length check before enabling jumbo frames on these chipsets.

Frame length indication covers bits 0..13 of the first Rx descriptor
32 bits for the 8169 and 8168. I only have authoritative documentation
for the allowed use of the extra (13) bit with the 8169 and 8168c.
Realtek's drivers use the same mask for the 816x and the fast ethernet
only 810x.

(cherry picked from commit deb9d93c89d311714a60809b28160e538e1cbb43)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: support new chips of RTL8111F
Hayes Wang [Tue, 6 Sep 2011 08:55:18 +0000 (16:55 +0800)]
r8169: support new chips of RTL8111F

Support new chips of RTL8111F.

(cherry picked from commit c2218925f3a653ac6c39e62eb0e10232d2b44dab)
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: do not enable the TBI for anything but the original 8169.
Francois Romieu [Thu, 1 Sep 2011 16:42:09 +0000 (18:42 +0200)]
r8169: do not enable the TBI for anything but the original 8169.

The TBI bit in PHYStatus is reserved on anything but the oldest 8169.

Nobody complained after I disabled it for the 8168 and the 810x (see
66ec5d4fb1ce6f0bd9df4bc4b758f0916d9f37ab).

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
(cherry picked from commit 2544bfc0eb2581e0eedbdfea1468b3866223d47e)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: remove erroneous processing of always set bit.
Francois Romieu [Thu, 25 Aug 2011 16:47:24 +0000 (18:47 +0200)]
r8169: remove erroneous processing of always set bit.

When set, RxFOVF (resp. RxBOVF) is always 1 (resp. 0).

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes <hayeswang@realtek.com>
(cherry picked from commit e03f33af79f0772156e1a1a1e36bdddf8012b2e4)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix WOL setting for 8105 and 8111evl
Hayes Wang [Tue, 6 Sep 2011 08:55:14 +0000 (16:55 +0800)]
r8169: fix WOL setting for 8105 and 8111evl

rtl8105, rtl8111E, and rtl8111evl need enable RxConfig bit 1 ~ 3
for supporting wake on lan.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
(cherry picked from commit 106633897e086e1b47126996aac1a427eb80eb1b)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: add MODULE_FIRMWARE for the firmware of 8111evl
Hayes Wang [Tue, 6 Sep 2011 08:55:17 +0000 (16:55 +0800)]
r8169: add MODULE_FIRMWARE for the firmware of 8111evl

Add MODULE_FIRMWARE for the firmware of RTL8111E-VL

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
(cherry picked from commit bbb8af75d0a6a5138ff00fe0b1b95c4824effd55)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix the reset setting for 8111evl
Hayes Wang [Tue, 6 Sep 2011 08:55:16 +0000 (16:55 +0800)]
r8169: fix the reset setting for 8111evl

rtl8111evl should stop any TLP requirement before resetting by
enabling register 0x37 bit 7.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
(cherry picked from commit c2b0c1e7fb69b54e704cb2dae5a80cc78a8cb0b2)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: define the early size for 8111evl
Hayes Wang [Tue, 6 Sep 2011 08:55:15 +0000 (16:55 +0800)]
r8169: define the early size for 8111evl

For RTL8111EVL, the register of MaxTxPacketSize doesn't acctually
limit the tx size. It influnces the feature of early tx.

(cherry picked from commit 3090bd9a3102331ed981280ef05ee5433ce978d7)
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: convert to SKB paged frag API.
Ian Campbell [Wed, 31 Aug 2011 00:47:06 +0000 (00:47 +0000)]
r8169: convert to SKB paged frag API.

(cherry picked from commit 929f61896e194f45696ba52852ccbfd5edd04df1)
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Realtek linux nic maintainers <nic_swsd@realtek.com>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago8139cp: convert to SKB paged frag API.
Ian Campbell [Mon, 29 Aug 2011 23:18:18 +0000 (23:18 +0000)]
8139cp: convert to SKB paged frag API.

(cherry picked from commit deb8a069e39b272c0a37bfa7a5f52d49600963a4)
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agonet: remove use of ndo_set_multicast_list in realtek drivers
Joe Jin [Fri, 18 May 2012 02:10:06 +0000 (10:10 +0800)]
net: remove use of ndo_set_multicast_list in realtek drivers

replace it by ndo_set_rx_mode for realtek devices

(backported from commit afc4b13df143122f99a0eb10bfefb216c2806de0)
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169 : MAC address change fix for the 8168e-vl.
françois romieu [Tue, 2 Aug 2011 03:53:43 +0000 (03:53 +0000)]
r8169 : MAC address change fix for the 8168e-vl.

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=39252

Hayes suggested that the usual MAC{0, 4} register writes be completed
with writes to extended GigaMAC registers :
- 0xe0 .. 0xe5
- 0xf2 .. 0xf7

Registers 0xf0 and 0xf1 should be set to 0.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit c28aa38567101bad4e020f4392df41d0bf6c165c)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: use pci_dev->subsystem_{vendor|device}
Sergei Shtylyov [Fri, 22 Jul 2011 05:37:24 +0000 (05:37 +0000)]
r8169: use pci_dev->subsystem_{vendor|device}

The driver reads PCI subsystem IDs from the PCI configuration registers while
they are already stored by the PCI subsystem in the 'subsystem_{vendor|device}'
fields of 'struct pci_dev'...

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit ccbae55e1c6dc18e95d72c044cf9345ea08abf7b)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix sticky accepts packet bits in RxConfig.
Francois Romieu [Tue, 19 Jul 2011 15:21:29 +0000 (17:21 +0200)]
r8169: fix sticky accepts packet bits in RxConfig.

e542a2269f232d61270ceddd42b73a4348dee2bb (r8169: adjust the RxConfig settings)
broke the return from promiscuous mode to physical address match mode.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Signed-off-by: Hayes Wang <hayeswang@realtek.com>
(cherry picked from commit 1687b56679880a47164ae149530abee543f9d6b1)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: adjust the RxConfig settings.
Hayes Wang [Wed, 6 Jul 2011 07:58:04 +0000 (15:58 +0800)]
r8169: adjust the RxConfig settings.

Set the init value before reset in probe function. And then just
modify the relative bits and keep the init settings.

For 8110S, 8110SB, and 8110SC series, the initial value of RxConfig
needs to be set after the tx/rx is enabled.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit e542a2269f232d61270ceddd42b73a4348dee2bb)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: don't enable rx when shutdown.
Hayes Wang [Wed, 6 Jul 2011 07:58:08 +0000 (15:58 +0800)]
r8169: don't enable rx when shutdown.

Only 8111b needs to enable rx when shutdowning with WoL.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit aaa89c08d9ffa3739c93d65d98b73ec2aa2e93a5)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: fix wake on lan setting for non-8111E.
Hayes Wang [Wed, 6 Jul 2011 07:58:07 +0000 (15:58 +0800)]
r8169: fix wake on lan setting for non-8111E.

Only 8111E needs enable RxConfig bit 0 ~ 3 when suspending or
shutdowning for wake on lan.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit d4ed95d796e5126bba51466dc07e287cebc8bd19)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: support RTL8111E-VL.
Hayes Wang [Wed, 6 Jul 2011 07:58:06 +0000 (15:58 +0800)]
r8169: support RTL8111E-VL.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit 70090424e59652c4b2e777b533cc23134b176b83)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: add ERI functions.
Hayes Wang [Wed, 6 Jul 2011 07:58:05 +0000 (15:58 +0800)]
r8169: add ERI functions.

Add the ERI functions which would be used by the new chips.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit 133ac40ac26a6cba957ad5765892f0531ba6ccee)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: modify the flow of the hw reset.
Hayes Wang [Wed, 6 Jul 2011 07:58:03 +0000 (15:58 +0800)]
r8169: modify the flow of the hw reset.

- Disable tx and rx by resetting hw, so replace rtl8169_asic_down
  with rtl8169_hw_reset.
- RxConfig bits 0 ~ 5 have to be cleared before hw reset to avoid
  receiving spurious data.
- Certain chips need to do some checking before reset.
- Remove hw reset which is done before hw_start. It is done in close,
  down or device probe functions.
- Move rtl8169_init_ring_indexes function into rtl_hw_reset function.
  The indexes of tx and rx only need to be zero when the hw resets.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit 92fc43b4159b518f5baae57301f26d770b0834c9)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: adjust some registers.
Hayes Wang [Wed, 6 Jul 2011 07:58:02 +0000 (15:58 +0800)]
r8169: adjust some registers.

Define new registers and modify some existing ones.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
(cherry picked from commit 4f6b00e5f139d7be3ca8371b769778f94fa549dd)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agor8169: remove unnecessary read of PCI_CAP_ID_EXP
Jon Mason [Mon, 27 Jun 2011 07:46:31 +0000 (07:46 +0000)]
r8169: remove unnecessary read of PCI_CAP_ID_EXP

The PCIE capability offset is saved during PCI bus walking.  Use the
value from pci_dev instead of checking in the driver and saving it off
the the driver specific structure.  Also, it will remove an unnecessary
search in the PCI configuration space if this value is referenced
instead of reacquiring it.

Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit e44daaded19baf8b7cf9ab3dedad8a01b8c49251)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoSPEC: v2.6.39-200.11.0
Maxim Uvarov [Thu, 17 May 2012 18:24:29 +0000 (11:24 -0700)]
SPEC: v2.6.39-200.11.0

Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
13 years ago[dm] do not forward ioctls from logical volumes to the underlying device
Joe Jin [Fri, 23 Dec 2011 02:00:27 +0000 (10:00 +0800)]
[dm] do not forward ioctls from logical volumes to the underlying device

CVE-2011-4127.

A logical volume can map to just part of underlying physical volume.
In this case, it must be treated like a partition.

Based on a patch from Alasdair G Kergon.

Cc: Alasdair G Kergon <agk@redhat.com>
Cc: Mike Snitzer <msnitzer@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago[block] fail SCSI passthrough ioctls on partition devices
Joe Jin [Fri, 23 Dec 2011 01:59:41 +0000 (09:59 +0800)]
[block] fail SCSI passthrough ioctls on partition devices

CVE-2011-4127.

Linux allows executing the SG_IO ioctl on a partition or even on an
LVM volume, and will pass the command to the underlying block device.
This is well-known, but it is also a large security problem when (via
Unix permissions, ACLs, SELinux or a combination thereof) a program or
user needs to be granted access to a particular partition or logical
volume but not to the full device.

This patch limits the ioctls that are forwarded to non-SCSI devices to
a few ones that are harmless.  This restriction includes programs
running with the CAP_SYS_RAWIO.  If for example I let a program access
/dev/sda2 and /dev/sdb, it still should not be able to read/write outside
the boundaries of /dev/sda2 independent of the capabilities.

This patch does not affect the non-libata IDE driver.  That driver however
alreadys test for bd != bd->bd_contains before issuing some ioctl; so,
programs that do not require CAP_SYS_RAWIO are safe.  A workaround is
just to use libata.

Encryption on the host is a mitigating factor, but it does not provide
a full solution.  In particular it doesn't protect against DoS (write
random data), replay attacks (reinstate old ciphertext sectors), or
writes to unencrypted areas including the MBR, the partition table, or
/boot.

Thanks to Daniel Berrange, Milan Broz, Mike Christie, Alasdair Kergon,
Petr Matousek, Jeff Moyer, Mike Snitzer and others for help discussing
this issue.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years ago[block] add and use scsi_blk_cmd_ioctl
Joe Jin [Fri, 23 Dec 2011 01:58:55 +0000 (09:58 +0800)]
[block] add and use scsi_blk_cmd_ioctl

CVE-2011-4127.

Introduce a wrapper around scsi_cmd_ioctl that takes a block device.
The function will then be enhanced to detect partition block devices and,
in that case, subject the ioctls to whitelisting.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
Conflicts:

block/scsi_ioctl.c
drivers/block/ub.c

Orabug: 14056755

Signed-off-by: Guangyu Sun <guangyu.sun@oracle.com>
13 years agoixgbevf: print MAC via printk format specifier
Danny Kukawka [Fri, 24 Feb 2012 03:45:56 +0000 (03:45 +0000)]
ixgbevf: print MAC via printk format specifier

Print MAC/dev_addr via printk extended format specifier %pM
instead of custom code.

(cherry picked from commit f794e7efe40147ed0c34f889b75298fec10e66b8)
Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Update copyright notices
Greg Rose [Fri, 6 Jan 2012 02:53:30 +0000 (02:53 +0000)]
ixgbevf: Update copyright notices

(cherry picked from commit 5c47a2b6211316ee9cd8740db453af7c5c01d0d6)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Robert E Garrett <robertX.e.garrett@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Fix mailbox interrupt ack bug
Greg Rose [Wed, 1 Feb 2012 01:28:15 +0000 (01:28 +0000)]
ixgbevf: Fix mailbox interrupt ack bug

Remove jump to out label that was skipping over code to replace the
ack bit in the mailbox cache variable.  This was causing driver mailbox
routines that poll for the PF to ack a message to time out which would
in turn cause all other mailbox messages to fail.  Also replace the
mailbox cache variable message indication bit when a message is found
so that other functions that choose to poll for a mailbox message from
the PF won't miss it.

(cherry picked from commit 3a2c40336b5ee112f6a2bc784e79aa6124d7acf6)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Robert E Garrett <robertX.e.garrett@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: make operations tables const
Stephen Hemminger [Wed, 18 Jan 2012 22:13:34 +0000 (22:13 +0000)]
ixgbevf: make operations tables const

The arrays of function pointers should be const to make life harder
for rootkits.

(cherry picked from commit 3d8fe98f8d5cb303d907d8f94ea6dc1f9a1d8b7a)
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: fix sparse warnings
Stephen Hemminger [Wed, 18 Jan 2012 22:13:33 +0000 (22:13 +0000)]
ixgbevf: fix sparse warnings

Fixes sparse warnings:
drivers/net/ixgbevf/vf.c:418:21: warning: symbol 'ixgbevf_82599_vf_info' was not declared. Should it be static?
drivers/net/ixgbevf/vf.c:423:21: warning: symbol 'ixgbevf_X540_vf_info' was not declared. Should it be static?
drivers/net/ixgbevf/mbx.c:331:29: warning: symbol 'ixgbevf_mbx_ops' was not declared. Should it be static?

(cherry picked from commit b5417bf8e8952401bca69ded67c30ead484af823)
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: make ethtool ops and strings const
Stephen Hemminger [Wed, 18 Jan 2012 22:13:32 +0000 (22:13 +0000)]
ixgbevf: make ethtool ops and strings const

(cherry picked from commit b47aca135d6df5f676c768368baf3c099f054fcd)
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Prevent possible race condition by checking for message
Greg Rose [Wed, 18 Jan 2012 22:13:31 +0000 (22:13 +0000)]
ixgbevf: Prevent possible race condition by checking for message

The mailbox interrupt routine might cause a race condition sometimes
and cause a message to be missed.

(cherry picked from commit 375b27cf5db963e2bc2a34dc5643d0d7ceca1ee2)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Fix register defines to correctly handle complex expressions
Alexander Duyck [Thu, 8 Dec 2011 06:36:28 +0000 (06:36 +0000)]
ixgbevf: Fix register defines to correctly handle complex expressions

This patch is meant to address possible issues with the IXGBEVF register
defines generating incorrect values when given a complex expression for the
register offset.

(cherry picked from commit f131a6c07ec0eb9d00f99af18be52a6da0458e82)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Update release version
Greg Rose [Thu, 20 Oct 2011 04:14:49 +0000 (04:14 +0000)]
ixgbevf: Update release version

(cherry picked from commit c1a7e1ebc17a9243d99ba0432d1138d74114dea7)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Fix broken trunk vlan
Greg Rose [Sat, 27 Aug 2011 02:06:25 +0000 (02:06 +0000)]
ixgbevf: Fix broken trunk vlan

Changes to clean up the vlan rx path broke trunk vlan.  Trunk vlans in
a VF driver are those set using:

"ip link set <pfdev> vf <n> <vlanid>"

(cherry picked from commit dd1ed3b7bfed15f6162f63840941e9cf4f3611a1)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
CC: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: convert to ndo_fix_features
Joe Jin [Thu, 17 May 2012 15:54:07 +0000 (23:54 +0800)]
ixgbevf: convert to ndo_fix_features

Private rx_csum flags are now duplicate of netdev->features & NETIF_F_RXCSUM.
Removing this needs deeper surgery.

Since ixgbevf doesn't change hardware state on RX csum enable/disable
its reset is avoided.

Things noticed:
 - HW VLAN acceleration probably can be toggled, but it's left as is
 - the resets on RX csum offload change can probably be avoided
 - there is A LOT of copy-and-pasted code here

(backported from commit 471a76ded87d3375a3449dfa3d1cec567edd0c50)
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbevf: Check if EOP has changed before using it
Greg Rose [Fri, 3 Jun 2011 03:53:24 +0000 (03:53 +0000)]
ixgbevf: Check if EOP has changed before using it

There is a chance that between the time EOP is read and the time it is
used another transmit on a different CPU could have run and completed,
thus leaving EOP in a bad state.

(cherry picked from commit 98b9e48fca11c8aa54b25c02d3329392b52db8ab)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Correct flag values set by ixgbe_fix_features
Joe Jin [Thu, 17 May 2012 15:46:31 +0000 (23:46 +0800)]
ixgbe: Correct flag values set by ixgbe_fix_features

This patch replaces the variable name data with the variable name features
for ixgbe_fix_features and ixgbe_set_features.  This helps to make some
issues more obvious such as the fact that we were disabling Rx VLAN tag
stripping when we should have been forcing it to be enabled when DCB is
enabled.

In addition there was deprecated code present that was disabling the LRO
flag if we had the itr value set too low.  I have updated this logic so
that we will now allow the LRO flag to be set, but will not enable RSC
until the rx-usecs value is high enough to allow enough time for Rx packet
coalescing.

(cherry picked from commit 567d2de291b5ddb83654c5e87c14b4c6fa7216ed)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: fix typo in enumeration name
Don Skidmore [Thu, 15 Mar 2012 04:55:59 +0000 (04:55 +0000)]
ixgbe: fix typo in enumeration name

This was pointed out to me by Xiaojun Zhang on Source Forge.

CC: Xiaojun Zhang <zhangxiaojun@sourceforge.net>
(cherry picked from commit 70e5576cb0af5c1351432704a39319af119584bb)
Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Add support for enabling UDP RSS via the ethtool rx-flow-hash command
Joe Jin [Thu, 17 May 2012 15:28:25 +0000 (23:28 +0800)]
ixgbe: Add support for enabling UDP RSS via the ethtool rx-flow-hash command

This patch adds support for enabling or disabling UDP RSS via the
ethtool -N rx-flow-hash command.

(cherry picked from commit ef6afc0caceebb3b49cd384f8c634f89f5089997)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Whitespace cleanups
Joe Jin [Thu, 17 May 2012 15:26:35 +0000 (23:26 +0800)]
ixgbe: Whitespace cleanups

This patch contains several fixes for formatting in regards to whitespace.

(backported from commit 581330ba7b219fec0587452bd72fe5635c30c4ae)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Two minor fixes for RSS and FDIR set queues functions
Alexander Duyck [Wed, 8 Feb 2012 07:51:42 +0000 (07:51 +0000)]
ixgbe: Two minor fixes for RSS and FDIR set queues functions

This change fixes two minor issues. The first was the fact that we were
setting the return value to false twice in the set_rss_queues function.
The second is the fact that we should have been using "min_t(int," instead
of "min((int)" in set_fdir_queues.

(cherry picked from commit 6ca435078822d9728318dee49ba4f2ff8a2ead24)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: drop err_eeprom tag which is at same location as err_sw_init
Alexander Duyck [Wed, 8 Feb 2012 07:51:37 +0000 (07:51 +0000)]
ixgbe: drop err_eeprom tag which is at same location as err_sw_init

The err_eeprom and err_sw_init tags both go to the same location.  So
instead of maintaining two tags this patch combines them so we only use
err_sw_init.

(cherry picked from commit 35937c055a691a125cf52343cd671f6190ae5b3b)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Move poll routine in order to improve readability
Alexander Duyck [Wed, 8 Feb 2012 07:51:27 +0000 (07:51 +0000)]
ixgbe: Move poll routine in order to improve readability

This change relocates the ixgbe_poll routine so it is right next to the
interrupt routine that schedules and calls it.

(cherry picked from commit eb01b9759e733c0ede11d35e3cde5b3c24ab32c9)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: cleanup logic for the service timer and VF hang detection
Alexander Duyck [Wed, 8 Feb 2012 07:51:22 +0000 (07:51 +0000)]
ixgbe: cleanup logic for the service timer and VF hang detection

This change just cleans up some of the logic in the service_timer function
so that we can avoid unnecessary swapping of the ready value between true to
false and back to true.

(cherry picked from commit 6bb78cfb50bfbaf90646a80448ee8de2372e292a)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Fix issues with SR-IOV loopback when flow control is disabled
Alexander Duyck [Tue, 6 Mar 2012 07:52:38 +0000 (07:52 +0000)]
ixgbe: Fix issues with SR-IOV loopback when flow control is disabled

This patch allows us to avoid a Tx hang when SR-IOV is enabled.  This hang
can be triggered by sending small packets at a rate that was triggering Rx
missed errors from the adapter while the internal Tx switch and at least
one VF are enabled.

This was all due to the fact that under heavy stress the Rx FIFO never
drained below the flow control high water mark.  This resulted in the Tx
FIFO being head of line blocked due to the fact that it relies on the flow
control high water mark to determine when it is acceptable for the Tx to
place a packet in the Rx FIFO.

The resolution for this is to set the FCRTH value to the RXPBSIZE - 32 so
that even if the ring is almost completely full we can still place Tx
packets on the Rx ring and drop incoming Rx traffic if we do not have
sufficient space available in the Rx FIFO.

(cherry picked from commit c29f40ca19b8ca284a2d1415e26b802bc9b2fb67)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>