case VNET_DPDK_PMD_CXGBE:
case VNET_DPDK_PMD_MLX4:
case VNET_DPDK_PMD_MLX5:
+ case VNET_DPDK_PMD_QEDE:
xd->port_type = port_type_from_speed_capa (&dev_info);
break;
}
if (dm->conf->no_tx_checksum_offload == 0)
- if (xd->flags & DPDK_DEVICE_FLAG_TX_OFFLOAD)
+ if (xd->flags & DPDK_DEVICE_FLAG_TX_OFFLOAD && hi != NULL)
hi->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD;
dpdk_device_setup (xd);
}
if (hi)
- hi->max_l3_packet_bytes[VLIB_RX] = hi->max_l3_packet_bytes[VLIB_TX] =
- xd->port_conf.rxmode.max_rx_pkt_len - sizeof (ethernet_header_t);
+ hi->max_packet_bytes = xd->port_conf.rxmode.max_rx_pkt_len
+ - sizeof (ethernet_header_t);
else
clib_warning ("hi NULL");
/* Cavium Network Adapter */
else if (d->vendor_id == 0x177d && d->device_id == 0x9712)
;
+ /* Cavium FastlinQ QL41000 Series */
+ else if (d->vendor_id == 0x1077 && d->device_id >= 0x8070 && d->device_id <= 0x8090)
+ ;
/* Mellanox */
else if (d->vendor_id == 0x15b3 && d->device_id >= 0x1013 && d->device_id <= 0x101a)
{
dpdk_config (vlib_main_t * vm, unformat_input_t * input)
{
clib_error_t *error = 0;
- dpdk_main_t *dm = &dpdk_main;
dpdk_config_main_t *conf = &dpdk_config_main;
vlib_thread_main_t *tm = vlib_get_thread_main ();
dpdk_device_config_t *devconf;
unformat_input_t sub_input;
uword x;
u8 *s, *tmp = 0;
- u8 *rte_cmd = 0, *ethname = 0;
u32 log_level;
int ret, i;
int num_whitelisted = 0;
/* Prime the pump */
if (unformat (input, "no-hugetlb"))
{
- vec_add1 (conf->eal_init_args, (u8 *) "no-huge");
+ vec_add1 (conf->eal_init_args, (u8 *) "--no-huge");
no_huge = 1;
}
tmp = format (0, "--no-pci%c", 0);
vec_add1 (conf->eal_init_args, tmp);
}
- else if (unformat (input, "poll-sleep %d", &dm->poll_sleep_usec))
- ;
#define _(a) \
else if (unformat(input, #a)) \
}
}
- vec_free (rte_cmd);
- vec_free (ethname);
-
if (error)
return error;
vec_add1 (conf->eal_init_args, tmp);
/* set socket-mem */
- tmp = format (0, "--socket-mem%c", 0);
- vec_add1 (conf->eal_init_args, tmp);
- tmp = format (0, "%s%c", socket_mem, 0);
- vec_add1 (conf->eal_init_args, tmp);
+ if (!no_huge)
+ {
+ tmp = format (0, "--socket-mem%c", 0);
+ vec_add1 (conf->eal_init_args, tmp);
+ tmp = format (0, "%s%c", socket_mem, 0);
+ vec_add1 (conf->eal_init_args, tmp);
+ }
/* NULL terminate the "argv" vector, in case of stupidity */
vec_add1 (conf->eal_init_args, 0);
xd = &dm->devices[j];
}
}
- ASSERT (xd != NULL);
-
- if (xd->pmd == VNET_DPDK_PMD_BOND)
+ if (xd != NULL && xd->pmd == VNET_DPDK_PMD_BOND)
{
u8 addr[6];
dpdk_portid_t slink[16];
/* Init l3 packet size allowed on bonded interface */
bhi->max_packet_bytes = ETHERNET_MAX_PACKET_BYTES;
- bhi->max_l3_packet_bytes[VLIB_RX] =
- bhi->max_l3_packet_bytes[VLIB_TX] =
- ETHERNET_MAX_PACKET_BYTES - sizeof (ethernet_header_t);
while (nlink >= 1)
{ /* for all slave links */
int slave = slink[--nlink];
clib_memcpy (shi->hw_address, addr, 6);
clib_memcpy (sei->address, addr, 6);
/* Set l3 packet size allowed as the lowest of slave */
- if (bhi->max_l3_packet_bytes[VLIB_RX] >
- shi->max_l3_packet_bytes[VLIB_RX])
- bhi->max_l3_packet_bytes[VLIB_RX] =
- bhi->max_l3_packet_bytes[VLIB_TX] =
- shi->max_l3_packet_bytes[VLIB_RX];
- /* Set max packet size allowed as the lowest of slave */
if (bhi->max_packet_bytes > shi->max_packet_bytes)
bhi->max_packet_bytes = shi->max_packet_bytes;
}