diff options
author | Michael Brown <mcb30@ipxe.org> | 2015-03-06 17:19:09 +0000 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2015-03-09 08:52:03 +0000 |
commit | 3eb91209d99b2bddc23ee6a1d81d025f0a6545eb (patch) | |
tree | 7a55fe2397c00452df85618a288d854b52bc7242 /src/drivers/net | |
parent | e905cdcce386f9752ff8a655f9ed0e4961a9a902 (diff) | |
download | ipxe-3eb91209d99b2bddc23ee6a1d81d025f0a6545eb.tar.gz |
[xen] Set the "feature-rx-notify" flag for netfront devices
iPXE already sends RX notifications to the backend when needed, but
does not set the "feature-rx-notify" flag. As of XenServer 6.5, this
flag is mandatory and omitting it will cause the backend to fail.
Fix by setting the "feature-rx-notify" flag, to inform the backend
that we will send notifications.
Reported-by: Shalom Bhooshi <shalom.bhooshi@citrix.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net')
-rw-r--r-- | src/drivers/net/netfront.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/drivers/net/netfront.c b/src/drivers/net/netfront.c index 74c6d27c..6a1e4fc1 100644 --- a/src/drivers/net/netfront.c +++ b/src/drivers/net/netfront.c @@ -597,6 +597,11 @@ static int netfront_open ( struct net_device *netdev ) { "feature-no-csum-offload" ) ) != 0 ) goto err_feature_no_csum_offload; + /* Inform backend that we will send notifications for RX requests */ + if ( ( rc = netfront_write_flag ( netfront, + "feature-rx-notify" ) ) != 0 ) + goto err_feature_rx_notify; + /* Set state to Connected */ if ( ( rc = xenbus_set_state ( xendev, XenbusStateConnected ) ) != 0 ) { DBGC ( netfront, "NETFRONT %s could not set state=\"%d\": %s\n", @@ -622,6 +627,8 @@ static int netfront_open ( struct net_device *netdev ) { err_backend_wait: netfront_reset ( netfront ); err_set_state: + netfront_rm ( netfront, "feature-rx-notify" ); + err_feature_rx_notify: netfront_rm ( netfront, "feature-no-csum-offload" ); err_feature_no_csum_offload: netfront_rm ( netfront, "request-rx-copy" ); @@ -665,6 +672,7 @@ static void netfront_close ( struct net_device *netdev ) { } /* Delete flags */ + netfront_rm ( netfront, "feature-rx-notify" ); netfront_rm ( netfront, "feature-no-csum-offload" ); netfront_rm ( netfront, "request-rx-copy" ); |