On 04/02, Stephen Hemminger wrote: >On Tue, 2 Apr 2019 18:45:54 +0800 >Xiaolong Ye <xiaolong...@intel.com> wrote: > >> + >> +#include <rte_mbuf.h> >> +#include <rte_ethdev_driver.h> >> +#include <rte_ethdev_vdev.h> >> +#include <rte_malloc.h> >> +#include <rte_kvargs.h> >> +#include <rte_bus_vdev.h> >> +#include <rte_string_fns.h> >> + >> +#include <linux/if_ether.h> >> +#include <linux/if_xdp.h> >> +#include <linux/if_link.h> >> +#include <asm/barrier.h> >> +#include <arpa/inet.h> >> +#include <net/if.h> >> +#include <sys/types.h> >> +#include <sys/socket.h> >> +#include <sys/ioctl.h> >> +#include <sys/mman.h> >> +#include <unistd.h> >> +#include <poll.h> >> +#include <bpf/bpf.h> >> +#include <xsk.h> > >The ordering here seems surprising. The usual ordering is: > >Libc includes: >#include <stdio.h> >... >Sys includes: >#include <sys/types.h> > >Linux includes: >#include <linux/if_xdp.h> > >DPDK includes: >#include <rte_mbuf.h> > > >If I run "Include what you use" it has different suggestions. >Some of which you should ignore but overall there are >several good ones. > >rte_eth_af_xdp.c should add these lines: >#include <asm/int-ll64.h> // for __u64 >#include <bits/stdint-uintn.h> // for uint16_t, uint64_t, uint32_t >#include <errno.h> // for EINVAL, errno, EAGAIN, ENOMEM, EBUSY >#include <netinet/in.h> // for IPPROTO_IP >#include <rte_ethdev.h> // for rte_eth_dev, rte_eth_dev_data >#include <stdlib.h> // for strtol >#include <string.h> // for NULL, memset, strlen >#include "rte_branch_prediction.h" // for unlikely >#include "rte_common.h" // for __rte_unused, RTE_MIN, RTE_PRIORI... >#include "rte_config.h" // for RTE_PKTMBUF_HEADROOM >#include "rte_dev.h" // for rte_device, RTE_PMD_REGISTER_PARA... >#include "rte_eal.h" // for rte_eal_process_type, rte_proc_ty... >#include "rte_ethdev.h" // for rte_eth_stats, rte_eth_dev_info >#include "rte_ether.h" // for ETHER_ADDR_LEN, ether_addr >#include "rte_lcore.h" // for rte_socket_id >#include "rte_log.h" // for rte_log, RTE_LOG_ERR, RTE_LOG_INFO >#include "rte_memory.h" // for SOCKET_ID_ANY >#include "rte_memzone.h" // for rte_memzone_free, RTE_MEMZONE_IOV... >#include "rte_ring.h" // for rte_ring_free, rte_ring_create >struct rte_mempool; > >rte_eth_af_xdp.c should remove these lines: >- #include <arpa/inet.h> // lines 17-17 >- #include <poll.h> // lines 24-24 >- #include <rte_ethdev_vdev.h> // lines 7-7 >- #include <sys/mman.h> // lines 22-22 >- #include <sys/types.h> // lines 19-19 >
Thanks for pointing out, I'll adjust the headers. Thanks, Xiaolong > > >