- 27 9月, 2021 1 次提交
-
-
This reverts commit d437f5aa. Code has been duplicated through commit <273c29e9> "ibmvnic: check failover_pending in login response" Signed-off-by: NDesnes A. Nunes do Rosario <desnesn@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 09 9月, 2021 1 次提交
-
-
由 Sukadev Bhattiprolu 提交于
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: 032c5e82 ("Driver for IBM System i/p VNIC protocol") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 08 9月, 2021 1 次提交
-
-
由 Sukadev Bhattiprolu 提交于
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. Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 21 7月, 2021 1 次提交
-
-
由 Sukadev Bhattiprolu 提交于
Commit 65d6470d ("ibmvnic: clean pending indirect buffs during reset") intended to remove the call to ibmvnic_tx_scrq_flush() when the ->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: 65d6470d ("ibmvnic: clean pending indirect buffs during reset") Reported-by: NDany Madden <drt@linux.ibm.com> Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 02 7月, 2021 1 次提交
-
-
由 Sukadev Bhattiprolu 提交于
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: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Reviewed-by: NDany Madden <drt@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 25 6月, 2021 7 次提交
-
-
由 Sukadev Bhattiprolu 提交于
Parenthesize a check to be more explicit and to fix a sparse warning seen on some distros. Fixes: 91dc5d25 ("ibmvnic: fix miscellaneous checks") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Sukadev Bhattiprolu 提交于
Free tx_pool and clear it, if allocation of tso_pool fails. release_tx_pools() assumes we have both tx and tso_pools if ->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 ->tx_buff, ->free_map fields from a NULL pointer. Fixes: 3205306c ("ibmvnic: Update TX pool initialization routine") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Sukadev Bhattiprolu 提交于
free_long_term_buff() checks ltb->buff to decide whether we have a long term buffer to free. So set ltb->buff to NULL afer freeing. While here, also clear ->map_id, fix up some coding style and log an error. Fixes: 9c4eaabd ("Check CRQ command return codes") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Sukadev Bhattiprolu 提交于
This fixes a crash in replenish_rx_pool() when called from ibmvnic_poll() after a previous call to replenish_rx_pool() encountered an error when allocating a socket buffer. Thanks to Rick Lindsley and Dany Madden for helping debug the crash. Fixes: 4f0b6812 ("ibmvnic: Introduce batched RX buffer descriptor transmission") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Sukadev Bhattiprolu 提交于
We batch subordinate command response queue (scrq) descriptors that we need to send to the VIOS using an "indirect" buffer. If after we queue one or more scrqs in the indirect buffer encounter an error (say fail to allocate an skb), we leave the queued scrq descriptors in the indirect buffer until the next call to ibmvnic_xmit(). On the next call to ibmvnic_xmit(), it is possible that the adapter is going through a reset and it is possible that the long term buffers have been unmapped on the VIOS side. If we proceed to flush (send) the packets that are in the indirect buffer, we will end up using the old map ids and this can cause the VIOS to trigger an unnecessary FATAL error reset. Instead of flushing packets remaining on the indirect_buff, discard (clean) them instead. Fixes: 0d973388 ("ibmvnic: Introduce xmit_more support using batched subCRQ hcalls") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dany Madden 提交于
This reverts commit 7c451f3e. When a vnic interface is taken down and then up, connectivity is not restored. We bisected it to this commit. Reverting this commit until we can fully investigate the issue/benefit of the change. Fixes: 7c451f3e ("ibmvnic: remove duplicate napi_schedule call in open function") Reported-by: NCristobal Forno <cforno12@linux.ibm.com> Reported-by: NAbdul Haleem <abdhalee@in.ibm.com> Signed-off-by: NDany Madden <drt@linux.ibm.com> Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Sukadev Bhattiprolu 提交于
This reverts commit 1c7d45e7. We tried to optimize the number of hcalls we send and skipped sending the REQUEST_MAP calls for some maps. However during resets, we need to resend all the maps to the VIOS since the VIOS does not remember the old values. In fact we may have failed over to a new VIOS which will not have any of the mappings. When we send packets with map ids the VIOS does not know about, it triggers a FATAL reset. While the client does recover from the FATAL error reset, we are seeing a large number of such resets. Handling FATAL resets is lot more unnecessary work than issuing a few more hcalls so revert the commit and resend the maps to the VIOS. Fixes: 1c7d45e7 ("ibmvnic: simplify reset_long_term_buff function") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 22 6月, 2021 1 次提交
-
-
由 Kees Cook 提交于
Since these strings are expected to be NUL-terminated and the buffers are exactly sized (in vnic_client_data_len()) with no padding, strncpy() can be safely replaced with strscpy() here, as strncpy() on NUL-terminated string is considered deprecated[1]. This has the side-effect of silencing a -Warray-bounds warning due to the compiler being confused about the vlcd incrementing: In file included from ./include/linux/string.h:253, from ./include/linux/bitmap.h:10, from ./include/linux/cpumask.h:12, from ./include/linux/mm_types_task.h:14, from ./include/linux/mm_types.h:5, from ./include/linux/buildid.h:5, from ./include/linux/module.h:14, from drivers/net/ethernet/ibm/ibmvnic.c:35: In function '__fortify_strncpy', inlined from 'vnic_add_client_data' at drivers/net/ethernet/ibm/ibmvnic.c:3919:2: ./include/linux/fortify-string.h:39:30: warning: '__builtin_strncpy' offset 12 from the object at 'v lcd' is out of the bounds of referenced subobject 'name' with type 'char[]' at offset 12 [-Warray-bo unds] 39 | #define __underlying_strncpy __builtin_strncpy | ^ ./include/linux/fortify-string.h:51:9: note: in expansion of macro '__underlying_strncpy' 51 | return __underlying_strncpy(p, q, size); | ^~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/ibm/ibmvnic.c: In function 'vnic_add_client_data': drivers/net/ethernet/ibm/ibmvnic.c:3883:7: note: subobject 'name' declared here 3883 | char name[]; | ^~~~ [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings Cc: Dany Madden <drt@linux.ibm.com> Cc: Sukadev Bhattiprolu <sukadev@linux.ibm.com> Cc: Thomas Falcon <tlfalcon@linux.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Jakub Kicinski <kuba@kernel.org> Cc: netdev@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Signed-off-by: NKees Cook <keescook@chromium.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 15 6月, 2021 1 次提交
-
-
由 Lijun Pan 提交于
The 3rd argument is u32 by function definition while it is __be32 by function declaration. Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 13 6月, 2021 2 次提交
-
-
由 Lijun Pan 提交于
Fix the following kernel build warnings: drivers/net/ethernet/ibm/ibmvnic.c:1516: warning: Function parameter or member 'skb' not described in 'build_hdr_descs_arr' drivers/net/ethernet/ibm/ibmvnic.c:1516: warning: Function parameter or member 'indir_arr' not described in 'build_hdr_descs_arr' drivers/net/ethernet/ibm/ibmvnic.c:1516: warning: Excess function parameter 'txbuff' description in 'build_hdr_descs_arr' Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
drivers/net/ethernet/ibm/ibmvnic.c: In function ‘adapter_state_to_string’: drivers/net/ethernet/ibm/ibmvnic.c:855:2: warning: enumeration value ‘VNIC_DOWN’ not handled in switch [-Wswitch] 855 | switch (state) { | ^~~~~~ drivers/net/ethernet/ibm/ibmvnic.c: In function ‘reset_reason_to_string’: drivers/net/ethernet/ibm/ibmvnic.c:1958:2: warning: enumeration value ‘VNIC_RESET_PASSIVE_INIT’ not handled in switch [-Wswitch] 1958 | switch (reason) { | ^~~~~~ Reported-by: Nkernel test robot <lkp@intel.com> Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 12 6月, 2021 1 次提交
-
-
由 Lijun Pan 提交于
drivers/net/ethernet/ibm/ibmvnic.c: In function ‘handle_vpd_rsp’: drivers/net/ethernet/ibm/ibmvnic.c:4393:3: warning: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation] 4393 | strncpy((char *)adapter->fw_version, "N/A", 3 * sizeof(char)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 11 6月, 2021 2 次提交
-
-
由 Cristobal Forno 提交于
Allow the device to be initialized at a later time if it is not available at boot. The device will be allowed to probe but will be given a "down" state. After completing device probe and registering the net device, the driver will await an interrupt signal from its partner device, indicating that it is ready for boot. The driver will schedule a work event to perform the necessary procedure and begin operation. Co-developed-by: NThomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: NThomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: NCristobal Forno <cforno12@linux.ibm.com> Acked-by: NLijun Pan <lijunp213@gmail.com> Reviewed-by: NDany Madden <drt@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Wang Hai 提交于
Convert list_for_each() to list_for_each_entry() where applicable. This simplifies the code. Reported-by: NHulk Robot <hulkci@huawei.com> Signed-off-by: NWang Hai <wanghai38@huawei.com> Acked-by: NLijun Pan <lijunp213@gmail.com> Reviewed-by: NDany Madden <drt@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 21 5月, 2021 1 次提交
-
-
由 Michal Suchanek 提交于
This way the compiler warns when a new value is added to the enum but not to the string translation like: drivers/net/ethernet/ibm/ibmvnic.c: In function 'adapter_state_to_string': drivers/net/ethernet/ibm/ibmvnic.c:832:2: warning: enumeration value 'VNIC_FOOBAR' not handled in switch [-Wswitch] switch (state) { ^~~~~~ drivers/net/ethernet/ibm/ibmvnic.c: In function 'reset_reason_to_string': drivers/net/ethernet/ibm/ibmvnic.c:1935:2: warning: enumeration value 'VNIC_RESET_FOOBAR' not handled in switch [-Wswitch] switch (reason) { ^~~~~~ Signed-off-by: NMichal Suchanek <msuchanek@suse.de> Acked-by: NLijun Pan <lijunp213@gmail.com> Link: https://lore.kernel.org/netdev/CAOhMmr701LecfuNM+EozqbiTxFvDiXjFdY2aYeKJYaXq9kqVDg@mail.gmail.com/Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 15 4月, 2021 3 次提交
-
-
由 Lijun Pan 提交于
Remove the unnecessary napi_schedule() call in __ibmvnic_open() since interrupt_rx() calls napi_schedule_prep/__napi_schedule during every receive interrupt. Fixes: ed651a10 ("ibmvnic: Updated reset handling") Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
During adapter reset, do_reset/do_hard_reset calls ibmvnic_open(), which will calls napi_schedule if previous state is VNIC_CLOSED (i.e, the reset case, and "ifconfig down" case). So there is no need for do_reset to call napi_schedule again at the end of the function though napi_schedule will neglect the request if napi is already scheduled. Fixes: ed651a10 ("ibmvnic: Updated reset handling") Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
__ibmvnic_open calls napi_disable without checking whether NAPI polling has already been disabled or not. This could cause napi_disable being called twice, which could generate deadlock. For example, the first napi_disable will spin until NAPI_STATE_SCHED is cleared by napi_complete_done, then set it again. When napi_disable is called the second time, it will loop infinitely because no dev->poll will be running to clear NAPI_STATE_SCHED. To prevent above scenario from happening, call ibmvnic_napi_disable() which checks if napi is disabled or not before calling napi_disable. Fixes: bfc32f29 ("ibmvnic: Move resource initialization to its own routine") Suggested-by: NThomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 14 4月, 2021 3 次提交
-
-
由 Lijun Pan 提交于
The reset process for ibmvnic commonly takes multiple seconds, clearly making it inappropriate for schedule_work/system_wq. The reason to make this change is that ibmvnic's use of the default system-wide workqueue for a relatively long-running work item can negatively affect other workqueue users. So, queue the relatively slow reset job to the system_long_wq. Suggested-by: NNathan Lynch <nathanl@linux.ibm.com> Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
It is more correct to use dev_kfree_skb_irq when packets are dropped, and to use dev_consume_skb_irq when packets are consumed. Fixes: 0d973388 ("ibmvnic: Introduce xmit_more support using batched subCRQ hcalls") Suggested-by: NThomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
The current implementation relies on H_IOCTL call to issue a H_SESSION_ERR_DETECTED command to let the hypervisor to send a failover signal. However, it may not work if there is no backup device or if the vnic is already in error state, e.g., "ibmvnic 30000003 env3: rx buffer returned with rc 6". Add a last resort, that is to schedule a failover reset via CRQ command. Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 13 4月, 2021 2 次提交
-
-
由 Lijun Pan 提交于
The adapter state can be added or deleted over different versions of the source code. Print a string instead of a number. Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
The reset reason can be added or deleted over different versions of the source code. Print a string instead of a number. Signed-off-by: NLijun Pan <lijunp213@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 06 4月, 2021 1 次提交
-
-
由 Christophe JAILLET 提交于
'page_address(skb_frag_page()) + skb_frag_off()' can be replaced by an equivalent 'skb_frag_address()' which is less verbose. Signed-off-by: NChristophe JAILLET <christophe.jaillet@wanadoo.fr> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 06 3月, 2021 1 次提交
-
-
由 Junlin Yang 提交于
ibmvnic_remove locks multiple spinlocks while disabling interrupts: spin_lock_irqsave(&adapter->state_lock, flags); spin_lock_irqsave(&adapter->rwi_lock, flags); As reported by coccinelle, the second _irqsave() overwrites the value saved in 'flags' by the first _irqsave(), therefore when the second _irqrestore() comes,the value in 'flags' is not valid,the value saved by the first _irqsave() has been lost. This likely leads to IRQs remaining disabled. So remove the second _irqsave(): spin_lock_irqsave(&adapter->state_lock, flags); spin_lock(&adapter->rwi_lock); Generated by: ./scripts/coccinelle/locks/flags.cocci ./drivers/net/ethernet/ibm/ibmvnic.c:5413:1-18: ERROR: nested lock+irqsave that reuses flags from line 5404. Fixes: 4a41c421 ("ibmvnic: serialize access to work queue on remove") Signed-off-by: NJunlin Yang <yangjunlin@yulong.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 05 3月, 2021 1 次提交
-
-
由 Jiri Wiesner 提交于
The last change to ibmvnic_set_mac(), 8fc3672a, meant to prevent users from setting an invalid MAC address on an ibmvnic interface that has not been brought up yet. The change also prevented the requested MAC address from being stored by the adapter object for an ibmvnic interface when the state of the ibmvnic interface is VNIC_PROBED - that is after probing has finished but before the ibmvnic interface is brought up. The MAC address stored by the adapter object is used and sent to the hypervisor for checking when an ibmvnic interface is brought up. The ibmvnic driver ignoring the requested MAC address when in VNIC_PROBED state caused LACP bonds (bonds in 802.3ad mode) with more than one slave to malfunction. The bonding code must be able to change the MAC address of its slaves before they are brought up during enslaving. The inability of kernels with 8fc3672a to set the MAC addresses of bonding slaves is observable in the output of "ip address show". The MAC addresses of the slaves are the same as the MAC address of the bond on a working system whereas the slaves retain their original MAC addresses on a system with a malfunctioning LACP bond. Fixes: 8fc3672a ("ibmvnic: fix ibmvnic_set_mac") Signed-off-by: NJiri Wiesner <jwiesner@suse.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 04 3月, 2021 1 次提交
-
-
由 Michal Suchanek 提交于
GCC 7.5 reports: ../drivers/net/ethernet/ibm/ibmvnic.c: In function 'ibmvnic_reset_init': ../drivers/net/ethernet/ibm/ibmvnic.c:5373:51: warning: 'old_num_tx_queues' may be used uninitialized in this function [-Wmaybe-uninitialized] ../drivers/net/ethernet/ibm/ibmvnic.c:5373:6: warning: 'old_num_rx_queues' may be used uninitialized in this function [-Wmaybe-uninitialized] The variable is initialized only if(reset) and used only if(reset && something) so this is a false positive. However, there is no reason to not initialize the variables unconditionally avoiding the warning. Fixes: 635e442f ("ibmvnic: merge ibmvnic_reset_init and ibmvnic_init") Signed-off-by: NMichal Suchanek <msuchanek@suse.de> Reviewed-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 02 3月, 2021 1 次提交
-
-
由 Uwe Kleine-König 提交于
The driver core ignores the return value of struct bus_type::remove() because there is only little that can be done. To simplify the quest to make this function return void, let struct vio_driver::remove() return void, too. All users already unconditionally return 0, this commit makes it obvious that returning an error code is a bad idea. Note there are two nominally different implementations for a vio bus: one in arch/sparc/kernel/vio.c and the other in arch/powerpc/platforms/pseries/vio.c. This patch only adapts the powerpc one. Before this patch for a device that was bound to a driver without a remove callback vio_cmo_bus_remove(viodev) wasn't called. As the device core still considers the device unbound after vio_bus_remove() returns calling this unconditionally is the consistent behaviour which is implemented here. Signed-off-by: NUwe Kleine-König <uwe@kleine-koenig.org> Reviewed-by: NTyrel Datwyler <tyreld@linux.ibm.com> Acked-by: NLijun Pan <ljp@linux.ibm.com> Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org> [mpe: Drop unneeded hvcs_remove() forward declaration, squash in change from sfr to drop ibmvnic_remove() forward declaration] Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210225221834.160083-1-uwe@kleine-koenig.org
-
- 25 2月, 2021 1 次提交
-
-
由 Sukadev Bhattiprolu 提交于
__ibmvnic_reset() currently reads the adapter->state before getting the rtnl and saves that state as the "target state" for the reset. If this read occurs when adapter is in PROBED state, the target state would be PROBED. Just after the target state is saved, and before the actual reset process is started (i.e before rtnl is acquired) if we get an ibmvnic_open() call we would move the adapter to OPEN state. But when the reset is processed (after ibmvnic_open()) drops the rtnl), it will leave the adapter in PROBED state even though we already moved it to OPEN. To fix this, use the RTNL to improve serialization when reading/updating the adapter state. i.e determine the target state of a reset only after getting the RTNL. And if a reset is in progress during an open, simply set the target state of the adapter and let the reset code finish the open (like we currently do if failover is pending). One twist to this serialization is if the adapter state changes when we drop the RTNL to update the link state. Account for this by checking if there was an intervening open and update the target state for the reset accordingly (see new comments in the code). Note that only the reset functions and ibmvnic_open() can set the adapter to OPEN state and this must happen under rtnl. Fixes: 7d7195a0 ("ibmvnic: Do not process device remove during device reset") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Reviewed-by: NDany Madden <drt@linux.ibm.com> Link: https://lore.kernel.org/r/20210224050229.1155468-1-sukadev@linux.ibm.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
-
- 17 2月, 2021 1 次提交
-
-
由 Jakub Kicinski 提交于
Signed-off-by: NJakub Kicinski <kuba@kernel.org>
-
- 16 2月, 2021 5 次提交
-
-
由 Sukadev Bhattiprolu 提交于
The work queue is used to queue reset requests like CHANGE-PARAM or FAILOVER resets for the worker thread. When the adapter is being removed the adapter state is set to VNIC_REMOVING and the work queue is flushed so no new work is added. However the check for adapter being removed is racy in that the adapter can go into REMOVING state just after we check and we might end up adding work just as it is being flushed (or after). The ->rwi_lock is already being used to serialize queue/dequeue work. Extend its usage ensure there is no race when scheduling/flushing work. Fixes: 6954a9e4 ("ibmvnic: Flush existing work items before device removal") Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com> Cc:Uwe Kleine-König <uwe@kleine-koenig.org> Cc:Saeed Mahameed <saeed@kernel.org> Reviewed-by: NDany Madden <drt@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
Timeout reset will trigger the VIOS to unmap it automatically, similarly as FAILVOER and MOBILITY events. If we unmap it in the linux side, we will see errors like "30000003: Error 4 in REQUEST_UNMAP_RSP". So, don't call send_request_unmap for timeout reset. Fixes: ed651a10 ("ibmvnic: Updated reset handling") Signed-off-by: NLijun Pan <ljp@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
dma_rmb() barrier is added to load the long term buffer before copying it to socket buffer; and dma_wmb() barrier is added to update the long term buffer before it being accessed by VIOS (virtual i/o server). Fixes: 032c5e82 ("Driver for IBM System i/p VNIC protocol") Signed-off-by: NLijun Pan <ljp@linux.ibm.com> Acked-by: NThomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
The CRQ and subCRQ descriptors are DMA mapped, so dma_wmb(), though weaker, is good enough to protect the data structures. Signed-off-by: NLijun Pan <ljp@linux.ibm.com> Acked-by: NThomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lijun Pan 提交于
The only thing reset_long_term_buff() should do is set buffer to zero. After doing that, it is not necessary to send_request_map again to VIOS since it actually does not change the mapping. So, keep memset function and remove all others. Signed-off-by: NLijun Pan <ljp@linux.ibm.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-