summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk
AgeCommit message (Expand)AuthorFilesLines
2018-12-24crypto-input: bug fix check-opKingwel Xie1-6/+6
2018-12-22dpdk: switch to in-memory mode, deprecate use of socket-memDamjan Marion1-112/+25
2018-12-22crypto-input impprovement:Kingwel Xie1-74/+163
2018-12-19vlib: support Hyper-v/Azure VMBusStephen Hemminger1-0/+32
2018-12-19dpdk plugin: blacklist PCI devices by typeDave Barach2-1/+47
2018-12-01dpdk-ipsec-mempool: allocate from dpdk mem specified by socket-mem in startup...Kingwel Xie1-22/+17
2018-11-30coding-style: missing coding-style-patchKingwel Xie1-168/+200
2018-11-29dpdk-ipsec-nodes multiarch: nodes are formatted in VLIB_NODE_FN styleKingwel Xie4-13/+24
2018-11-29dpdk: bump to DPDK 18.11Damjan Marion1-48/+5
2018-11-28dpdk: allow interface name to be specified from startup.confDamjan Marion3-4/+15
2018-11-28cmake: display warning and continue if dpdk not presentDamjan Marion1-0/+5
2018-11-21dpdk: don't shift flags twiceDamjan Marion1-3/+3
2018-11-20ethernet-input optimizationsDamjan Marion2-214/+85
2018-11-18Enable l4 checksum offload for ThunderX PMDFederico Claramonte1-0/+13
2018-11-17pcap-based dispatch tracerDave Barach1-1/+1
2018-11-15ipsec: infra for selecting backendsKlement Sekera1-37/+7
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach6-31/+33
2018-11-09dpdk: configure ip4 header checksum rx offload properlyDamjan Marion2-1/+8
2018-11-08vnet: store hw interface speed in kbps instead of using flagsDamjan Marion2-50/+6
2018-11-06dpdk: don't automatically whitelist vmxnet3 PCI interfacesSteven1-1/+14
2018-11-06dpdk: format_dpdk_device_name cleanupDamjan Marion1-7/+7
2018-11-06dpdk: fix device name suffix confusion with failsafe/netvscStephen Hemminger1-2/+2
2018-11-06dpdk: fix pmd device type when using netvsc or failsafeStephen Hemminger1-1/+1
2018-11-02dpdk: restore special handling for failsafe driverStephen Hemminger1-1/+1
2018-10-30dpdk: .function should be removed for mutiarch nodesDamjan Marion2-4/+0
2018-10-29migrate ipsec to new multiarch infraKlement Sekera2-31/+10
2018-10-25pmalloc: support for 4K pagesDamjan Marion1-1/+1
2018-10-24dpdk: fix hugepage pre-allocDamjan Marion1-1/+2
2018-10-24vppinfra: autodetect default hugepage sizeDamjan Marion1-3/+5
2018-10-23Numa-aware, growable physical memory allocator (pmalloc)Damjan Marion3-33/+25
2018-10-23dpdk: support 18.11 changes to CRC flagsStephen Hemminger1-7/+7
2018-10-23dpdk: add esp6 decrypt nodes, func declarationsMatthew Smith1-0/+30
2018-10-23c11 safe string handling supportDave Barach7-19/+19
2018-10-22vlib: pci improvementsDamjan Marion1-2/+3
2018-10-22ipsec fix missing node renamesKlement Sekera3-7/+11
2018-10-22vppinfra: use log2 page size in hugepage functionsDamjan Marion1-1/+1
2018-10-22Fix dereferencing null string in dpdk_early_initJuraj Sloboda1-0/+1
2018-10-22ipsec: split ipsec nodes into ip4/ip6 nodesKlement Sekera3-71/+254
2018-10-22dpdk: use rte_vfio_dma_map API instead of digging for vfio fdDamjan Marion1-63/+17
2018-10-20dpdk: add netvsc PMDStephen Hemminger3-1/+40
2018-10-20dpdk: use rx/tx_offload_names to formatStephen Hemminger1-38/+53
2018-10-19vppinfra: add atomic macros for __sync builtinsSirshak Das1-2/+2
2018-10-16Fix coverity issue for potentially overflowing of page sizeHaiyang Tan1-3/+3
2018-10-15dpdk: only look at PCI information on PCI devicesStephen Hemminger5-8/+26
2018-10-12dpdk: support passing log-levelStephen Hemminger1-1/+2
2018-10-10vppinfra: introduce clib_mem_vm_ext_free() to avoid fd leaksHaiyang Tan1-1/+1
2018-10-01thread: Add show threads apiMohsin Kazmi2-2/+2
2018-09-27dpdk_plugin: fix mlx5 build and runtime issuesSirshak Das1-2/+10
2018-09-26dpdk: fix QSFP+ module infoDamjan Marion1-1/+2
2018-09-25dpdk: show pluggable info in 'show hardware'Damjan Marion1-0/+28
"cm"> * * Enable or disable a callback function, with no data. */ #define clib_callback_data_enable_disable(set_,fp_,ena_) \ do { \ if (ena_) \ { \ typeof ((set_)->next[0]) data_ = { .fp = (fp_) }; \ clib_callback_data_add ((set_), data_); \ } \ else \ clib_callback_data_remove ((set_), (fp_)); \ } while (0) /** @brief Get the value of a callback, if set. * @param set_ The callback set * @param fp_ The callback function * @param v_ Set to the callback's current value * @return 1 if the function is in the set, 0 if not */ #define clib_callback_data_get_value(set_,fp_,v_) \ ({ \ int found_ = 0; \ clib_spinlock_lock_if_init ((set_)->lock); \ typeof ((set_)->next) search_ = (set_)->next; \ if (PREDICT_TRUE (search_ == 0)) \ search_ = (set_)->curr; \ u32 sz_ = vec_len (search_); \ u32 i_; \ for (i_ = 0; i_ < sz_; i_++) \ if (search_[i_].fp == (fp_)) \ { \ (v_) = search_[i]; \ found_ = 1; \ break; \ } \ clib_spinlock_unlock_if_init ((set_)->lock); \ found_; \ }) /** @brief Check if callback is set * @param set_ The callback set * @param fp_ The callback function * @return 1 if the function is in the set, 0 if not */ #define clib_callback_data_is_set(set_,fp_) \ ({ \ int found_ = 0; \ clib_spinlock_lock_if_init ((set_)->lock); \ typeof ((set_)->next) search_ = (set_)->next; \ if (PREDICT_TRUE (search_ == 0)) \ search_ = (set_)->curr; \ u32 sz_ = vec_len (search_); \ u32 i_; \ for (i_ = 0; i_ < sz_; i_++) \ if (search_[i_].fp == (fp_)) \ { \ found_ = 1; \ break; \ } \ clib_spinlock_unlock_if_init ((set_)->lock); \ found_; \ }) /** @brief Check for and get current callback set * @param set_ the callback set * @param varargs additional callback parameters */ #define clib_callback_data_check_and_get(set_) \ ({ \ typeof ((set_)->curr) curr_ = (set_)->curr; \ if (PREDICT_FALSE ((set_)->next != 0)) \ { \ clib_spinlock_lock_if_init ((set_)->lock); \ vec_reset_length (curr_); \ (set_)->spare = curr_; \ curr_ = (set_)->next; \ (set_)->next = 0; \ if (PREDICT_FALSE (0 == vec_len (curr_))) \ vec_free (curr_); \ (set_)->curr = curr_; \ clib_spinlock_unlock_if_init ((set_)->lock); \ } \ curr_; \ }) /** @brief Iterate and call a callback vector * @param vec_ the callback vector * @param varargs additional callback parameters */ #define clib_callback_data_call_vec(vec_, ...) \ do \ { \ u32 sz_ = vec_len (vec_); \ u32 i_; \ for (i_ = 0; i_ < sz_; i_++) \ { \ clib_prefetch_store (&vec_[i_ + 1]); \ (vec_[i_].fp) (&vec_[i_], __VA_ARGS__); \ } \ } \ while (0) /** @brief Call the specified callback set * @param set_ the callback set * @param varargs additional callback parameters */ #define clib_callback_data_call(set_, ...) \ do { \ typeof ((set_)->curr) v_ = clib_callback_data_check_and_get(set_); \ clib_callback_data_iterate (v_, __VA_ARGS__); \ } while (0) /** @brief prefetch the callback set * @param set_ The callback set */ #define clib_callback_data_prefetch(set_) \ do \ { \ if (PREDICT_FALSE ((set_)->curr)) \ clib_prefetch_store ((set_)->curr); \ } \ while (0) #endif /* included_callback_data_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */