summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMichael Brown2017-03-28 17:58:47 +0200
committerMichael Brown2017-03-28 18:02:38 +0200
commit414b4fc9c531ceb15607f7c6edd8a959e0bd3065 (patch)
tree84273f4272461307773e9074d072d0368ca8b7ca /src/core
parent[linux] Use dummy SAN device (diff)
downloadipxe-414b4fc9c531ceb15607f7c6edd8a959e0bd3065.tar.gz
ipxe-414b4fc9c531ceb15607f7c6edd8a959e0bd3065.tar.xz
ipxe-414b4fc9c531ceb15607f7c6edd8a959e0bd3065.zip
[block] Ignore redundant xfer_window_changed() messages
For some block device protocols, the active path may continue to receive xfer_window_changed() notifications during normal use. These currently result in the active path being erroneously closed. Fix by ignoring any xfer_window_changed() messages if this path is already the active path. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/sanboot.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/sanboot.c b/src/core/sanboot.c
index 7dbf03db..03beae79 100644
--- a/src/core/sanboot.c
+++ b/src/core/sanboot.c
@@ -282,6 +282,10 @@ static size_t sanpath_block_window ( struct san_path *sanpath __unused ) {
static void sanpath_step ( struct san_path *sanpath ) {
struct san_device *sandev = sanpath->sandev;
+ /* Ignore if we are already the active device */
+ if ( sanpath == sandev->active )
+ return;
+
/* Wait until path has become available */
if ( ! xfer_window ( &sanpath->block ) )
return;