Blame README.PATCH-POLICY.SUSE

Bernhard M. Wiedemann 6ebc4a
SUSE Linux Enterprise Patch Policy
Bernhard M. Wiedemann 6ebc4a
----------------------------------
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Summary
Bernhard M. Wiedemann 6ebc4a
-------
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The SUSE Linux Enterprise (SLE) patch policy mirrors the mainline Linux
Bernhard M. Wiedemann 6ebc4a
community's policy for accepting changes.  Each commit must contain a
Bernhard M. Wiedemann 6ebc4a
small and "obvious" change that can be reviewed individually and, once
Bernhard M. Wiedemann 6ebc4a
applied, be able to be used as a bisection point.  The kernel should be
Bernhard M. Wiedemann 6ebc4a
able to build (and boot) between each applied patch.  Since the SLE
Bernhard M. Wiedemann 6ebc4a
kernel is based on an official upstream kernel release and is followed by
Bernhard M. Wiedemann 6ebc4a
a hardening process, we expect that nearly all of the patches applied to the
Bernhard M. Wiedemann 6ebc4a
base release will be from subsequent official upstream releases indended to
Bernhard M. Wiedemann 6ebc4a
address specific issues or to allow for hardware/feature enablement.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Background
Bernhard M. Wiedemann 6ebc4a
----------
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Before covering the policy itself, we'll discuss a bit of background on
Bernhard M. Wiedemann 6ebc4a
how the source code tree is organized.  If you've used the SLE kernel source
Bernhard M. Wiedemann 6ebc4a
(kernel-source.git[1]) tree before, you've probably noticed that, unlike
Bernhard M. Wiedemann 6ebc4a
the mainline Linux kernel, we don't use a source-level git repository as
Bernhard M. Wiedemann 6ebc4a
our "base."  Instead, we use an official kernel.org Linux tar archive as
Bernhard M. Wiedemann 6ebc4a
the base and add a series of patches on top of it.  This carries with it
Bernhard M. Wiedemann 6ebc4a
several benefits.  The biggest is that we add metadata "tags" to our
Bernhard M. Wiedemann 6ebc4a
patches that allow us to easily associate patches with particular feature
Bernhard M. Wiedemann 6ebc4a
requests, bug reports, and/or the pedigree of the patch.  Due to the nature
Bernhard M. Wiedemann 6ebc4a
of some of our feature requests, we also must occasionally carry patches
Bernhard M. Wiedemann 6ebc4a
that, for one reason or another, haven't been accepted into the mainline
Bernhard M. Wiedemann 6ebc4a
kernel repository yet.  With a full (published[2]) git repository, it would
Bernhard M. Wiedemann 6ebc4a
be difficult to associate the initial commit for a particular feature with
Bernhard M. Wiedemann 6ebc4a
any subsequent changes to it.  Another benefit is more superficial: with the
Bernhard M. Wiedemann 6ebc4a
use of separate patches, we (and our users) are able to tell, at a glance,
Bernhard M. Wiedemann 6ebc4a
which patches are in any given kernel release simply by looking at
Bernhard M. Wiedemann 6ebc4a
the source package.  Patches are grouped into subsystems (including
Bernhard M. Wiedemann 6ebc4a
architecture, "core" vm/scheduler, VFS, individual file systems, driver
Bernhard M. Wiedemann 6ebc4a
core, networking core, block layer, and leaf drivers) so finding patches
Bernhard M. Wiedemann 6ebc4a
that affect a particular part of the kernel can be easily found.  Patches
Bernhard M. Wiedemann 6ebc4a
are placed in directories such as patches.fixes, patches.suse, etc.  When
Bernhard M. Wiedemann 6ebc4a
submitting patches for inclusion, it's not necessary to choose a directory.
Bernhard M. Wiedemann 6ebc4a
We'll put them in the appropriate place.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Historically, this approach has worked well but has limited options for
Bernhard M. Wiedemann 6ebc4a
typical debugging techniques such as bisection.  The application of the
Bernhard M. Wiedemann 6ebc4a
patch series results in our fully operational SLE kernel but stopping
Bernhard M. Wiedemann 6ebc4a
the patch series midway can result in an unbuildable source tree.  
Bernhard M. Wiedemann 6ebc4a
Beginning with the SLE11 SP2 development cycle, we've published a fully
Bernhard M. Wiedemann 6ebc4a
expanded git repository (kernel.git[2]) that exactly represents the code
Bernhard M. Wiedemann 6ebc4a
as if it were originally used as a standard source code tree repository.
Bernhard M. Wiedemann 6ebc4a
This allows us to work with the individual patches *and* have the ability
Bernhard M. Wiedemann 6ebc4a
to bisect the tree as the changes are applied.  It also makes it easier for
Bernhard M. Wiedemann 6ebc4a
partners unfamiliar with how our source tree works to make the transition.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Format
Bernhard M. Wiedemann 6ebc4a
------
Bernhard M. Wiedemann 6ebc4a
The SLE patch format follows very closely what you would see on any
Bernhard M. Wiedemann 6ebc4a
mailing list associated with Linux kernel development.  A SLE patch is
Bernhard M. Wiedemann 6ebc4a
formatted like an RFC822 mbox-style mail message, with a few extensions.
Bernhard M. Wiedemann 6ebc4a
If the patch is coming from the mainline Linux repository or a subsystem
Bernhard M. Wiedemann 6ebc4a
maintainer repository, SUSE has tools published here[3] that can make
Bernhard M. Wiedemann 6ebc4a
adding these tags nearly painless.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Each patch should contain the "From" and "Subject" headers found in any
Bernhard M. Wiedemann 6ebc4a
email message.  The From should contain the name and email address of the
Bernhard M. Wiedemann 6ebc4a
patch author.  The Subject should contain a short description of the
Bernhard M. Wiedemann 6ebc4a
patch, prefixed with the subsystem affected.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
e.g.
Bernhard M. Wiedemann 6ebc4a
From: Jeff Mahoney <jeffm@suse.com>
Bernhard M. Wiedemann 6ebc4a
Subject: init: print hello world at boot time
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Beyond that, we require several more headers, the full description of
Bernhard M. Wiedemann 6ebc4a
the patch, the certification tags used in the mainline kernel, and the patch
Bernhard M. Wiedemann 6ebc4a
contents.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The headers we require are as follows:
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Git-commit: [a-f0-9]{40}
Bernhard M. Wiedemann 6ebc4a
- Contains the SHA-1 git commit ID of the patch in either the mainline
Bernhard M. Wiedemann 6ebc4a
  kernel repository[4] or an official maintainer repository.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Git-repo: URL-to-git-repo (starting with git://)
Bernhard M. Wiedemann 6ebc4a
- The URL to the git repository containing the commit.  This tag can be
Bernhard M. Wiedemann 6ebc4a
  omitted if the commit is from the mainline kernel repository.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Patch-mainline: vMajor.Minor.Patch{-optional-rc}
Bernhard M. Wiedemann 6ebc4a
- The official kernel release that contains this patch.  In the case of a
Bernhard M. Wiedemann 6ebc4a
  patch accepted into a maintainer branch, "Queued in subsystem
Bernhard M. Wiedemann 6ebc4a
  maintainer repo" can be used.  If the patch has been submitted to a
Bernhard M. Wiedemann 6ebc4a
  subsystem mailing list for review and is nearly certain to be accepted,
Bernhard M. Wiedemann 6ebc4a
  "Submitted <date> <list@site.org>" can be used.  Otherwise, if the
Bernhard M. Wiedemann 6ebc4a
  patch will never be in the upstream kernel, e.g. in the case of
Bernhard M. Wiedemann 6ebc4a
  vendor-specific
Bernhard M. Wiedemann 6ebc4a
  version numbers, etc, then "No" followed by the reason why it will
Bernhard M. Wiedemann 6ebc4a
  not be accepted (or submitted).  Please note that the reason must be
Bernhard M. Wiedemann 6ebc4a
  compelling for it to be allowed into our kernel repository.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
References: list of references
Bernhard M. Wiedemann 6ebc4a
- There must be a reason for each patch to be included into the kernel
Bernhard M. Wiedemann 6ebc4a
  repository.  It can be a fix in response to a bug report or a patch
Bernhard M. Wiedemann 6ebc4a
  submitted as part of the feature development cycle for a release.  We
Bernhard M. Wiedemann 6ebc4a
  use a shorthand to indicate why a particular patch will be included
Bernhard M. Wiedemann 6ebc4a
  and it's possible to use more than one.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
  For Feature requests, the feature will have to have gone through our
Bernhard M. Wiedemann 6ebc4a
  feature tracking tool, FATE.  Each feature request will have an ID
Bernhard M. Wiedemann 6ebc4a
  associated with it and it can be added to the References tag using
Bernhard M. Wiedemann 6ebc4a
  FATE#number, e.g. FATE#12345.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
  For fixes for bug reports (or patches for feature requests submitted
Bernhard M. Wiedemann 6ebc4a
  via Bugzilla, the shorthand is bnc#number.  bnc is shorthand for
Bernhard M. Wiedemann 6ebc4a
  bugzilla.novell.com.  There are others such as bko, for
Bernhard M. Wiedemann 6ebc4a
  bugzilla.kernel.org.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Next is the full description of the patch, which should explain why the
Bernhard M. Wiedemann 6ebc4a
patch is needed and an overview of what it does. 
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The last "header" portion of the patch contains the certification tags, which
Bernhard M. Wiedemann 6ebc4a
consist of "Signed-off-by" and "Acked-by." We, and the upstream Linux
Bernhard M. Wiedemann 6ebc4a
community depend on patch submitters to "own" their submission and certify
Bernhard M. Wiedemann 6ebc4a
they have the right to submit code to the kernel repository.  For patches
Bernhard M. Wiedemann 6ebc4a
coming from the mainline Linux kernel repository, the certification tags
Bernhard M. Wiedemann 6ebc4a
are already in place and we only need the submitter's tag added (if not
Bernhard M. Wiedemann 6ebc4a
already part of the original patch).  Likewise, the SUSE engineer who
Bernhard M. Wiedemann 6ebc4a
includes the submission in our kernel tree, will add their own "Acked-by"
Bernhard M. Wiedemann 6ebc4a
tag.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
There may be an optional diffstat -p1 output added before the patch content.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The patch content itself should be in "-ab" format where the patch header
Bernhard M. Wiedemann 6ebc4a
itself only contains the filename without any timestamps.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Here's an example of a complete patch:
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
-------->8--------
Bernhard M. Wiedemann 6ebc4a
From: Upstream Committer <coder@somesite.com>
Bernhard M. Wiedemann 6ebc4a
Subject: init: print hello world on boot
Bernhard M. Wiedemann 6ebc4a
Patch-mainline: v3.8-rc1
Bernhard M. Wiedemann 6ebc4a
Git-commit: deadbeefc0ffeeb1a4b1a4b1a4b1a4b1a4b1a4b1a4
Bernhard M. Wiedemann 6ebc4a
References: FATE#12134 bnc#23123
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The kernel started off like every other project.  Let's add the hello
Bernhard M. Wiedemann 6ebc4a
world message in honor of its roots.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Signed-off-by: Upstream Committer <coder@somesite.com>
Bernhard M. Wiedemann 6ebc4a
Tested-by: Bill User <bill.user@example.com>
Bernhard M. Wiedemann 6ebc4a
Acked-by: Jeff Mahoney <jeffm@suse.com>
Bernhard M. Wiedemann 6ebc4a
---
Bernhard M. Wiedemann 6ebc4a
 init/main.c |    1 +
Bernhard M. Wiedemann 6ebc4a
 1 file changed, 1 insertion(+)
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
--- a/init/main.c
Bernhard M. Wiedemann 6ebc4a
+++ b/init/main.c
Bernhard M. Wiedemann 6ebc4a
@@ -807,6 +807,7 @@ static noinline int init_post(void)
Bernhard M. Wiedemann 6ebc4a
        system_state = SYSTEM_RUNNING;
Bernhard M. Wiedemann 6ebc4a
        numa_default_policy();
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
+       printk("Hello world!\n");
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
        current->signal->flags |= SIGNAL_UNKILLABLE;
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
--------8<--------
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Patch Inclusion Rules
Bernhard M. Wiedemann 6ebc4a
---------------------
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
As mentioned in the summary, we expect that most patches to the SLE kernel
Bernhard M. Wiedemann 6ebc4a
will come from subsequent official upstream kernel releases or from subsystem
Bernhard M. Wiedemann 6ebc4a
maintainer repositories (which imply that the patch will ultimately be
Bernhard M. Wiedemann 6ebc4a
a part of an official upstream Linux release).  The SLE kernel contains
Bernhard M. Wiedemann 6ebc4a
hardware enablement driver enhancement/backports for a wide range of devices
Bernhard M. Wiedemann 6ebc4a
offered by many vendors.  In many cases, the drivers are self-contained
Bernhard M. Wiedemann 6ebc4a
but many others have shared dependencies on common infrastructure.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The shared dependencies on common infrastructure combined with the need
Bernhard M. Wiedemann 6ebc4a
to be able to bisect the resulting kernel means that we must require
Bernhard M. Wiedemann 6ebc4a
all partners to submit patch series consisting of individual patches that
Bernhard M. Wiedemann 6ebc4a
match upstream commits.  In the case where a commit affects multiple drivers,
Bernhard M. Wiedemann 6ebc4a
it is acceptable to only contain the portions that effect a particular
Bernhard M. Wiedemann 6ebc4a
driver as long as it is annotated by appending "(partial)" to the Git-commit
Bernhard M. Wiedemann 6ebc4a
line and documenting what is included or dropped.  An example using the
Bernhard M. Wiedemann 6ebc4a
patch tools is included below.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Tools
Bernhard M. Wiedemann 6ebc4a
-----
Bernhard M. Wiedemann 6ebc4a
We understand that there are a bunch of rules to follow and that implementing
Bernhard M. Wiedemann 6ebc4a
them all can be tedious.  We have a set of tools, published here[3], to make
Bernhard M. Wiedemann 6ebc4a
working with the patches a lot easier.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
There are two tools: fixpatch and exportpatch.  Fixpatch will add missing
Bernhard M. Wiedemann 6ebc4a
headers and formatting to existing patches, assuming there's at least a
Bernhard M. Wiedemann 6ebc4a
Git-commit tag present.  Exportpatch, given a list of commit IDs on the
Bernhard M. Wiedemann 6ebc4a
commandline, will search for each commit in the configured repositories
Bernhard M. Wiedemann 6ebc4a
and export the patches.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
There are several command line options that are useful.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
-w|--write -- will write out each commit into a separate file.  The filenames
Bernhard M. Wiedemann 6ebc4a
              are based on the subject of the header and the filenames will
Bernhard M. Wiedemann 6ebc4a
	      be output on stdout for use directly in a series file.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
-d DIR|--dir=DIR -- will write out each commit into a designated directory.
Bernhard M. Wiedemann 6ebc4a
                    The default is to write into the current directory.
Bernhard M. Wiedemann 6ebc4a
-f|--force -- By default exportpatch will not export commits that are local
Bernhard M. Wiedemann 6ebc4a
	      to the repository on disk.  It will also refuse to overwrite
Bernhard M. Wiedemann 6ebc4a
	      existing patch files.  This option overrides these checks.
Bernhard M. Wiedemann 6ebc4a
-F REF|--reference=REFERENCE -- Adds References automatically and can be
Bernhard M. Wiedemann 6ebc4a
			        specified multiple times.
Bernhard M. Wiedemann 6ebc4a
-x EXTRACT | --extract EXTRACT -- It it sometimes desirable to split out
Bernhard M. Wiedemann 6ebc4a
				  chunks of patches that affect only a
Bernhard M. Wiedemann 6ebc4a
				  particular section of the code.  This option
Bernhard M. Wiedemann 6ebc4a
				  accepts pathnames to extract.  Anything
Bernhard M. Wiedemann 6ebc4a
				  not specified will be skipped.  Paths ending
Bernhard M. Wiedemann 6ebc4a
				  with / designate everything under that
Bernhard M. Wiedemann 6ebc4a
				  hierarchy.  This also adds a (partial)
Bernhard M. Wiedemann 6ebc4a
				  notation to the Git-commit tag and adds
Bernhard M. Wiedemann 6ebc4a
				  a Patch-filtered: tag indicating which
Bernhard M. Wiedemann 6ebc4a
				  paths were used to extract.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
There are also two other features that are used automatically.  The first is
Bernhard M. Wiedemann 6ebc4a
that 3-way merge diffs are handled automatically such that a new, exact
Bernhard M. Wiedemann 6ebc4a
two-way diff is generated.  Note that both the -x option and the automatic
Bernhard M. Wiedemann 6ebc4a
handling of merge commits can generate empty patches -- empty patches are
Bernhard M. Wiedemann 6ebc4a
skipped entirely and no files are generated.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
A quick example for generating the patches necessary for a backport of the
Bernhard M. Wiedemann 6ebc4a
ixgbe driver against the 3.0 kernel.  Please note that it (obviously) skips
Bernhard M. Wiedemann 6ebc4a
any infrastructure changes required for the patches to build.  The Acked-by
Bernhard M. Wiedemann 6ebc4a
tags will automatically be added unless you were involved in the original
Bernhard M. Wiedemann 6ebc4a
upstream commit process.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
exportpatch -w -d ixgbe -x drivers/net/ixgbe/ \
Bernhard M. Wiedemann 6ebc4a
            -x drivers/net/ethernet/intel/ixgbe/ \
Bernhard M. Wiedemann 6ebc4a
	    -F "FATE#12345" -F "bnc#12354" \
Bernhard M. Wiedemann 6ebc4a
	    $(git log v3.0.. --pretty=oneline -- drivers/net/ixgbe \
Bernhard M. Wiedemann 6ebc4a
	      drivers/net/ethernet/intel/ixgbe |cut -b 1-40) > ixgbe/series
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
The first patch in that series looks like this:
Bernhard M. Wiedemann 6ebc4a
--------8<--------
Bernhard M. Wiedemann 6ebc4a
From 6403eab143205a45a5493166ff8bf7e3646f4a77 Mon Sep 17 00:00:00 2001
Bernhard M. Wiedemann 6ebc4a
From: Joe Perches <joe@perches.com>
Bernhard M. Wiedemann 6ebc4a
Date: Fri, 3 Jun 2011 11:51:20 +0000
Bernhard M. Wiedemann 6ebc4a
Subject: drivers/net: Remove unnecessary semicolons
Bernhard M. Wiedemann 6ebc4a
Git-commit: 6403eab143205a45a5493166ff8bf7e3646f4a77 (partial)
Bernhard M. Wiedemann 6ebc4a
Patch-mainline: v3.1-rc1
Bernhard M. Wiedemann 6ebc4a
References: FATE#12345 bnc#12354
Bernhard M. Wiedemann 6ebc4a
Patch-filtered: drivers/net/ixgbe/ drivers/net/ethernet/intel/ixgbe/
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Semicolons are not necessary after switch/while/for/if braces
Bernhard M. Wiedemann 6ebc4a
so remove them.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Signed-off-by: Joe Perches <joe@perches.com>
Bernhard M. Wiedemann 6ebc4a
Signed-off-by: David S. Miller <davem@davemloft.net>
Bernhard M. Wiedemann 6ebc4a
Acked-by: Jeff Mahoney <jeffm@suse.com>
Bernhard M. Wiedemann 6ebc4a
---
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
 drivers/net/ixgbe/ixgbe_82599.c  |    4 ++--
Bernhard M. Wiedemann 6ebc4a
 drivers/net/ixgbe/ixgbe_common.c |    4 ++--
Bernhard M. Wiedemann 6ebc4a
 2 files changed, 4 insertions(+), 4 deletions(-)
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
--- a/drivers/net/ixgbe/ixgbe_82599.c
Bernhard M. Wiedemann 6ebc4a
+++ b/drivers/net/ixgbe/ixgbe_82599.c
Bernhard M. Wiedemann 6ebc4a
@@ -1157,7 +1157,7 @@ s32 ixgbe_init_fdir_signature_82599(struct ixgbe_hw *hw, u32 pballoc)
Bernhard M. Wiedemann 6ebc4a
 	default:
Bernhard M. Wiedemann 6ebc4a
 		/* bad value */
Bernhard M. Wiedemann 6ebc4a
 		return IXGBE_ERR_CONFIG;
Bernhard M. Wiedemann 6ebc4a
-	};
Bernhard M. Wiedemann 6ebc4a
+	}
Bernhard M. Wiedemann 6ebc4a
 
Bernhard M. Wiedemann 6ebc4a
 	/* Move the flexible bytes to use the ethertype - shift 6 words */
Bernhard M. Wiedemann 6ebc4a
 	fdirctrl |= (0x6 << IXGBE_FDIRCTRL_FLEX_SHIFT);
Bernhard M. Wiedemann 6ebc4a
@@ -1245,7 +1245,7 @@ s32 ixgbe_init_fdir_perfect_82599(struct ixgbe_hw *hw, u32 pballoc)
Bernhard M. Wiedemann 6ebc4a
 	default:
Bernhard M. Wiedemann 6ebc4a
 		/* bad value */
Bernhard M. Wiedemann 6ebc4a
 		return IXGBE_ERR_CONFIG;
Bernhard M. Wiedemann 6ebc4a
-	};
Bernhard M. Wiedemann 6ebc4a
+	}
Bernhard M. Wiedemann 6ebc4a
 
Bernhard M. Wiedemann 6ebc4a
 	/* Turn perfect match filtering on */
Bernhard M. Wiedemann 6ebc4a
 	fdirctrl |= IXGBE_FDIRCTRL_PERFECT_MATCH;
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
--- a/drivers/net/ixgbe/ixgbe_common.c
Bernhard M. Wiedemann 6ebc4a
+++ b/drivers/net/ixgbe/ixgbe_common.c
Bernhard M. Wiedemann 6ebc4a
@@ -1292,7 +1292,7 @@ static s32 ixgbe_ready_eeprom(struct ixgbe_hw *hw)
Bernhard M. Wiedemann 6ebc4a
 
Bernhard M. Wiedemann 6ebc4a
 		udelay(5);
Bernhard M. Wiedemann 6ebc4a
 		ixgbe_standby_eeprom(hw);
Bernhard M. Wiedemann 6ebc4a
-	};
Bernhard M. Wiedemann 6ebc4a
+	}
Bernhard M. Wiedemann 6ebc4a
 
Bernhard M. Wiedemann 6ebc4a
 	/*
Bernhard M. Wiedemann 6ebc4a
 	 * On some parts, SPI write time could vary from 0-20mSec on 3.3V
Bernhard M. Wiedemann 6ebc4a
@@ -1374,7 +1374,7 @@ static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data,
Bernhard M. Wiedemann 6ebc4a
 		 * EEPROM
Bernhard M. Wiedemann 6ebc4a
 		 */
Bernhard M. Wiedemann 6ebc4a
 		mask = mask >> 1;
Bernhard M. Wiedemann 6ebc4a
-	};
Bernhard M. Wiedemann 6ebc4a
+	}
Bernhard M. Wiedemann 6ebc4a
 
Bernhard M. Wiedemann 6ebc4a
 	/* We leave the "DI" bit set to "0" when we leave this routine. */
Bernhard M. Wiedemann 6ebc4a
 	eec &= ~IXGBE_EEC_DI;
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
-------->8--------
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Links:
Bernhard M. Wiedemann 6ebc4a
[1]: http://kernel.suse.com/cgit/kernel-source/log/?h=SLE12
Bernhard M. Wiedemann 6ebc4a
[2]: http://kernel.suse.com/cgit/kernel/log/?h=SLE12
Bernhard M. Wiedemann 6ebc4a
[3]: http://download.opensuse.org/repositories/Kernel:/tools/
Bernhard M. Wiedemann 6ebc4a
[4]: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git