]> www.infradead.org Git - users/jedix/linux-maple.git/log
users/jedix/linux-maple.git
13 years agoixgbe: Modify setup of descriptor flags to avoid conditional jumps
Alexander Duyck [Wed, 8 Feb 2012 07:50:45 +0000 (07:50 +0000)]
ixgbe: Modify setup of descriptor flags to avoid conditional jumps

This change makes it more likely that the descriptor flags setup will use
cmov instructions instead of conditional jumps when setting up the flags.
The advantage to this is that the code should just flow a bit more
smoothly.

To do this it is necessary to set the TX_FLAGS_CSUM bit in tx_flags when
doing TSO so that we also do the checksum in addition to the segmentation
offload.

(cherry picked from commit 93f5b3c1f148f2cca247a2c5afdd3ba7a123a6f1)
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: Make certain that all frames fit minimum size requirements
Alexander Duyck [Wed, 8 Feb 2012 07:50:40 +0000 (07:50 +0000)]
ixgbe: Make certain that all frames fit minimum size requirements

This change makes certain that any packet we attempt to transmit will meet
minimum size requirements for the hardware.

(cherry picked from commit a50c29dd09ed14f8489677813a4b1c8b62dcf19d)
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 in ixgbe_change_mtu
Alexander Duyck [Wed, 8 Feb 2012 07:50:35 +0000 (07:50 +0000)]
ixgbe: cleanup logic in ixgbe_change_mtu

This change is meant to just cleanup the logic in ixgbe_change_mtu since we
are making it unnecessarily complex due to a workaround required for 82599
when SR-IOV is enabled.

(cherry picked from commit 655309e944fd482e59850d55186571c1b2a91e55)
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: dcb: use DCB config values for FCoE traffic class on open
John Fastabend [Sat, 11 Feb 2012 06:26:00 +0000 (06:26 +0000)]
ixgbe: dcb: use DCB config values for FCoE traffic class on open

Disabling and enabling DCB can cause FCoE hardware initialization to
occur on the incorrect traffic class when the up2tc mapping has not
yet been reconfigured.

Fix this by using the DCB configuration maps that are correct
and will be pushed at mqprio after DCB driver setup completes
successfully.

(cherry picked from commit cdf485be3a63d1f34293740fb726088c6840ceea)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Marcus Dennis <marcusx.e.dennis@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 race condition where RX buffer could become corrupted.
Atita Shirwaikar [Sat, 18 Feb 2012 02:58:58 +0000 (02:58 +0000)]
ixgbe: Fix race condition where RX buffer could become corrupted.

There was a race condition in the reset path where the RX buffer
could become corrupted during Fdir configuration.This is due to
a HW bug.The fix right now is to lock the buffer while we do the
fdir configuration.Since we were using similar workaround for another bug,
I moved the existing code to a function and reused it.HW team also recommended
that IXGBE_MAX_SECRX_POLL value be changed from 30 to 40.The erratum for this
bug will be published in the next release 82599 Spec Update

(cherry picked from commit d2f5e7f3af777d52ce110ae60e8cb788bc93141c)
Signed-off-by: Atita Shirwaikar <atita.shirwaikar@intel.com>
Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@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: use typed min/max functions where possible
Jesse Brandeburg [Fri, 10 Feb 2012 10:20:02 +0000 (10:20 +0000)]
ixgbe: use typed min/max functions where possible

using the form min((int)var, ver)) is replaced by min_t(int, ...)

(cherry picked from commit 3ed69d7e318ce17c77d91fd09a963cf48ce3a8a9)
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@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 obvious return value bug.
Don Skidmore [Fri, 17 Feb 2012 07:38:13 +0000 (07:38 +0000)]
ixgbe: fix obvious return value bug.

This is clearly a typeo where we are not checking the return value from
get_link_capabilities but should.  This patch corrects that.

(cherry picked from commit 9cdcf098800d9549b0bf1e759f8b456baabfb939)
Signed-off-by: Don Skidmore <donald.c.skidmore@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: Replace eitr_low and eitr_high with static values in ixgbe_update_itr
Alexander Duyck [Wed, 8 Feb 2012 07:50:20 +0000 (07:50 +0000)]
ixgbe: Replace eitr_low and eitr_high with static values in ixgbe_update_itr

There isn't much point in using variables to store the values of eitr_low
and eitr_high since they are not user changeable.  As such I am replacing
them with the constants 10 and 20 in order to avoid any confusion on what
the values actually are.

(cherry picked from commit 621bd70eda47f33aa5f3a48da56649c0cb7e2329)
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: Do not disable read relaxed ordering when DCA is enabled
Alexander Duyck [Wed, 8 Feb 2012 07:50:14 +0000 (07:50 +0000)]
ixgbe: Do not disable read relaxed ordering when DCA is enabled

A previous fix had gone though and disabled relaxed ordering for Rx
descriptor read fetching.  This was not necessary as this functions
correctly and has no ill effects on the system.

In addition several of the defines used for the DCA control registers were
incorrect in that they indicated descriptor effects when they actually had
an impact on either data or header write back.  As such I have update these
to correctly reflect either DATA or HEAD.

(cherry picked from commit bdda1a61c1dbb1e3a4f76c944b7c1e3b3731c861)
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: Simplify logic for ethtool loopback frame creation and testing
Alexander Duyck [Wed, 8 Feb 2012 07:50:09 +0000 (07:50 +0000)]
ixgbe: Simplify logic for ethtool loopback frame creation and testing

This change makes it a bit easier to do the loopback frame creating and
testing.  Previously we were doing an and to drop the last bit, and then
dividing the frame_size by 2 in order to get locations for frame bytes and
testing.  Instead we can simplify it by just shifting the register one bit
to the right and using that for the frame offsets.

This change also replaces all instances of rx_buffer_info with just
rx_buffer since that is closer to the name of the actual structure being
used and can save a few extra characters.

In addition I have updated the logic for cleaning up a test frame so that
we pass an rx_buffer instead of the sk_buff.  The main motivation behind
this is changes that will replace the sk_buff with just a page in the
future.

(cherry picked from commit 3832b26e49ad9e585239b32f763c31679f9e41fe)
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: Add iterator for cycling through rings on a q_vector
Alexander Duyck [Wed, 8 Feb 2012 07:50:04 +0000 (07:50 +0000)]
ixgbe: Add iterator for cycling through rings on a q_vector

Since there are multiple spots where we have to cycle through all of the
rings on a q_vector it makes sense to just add a function for iterating
through all of them.

(cherry picked from commit a557928e26b08496c8f4b6c04e3838ad8048ad85)
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: Allocate rings as part of the q_vector
Alexander Duyck [Wed, 8 Feb 2012 07:49:59 +0000 (07:49 +0000)]
ixgbe: Allocate rings as part of the q_vector

This patch makes the rings a part of the q_vector directly instead of
indirectly.  Specifically on x86 systems this helps to avoid any cache
set conflicts between the q_vector, the tx_rings, and the rx_rings as the
critical stride is 4K and in order to cross that boundary you would need to
have over 15 rings on a single q_vector.

In addition this allows for smarter allocations when Flow Director is
enabled.  Previously Flow Director would set the irq_affinity hints based
on the CPU and was still using a node interleaving approach which on some
systems would end up with the two values mismatched.  With the new approach
we can set the affinity for the irq_vector and use the CPU for that
affinity to determine the node value for the node and the rings.

(cherry picked from commit de88eeeb16b164b615a5d71ad5fa0b7d51b14435)
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 unnecessary napi_schedule_prep and spare blank line from ixgbe_intr
Alexander Duyck [Wed, 8 Feb 2012 07:49:54 +0000 (07:49 +0000)]
ixgbe: Drop unnecessary napi_schedule_prep and spare blank line from ixgbe_intr

This patch is a minor cleanup to address the unnecessary use of
napi_schedule_prep in ixgbe_intr and to also remove a blank line that is
not needed since it is separating a comment from the line it is explaining.

(cherry picked from commit b9f6ed2bab0b087bdff870b7173f1d89efd96e54)
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: Default to queue pairs when number of queues is less than CPUs
Alexander Duyck [Fri, 10 Feb 2012 02:08:37 +0000 (02:08 +0000)]
ixgbe: Default to queue pairs when number of queues is less than CPUs

The old code had several errors in how it was determining the vector
budget.  In order to simplify things this patch updates the code so that it
will attempt to always allocated paired Rx/Tx vectors instead of attempting
to allocate individual vectors when the number of queues is less than the
number of CPUs.

(cherry picked from commit 8f15486dd0f6e8423cb33fa8513ed9d074476471)
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: Correct Adaptive Interrupt Moderation so that it will change values
Alexander Duyck [Wed, 8 Feb 2012 07:49:43 +0000 (07:49 +0000)]
ixgbe: Correct Adaptive Interrupt Moderation so that it will change values

This change corrects an issue in which Adaptive Interrupt Moderation was
not changing values due to the fact that we were performing an and
operation on the resultant value that was causing the value to never change
from the default 20K interrupts per second.

(cherry picked from commit 5d967eb7f84d2761d624d033c2583187b37b56ce)
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: Address issues with Tx WHTRESH value not being set correctly
Alexander Duyck [Wed, 8 Feb 2012 07:49:38 +0000 (07:49 +0000)]
ixgbe: Address issues with Tx WHTRESH value not being set correctly

This change is meant to address the fact that the tx_itr_setting was
dropping to 0 when no separate Tx vectors were provided.  This had resulted
in the driver incorrectly configuring the Tx ring with a WTHRESH of 1 in
order to avoid Tx hangs even though that was not necessary. This change
makes it so that we instead take a look at the Tx ring's q_vector to
determine if the ring will have an ITR value less than 8us.

(cherry picked from commit e954b374b4e42c5335679ec6d79ca2c50ce5d422)
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: Reorder adapter contents for better cache utilization
Joe Jin [Thu, 17 May 2012 15:03:38 +0000 (23:03 +0800)]
ixgbe: Reorder adapter contents for better cache utilization

This change moves several frequently accessed items together into one cache
line in order to reduce cache misses in the hot-path.

(backported from commit 46646e61ea068b11758e8ffed3f4db300323dfc6)
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: Do no clear Tx status bits since eop_desc provides enough info
Alexander Duyck [Wed, 8 Feb 2012 07:49:23 +0000 (07:49 +0000)]
ixgbe: Do no clear Tx status bits since eop_desc provides enough info

There isn't any need to clear the status bits in the descriptors due to the
fact that the eop_desc provides enough information for us to know
that we have cleaned to the last packet that the software has put on the
ring.  The status bits are cleared as a part of putting the frame on the
ring so as long as we do not read the descriptor bit prior to reading the
value eop_desc we should be able to guarantee that we will not clean beyond
the end of the current data stream.

(cherry picked from commit 7f83a9e6292b49d1540f82f295ac8710ba562c5f)
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: remove tie between NAPI work limits and interrupt moderation
Jeff Kirsher [Fri, 23 Sep 2011 15:34:38 +0000 (15:34 +0000)]
ixgbe: remove tie between NAPI work limits and interrupt moderation

As noted by Ben Hutchings and David Miller, work limits for NAPI
should not be tied to interrupt moderation parameters.  This
should be handled by NAPI, possibly through sysfs.

Neil Horman & Stephen Hemminger are working on a solution for
NAPI currently.  In the meantime, remove this tie between
work limits and interrupt moderation.

(cherry picked from commit 35551c47495a762fcfa5ca6217bf3eb36983d0df)
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
CC: Ben Hutchings <bhutchings@solarflare.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: dcb: check setup_tc return codes
John Fastabend [Fri, 10 Feb 2012 03:19:35 +0000 (03:19 +0000)]
ixgbe: dcb: check setup_tc return codes

dcb netlink code calls setup_tc to init hardware traffic classes
to use for DCB. At some call sites the return values are not
checked for errors and in one case may return -EINVAL back to
the net/dcbnl.c caller which is expecting a u8.

This fixes some smatch hits and although failures are never
seen in practive its best to check return codes.

Reported-by: Dan Carenter <dan.carpenter@oracle.com>
(cherry picked from commit 89d27a3c0ad7d5f2ce9ece055b3c7c619dc42f6c)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 comments that are out of date or formatted incorrectly
Alexander Duyck [Fri, 10 Feb 2012 02:08:32 +0000 (02:08 +0000)]
ixgbe: Fix comments that are out of date or formatted incorrectly

This patch corrects several comments that are either incorrect or formatted
incorrectly for multiline comments.

(cherry picked from commit 24ddd967806a5f0a7915721b7d60cac6f2cf5db9)
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: fix spelling errors
Don Skidmore [Tue, 28 Feb 2012 06:35:54 +0000 (06:35 +0000)]
ixgbe: fix spelling errors

Correct spelling error caught with codespell.py.

(cherry picked from commit c466d7a73360ed02167598a94984ab7b4dadfa68)
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: Minor formatting and comment corrections for ixgbe_xmit_frame_ring
Alexander Duyck [Wed, 8 Feb 2012 07:49:33 +0000 (07:49 +0000)]
ixgbe: Minor formatting and comment corrections for ixgbe_xmit_frame_ring

This patch is meant to address several minor issues in
ixgbe_xmit_frame_ring.  Specifically it adds a comment explaining the TXSW
flag, and correctly wraps a line over 80 characters.

(cherry picked from commit 9e0c5648d973cfe6bb037df3fdd08903c81bdc3e)
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: Combine post-DMA processing of sk_buff fields into single function
Alexander Duyck [Tue, 31 Jan 2012 02:59:49 +0000 (02:59 +0000)]
ixgbe: Combine post-DMA processing of sk_buff fields into single function

This change combines a number of post-DMA Rx packet processing functions
into a single function.  The advantage of this is that it combines most of
the Rx descriptor processing into one spot so it should all be warm in the
cache.

(cherry picked from commit 8a0da21be84019d605af2c9a92b20a084db77de1)
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 the _ADV of descriptor macros since all ixgbe descriptors are ADV
Alexander Duyck [Tue, 31 Jan 2012 02:59:44 +0000 (02:59 +0000)]
ixgbe: Drop the _ADV of descriptor macros since all ixgbe descriptors are ADV

It doesn't make much sense to differentiate between advanced and legacy
descriptors when the only descriptors that ixgbe uses are advanced
descriptors.  As such we can drop the _ADV suffix since all ixgbe
descriptors are automatically advanced.

(cherry picked from commit e4f740287fbfdc7b68634e93c098c8ea8de691f1)
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: Add function for testing status bits in Rx descriptor
Alexander Duyck [Tue, 31 Jan 2012 02:59:39 +0000 (02:59 +0000)]
ixgbe: Add function for testing status bits in Rx descriptor

This change adds a small function for testing Rx status bits in the
descriptor.  The advantage to this is that we can avoid unnecessary
byte swaps on big endian systems.

(cherry picked from commit f56e0cb1fea6aa3caace1c1ddde3f847793dcf38)
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: Let the Rx buffer allocation clear status bits instead of cleanup
Joe Jin [Thu, 17 May 2012 14:55:03 +0000 (22:55 +0800)]
ixgbe: Let the Rx buffer allocation clear status bits instead of cleanup

This change makes it so that we always clear the status/error bits in the
Rx descriptor in the allocation path instead of the cleanup path.  The
advantage to this is that we spend less time modifying data.  As such we
can modify the data once and then let it go cold in the cache instead of
writing it, reading it, and then writing it again.

(cherry picked from commit f990b79bc80ca7a23b8a6c33241c439072d0b85b)
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: Address fact that RSC was not setting GSO size for incoming frames
Alexander Duyck [Tue, 31 Jan 2012 02:59:29 +0000 (02:59 +0000)]
ixgbe: Address fact that RSC was not setting GSO size for incoming frames

This patch is meant to address the fact that RSC has not been setting the
gso_size value on the skb.  As a result performance on lossy TCP
connections was negatively impacted.  This change resolves the issue by
setting gso_size to the average size for incoming packets.

(cherry picked from commit 1d2024f61ec14bdb0c57a97a3fe73685abc2d198)
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: Minor refactor of RSC
Alexander Duyck [Tue, 31 Jan 2012 02:59:23 +0000 (02:59 +0000)]
ixgbe: Minor refactor of RSC

This change addresses several issue.

First I had left the use of the next and prev skb pointers floating around
in the code and they were overdue to be pulled since I had rewritten the
RSC code in the out-of-tree driver some time ago to address issues brought
up by David Miller in regards to this.

I am also now defaulting to always leaving the first buffer unmapped on any
packet and then unmapping it after we read the EOP descriptor.  This allows
a simplification of the path with less branching.

Instead of counting packets received the code was changed some time ago to
track the number of buffers received.  This leads to inaccurate counting
when you compare numbers of packets received by the hardware versus what is
tracked by the software.  To correct this I am revising things so that the
append_cnt value for RSC accurately tracks the number of frames received.

(cherry picked from commit 4c1975d77b73feed7161999aab4cc64c1ae7155c)
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: ethtool: stats user buffer overrun
John Fastabend [Sat, 28 Jan 2012 03:32:17 +0000 (03:32 +0000)]
ixgbe: ethtool: stats user buffer overrun

If the number of tx/rx queues changes the ethtool ioctl
ETHTOOL_GSTATS may overrun the userspace buffer. This
occurs because the general practice in user space to
query stats is to issue a ETHTOOL_GSSET cmd to learn the
buffer size needed, allocate the buffer, then call
ETHTOOL_GSTIRNGS and ETHTOOL_GSTATS. If the number of
real_num_queues is changed or flow control attributes
are changed after ETHTOOL_GSSET but before the
ETHTOOL_GSTRINGS/ETHTOOL_GSTATS a user space buffer
overrun occurs.

To fix the overrun always return the max buffer size
needed from get_sset_count() then return all strings
and stats from get_strings()/get_ethtool_stats().

This _will_ change the output from the ioctl() call
which could break applications and script parsing in
theory. I believe these changes should not break existing
tools because the only changes will be more {tx|rx}_queues
and the {tx|rx}_pb_* stats will always be returned.
Existing scripts already need to handle changing number
of queues because this occurs today depending on system
and current features. The {tx|rx}_pb_* stats are at the
end of the output and should be handled by scripts today
regardless.

Finally get_ethtool_stats and get_strings are free-form
outputs tools parsing these outputs should be defensive
anyways. In the end these updates are better then
having a tool segfault because of a buffer overrun.

(cherry picked from commit 9cc00b51a3cbb3b933065a55eaa9bfc306411b7a)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: dcb: up2tc mapping lost on disable/enable CEE DCB state
John Fastabend [Sat, 28 Jan 2012 01:22:35 +0000 (01:22 +0000)]
ixgbe: dcb: up2tc mapping lost on disable/enable CEE DCB state

Users expect the up2tc mapping to be maintained across a DCB
enable/disable/enable transition. And since we maintain all
the other DCB attributes we should do this for up2tc mappings
as well just to be consistent. Also without this we break
user space applications that expect this to occur that
previously worked.

(cherry picked from commit 5facb8e0c4dc1c8c47b71fd7f376defe16185733)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: do not update real num queues when netdev is going away
Yi Zou [Sat, 7 Jan 2012 08:39:50 +0000 (08:39 +0000)]
ixgbe: do not update real num queues when netdev is going away

If the netdev is already in NETREG_UNREGISTERING/_UNREGISTERED state, do not
update the real num tx queues. netdev_queue_update_kobjects() is already
called via remove_queue_kobjects() at NETREG_UNREGISTERING time. So, when
upper layer driver, e.g., FCoE protocol stack is monitoring the netdev
event of NETDEV_UNREGISTER and calls back to LLD ndo_fcoe_disable() to remove
extra queues allocated for FCoE, the associated txq sysfs kobjects are already
removed, and trying to update the real num queues would cause something like
below:

...
PID: 25138  TASK: ffff88021e64c440  CPU: 3   COMMAND: "kworker/3:3"
 #0 [ffff88021f007760] machine_kexec at ffffffff810226d9
 #1 [ffff88021f0077d0] crash_kexec at ffffffff81089d2d
 #2 [ffff88021f0078a0] oops_end at ffffffff813bca78
 #3 [ffff88021f0078d0] no_context at ffffffff81029e72
 #4 [ffff88021f007920] __bad_area_nosemaphore at ffffffff8102a155
 #5 [ffff88021f0079f0] bad_area_nosemaphore at ffffffff8102a23e
 #6 [ffff88021f007a00] do_page_fault at ffffffff813bf32e
 #7 [ffff88021f007b10] page_fault at ffffffff813bc045
    [exception RIP: sysfs_find_dirent+17]
    RIP: ffffffff81178611  RSP: ffff88021f007bc0  RFLAGS: 00010246
    RAX: ffff88021e64c440  RBX: ffffffff8156cc63  RCX: 0000000000000004
    RDX: ffffffff8156cc63  RSI: 0000000000000000  RDI: 0000000000000000
    RBP: ffff88021f007be0   R8: 0000000000000004   R9: 0000000000000008
    R10: ffffffff816fed00  R11: 0000000000000004  R12: 0000000000000000
    R13: ffffffff8156cc63  R14: 0000000000000000  R15: ffff8802222a0000
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
 #8 [ffff88021f007be8] sysfs_get_dirent at ffffffff81178c07
 #9 [ffff88021f007c18] sysfs_remove_group at ffffffff8117ac27
#10 [ffff88021f007c48] netdev_queue_update_kobjects at ffffffff813178f9
#11 [ffff88021f007c88] netif_set_real_num_tx_queues at ffffffff81303e38
#12 [ffff88021f007cc8] ixgbe_set_num_queues at ffffffffa0249763 [ixgbe]
#13 [ffff88021f007cf8] ixgbe_init_interrupt_scheme at ffffffffa024ea89 [ixgbe]
#14 [ffff88021f007d48] ixgbe_fcoe_disable at ffffffffa0267113 [ixgbe]
#15 [ffff88021f007d68] vlan_dev_fcoe_disable at ffffffffa014fef5 [8021q]
#16 [ffff88021f007d78] fcoe_interface_cleanup at ffffffffa02b7dfd [fcoe]
#17 [ffff88021f007df8] fcoe_destroy_work at ffffffffa02b7f08 [fcoe]
#18 [ffff88021f007e18] process_one_work at ffffffff8105d7ca
#19 [ffff88021f007e68] worker_thread at ffffffff81060513
#20 [ffff88021f007ee8] kthread at ffffffff810648b6
#21 [ffff88021f007f48] kernel_thread_helper at ffffffff813c40f4

(cherry picked from commit 9d837ea2b72321ffbdaf83c980923d23ae898baa)
Signed-off-by: Yi Zou <yi.zou@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 broken dependency on MAX_SKB_FRAGS being related to page size
Alexander Duyck [Thu, 10 Nov 2011 09:09:17 +0000 (09:09 +0000)]
ixgbe: Fix broken dependency on MAX_SKB_FRAGS being related to page size

This patch fixes an issue in which RSC will generate corrupted frames when
PAGE_SIZE is larger than 8K.  Specifically it looks like that in 2.6.39 a
change was made so that GRO would always have at least 16 frags available
for coalescing, but the ixgbe RSC logic was not updated.  As such the RSC
feature would generate a frame larger than 64K and then overflow the value
in the IP length field.

To correct that I am now basing things on the PAGE_SIZE.

(cherry picked from commit 642c680e9314fc102bc1f096f48ae3974931ef42)
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 case of Tx Hang in PF with 32 VFs
Greg Rose [Wed, 25 Jan 2012 07:59:37 +0000 (07:59 +0000)]
ixgbe: Fix case of Tx Hang in PF with 32 VFs

A check for the number of VFs allocated should have used a greater than
equal operator instead of just greater than.  This caused allocation of
exactly 32 VFs to not enable the PF transmit and receive enables.

(cherry picked from commit 4cd6923d3481773f3fbcae5ca940c8823aa33475)
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 agoixgbe: fix vf lookup
Greg Rose [Fri, 3 Feb 2012 00:54:13 +0000 (00:54 +0000)]
ixgbe: fix vf lookup

Recent addition of code to find already allocated VFs failed to take
account that systems with 2 or more multi-port SR-IOV capable controllers
might have already enabled VFs.  Make sure that the VFs the function is
finding are actually subordinate to the particular instance of the adapter
that is looking for them and not subordinate to some device that has
previously enabled SR-IOV.

This bug exists in 3.2 stable as well as 3.3 release candidates.

CC: stable@vger.kernel.org
Reported-by: David Ahern <daahern@cisco.com>
(cherry picked from commit a4b08329c74985e5cc3a44b6d2b2c59444ed8079)
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 agoixgbe: Fix typo in ixgbe_common.h
Masanari Iida [Mon, 23 Jan 2012 12:47:32 +0000 (12:47 +0000)]
ixgbe: Fix typo in ixgbe_common.h

Correct spelling "packtetbuf_num" to "packetbuf_num" in
drivers/net/ixgbe/ixgbe_common.h

(cherry picked from commit 542a398080ff4a2fcf6a8f3ae642dad5fbc8877e)
Signed-off-by: Masanari Iida <standby24x7@gmail.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: make ethtool strings table const
Stephen Hemminger [Thu, 5 Jan 2012 06:29:54 +0000 (06:29 +0000)]
ixgbe: make ethtool strings table const

(cherry picked from commit 1bba2e81f5575825b59146f982004415d3751e6b)
Signed-off-by: Stephen Hemminger <shemminger@vyatta.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 warning when no space left for more MAC filters
Joe Jin [Thu, 17 May 2012 14:46:20 +0000 (22:46 +0800)]
ixgbe: Add warning when no space left for more MAC filters

Send message to system log when the VF requests another MAC filter
but there is no space left on the device for it.

(backported from commit 68d6d4ab9a963cfaece88f9b4ea23be517ce46b0)
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 agoixgbe: update copyright to 2012
Don Skidmore [Fri, 6 Jan 2012 03:24:16 +0000 (03:24 +0000)]
ixgbe: update copyright to 2012

New year so bump the copyright date.

(cherry picked from commit 9497182051f261fe688bb2d672fdbc07ab3d5348)
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 module parameter to allow untested and unsafe SFP+ modules
Peter P Waskiewicz Jr [Wed, 1 Feb 2012 09:19:21 +0000 (09:19 +0000)]
ixgbe: Add module parameter to allow untested and unsafe SFP+ modules

The X520 family of network devices, with the 82599 chip, support a
small number of Intel-verified SFP+ modules on their NICs.  To maintain
stability and quality, the current devices restrict untested 3rd party
SFP+ modules.

This patch introduces a module parameter for ixgbe to allow these untested
modules at the user's peril.  It also includes a warning to the syslog
alerting users that the modules aren't supported, and results may
vary.

CC: Jesper Dangaard Brouer <hawk@comx.dk>
(cherry picked from commit 8ef78adcb03b1fcb53c3bd62df4e96c1d2706c58)
Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@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 agoixgbe: Fix register defines to correctly handle complex expressions
Alexander Duyck [Wed, 18 Jan 2012 22:13:30 +0000 (22:13 +0000)]
ixgbe: Fix register defines to correctly handle complex expressions

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

(cherry picked from commit 795be954dcc4a72329c8591aafe5eadb03b264af)
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: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: add support for new 82599 device.
Don Skidmore [Sat, 10 Dec 2011 06:49:43 +0000 (06:49 +0000)]
ixgbe: add support for new 82599 device.

This device uses an already existing DevID but since it supports
WoL we need to add the Sub DevID.  It's support of WoL is limited
to the first port.

(cherry picked from commit 0e22d0437e6dea36c867b08ceb224c1cc98a45ab)
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 new 82599 device id
Emil Tantilov [Fri, 4 Nov 2011 06:43:29 +0000 (06:43 +0000)]
ixgbe: add support for new 82599 device id

Support for new 82599 based quad port adapter.

(cherry picked from commit 9e791e4a04c08868f02cd579a428a7268492e1b4)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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 write flush in ixgbe_clock_out_i2c_byte()
Emil Tantilov [Fri, 4 Nov 2011 06:43:23 +0000 (06:43 +0000)]
ixgbe: add write flush in ixgbe_clock_out_i2c_byte()

I2C access is timing critical. Always do a write flush after writing
to the I2CCTL register.

(cherry picked from commit 176f950d310c81b7fafd96aabe53704f778ce269)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: fix typo's
Stephen Hemminger [Thu, 22 Dec 2011 16:34:52 +0000 (16:34 +0000)]
ixgbe: fix typo's

Saw typo in one message, so decided to run spell checker.

(cherry picked from commit 52f33af8ac479259f77abab6c535dac93ce654e8)
Signed-off-by: Stephen Hemminger <shemminger@vyatta.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: fix incorrect PHY register reads
Emil Tantilov [Sat, 10 Dec 2011 08:21:47 +0000 (08:21 +0000)]
ixgbe: fix incorrect PHY register reads

Fix some register reads that had the opcode and register parameters swapped.
Also use define instead of a magic (0x3) number.

(cherry picked from commit c1085b10925a3271f90cb9619f22835e701e8657)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: Remove function prototype for non-existent function
Greg Rose [Thu, 17 Nov 2011 01:48:24 +0000 (01:48 +0000)]
ixgbe: Remove function prototype for non-existent function

(cherry picked from commit 560f20dad7b46e6e8cd166d992679fc96fc50026)
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 agoixgbe: DCB: IEEE transitions may fail to reprogram hardware.
John Fastabend [Sat, 12 Nov 2011 01:12:22 +0000 (01:12 +0000)]
ixgbe: DCB: IEEE transitions may fail to reprogram hardware.

Transitioning through an IEEE DCBX version from a CEE DCBX
and back (CEE->IEEE->CEE) may leave IEEE attributes programmed
in the hardware. DCB uses a bit field in the set routines to
determine which attributes PG, PFC, APP need to be reprogrammed.
This is needed because user flow allows queueing a series
of changes and then reprogramming the hardware with the
entire set in one operation.

When transitioning from IEEE DCBX mode back into CEE DCBX
mode the PG and PFC bits need to be set so the possibly

different CEE attributes get programmed into the device.

This patch fixes broken logic that was evaluating to 0
and never setting any bits. Further this removes some
checks for num_tc in set routines. This logic only worked
when the number of traffic classes and user priorities
were equal. This is no longer the case for X540 devices.
Besides we can trust user input in this case if the
device is incorrectly configured the DCB bandwidths will
be incorrectly mapped but no OOPs, BUG, or hardware
failure will occur.

(cherry picked from commit 43497cc21889725a0fa0dcea1ce72ec567796f3a)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: DCBnl set_all, order of operations fix
Joe Jin [Thu, 17 May 2012 14:30:40 +0000 (22:30 +0800)]
ixgbe: DCBnl set_all, order of operations fix

The order of operations is important in DCBnl set_all(). When FCoE
is configured it uses the up2tc map to learn which queues to configure
the hardware offloads on. Therefore we need to setup the map before
configuring FCoE.

This is only seen when the both up2tc mappings and APP info are
configured simultaneously.

(backported from commit 4909fe979c4863bb748cd35e2cec9aab1e140a10)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 LED blink logic to check for link
Emil Tantilov [Sat, 29 Oct 2011 06:54:55 +0000 (06:54 +0000)]
ixgbe: fix LED blink logic to check for link

Previously the driver would force link without checking whether the link was
already established. This caused some inconsistencies in the LED blink rate.

Do not force link if link is already up.

(cherry picked from commit 8d233633bab501567841aaa2935963fb908c9523)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: Fix compile for kernel without CONFIG_PCI_IOV defined
Rose, Gregory V [Mon, 7 Nov 2011 07:44:17 +0000 (07:44 +0000)]
ixgbe: Fix compile for kernel without CONFIG_PCI_IOV defined

Fix compiler errors and warnings with CONFIG_PCI_IOV defined and not
defined.

(cherry picked from commit 012641082b34433dac3cbb452e0a6ceccfd4643f)
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: DCB, return max for IEEE traffic classes
John Fastabend [Wed, 19 Oct 2011 08:48:49 +0000 (08:48 +0000)]
ixgbe: DCB, return max for IEEE traffic classes

Returning the max traffic classes on get requests simplifies
user space configurations because applications will know
explicitly how many traffic classes can be used.

Typical switch implementations use 2 or 3 traffic classes
so this not seen often today. And user space can learn
the number of traffic classes by return codes but this
allows user space to configure ixgbe correctly at the
start.

(cherry picked from commit 8599e251b3dd18c7bcb342d5b4acecc420f43606)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 reading of the buffer returned by the firmware
Emil Tantilov [Sat, 22 Oct 2011 05:21:32 +0000 (05:21 +0000)]
ixgbe: fix reading of the buffer returned by the firmware

This patch fixes some issues found in the buffer read portion of
ixgbe_host_interface_command()

- use `bi` as the buffer index counter instead of `i`
- add conversion to native cpu byte ordering on register read
- fix conversion from bytes to dword
- use dword_len instead of buf_len when reading the register

(cherry picked from commit 331bcf45feb76d507a769d9d3b26ff5626804117)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: Fix compiler warnings
Greg Rose [Fri, 21 Oct 2011 07:55:15 +0000 (07:55 +0000)]
ixgbe: Fix compiler warnings

Wrap SR-IOV specific functions in CONFIG_PCI_IOV to avoid compiler
warnings.

(cherry picked from commit 9487dc844054e1fc691fb82f4e19da337e2ca35e)
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 agoixgbe: fix smatch splat due to missing NULL check
John Fastabend [Sat, 15 Oct 2011 05:00:10 +0000 (05:00 +0000)]
ixgbe: fix smatch splat due to missing NULL check

ixgbe_ieee_ets and ixgbe_ieee_pfc are intialized at
the same time. Do a check for both before configuring
IEEE802.1Qaz. Also max_frame was causing a sparse
warning resolved here as well.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
(cherry picked from commit b120818e652965669d3f1abaeaa5c3ccdfb28126)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 disabling of Tx laser at probe
Emil Tantilov [Wed, 19 Oct 2011 07:59:55 +0000 (07:59 +0000)]
ixgbe: fix disabling of Tx laser at probe

register_netdev() calls ndo_set_features() which may result in HW reset
which in turn will bring the laser back up.

This patch moves ixgbe_laser_tx_disable() below register_netdev()
in ixgbe_probe() to make sure laser is shut off on load.

(cherry picked from commit 93d3ce8fafb888702311fc8c5917faa4c25b8266)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: Fix link issues caused by a reset while interface is down
Emil Tantilov [Wed, 19 Oct 2011 07:41:58 +0000 (07:41 +0000)]
ixgbe: Fix link issues caused by a reset while interface is down

Interface fails to obtain link on 82599 SFP in the following scenario:

1. Set advertised speed to GB:
ethtool -s eth0 advertise 0x20

2. Bring interface down
ip link set eth0 down

3. Issue any command that leads to a reset:
ethtool -t eth0

4. Bring link back up:
ip link set eth0 up

Following patch makes sure that the driver flaps the Tx laser every time
ixgbe_start_hw() is called, and not only when the speed is set.

(cherry picked from commit 232ef6bc451de2bc17c22fd116838cd89b94e1c1)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: change the eeprom version reported by ethtool
Emil Tantilov [Thu, 29 Sep 2011 05:01:29 +0000 (05:01 +0000)]
ixgbe: change the eeprom version reported by ethtool

Use 32bit value starting at offset 0x2d for displaying the firmware
version in ethtool. This should work for all current ixgbe HW

(cherry picked from commit 15e5209f1c606e7c3e9b268f5c7b70b414a859cb)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: allow eeprom writes via ethtool
Emil Tantilov [Thu, 6 Oct 2011 08:57:04 +0000 (08:57 +0000)]
ixgbe: allow eeprom writes via ethtool

Implement support for ethtool -E

(cherry picked from commit 2fa5eef4d11383f1cfa99d31275e77dcf2d6a0a9)
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@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 endianess when writing driver version to firmware
Emil Tantilov [Tue, 11 Oct 2011 08:24:57 +0000 (08:24 +0000)]
ixgbe: fix endianess when writing driver version to firmware

This patch makes sure that register writes are in little endian and
also converts the reads back to big-endian.

(cherry picked from commit 79488c58bb5aef58cfba1917617acf0db21c23a9)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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 skb truesize underestimation
Eric Dumazet [Thu, 13 Oct 2011 07:59:41 +0000 (07:59 +0000)]
ixgbe: fix skb truesize underestimation

ixgbe allocates half a page per skb fragment. We must account
PAGE_SIZE/2 increments on skb->truesize, not the actual frag length.

(cherry picked from commit 98130646770db42cd14c44ba0d7f2d0eb8078820)
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: 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 agoixgbe: Correct check for change in FCoE priority
Mark Rustad [Tue, 20 Sep 2011 03:00:22 +0000 (03:00 +0000)]
ixgbe: Correct check for change in FCoE priority

Correct a check for change in FCoE priority when IEEE mode DCB is in use.
In IEEE mode a different function has to be used to get the FCoE priority
mask. Also, the check for the mask assumed that only one priority was set.
In case there should be more than one, check just the bit.

These changes help avoid link flapping issues that can come up when IEEE
DCB is in use.

(cherry picked from commit 15d447ecaff457e6f89b459e70c0770b35b35533)
Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 FCoE DDP allocation failure counters to ethtool stats.
Amir Hanania [Wed, 31 Aug 2011 02:07:55 +0000 (02:07 +0000)]
ixgbe: Add FCoE DDP allocation failure counters to ethtool stats.

Add 2 new counters to ethtool:
1. Count DDP allocation failure since we max the number of buffers
allowed in one DDP context.
2. Count DDP allocation failure since we max the number of buffers
allowed in one DDP context when we alloc an extra buffer.

(cherry picked from commit 7b859ebc0a69a7d142f705bd4a8e5720b810f718)
Signed-off-by: Amir Hanania <amir.hanania@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 protection from VF invalid target DMA
Greg Rose [Wed, 7 Sep 2011 05:59:35 +0000 (05:59 +0000)]
ixgbe: Add protection from VF invalid target DMA

It is possible for a VF to set an invalid target DMA address in its
Tx/Rx descriptor buffer pointers.  The workarounds in this patch
will guard against such an event and issue a VFLR to the VF in response.
The VFLR will shut down the VF until an administrator can take action
to investigate the event and correct the problem.

(cherry picked from commit 83c61fa97a7d4ef16506a760f9e52b3144978346)
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: bump version number
Don Skidmore [Fri, 7 Oct 2011 03:53:51 +0000 (03:53 +0000)]
ixgbe: bump version number

Bump the version string to better match pair up with the out of tree
driver that contains the same functionality.

(cherry picked from commit 19d478bbe690a37489f58843dec20a456573d89f)
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: X540 devices RX PFC frames pause traffic even if disabled
John Fastabend [Wed, 21 Sep 2011 14:44:10 +0000 (14:44 +0000)]
ixgbe: X540 devices RX PFC frames pause traffic even if disabled

Receiving PFC (priority flow control) frames while the feature
is off should not pause the traffic class. On the X540 devices
the traffic class react to frames if it was previously enabled
because the field is incorrectly cleared.

(cherry picked from commit 6b8456c0199c4dd35bb7a04ff299ab925699e390)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: DCB X540 devices support max traffic class of 4
John Fastabend [Tue, 27 Sep 2011 03:52:01 +0000 (03:52 +0000)]
ixgbe: DCB X540 devices support max traffic class of 4

X540 devices can only support up to 4 traffic classes and
guarantee a "lossless" traffic class on some platforms.
This patch sets the X540 devices to initialize a max
traffic class value of 4 at probe time.

(cherry picked from commit 4de2a0224ae3c437e8a090b6ec8d304a7edff049)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: fixup hard dependencies on supporting 8 traffic classes
Joe Jin [Thu, 17 May 2012 14:17:12 +0000 (22:17 +0800)]
ixgbe: fixup hard dependencies on supporting 8 traffic classes

This patch correctly configures DCB when less than 8 traffic classes
are available in hardware.

(cherry picked from commit 32701dc2e616ca64e3d24b41c78671c4528671c1)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 PFC mask generation
Mark Rustad [Tue, 20 Sep 2011 03:00:27 +0000 (03:00 +0000)]
ixgbe: Fix PFC mask generation

Fix PFC mask generation to OR in only a single bit for each priority in
the PFC mask returned via netlink.

(cherry picked from commit 2ad30e2633430717dbdf857962ba0c697dc471ef)
Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599
Emil Tantilov [Wed, 21 Sep 2011 09:02:50 +0000 (09:02 +0000)]
ixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599

82598 and 82599 do not ship with this type of PHY

(cherry picked from commit 3e7307fc7b24120dcf795dd1b21fdc6286c48b4c)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: get pauseparam autoneg
Mika Lansirinne [Fri, 16 Sep 2011 16:52:59 +0000 (16:52 +0000)]
ixgbe: get pauseparam autoneg

There is a problem in the ixgbe driver with the reporting of the flow
control parameters. The autoneg parameter is shown to be of if
*either* it really is off, or current modes for both tx and rx are off.

The problem is seen when the parameters are read or set when the link
is down. In this case, the driver sees that tx and rx are currently off
and therefore autoneg parameter is incorrectly reported to be off too.
Also, the ethtool binary can not set the autoneg off since it sees that
it already is. When a link later comes up, the autonegotiation is
carried out normally and the driver later on reports the autoneg
parameter to be on (as it is) and then it can also be changed with
ethtool.

The patch is made against v3.0 kernel, but the problem seems to be there
since v2.6.30-rc1.

Reviewer comments: What we are trying to do is to disable flow control
while the cable is disconnected. Since ixgbe defaults to full flow
control, we call ethtool -A autoneg off rx off tx off while the cable
is disconnected. This doesn't work, because the driver sets
hw->fc.current_mode = ixgbe_fc_none if the cable is unplugged.
ixgbe_get_pauseparam() then reports to ethtool that nothing needs to be
done. The code fixes this, but it might have some unknown consequences.

(cherry picked from commit 860502bf68bae1ab126fe25a72d038c6e205dedd)
Signed-off-by: Mika Lansirinne <mika.lansirinne@stonesoft.com>
Reviewed-by: Esa-Pekka Pyokkimies <esa-pekka.pyokkimies@stonesoft.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: do not disable flow control in ixgbe_check_mac_link
Emil Tantilov [Fri, 16 Sep 2011 06:27:56 +0000 (06:27 +0000)]
ixgbe: do not disable flow control in ixgbe_check_mac_link

Disabling flow control in ixgbe_check_mac_link() results in incorrect
reporting by ethtool when link goes down, so remove it.

(cherry picked from commit 837617a580d5b61ca7a0a0cfe74ba9276e94c0ed)
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: send MFLCN to ethtool
Emil Tantilov [Thu, 15 Sep 2011 06:23:10 +0000 (06:23 +0000)]
ixgbe: send MFLCN to ethtool

MFLCN register is used to set Rx flow control on parts newer than 82598.

This patch sends the value of MFLCN to ethtool, so it can be used in a
register dump (ethtool -d).

(cherry picked from commit 217995ecd04999284ba4c5745e789314ea99e54f)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: add support for new 82599 device
Emil Tantilov [Thu, 8 Sep 2011 08:30:14 +0000 (08:30 +0000)]
ixgbe: add support for new 82599 device

This patch adds support for new device ID.

(cherry picked from commit 7d145282da8d1ae4ba5f7ead8a4f51183496803c)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: fix driver version initialization in firmware
Jacob Keller [Thu, 8 Sep 2011 03:50:54 +0000 (03:50 +0000)]
ixgbe: fix driver version initialization in firmware

This patch fixes an issue with storing the driver version for the
firmware. If the os does not support the particular firmware
management tools, the firmware requires a driver version to be written
as 0xFFFFFFFF rather than the actual driver version.

(cherry picked from commit 2466dd9ca11ea9e4400eb8477a9df2a0fe539d47)
Signed-off-by: Jacob Keller <jacob.e.keller@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: remove return code for functions that always return 0
Emil Tantilov [Sat, 27 Aug 2011 07:18:47 +0000 (07:18 +0000)]
ixgbe: remove return code for functions that always return 0

Since ixgbe_raise_i2c_clk() can never return anything else than 0
this patch removes it's return value and all checks for it.

(cherry picked from commit e1befd774a049bdc85cf0ed5b307f913b33e1691)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: clear the data field in ixgbe_read_i2c_byte_generic
Emil Tantilov [Tue, 30 Aug 2011 13:33:51 +0000 (13:33 +0000)]
ixgbe: clear the data field in ixgbe_read_i2c_byte_generic

Clear the data field in ixgbe_read_i2c_byte_generic so it does not
accumulate 1 bit using the same variable multiple times.

(cherry picked from commit 3fbaa3ac0d47e0cbad9bb65f0b71a5ce3ef1b76c)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: prevent link checks while resetting
Emil Tantilov [Sat, 27 Aug 2011 07:18:37 +0000 (07:18 +0000)]
ixgbe: prevent link checks while resetting

It some situations the driver sets __IXGBE_RESETTING and then
__IXGBE_DOWN flags. It is possible a link check may sneak in
between.

This patch adds check for both flags.
The idea is to reduce register reads while the PHY is resetting.

(cherry picked from commit 7edebf9a6aac07e2ebb3901b60672293a7139ad0)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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 ECC warning for legacy interrupts
Don Skidmore [Thu, 4 Aug 2011 02:07:48 +0000 (02:07 +0000)]
ixgbe: add ECC warning for legacy interrupts

Noticed that the legacy Interrupt handler didn't have the same
ECC warning as did the MSI.  So this patch adds it.

(cherry picked from commit 0ccb974df5ac5f721491c1f07154450168b6fd0a)
Signed-off-by: Don Skidmore <donald.c.skidmore>
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: cleanup ixgbe_setup_gpie() for X540
Don Skidmore [Wed, 17 Aug 2011 10:15:21 +0000 (10:15 +0000)]
ixgbe: cleanup ixgbe_setup_gpie() for X540

The X540 thermal sensor interrupt isn't a General Purpose Interrupt
so doesn't need to be enabled in ixgbe_setup_gpie().  Likewise X540 doesn't
use the SDP0 for thermal sensor so it doesn't need to be enabled for any
device other than 82599.

(cherry picked from commit f3df98ec9e8ed127456a601f99619c88e9d6017f)
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 thermal sensor support for x540 hardware
Jacob Keller [Sat, 20 Aug 2011 04:49:45 +0000 (04:49 +0000)]
ixgbe add thermal sensor support for x540 hardware

Add code to enable thermal sensors for the x540 hardware, as well as a
thermal interrupt check which will exit with a critical message of a
thermal overheat is detected. Intent of code allows other mac types to
be added with different configuration in the future.

Fixed in this version is the addition of setting the temp_sensor
capable flag which was previously only set for a specific mac.

(cherry picked from commit 4f51bf702395ab45aa68e6b702df2728cc7fe344)
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: update {P}FC thresholds to account for X540 and loopback
John Fastabend [Tue, 23 Aug 2011 03:14:22 +0000 (03:14 +0000)]
ixgbe: update {P}FC thresholds to account for X540 and loopback

Revise high and low threshold marks wrt flow control to account
for the X540 devices and latency introduced by the loopback
switch.

Without this it was in theory possible to drop frames on a
supposedly lossless link with X540 or SR-IOV enabled.

Previously we used a magic number in a define to calculate the
threshold values. This made it difficult to sort out exactly
which latencies were or were not being accounted for. Here
I was overly explicit and tried to used #define names that would
be recognizable after reading the IEEE 802.1Qbb specification.

(cherry picked from commit 9da712d2ede7e3e3a0da180351505310ee271773)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: disable LLI for FCoE
Vasu Dev [Thu, 18 Aug 2011 06:20:07 +0000 (06:20 +0000)]
ixgbe: disable LLI for FCoE

Disable LLI for FCoE since regular interrupt
and their moderation rate works slightly better
for FCoE also.

(cherry picked from commit 934c18cc5a2318f525a187e77a46d559d3b8cb44)
Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 q_vector interrupt throttle rate logic
Emil Tantilov [Wed, 31 Aug 2011 00:01:16 +0000 (00:01 +0000)]
ixgbe: Cleanup q_vector interrupt throttle rate logic

This patch is meant to help cleanup the interrupt throttle rate logic by
storing the interrupt throttle rate as a value in microseconds instead of
interrupts per second.  The advantage to this approach is that the value
can now be stored in an 16 bit field and doesn't require as much math to
flip the value back and forth since the hardware already used microseconds
when setting the rate.

(cherry picked from commit d5bf4f67a6b414628dc95b9c4891525296c09a29)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: remove global reset to the MAC
Emil Tantilov [Tue, 16 Aug 2011 08:04:11 +0000 (08:04 +0000)]
ixgbe: remove global reset to the MAC

Reloading FW during resets can cause issues. Remove the full reset
as it is not needed.

(cherry picked from commit 8c838d7384c6e5c0583ec6bbb2e6f6dba19feda1)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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 WOL support for X540
Emil Tantilov [Tue, 16 Aug 2011 07:34:18 +0000 (07:34 +0000)]
ixgbe: add WOL support for X540

Add support for WOL as determined by the EEPROM.

(cherry picked from commit c23f5b6bbb5ba73cafdb354dcace17426fef4d38)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: avoid HW lockup when adapter is reset with Tx work pending
Emil Tantilov [Tue, 16 Aug 2011 04:35:11 +0000 (04:35 +0000)]
ixgbe: avoid HW lockup when adapter is reset with Tx work pending

This change is meant to avoid a hardware lockup when Tx work is still
pending and we request a reset.

(cherry picked from commit ff9d1a5aefa70ef161a5716f44ad2c24957db7c8)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: dcb, set priority to traffic class mappings
John Fastabend [Thu, 4 Aug 2011 07:15:55 +0000 (07:15 +0000)]
ixgbe: dcb, set priority to traffic class mappings

This patch adds support for configuring the priority to
traffic class mapping.

(cherry picked from commit e886c44f7b4da15182368a25a15984c9da727bd4)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 X540 interrupt enablement
Don Skidmore [Thu, 4 Aug 2011 09:28:30 +0000 (09:28 +0000)]
ixgbe: cleanup X540 interrupt enablement

We don't need SFP+ plugable support for X540 hardware (copper only) so
don't enable the SFP+ interrupts.

(cherry picked from commit 858bc081d3300eaef805e64d7105ed82ca1c5770)
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: DCB, do not call set_state() from IEEE mode
Joe Jin [Thu, 17 May 2012 14:10:23 +0000 (22:10 +0800)]
ixgbe: DCB, do not call set_state() from IEEE mode

The DCB CEE command set_state() will complete successfully
but is misleading because it enables IEEE mode. After
this patch the command is failed.

And IEEE PFC/ETS is managed from ieee paths now instead
of using CEE primitives.

(cherry picked from commit 4c09f3a0674119504af4e5805b327213055c412f)
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
13 years agoixgbe: Reconfigure SR-IOV Init
Greg Rose [Wed, 24 Aug 2011 02:37:55 +0000 (02:37 +0000)]
ixgbe: Reconfigure SR-IOV Init

Use the PCI device flag indicating if a VF is assigned to a guest VM
to guard against destroying VFs upon driver removal.  Implement
additional feature to detect if VFs already exist when the driver
is loaded and if so configure them and set the driver state to
SR-IOV enabled.

(cherry picked from commit c6bda30a06d925b68d86e61c289d3ce980d4a36c)
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: remove duplicate netif_tx_start_all_queues
Emil Tantilov [Thu, 28 Jul 2011 06:17:09 +0000 (06:17 +0000)]
ixgbe: remove duplicate netif_tx_start_all_queues

netif_tx_start_all_queues() is already called in ixgbe_up_complete, no need
to do it twice.

(cherry picked from commit ae0e148934fe016ce3fc70cacee7431ff053a2ee)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: fix FCRTL/H register dump for X540
Emil Tantilov [Wed, 27 Jul 2011 04:16:29 +0000 (04:16 +0000)]
ixgbe: fix FCRTL/H register dump for X540

(cherry picked from commit 80bb25e3eb73f4fdde48ee017da04b947cec8b90)
Signed-off-by: Emil Tantilov <emil.s.tantilov@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: cleanup some register reads
Emil Tantilov [Tue, 26 Jul 2011 07:51:41 +0000 (07:51 +0000)]
ixgbe: cleanup some register reads

Remove duplicate inc of hwstats->ruc
Introduce separate loops for 8 and 16 register reads.
Consolidate mac checks under one case.
Make sure registers are cleared on read.

Reported-by: Jonathan Lynch <jonathan.lynch@thenowfactory.com>
(cherry picked from commit 1a70db4b05fcaa976b625d47fba5e6cc2d89b0ae)
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
CC: Jonathan Lynch <jonathan.lynch@thenowfactory.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: Make better use of memory allocations in one-buffer mode w/ RSC
Alexander Duyck [Fri, 26 Aug 2011 09:52:38 +0000 (09:52 +0000)]
ixgbe: Make better use of memory allocations in one-buffer mode w/ RSC

This patch improves the memory utilization with RSC when in one-buffer
mode.  This is accomplished by making the default buffer sizes match up
with the standard memory allocation sizes minus 1K for shared info and
padding overhead.  By doing this CPU utilization when doing large receives
can be reduced by as much as 8%.

(cherry picked from commit 919e78a6b890bdcce8ca0fa699bd361c6f24dc94)
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: drop adapter from ixgbe_fso call documentation
Alexander Duyck [Thu, 21 Jul 2011 00:40:56 +0000 (00:40 +0000)]
ixgbe: drop adapter from ixgbe_fso call documentation

The adapter structure was removed from the call so it can be dropped from
the ixgbe_fso documentation.

(cherry picked from commit 398fe4a916be0eea64572f2a7982e0aa564ef821)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@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 SFP support for missed 82598 PHY
Alexander Duyck [Thu, 21 Jul 2011 00:40:51 +0000 (00:40 +0000)]
ixgbe: Add SFP support for missed 82598 PHY

One of the 82598 phys was not being correctly identified as being SFP.
This change corrects that.

(cherry picked from commit 8917b447b75818823f4d0b7dc8cdd9248a4d5445)
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: Add missing code for enabling overheat sensor interrupt
Alexander Duyck [Thu, 21 Jul 2011 00:40:45 +0000 (00:40 +0000)]
ixgbe: Add missing code for enabling overheat sensor interrupt

This change adds a small bit of missing code for enabling the overheat sensor

(cherry picked from commit 5fdd31f920a5ec8873929750d83ffa777bed6100)
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: make ixgbe_up and ixgbe_up_complete void functions
Alexander Duyck [Thu, 21 Jul 2011 00:40:40 +0000 (00:40 +0000)]
ixgbe: make ixgbe_up and ixgbe_up_complete void functions

ixgbe_up and ixgbe_up_complete will always return 0.  Since this doesn't
provide any useful information we might as well just make them both void
and save ourselves from having to return an unused value.

(cherry picked from commit c7ccde0f8392516576afe291b06c5527b7ad90de)
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 agov2 ixgbe: Update packet buffer reservation to correct fdir headroom size
Alexander Duyck [Thu, 21 Jul 2011 00:40:35 +0000 (00:40 +0000)]
v2 ixgbe: Update packet buffer reservation to correct fdir headroom size

This change fixes an issue in which the incorrect amount of headroom was
being reserved for flow director filters.

(cherry picked from commit f7e1027f61c40eca1acc36e806b8db4cad01f221)
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>