X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdevices%2Faf_packet%2Faf_packet.c;h=d0a241e2a2e912ea81d696d284afaa9702163ed5;hb=71612d61930e57e7c8ebf9e5647b15a4b23720b2;hp=62bb228f04f3b0c91d9aa98b05f8b76147ecbb3f;hpb=56dd5438b04b869065d8e901c315496bb6777455;p=vpp.git diff --git a/src/vnet/devices/af_packet/af_packet.c b/src/vnet/devices/af_packet/af_packet.c index 62bb228f04f..d0a241e2a2e 100644 --- a/src/vnet/devices/af_packet/af_packet.c +++ b/src/vnet/devices/af_packet/af_packet.c @@ -24,14 +24,16 @@ #include #include +#include #include #include -#include #include #include #include +af_packet_main_t af_packet_main; + #define AF_PACKET_DEBUG_SOCKET 0 #define AF_PACKET_TX_FRAMES_PER_BLOCK 1024 @@ -75,7 +77,7 @@ af_packet_eth_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi, { s = format (0, "/sys/class/net/%s/mtu%c", apif->host_if_name, 0); - error = vlib_sysfs_write ((char *) s, "%d", hi->max_packet_bytes); + error = clib_sysfs_write ((char *) s, "%d", hi->max_packet_bytes); vec_free (s); if (error) @@ -406,6 +408,22 @@ af_packet_delete_if (vlib_main_t * vm, u8 * host_if_name) return 0; } +int +af_packet_set_l4_cksum_offload (vlib_main_t * vm, u32 sw_if_index, u8 set) +{ + vnet_main_t *vnm = vnet_get_main (); + vnet_hw_interface_t *hw; + + hw = vnet_get_sup_hw_interface (vnm, sw_if_index); + + if (set) + hw->flags &= ~VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD; + else + hw->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD; + + return 0; +} + static clib_error_t * af_packet_init (vlib_main_t * vm) {