aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/pg/pg_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/pg/pg_api.c')
-rw-r--r--src/vnet/pg/pg_api.c39
1 files changed, 33 insertions, 6 deletions
diff --git a/src/vnet/pg/pg_api.c b/src/vnet/pg/pg_api.c
index 57fb40cdda4..68953533b07 100644
--- a/src/vnet/pg/pg_api.c
+++ b/src/vnet/pg/pg_api.c
@@ -33,11 +33,24 @@ vl_api_pg_create_interface_t_handler (vl_api_pg_create_interface_t * mp)
{
vl_api_pg_create_interface_reply_t *rmp;
int rv = 0;
+ u32 pg_if_id = ~0;
pg_main_t *pg = &pg_main;
- u32 pg_if_id =
- pg_interface_add_or_get (pg, ntohl (mp->interface_id), mp->gso_enabled,
- ntohl (mp->gso_size), 0, PG_MODE_ETHERNET);
+ pg_interface_args_t args = { 0 };
+
+ args.mode = PG_MODE_ETHERNET;
+ args.gso_size = 0;
+ args.hw_addr_set = 0;
+ args.flags = 0;
+ args.if_id = ntohl (mp->interface_id);
+
+ if (mp->gso_enabled)
+ {
+ args.flags = PG_INTERFACE_FLAG_GSO;
+ args.gso_size = ntohl (mp->gso_size);
+ }
+
+ pg_if_id = pg_interface_add_or_get (pg, &args);
pg_interface_t *pi = pool_elt_at_index (pg->interfaces, pg_if_id);
REPLY_MACRO2(VL_API_PG_CREATE_INTERFACE_REPLY,
@@ -51,11 +64,25 @@ vl_api_pg_create_interface_v2_t_handler (vl_api_pg_create_interface_v2_t *mp)
{
vl_api_pg_create_interface_v2_reply_t *rmp;
int rv = 0;
+ u32 pg_if_id = ~0;
pg_main_t *pg = &pg_main;
- u32 pg_if_id =
- pg_interface_add_or_get (pg, ntohl (mp->interface_id), mp->gso_enabled,
- ntohl (mp->gso_size), 0, (u8) mp->mode);
+
+ pg_interface_args_t args = { 0 };
+
+ args.mode = (pg_interface_mode_t) mp->mode;
+ args.gso_size = 0;
+ args.hw_addr_set = 0;
+ args.flags = 0;
+ args.if_id = ntohl (mp->interface_id);
+
+ if (mp->gso_enabled)
+ {
+ args.flags = PG_INTERFACE_FLAG_GSO;
+ args.gso_size = ntohl (mp->gso_size);
+ }
+
+ pg_if_id = pg_interface_add_or_get (pg, &args);
pg_interface_t *pi = pool_elt_at_index (pg->interfaces, pg_if_id);
REPLY_MACRO2 (VL_API_PG_CREATE_INTERFACE_V2_REPLY,