diff options
author | 2023-12-07 16:40:02 +0100 | |
---|---|---|
committer | 2023-12-08 16:02:36 +0100 | |
commit | d1eb1b7523cc1378f7caef93966420f67a5ddc69 (patch) | |
tree | 9c8bd125496cf132fb1fb064cf2fc413848a8a6b /src/vnet/dev/port.c | |
parent | 31d4891cfe9451fecce1e26e51153d608c76a4f8 (diff) |
dev: caps and rx/tx offload support
Type: improvement
Change-Id: I7972f595444eacdb020f3fa2a60331c40766fc0b
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vnet/dev/port.c')
-rw-r--r-- | src/vnet/dev/port.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/vnet/dev/port.c b/src/vnet/dev/port.c index 0363ea41b48..8a6df54cbc8 100644 --- a/src/vnet/dev/port.c +++ b/src/vnet/dev/port.c @@ -573,6 +573,7 @@ vnet_dev_port_if_create (vlib_main_t *vm, vnet_dev_port_t *port) vnet_dev_driver_t *driver; vnet_sw_interface_t *sw; vnet_hw_interface_t *hw; + vnet_hw_if_caps_t caps = 0; u32 rx_node_index; driver = pool_elt_at_index (dm->drivers, dev->driver_index); @@ -607,6 +608,14 @@ vnet_dev_port_if_create (vlib_main_t *vm, vnet_dev_port_t *port) port->intf.tx_node_index = hw->tx_node_index; + caps |= port->attr.caps.interrupt_mode ? VNET_HW_IF_CAP_INT_MODE : 0; + caps |= port->attr.caps.mac_filter ? VNET_HW_IF_CAP_MAC_FILTER : 0; + caps |= port->attr.tx_offloads.tcp_gso ? VNET_HW_IF_CAP_TCP_GSO : 0; + caps |= port->attr.tx_offloads.ip4_cksum ? VNET_HW_IF_CAP_TX_CKSUM : 0; + + if (caps) + vnet_hw_if_set_caps (vnm, port->intf.hw_if_index, caps); + /* create / reuse rx node */ if (vec_len (dm->free_rx_node_indices)) { |