<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/ethernet/ibm, branch linux-5.14.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.14.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.14.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-11-17T10:04:19Z</updated>
<entry>
<title>ibmvnic: delay complete()</title>
<updated>2021-11-17T10:04:19Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-10-29T22:03:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8777d613b23fc9e80c7e26dcf9dbfd51d8aae0fe'/>
<id>urn:sha1:8777d613b23fc9e80c7e26dcf9dbfd51d8aae0fe</id>
<content type='text'>
[ Upstream commit 6b278c0cb378079f3c0c61ae4a369c09ff1a4188 ]

If we get CRQ_INIT, we set errno to -EIO and first call complete() to
notify the waiter. Then we try to schedule a FAILOVER reset. If this
occurs while adapter is in PROBING state, ibmvnic_reset() changes the
error code to EAGAIN and returns without scheduling the FAILOVER. The
purpose of setting error code to EAGAIN is to ask the waiter to retry.

But due to the earlier complete() call, the waiter may already have seen
the -EIO response and decided not to retry. This can cause intermittent
failures when bringing up ibmvnic adapters during boot, specially in
in kexec/kdump kernels.

Defer the complete() call until after scheduling the reset.

Also streamline the error code to EAGAIN. Don't see why we need EIO
sometimes. All 3 callers of ibmvnic_reset_init() can handle EAGAIN.

Fixes: 17c8705838a5 ("ibmvnic: Return error code if init interrupted by transport event")
Reported-by: Vaishnavi Bhat &lt;vaish123@in.ibm.com&gt;
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Reviewed-by: Dany Madden &lt;drt@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>ibmvnic: Process crqs after enabling interrupts</title>
<updated>2021-11-17T10:04:19Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-10-29T22:03:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=93d1d1bd0d58bd7c2ee62bdb55a806b9cee938be'/>
<id>urn:sha1:93d1d1bd0d58bd7c2ee62bdb55a806b9cee938be</id>
<content type='text'>
[ Upstream commit 6e20d00158f31f7631d68b86996b7e951c4451c8 ]

Soon after registering a CRQ it is possible that we get a fail over or
maybe a CRQ_INIT from the VIOS while interrupts were disabled.

Look for any such CRQs after enabling interrupts.

Otherwise we can intermittently fail to bring up ibmvnic adapters during
boot, specially in kexec/kdump kernels.

Fixes: 032c5e82847a ("Driver for IBM System i/p VNIC protocol")
Reported-by: Vaishnavi Bhat &lt;vaish123@in.ibm.com&gt;
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Reviewed-by: Dany Madden &lt;drt@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>ibmvnic: don't stop queue in xmit</title>
<updated>2021-11-17T10:04:19Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-10-29T22:03:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=611e758769074cbb59cb6717ddd963c4cbc2de5d'/>
<id>urn:sha1:611e758769074cbb59cb6717ddd963c4cbc2de5d</id>
<content type='text'>
[ Upstream commit 8878e46fcfd46b19964bd90e13b25dd94cbfc9be ]

If adapter's resetting bit is on, discard the packet but don't stop the
transmit queue - instead leave that to the reset code. With this change,
it is possible that we may get several calls to ibmvnic_xmit() that simply
discard packets and return.

But if we stop the queue here, we might end up doing so just after
__ibmvnic_open() started the queues (during a hard/soft reset) and before
the -&gt;resetting bit was cleared. If that happens, there will be no one to
restart queue and transmissions will be blocked indefinitely.

This can cause a TIMEOUT reset and with auto priority failover enabled,
an unnecessary FAILOVER reset to less favored backing device and then a
FAILOVER back to the most favored backing device. If we hit the window
repeatedly, we can get stuck in a loop of TIMEOUT, FAILOVER, FAILOVER
resets leaving the adapter unusable for extended periods of time.

Fixes: 7f5b030830fe ("ibmvnic: Free skb's in cases of failure in transmit")
Reported-by: Abdul Haleem &lt;abdhalee@in.ibm.com&gt;
Reported-by: Vaishnavi Bhat &lt;vaish123@in.ibm.com&gt;
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Reviewed-by: Dany Madden &lt;drt@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>ibmvnic: check failover_pending in login response</title>
<updated>2021-09-22T10:39:22Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-09-08T16:58:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d5bf0fd8f4d1aaecf192b35a89547bcd27eaf063'/>
<id>urn:sha1:d5bf0fd8f4d1aaecf192b35a89547bcd27eaf063</id>
<content type='text'>
commit 273c29e944bda9a20a30c26cfc34c9a3f363280b upstream.

If a failover occurs before a login response is received, the login
response buffer maybe undefined. Check that there was no failover
before accessing the login response buffer.

Fixes: 032c5e82847a ("Driver for IBM System i/p VNIC protocol")
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.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>ibmvnic: Remove the proper scrq flush</title>
<updated>2021-07-21T15:57:41Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-07-21T02:34:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bb55362bd6976631b662ca712779b6532d8de0a6'/>
<id>urn:sha1:bb55362bd6976631b662ca712779b6532d8de0a6</id>
<content type='text'>
Commit 65d6470d139a ("ibmvnic: clean pending indirect buffs during reset")
intended to remove the call to ibmvnic_tx_scrq_flush() when the
-&gt;resetting flag is true and was tested that way. But during the final
rebase to net-next, the hunk got applied to a block few lines below
(which happened to have the same diff context) and the wrong call to
ibmvnic_tx_scrq_flush() got removed.

Fix that by removing the correct ibmvnic_tx_scrq_flush() and restoring
the one that was incorrectly removed.

Fixes: 65d6470d139a ("ibmvnic: clean pending indirect buffs during reset")
Reported-by: Dany Madden &lt;drt@linux.ibm.com&gt;
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ibmvnic: retry reset if there are no other resets</title>
<updated>2021-07-01T20:11:12Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-06-30T18:36:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4f408e1fa6e10b6da72691233369172bac7d9e9b'/>
<id>urn:sha1:4f408e1fa6e10b6da72691233369172bac7d9e9b</id>
<content type='text'>
Normally, if a reset fails due to failover or other communication error
there is another reset (eg: FAILOVER) in the queue and we would process
that reset. But if we are unable to communicate with PHYP or VIOS after
H_FREE_CRQ, there would be no other resets in the queue and the adapter
would be in an undefined state even though it was in the OPEN state
earlier. While starting the reset we set the carrier to off state so
we won't even get the timeout resets.

If the last queued reset fails, retry it as a hard reset (after the
usual 60 second settling time).

Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Reviewed-by: Dany Madden &lt;drt@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net</title>
<updated>2021-06-29T22:45:27Z</updated>
<author>
<name>Jakub Kicinski</name>
</author>
<published>2021-06-29T22:45:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b6df00789e2831fff7a2c65aa7164b2a4dcbe599'/>
<id>urn:sha1:b6df00789e2831fff7a2c65aa7164b2a4dcbe599</id>
<content type='text'>
Trivial conflict in net/netfilter/nf_tables_api.c.

Duplicate fix in tools/testing/selftests/net/devlink_port_split.py
- take the net-next version.

skmsg, and L4 bpf - keep the bpf code but remove the flags
and err params.

Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>ibmvnic: parenthesize a check</title>
<updated>2021-06-24T18:22:24Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-06-24T04:13:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=154b3b2a6ffca445379063ef49f71895104d5a5e'/>
<id>urn:sha1:154b3b2a6ffca445379063ef49f71895104d5a5e</id>
<content type='text'>
Parenthesize a check to be more explicit and to fix a sparse warning
seen on some distros.

Fixes: 91dc5d2553fbf ("ibmvnic: fix miscellaneous checks")
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ibmvnic: free tx_pool if tso_pool alloc fails</title>
<updated>2021-06-24T18:22:23Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-06-24T04:13:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6ebca8efa52e4ae770f0325d618e7bcf08ada0c'/>
<id>urn:sha1:f6ebca8efa52e4ae770f0325d618e7bcf08ada0c</id>
<content type='text'>
Free tx_pool and clear it, if allocation of tso_pool fails.

release_tx_pools() assumes we have both tx and tso_pools if -&gt;tx_pool is
non-NULL. If allocation of tso_pool fails in init_tx_pools(), the assumption
will not be true and we would end up dereferencing -&gt;tx_buff, -&gt;free_map
fields from a NULL pointer.

Fixes: 3205306c6b8d ("ibmvnic: Update TX pool initialization routine")
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ibmvnic: set ltb-&gt;buff to NULL after freeing</title>
<updated>2021-06-24T18:22:23Z</updated>
<author>
<name>Sukadev Bhattiprolu</name>
</author>
<published>2021-06-24T04:13:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=552a33729f1a7cc5115d0752064fe9abd6e3e336'/>
<id>urn:sha1:552a33729f1a7cc5115d0752064fe9abd6e3e336</id>
<content type='text'>
free_long_term_buff() checks ltb-&gt;buff to decide whether we have a long
term buffer to free. So set ltb-&gt;buff to NULL afer freeing. While here,
also clear -&gt;map_id, fix up some coding style and log an error.

Fixes: 9c4eaabd1bb39 ("Check CRQ command return codes")
Signed-off-by: Sukadev Bhattiprolu &lt;sukadev@linux.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
