X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fmarvell%2Fpp2%2Fpp2.c;h=36b191a178b6f3906d01d09ff0859288ec58017d;hb=859b59133;hp=2699e346fa24322099521d38a10d40f748a95780;hpb=92cdd72058a80d0b8b28c00495b3051a0390d545;p=vpp.git diff --git a/src/plugins/marvell/pp2/pp2.c b/src/plugins/marvell/pp2/pp2.c index 2699e346fa2..36b191a178b 100644 --- a/src/plugins/marvell/pp2/pp2.c +++ b/src/plugins/marvell/pp2/pp2.c @@ -157,9 +157,12 @@ mrvl_pp2_delete_if (mrvl_pp2_if_t * ppif) while (n_bufs--) { struct pp2_buff_inf binf; - if (pp2_bpool_get_buff - (ppm->per_thread_data[0].hif, inq->bpool, &binf) == 0) - vlib_buffer_free (vm, &binf.cookie, 1); + if (pp2_bpool_get_buff (ppm->per_thread_data[0].hif, inq->bpool, + &binf) == 0) + { + u32 bi = binf.cookie; + vlib_buffer_free (vm, &bi, 1); + } } pp2_bpool_deinit (inq->bpool); } @@ -176,6 +179,7 @@ mrvl_pp2_delete_if (mrvl_pp2_if_t * ppif) void mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) { + vlib_main_t *vm = vlib_get_main (); vnet_main_t *vnm = vnet_get_main (); vlib_thread_main_t *tm = vlib_get_thread_main (); mrvl_pp2_main_t *ppm = &mrvl_pp2_main; @@ -200,8 +204,8 @@ mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) n_outqs = tm->n_vlib_mains; /* defaults */ - args->tx_q_sz = args->tx_q_sz ? args->tx_q_sz : 2048; - args->rx_q_sz = args->rx_q_sz ? args->rx_q_sz : 2048; + args->tx_q_sz = args->tx_q_sz ? args->tx_q_sz : 2 * VLIB_FRAME_SIZE; + args->rx_q_sz = args->rx_q_sz ? args->rx_q_sz : 2 * VLIB_FRAME_SIZE; if (vec_len (ppm->per_thread_data) == 0) { @@ -212,8 +216,7 @@ mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) } } - pool_get (ppm->interfaces, ppif); - memset (ppif, 0, sizeof (*ppif)); + pool_get_zero (ppm->interfaces, ppif); ppif->dev_instance = ppif - ppm->interfaces; ppif->hw_if_index = ~0; vec_validate_aligned (ppif->inqs, n_inqs - 1, CLIB_CACHE_LINE_BYTES); @@ -242,7 +245,7 @@ mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) /* FIXME bpool bit select per pp */ s = format (s, "pool-%d:%d%c", pp2_id, pp2_id + 8, 0); bpool_params.match = (char *) s; - bpool_params.buff_len = VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES; + bpool_params.buff_len = vlib_buffer_get_default_data_size (vm); /* FIXME +64 ? */ if (pp2_bpool_init (&bpool_params, &ppif->inqs[0].bpool)) { @@ -255,12 +258,12 @@ mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) s = format (s, "ppio-%d:%d%c", pp2_id, port_id, 0); ppio_params.match = (char *) s; ppio_params.type = PP2_PPIO_T_NIC; - inq_params.size = 2048; + inq_params.size = args->rx_q_sz; ppio_params.inqs_params.num_tcs = 1; ppio_params.inqs_params.tcs_params[0].pkt_offset = 0; ppio_params.inqs_params.tcs_params[0].num_in_qs = n_inqs; ppio_params.inqs_params.tcs_params[0].inqs_params = &inq_params; - ppio_params.inqs_params.tcs_params[0].pools[0] = ppif->inqs[0].bpool; + ppio_params.inqs_params.tcs_params[0].pools[0][0] = ppif->inqs[0].bpool; ppio_params.outqs_params.num_outqs = n_outqs; for (i = 0; i < n_outqs; i++) { @@ -297,6 +300,7 @@ mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) sw = vnet_get_hw_sw_interface (vnm, ppif->hw_if_index); ppif->sw_if_index = sw->sw_if_index; ppif->per_interface_next_index = ~0; + args->sw_if_index = sw->sw_if_index; vnet_hw_interface_set_input_node (vnm, ppif->hw_if_index, mrvl_pp2_input_node.index); vnet_hw_interface_assign_rx_thread (vnm, ppif->hw_if_index, 0, ~0);