diff options
author | Michael Brown | 2017-03-28 17:58:47 +0200 |
---|---|---|
committer | Michael Brown | 2017-03-28 18:02:38 +0200 |
commit | 414b4fc9c531ceb15607f7c6edd8a959e0bd3065 (patch) | |
tree | 84273f4272461307773e9074d072d0368ca8b7ca /src/core | |
parent | [linux] Use dummy SAN device (diff) | |
download | ipxe-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.c | 4 |
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; |