summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
fe0aa76)
Two flags to disable mergable rx buffers and indirect
descriptors are added to api.
Change-Id: Iba0ee9c48d19dfc3d3420a3fdaf44a1a1d325e99
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
u32 custom_dev_instance = ~0;
u8 hwaddr[6];
u8 use_custom_mac = 0;
u32 custom_dev_instance = ~0;
u8 hwaddr[6];
u8 use_custom_mac = 0;
+ u8 disable_mrg_rxbuf = 0;
+ u8 disable_indirect_desc = 0;
use_custom_mac = 1;
else if (unformat (i, "server"))
is_server = 1;
use_custom_mac = 1;
else if (unformat (i, "server"))
is_server = 1;
+ else if (unformat (i, "disable_mrg_rxbuf"))
+ disable_mrg_rxbuf = 1;
+ else if (unformat (i, "disable_indirect_desc"))
+ disable_indirect_desc = 1;
else if (unformat (i, "tag %s", &tag))
;
else
else if (unformat (i, "tag %s", &tag))
;
else
M (CREATE_VHOST_USER_IF, mp);
mp->is_server = is_server;
M (CREATE_VHOST_USER_IF, mp);
mp->is_server = is_server;
+ mp->disable_mrg_rxbuf = disable_mrg_rxbuf;
+ mp->disable_indirect_desc = disable_indirect_desc;
clib_memcpy (mp->sock_filename, file_name, vec_len (file_name));
vec_free (file_name);
if (custom_dev_instance != ~0)
clib_memcpy (mp->sock_filename, file_name, vec_len (file_name));
vec_free (file_name);
if (custom_dev_instance != ~0)
mp->renumber = 1;
mp->custom_dev_instance = ntohl (custom_dev_instance);
}
mp->renumber = 1;
mp->custom_dev_instance = ntohl (custom_dev_instance);
}
mp->use_custom_mac = use_custom_mac;
clib_memcpy (mp->mac_address, hwaddr, 6);
if (tag)
mp->use_custom_mac = use_custom_mac;
clib_memcpy (mp->mac_address, hwaddr, 6);
if (tag)
"[translate-2-[1|2]] [push_dot1q 0] tag1 <nn> tag2 <nn>") \
_(create_vhost_user_if, \
"socket <filename> [server] [renumber <dev_instance>] " \
"[translate-2-[1|2]] [push_dot1q 0] tag1 <nn> tag2 <nn>") \
_(create_vhost_user_if, \
"socket <filename> [server] [renumber <dev_instance>] " \
+ "[disable_mrg_rxbuf] [disable_indirect_desc] " \
"[mac <mac_address>]") \
_(modify_vhost_user_if, \
"<intfc> | sw_if_index <nn> socket <filename>\n" \
"[mac <mac_address>]") \
_(modify_vhost_user_if, \
"<intfc> | sw_if_index <nn> socket <filename>\n" \
* limitations under the License.
*/
* limitations under the License.
*/
-option version = "1.0.0";
+option version = "2.0.0";
/** \brief vhost-user interface create request
@param client_index - opaque cookie to identify the sender
@param is_server - our side is socket server
@param sock_filename - unix socket filename, used to speak with frontend
@param use_custom_mac - enable or disable the use of the provided hardware address
/** \brief vhost-user interface create request
@param client_index - opaque cookie to identify the sender
@param is_server - our side is socket server
@param sock_filename - unix socket filename, used to speak with frontend
@param use_custom_mac - enable or disable the use of the provided hardware address
+ @param disable_mrg_rxbuf - disable the use of merge receive buffers
+ @param disable_indirect_desc - disable the use of indirect descriptors which driver can use
@param mac_address - hardware address to use if 'use_custom_mac' is set
*/
define create_vhost_user_if
@param mac_address - hardware address to use if 'use_custom_mac' is set
*/
define create_vhost_user_if
u8 is_server;
u8 sock_filename[256];
u8 renumber;
u8 is_server;
u8 sock_filename[256];
u8 renumber;
+ u8 disable_mrg_rxbuf;
+ u8 disable_indirect_desc;
u32 custom_dev_instance;
u8 use_custom_mac;
u8 mac_address[6];
u32 custom_dev_instance;
u8 use_custom_mac;
u8 mac_address[6];
u32 sw_if_index = (u32) ~ 0;
vnet_main_t *vnm = vnet_get_main ();
vlib_main_t *vm = vlib_get_main ();
u32 sw_if_index = (u32) ~ 0;
vnet_main_t *vnm = vnet_get_main ();
vlib_main_t *vm = vlib_get_main ();
+ u64 features = (u64) ~ (0ULL);
+ u64 disabled_features = (u64) (0ULL);
+
+ if (mp->disable_mrg_rxbuf)
+ disabled_features = (1ULL << FEAT_VIRTIO_NET_F_MRG_RXBUF);
+
+ if (mp->disable_indirect_desc)
+ disabled_features |= (1ULL << FEAT_VIRTIO_F_INDIRECT_DESC);
+
+ features &= ~disabled_features;
rv = vhost_user_create_if (vnm, vm, (char *) mp->sock_filename,
rv = vhost_user_create_if (vnm, vm, (char *) mp->sock_filename,
- mp->is_server, &sw_if_index, (u64) ~ 0,
+ mp->is_server, &sw_if_index, features,
mp->renumber, ntohl (mp->custom_dev_instance),
(mp->use_custom_mac) ? mp->mac_address : NULL);
mp->renumber, ntohl (mp->custom_dev_instance),
(mp->use_custom_mac) ? mp->mac_address : NULL);
s = format (s, "server ");
if (mp->renumber)
s = format (s, "renumber %d ", ntohl (mp->custom_dev_instance));
s = format (s, "server ");
if (mp->renumber)
s = format (s, "renumber %d ", ntohl (mp->custom_dev_instance));
+ if (mp->disable_mrg_rxbuf)
+ s = format (s, "disable_mrg_rxbuf ");
+ if (mp->disable_indirect_desc)
+ s = format (s, "disable_indirect_desc ");
if (mp->tag[0])
s = format (s, "tag %s", mp->tag);
if (mp->tag[0])
s = format (s, "tag %s", mp->tag);
is_server,
sock_filename,
renumber,
is_server,
sock_filename,
renumber,
+ disable_mrg_rxbuf,
+ disable_indirect_desc,
custom_dev_instance,
use_custom_mac,
mac_address,
custom_dev_instance,
use_custom_mac,
mac_address,
:param is_server: is server
:param sock_filename: socket name
:param renumber: renumber
:param is_server: is server
:param sock_filename: socket name
:param renumber: renumber
+ :param disable_mrg_rxbuf: disable mergable rx buffers
+ :param disable_indirect_desc: disable indirect descriptors
:param custom_dev_instance: custom dev instance
:param use_custom_mac: use custom mac
:param mac_address: mac address
:param custom_dev_instance: custom dev instance
:param use_custom_mac: use custom mac
:param mac_address: mac address
- :param tag: tag (default ''
+ :param tag: tag (default '')
"""
return self.api(
self.papi.create_vhost_user_if,
{'is_server': is_server,
'sock_filename': sock_filename,
'renumber': renumber,
"""
return self.api(
self.papi.create_vhost_user_if,
{'is_server': is_server,
'sock_filename': sock_filename,
'renumber': renumber,
+ 'disable_mrg_rxbuf': disable_mrg_rxbuf,
+ 'disable_indirect_desc': disable_indirect_desc,
'custom_dev_instance': custom_dev_instance,
'use_custom_mac': use_custom_mac,
'mac_address': mac_address,
'custom_dev_instance': custom_dev_instance,
'use_custom_mac': use_custom_mac,
'mac_address': mac_address,
"""VPP vhost interface."""
def __init__(self, test, sock_filename, is_server=0, renumber=0,
"""VPP vhost interface."""
def __init__(self, test, sock_filename, is_server=0, renumber=0,
+ disable_mrg_rxbuf=0, disable_indirect_desc=0,
custom_dev_instance=0, use_custom_mac=0, mac_address='',
tag=''):
custom_dev_instance=0, use_custom_mac=0, mac_address='',
tag=''):
self.is_server = is_server
self.sock_filename = sock_filename
self.renumber = renumber
self.is_server = is_server
self.sock_filename = sock_filename
self.renumber = renumber
+ self.disable_mrg_rxbuf = disable_mrg_rxbuf
+ self.disable_indirect_desc = disable_indirect_desc
self.custom_dev_instance = custom_dev_instance
self.use_custom_mac = use_custom_mac
self.mac_address = mac_address
self.custom_dev_instance = custom_dev_instance
self.use_custom_mac = use_custom_mac
self.mac_address = mac_address
r = self.test.vapi.create_vhost_user_if(self.is_server,
self.sock_filename,
self.renumber,
r = self.test.vapi.create_vhost_user_if(self.is_server,
self.sock_filename,
self.renumber,
+ self.disable_mrg_rxbuf,
+ self.disable_indirect_desc,
self.custom_dev_instance,
self.use_custom_mac,
self.mac_address,
self.custom_dev_instance,
self.use_custom_mac,
self.mac_address,