<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/ethernet/sfc, branch linux-3.9.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.9.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.9.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2013-05-19T18:38:33Z</updated>
<entry>
<title>sfc: Fix naming of MTD partitions for FPGA bitfiles</title>
<updated>2013-05-19T18:38:33Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2013-04-22T21:40:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7396524d7b79eb227b66e48893da2c2fd7f77a47'/>
<id>urn:sha1:7396524d7b79eb227b66e48893da2c2fd7f77a47</id>
<content type='text'>
[ Upstream commit 89cc80a44b7c320e08599cb86f6aef0ead8986a1 ]

efx_mcdi_get_board_cfg() uses a buffer for the firmware response that
is only large enough to hold subtypes for the originally defined set
of NVRAM partitions.  Longer responses are truncated, and we may read
off the end of the buffer when copying out subtypes for additional
partitions.  In particular, this can result in the MTD partition for
an FPGA bitfile being named e.g. 'eth5 sfc_fpga:00' when it should be
'eth5 sfc_fpga:01'.  This means the firmware update tool (sfupdate)
can't tell which bitfile should be written to the partition.

Correct the response buffer size.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>sfc: Only use TX push if a single descriptor is to be written</title>
<updated>2013-03-12T17:07:56Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2013-02-27T16:50:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fae8563b25f73dc584a07bcda7a82750ff4f7672'/>
<id>urn:sha1:fae8563b25f73dc584a07bcda7a82750ff4f7672</id>
<content type='text'>
Using TX push when notifying the NIC of multiple new descriptors in
the ring will very occasionally cause the TX DMA engine to re-use an
old descriptor.  This can result in a duplicated or partly duplicated
packet (new headers with old data), or an IOMMU page fault.  This does
not happen when the pushed descriptor is the only one written.

TX push also provides little latency benefit when a packet requires
more than one descriptor.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
</content>
</entry>
<entry>
<title>sfc: Correct efx_rx_buffer::page_offset when EFX_PAGE_IP_ALIGN != 0</title>
<updated>2013-03-06T17:57:25Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2013-03-05T17:49:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c73e787a8db9117d59b5180baf83203a42ecadca'/>
<id>urn:sha1:c73e787a8db9117d59b5180baf83203a42ecadca</id>
<content type='text'>
RX DMA buffers start at an offset of EFX_PAGE_IP_ALIGN bytes from the
start of a cache line.  This offset obviously needs to be included in
the virtual address, but this was missed in commit b590ace09d51
('sfc: Fix efx_rx_buf_offset() in the presence of swiotlb') since
EFX_PAGE_IP_ALIGN is equal to 0 on both x86 and powerpc.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
</content>
</entry>
<entry>
<title>sfc: Disable soft interrupt handling during efx_device_detach_sync()</title>
<updated>2013-03-06T17:57:24Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2013-03-05T01:03:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=35205b211c8d17a8a0b5e8926cb7c73e9a7ef1ad'/>
<id>urn:sha1:35205b211c8d17a8a0b5e8926cb7c73e9a7ef1ad</id>
<content type='text'>
efx_device_detach_sync() locks all TX queues before marking the device
detached and thus disabling further TX scheduling.  But it can still
be interrupted by TX completions which then result in TX scheduling in
soft interrupt context.  This will deadlock when it tries to acquire
a TX queue lock that efx_device_detach_sync() already acquired.

To avoid deadlock, we must use netif_tx_{,un}lock_bh().

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
</content>
</entry>
<entry>
<title>sfc: Detach net device when stopping queues for reconfiguration</title>
<updated>2013-02-26T15:00:46Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2013-01-28T19:01:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=29c69a4882641285a854d6d03ca5adbba68c0034'/>
<id>urn:sha1:29c69a4882641285a854d6d03ca5adbba68c0034</id>
<content type='text'>
We must only ever stop TX queues when they are full or the net device
is not 'ready' so far as the net core, and specifically the watchdog,
is concerned.  Otherwise, the watchdog may fire *immediately* if no
packets have been added to the queue in the last 5 seconds.

The device is ready if all the following are true:

(a) It has a qdisc
(b) It is marked present
(c) It is running
(d) The link is reported up

(a) and (c) are normally true, and must not be changed by a driver.
(d) is under our control, but fake link changes may disturb userland.
This leaves (b).  We already mark the device absent during reset
and self-test, but we need to do the same during MTU changes and ring
reallocation.  We don't need to do this when the device is brought
down because then (c) is already false.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
</content>
</entry>
<entry>
<title>sfc: Fix efx_rx_buf_offset() in the presence of swiotlb</title>
<updated>2013-02-26T14:57:16Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2013-01-10T23:51:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b590ace09d51cd39744e0f7662c5e4a0d1b5d952'/>
<id>urn:sha1:b590ace09d51cd39744e0f7662c5e4a0d1b5d952</id>
<content type='text'>
We assume that the mapping between DMA and virtual addresses is done
on whole pages, so we can find the page offset of an RX buffer using
the lower bits of the DMA address.  However, swiotlb maps in units of
2K, breaking this assumption.

Add an explicit page_offset field to struct efx_rx_buffer.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
</content>
</entry>
<entry>
<title>sfc: Properly sync RX DMA buffer when it is not the last in the page</title>
<updated>2013-02-26T14:55:49Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2012-12-20T18:48:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3a68f19d7afb80f548d016effbc6ed52643a8085'/>
<id>urn:sha1:3a68f19d7afb80f548d016effbc6ed52643a8085</id>
<content type='text'>
We may currently allocate two RX DMA buffers to a page, and only unmap
the page when the second is completed.  We do not sync the first RX
buffer to be completed; this can result in packet loss or corruption
if the last RX buffer completed in a NAPI poll is the first in a page
and is not DMA-coherent.  (In the middle of a NAPI poll, we will
handle the following RX completion and unmap the page *before* looking
at the content of the first buffer.)

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
</content>
</entry>
<entry>
<title>drivers/net/ethernet/sfc/ptp.c: adjust duplicate test</title>
<updated>2013-01-21T20:44:58Z</updated>
<author>
<name>Julia Lawall</name>
</author>
<published>2013-01-21T03:02:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=56567c6f8751c633581ca7c8e1cf08eed503f5ea'/>
<id>urn:sha1:56567c6f8751c633581ca7c8e1cf08eed503f5ea</id>
<content type='text'>
Delete successive tests to the same location.  rc was previously tested and
not subsequently updated.  efx_phc_adjtime can return an error code, so the
call is updated so that is tested instead.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// &lt;smpl&gt;
@s exists@
local idexpression y;
expression x,e;
@@

*if ( \(x == NULL\|IS_ERR(x)\|y != 0\) )
 { ... when forall
   return ...; }
... when != \(y = e\|y += e\|y -= e\|y |= e\|y &amp;= e\|y++\|y--\|&amp;y\)
    when != \(XT_GETPAGE(...,y)\|WMI_CMD_BUF(...)\)
*if ( \(x == NULL\|IS_ERR(x)\|y != 0\) )
 { ... when forall
   return ...; }
// &lt;/smpl&gt;

Signed-off-by: Julia Lawall &lt;Julia.Lawall@lip6.fr&gt;
Acked-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers/net: fix up function prototypes after __dev* removals</title>
<updated>2012-12-07T19:22:22Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
</author>
<published>2012-12-06T14:30:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1dd06ae8db716e17ec7e06244b858606edf378c0'/>
<id>urn:sha1:1dd06ae8db716e17ec7e06244b858606edf378c0</id>
<content type='text'>
The __dev* removal patches for the network drivers ended up messing up
the function prototypes for a bunch of drivers.  This patch fixes all of
them back up to be properly aligned.

Bonus is that this almost removes 100 lines of code, always a nice
surprise.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>sfc: remove __dev* attributes</title>
<updated>2012-12-03T19:16:46Z</updated>
<author>
<name>Bill Pemberton</name>
</author>
<published>2012-12-03T14:23:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=87d1fc11303473a2bd74eedb8377ff80d853972b'/>
<id>urn:sha1:87d1fc11303473a2bd74eedb8377ff80d853972b</id>
<content type='text'>
CONFIG_HOTPLUG is going away as an option.  As result the __dev*
markings will be going away.

Remove use of __devinit, __devexit_p, __devinitdata, __devinitconst,
and __devexit.

Signed-off-by: Bill Pemberton &lt;wfp5p@virginia.edu&gt;
Cc: Solarflare linux maintainers &lt;linux-net-drivers@solarflare.com&gt;
Cc: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
