From 3eb91209d99b2bddc23ee6a1d81d025f0a6545eb Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 6 Mar 2015 17:19:09 +0000 Subject: [PATCH] [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 Signed-off-by: Michael Brown --- src/drivers/net/netfront.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/drivers/net/netfront.c b/src/drivers/net/netfront.c index 74c6d27ca..6a1e4fc1f 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" );