<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/scsi/fcoe/fcoe.c, branch linux-3.8.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.8.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.8.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-10-07T10:49:34Z</updated>
<entry>
<title>[SCSI] fcoe: Fix write errors on NPIV ports</title>
<updated>2012-10-07T10:49:34Z</updated>
<author>
<name>Neerav Parikh</name>
</author>
<published>2012-09-24T18:52:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=31c37a6f21d86e6bca095b71d603ed543ae070ad'/>
<id>urn:sha1:31c37a6f21d86e6bca095b71d603ed543ae070ad</id>
<content type='text'>
SCSI errors were generated while writing to LUNs
connected via NPIV ports.

Debugging this it was found that the FCoE packets
transmitted via the NPIV ports were not tagged with
correct user priority as negotiated with peer by DCB
agent. This resulted in FCoE traffic going with priority
zero(0) that did not have priority flow control (PFC)
enabled for it. The initiator after transferring data
to the target never saw any reply indicating the transfer
was complete. This resulted in error recovery (ABTS) and
SCSI command retries by the scsi-mid layer; eventually
resulting in I/O errors.

This patch fixes this issue by keeping the FCoE user
priority information in the fcoe_interface instance
that is common for both the physical port as well as
NPIV ports connected to that physical port; instead
of storing it in fcoe_port structure that has a per
port instance.

Signed-off-by: Neerav Parikh &lt;Neerav.Parikh@intel.com&gt;
Acked-by: Yi Zou &lt;yi.zou@intel.com&gt;
Acked-by: John Fastabend &lt;john.r.fastabend@intel.com&gt;
Tested-by: Marcus Dennis &lt;marcusx.e.dennis@intel.com&gt;
Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] fcoe: Cleanup locking on fcoe_percpu_receive_thread</title>
<updated>2012-07-20T07:58:55Z</updated>
<author>
<name>Neil Horman</name>
</author>
<published>2012-07-06T17:40:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=95fdd5e980e6eea4579c15043f7a9be6ad63012c'/>
<id>urn:sha1:95fdd5e980e6eea4579c15043f7a9be6ad63012c</id>
<content type='text'>
Noticed that we can shuffle the code around in fcoe_percpu_receive_thread a bit
and avoid taking the fcoe_rx_list lock twice per iteration.  This should improve
throughput somewhat.  With this change we take the lock, and check for new
frames in a single critical section.  Only if the list is empty do we drop the
lock and re-acquire it after being signaled to wake up.

Change Notes:
v2) did some further cleanup on the patch by replacing the 2nd call of
spin_lock/splice_init with a goto to the top of the outer loop.  This allows me
to change the inner while loop to an if conditional and remove the sencond check
of kthread_should_stop.  Based on suggestion from Vasu Dev.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Acked-by: Vasu Dev &lt;vasu.dev@intel.com&gt;
Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] libfc, fcoe, bnx2fc: cleanup fcoe_dev_stats</title>
<updated>2012-07-20T07:31:47Z</updated>
<author>
<name>Vasu Dev</name>
</author>
<published>2012-05-25T17:26:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1bd49b482077e231842352621169dedff1f41931'/>
<id>urn:sha1:1bd49b482077e231842352621169dedff1f41931</id>
<content type='text'>
The libfc is used by fcoe but fcoe agnostic,
and therefore should not have any fcoe references.

So renaming fcoe_dev_stats from libfc as its for fc_stats.
After that libfc is fcoe string free except some strings for
Open-FCoE.org.

Signed-off-by: Vasu Dev &lt;vasu.dev@intel.com&gt;
Acked-by : Robert Love &lt;robert.w.love@intel.com&gt;
Tested-by: Ross Brattain &lt;ross.b.brattain@intel.com&gt;
Acked-by: Bhanu Prakash Gollapudi &lt;bprakash@broadcom.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] fcoe, bnx2fc, libfcoe: SW FCoE and bnx2fc use FCoE Syfs</title>
<updated>2012-05-23T08:43:13Z</updated>
<author>
<name>Robert Love</name>
</author>
<published>2012-05-23T02:06:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d55e507d24c6db7eb012c379c62912e642eb75e'/>
<id>urn:sha1:8d55e507d24c6db7eb012c379c62912e642eb75e</id>
<content type='text'>
This patch has the SW FCoE driver and the bnx2fc
driver make use of the new fcoe_sysfs API added
earlier in this patch series.

After this patch a fcoe_ctlr_device is allocated with
private data in this order.

+------------------+   +------------------+
| fcoe_ctlr_device |   | fcoe_ctlr_device |
+------------------+   +------------------+
| fcoe_ctlr        |   | fcoe_ctlr        |
+------------------+   +------------------+
| fcoe_interface   |   | bnx2fc_interface |
+------------------+   +------------------+

libfcoe also takes part in this new model since it
discovers and manages fcoe_fcf instances. The memory
allocation is different for FCFs. I didn't want to
impact libfcoe's fcoe_fcf processing, so this patch
creates fcoe_fcf_device instances for each discovered
fcoe_fcf. The two are paired using a (void * priv)
member of the fcoe_ctlr_device. This allows libfcoe
to continue maintaining its list of fcoe_fcf instances
and simply attaches and detaches them from existing
or new fcoe_fcf_device instances.

Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Tested-by: Ross Brattain &lt;ross.b.brattain@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] fcoe: Allocate fcoe_ctlr with fcoe_interface, not as a member</title>
<updated>2012-05-23T08:36:27Z</updated>
<author>
<name>Robert Love</name>
</author>
<published>2012-05-23T02:06:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=619fe4bed415e5d8a4749937f42b6a8a9031d4aa'/>
<id>urn:sha1:619fe4bed415e5d8a4749937f42b6a8a9031d4aa</id>
<content type='text'>
Currently the fcoe_ctlr associated with an interface is allocated
as a member of struct fcoe_interface. This causes problems when
attempting to use the new fcoe_sysfs APIs which allow us to allocate
the fcoe_interface as private data to the fcoe_ctlr_device instance.
The problem is that libfcoe wants to be able use pointer math to find a
fcoe_ctlr's fcoe_ctlr_device as well as finding a fcoe_ctlr_device's
assocated fcoe_ctlr. To do this we need to allocate the
fcoe_ctlr_device, with private data for the LLD. The private data
contains the fcoe_ctlr and its private data is the fcoe_interface.
This patch only allocates the fcoe_interface with the fcoe_ctlr, the
fcoe_ctlr_device will be added in a later patch, which will complete
the below diagram-

+------------------+
| fcoe_ctlr_device |
+------------------+
| fcoe_ctlr        |
+------------------+
| fcoe_interface   |
+------------------+

This prep work will allow us to go from a fcoe_ctlr_device instance
to its fcoe_ctlr as well as from a fcoe_ctlr to its fcoe_ctlr_device
once the fcoe_sysfs API is in use (later patches in this series).

Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Tested-by: Ross Brattain &lt;ross.b.brattain@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] fcoe: remove a stray unlock</title>
<updated>2012-05-10T07:59:26Z</updated>
<author>
<name>Dan Carpenter</name>
</author>
<published>2012-04-20T19:16:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b3b8abd85780e1bb92703354f3c16c921edfa4f6'/>
<id>urn:sha1:b3b8abd85780e1bb92703354f3c16c921edfa4f6</id>
<content type='text'>
We moved the locking in dd060e74fb "[SCSI] fcoe: remove frame dropping
code from fcoe_percpu_clean" but this unlock was missed.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] fcoe: Don't hold rtnl_mutex in fcoe_update_src_mac</title>
<updated>2012-05-10T07:59:25Z</updated>
<author>
<name>Robert Love</name>
</author>
<published>2012-04-20T19:16:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=949e71f17d9a5c59fa7b02cce3b548384bff1c92'/>
<id>urn:sha1:949e71f17d9a5c59fa7b02cce3b548384bff1c92</id>
<content type='text'>
The rtnl_mutex was held to protect calls to dev_uc_add
and dev_uc_del. Holding rtnl is not required as those
functions make use of the netif_addr_lock* API to
protect the MAC changing.

This change fixes the following regression by removing
the rtnl usage when fcoe_update_src_mac is called.

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

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;fip-&gt;ctlr_mutex){+.+...}:
       [&lt;c1091f70&gt;] lock_acquire+0x80/0x1b0
       [&lt;c147655d&gt;] mutex_lock_nested+0x6d/0x340
       [&lt;f8970c32&gt;] fcoe_ctlr_link_up+0x22/0x180 [libfcoe]
       [&lt;f894620e&gt;] fcoe_create+0x47e/0x6e0 [fcoe]
       [&lt;f8973dd3&gt;] fcoe_transport_create+0x143/0x250 [libfcoe]
       [&lt;c10527e0&gt;] param_attr_store+0x30/0x60
       [&lt;c1052696&gt;] module_attr_store+0x26/0x40
       [&lt;c11a201e&gt;] sysfs_write_file+0xae/0x100
       [&lt;c11449df&gt;] vfs_write+0x8f/0x160
       [&lt;c1144cbd&gt;] sys_write+0x3d/0x70
       [&lt;c147a0c4&gt;] syscall_call+0x7/0xb

-&gt; #0 (rtnl_mutex){+.+.+.}:
       [&lt;c109164b&gt;] __lock_acquire+0x140b/0x1720
       [&lt;c1091f70&gt;] lock_acquire+0x80/0x1b0
       [&lt;c147655d&gt;] mutex_lock_nested+0x6d/0x340
       [&lt;c13a10c4&gt;] rtnl_lock+0x14/0x20
       [&lt;f89445ac&gt;] fcoe_update_src_mac+0x2c/0xb0 [fcoe]
       [&lt;f8971712&gt;] fcoe_ctlr_timer_work+0x712/0xb60 [libfcoe]
       [&lt;c104fb69&gt;] process_one_work+0x179/0x5d0
       [&lt;c10502f1&gt;] worker_thread+0x121/0x2d0
       [&lt;c10550ed&gt;] kthread+0x7d/0x90
       [&lt;c1481a82&gt;] kernel_thread_helper+0x6/0x10

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;fip-&gt;ctlr_mutex);
                               lock(rtnl_mutex);
                               lock(&amp;fip-&gt;ctlr_mutex);
  lock(rtnl_mutex);

 *** DEADLOCK ***

Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Tested-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] libfc: defer releasing master lport until complete fcoe interface cleanuped up</title>
<updated>2012-05-10T07:59:25Z</updated>
<author>
<name>Vasu Dev</name>
</author>
<published>2012-04-20T19:16:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3cab4468fd0a4b3c9f22a380e4318c17b6c202d6'/>
<id>urn:sha1:3cab4468fd0a4b3c9f22a380e4318c17b6c202d6</id>
<content type='text'>
The fcoe controller has back references, therefore defer
releasing master lport which gets freed along scsi_host_put
and then free it once fcoe interface is fully cleaned.

Signed-off-by: Vasu Dev &lt;vasu.dev@intel.com&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Tested-by: Ross Brattain &lt;ross.b.brattain@intel.com&gt;
Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] fcoe: remove lport from net device before doing per cpu rx thread cleanup</title>
<updated>2012-05-10T07:59:24Z</updated>
<author>
<name>Vasu Dev</name>
</author>
<published>2012-04-20T19:16:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=433eba04c2cb53e0bbd2fb6da22d18f725bbf33f'/>
<id>urn:sha1:433eba04c2cb53e0bbd2fb6da22d18f725bbf33f</id>
<content type='text'>
Remove lport from net device and then do synchronize net device to flush
inflight rx frames for the lport before doing fcoe_percpu_clean.

In case of master lport, remove all rx packet handlers completely and
then only do fcoe_percpu_clean. This required splitting fcoe_interface_cleanup
to do remove part separately and for that added func fcoe_interface_remove
and then  call it from fcoe_if_destory before doing fcoe_percpu_clean.
However if fcoe_interface_remove() is already called then
don't call again from fcoe_interface_cleanup() to preserve its
existing flows.

This patch along with Neil's other patch to avoid soft irq context
on ingress will avoid passing up frames on disabled lport as
discussed in this mail thread:-
http://lists.open-fcoe.org/pipermail/devel/2012-February/011947.html

Signed-off-by: Vasu Dev &lt;vasu.dev@intel.com&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Tested-by: Ross Brattain &lt;ross.b.brattain@intel.com&gt;
Signed-off-by: Robert Love &lt;robert.w.love@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6</title>
<updated>2012-03-31T20:31:23Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2012-03-31T20:31:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a75ee6ecd411a50bf4da927c2fdb2cb56246a2bd'/>
<id>urn:sha1:a75ee6ecd411a50bf4da927c2fdb2cb56246a2bd</id>
<content type='text'>
Pull SCSI updates from James Bottomley:
 "This is primarily another round of driver updates (lpfc, bfa, fcoe,
  ipr) plus a new ufshcd driver.  There shouldn't be anything
  controversial in here (The final deletion of scsi proc_ops which
  caused some build breakage has been held over until the next merge
  window to give us more time to stabilise it).

  I'm afraid, with me moving continents at exactly the wrong time,
  anything submitted after the merge window opened has been held over to
  the next merge window."

* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (63 commits)
  [SCSI] ipr: Driver version 2.5.3
  [SCSI] ipr: Increase alignment boundary of command blocks
  [SCSI] ipr: Increase max concurrent oustanding commands
  [SCSI] ipr: Remove unnecessary memory barriers
  [SCSI] ipr: Remove unnecessary interrupt clearing on new adapters
  [SCSI] ipr: Fix target id allocation re-use problem
  [SCSI] atp870u, mpt2sas, qla4xxx use pci_dev-&gt;revision
  [SCSI] fcoe: Drop the rtnl_mutex before calling fcoe_ctlr_link_up
  [SCSI] bfa: Update the driver version to 3.0.23.0
  [SCSI] bfa: BSG and User interface fixes.
  [SCSI] bfa: Fix to avoid vport delete hang on request queue full scenario.
  [SCSI] bfa: Move service parameter programming logic into firmware.
  [SCSI] bfa: Revised Fabric Assigned Address(FAA) feature implementation.
  [SCSI] bfa: Flash controller IOC pll init fixes.
  [SCSI] bfa: Serialize the IOC hw semaphore unlock logic.
  [SCSI] bfa: Modify ISR to process pending completions
  [SCSI] bfa: Add fc host issue lip support
  [SCSI] mpt2sas: remove extraneous sas_log_info messages
  [SCSI] libfc: fcoe_transport_create fails in single-CPU environment
  [SCSI] fcoe: reduce contention for fcoe_rx_list lock [v2]
  ...
</content>
</entry>
</feed>
