From: Anatoly Burakov <anatoly.burakov@intel.com> To: dev@dpdk.org Cc: Marcin Baran <marcinx.baran@intel.com>, Robert Sanford <rsanford@akamai.com>, Erik Gabriel Carrillo <erik.g.carrillo@intel.com>, john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com Subject: [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code Date: Wed, 16 Oct 2019 18:03:39 +0100 Message-ID: <fd6c5dbbf3fdd79b43f0c3ab27586d71e9225d3e.1571245316.git.anatoly.burakov@intel.com> (raw) In-Reply-To: <cover.1571245316.git.anatoly.burakov@intel.com> In-Reply-To: <cover.1571245316.git.anatoly.burakov@intel.com> From: Marcin Baran <marcinx.baran@intel.com> Remove code for old ABI versions ahead of ABI version bump. Signed-off-by: Marcin Baran <marcinx.baran@intel.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> --- Notes: v2: - Moved this to before ABI version bump to avoid compile breakage lib/librte_timer/rte_timer.c | 90 ++---------------------------------- lib/librte_timer/rte_timer.h | 15 ------ 2 files changed, 5 insertions(+), 100 deletions(-) diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c index bdcf05d06b..de6959b809 100644 --- a/lib/librte_timer/rte_timer.c +++ b/lib/librte_timer/rte_timer.c @@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr; static const uint32_t default_data_id; static uint32_t rte_timer_subsystem_initialized; -/* For maintaining older interfaces for a period */ -static struct rte_timer_data default_timer_data; - /* when debug is enabled, store some statistics */ #ifdef RTE_LIBRTE_TIMER_DEBUG #define __TIMER_STAT_ADD(priv_timer, name, n) do { \ @@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id) return 0; } -void -rte_timer_subsystem_init_v20(void) -{ - unsigned lcore_id; - struct priv_timer *priv_timer = default_timer_data.priv_timer; - - /* since priv_timer is static, it's zeroed by default, so only init some - * fields. - */ - for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) { - rte_spinlock_init(&priv_timer[lcore_id].list_lock); - priv_timer[lcore_id].prev_lcore = lcore_id; - } -} -VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0); - /* Init the timer library. Allocate an array of timer data structs in shared * memory, and allocate the zeroth entry for use with original timer * APIs. Since the intersection of the sets of lcore ids in primary and @@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0); * multiple processes. */ int -rte_timer_subsystem_init_v1905(void) +rte_timer_subsystem_init(void) { const struct rte_memzone *mz; struct rte_timer_data *data; @@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void) return 0; } -MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void), - rte_timer_subsystem_init_v1905); -BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05); void rte_timer_subsystem_finalize(void) @@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire, /* Reset and start the timer associated with the timer handle tim */ int -rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks, - enum rte_timer_type type, unsigned int tim_lcore, - rte_timer_cb_t fct, void *arg) -{ - uint64_t cur_time = rte_get_timer_cycles(); - uint64_t period; - - if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) && - !(rte_lcore_is_enabled(tim_lcore) || - rte_lcore_has_role(tim_lcore, ROLE_SERVICE)))) - return -1; - - if (type == PERIODICAL) - period = ticks; - else - period = 0; - - return __rte_timer_reset(tim, cur_time + ticks, period, tim_lcore, - fct, arg, 0, &default_timer_data); -} -VERSION_SYMBOL(rte_timer_reset, _v20, 2.0); - -int -rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks, +rte_timer_reset(struct rte_timer *tim, uint64_t ticks, enum rte_timer_type type, unsigned int tim_lcore, rte_timer_cb_t fct, void *arg) { return rte_timer_alt_reset(default_data_id, tim, ticks, type, tim_lcore, fct, arg); } -MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks, - enum rte_timer_type type, - unsigned int tim_lcore, - rte_timer_cb_t fct, void *arg), - rte_timer_reset_v1905); -BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05); int rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim, @@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked, /* Stop the timer associated with the timer handle tim */ int -rte_timer_stop_v20(struct rte_timer *tim) -{ - return __rte_timer_stop(tim, 0, &default_timer_data); -} -VERSION_SYMBOL(rte_timer_stop, _v20, 2.0); - -int -rte_timer_stop_v1905(struct rte_timer *tim) +rte_timer_stop(struct rte_timer *tim) { return rte_timer_alt_stop(default_data_id, tim); } -MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim), - rte_timer_stop_v1905); -BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05); int rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim) @@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data) priv_timer[lcore_id].running_tim = NULL; } -void -rte_timer_manage_v20(void) -{ - __rte_timer_manage(&default_timer_data); -} -VERSION_SYMBOL(rte_timer_manage, _v20, 2.0); - int -rte_timer_manage_v1905(void) +rte_timer_manage(void) { struct rte_timer_data *timer_data; @@ -835,8 +767,6 @@ rte_timer_manage_v1905(void) return 0; } -MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905); -BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05); int rte_timer_alt_manage(uint32_t timer_data_id, @@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f) #endif } -void -rte_timer_dump_stats_v20(FILE *f) -{ - __rte_timer_dump_stats(&default_timer_data, f); -} -VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0); - int -rte_timer_dump_stats_v1905(FILE *f) +rte_timer_dump_stats(FILE *f) { return rte_timer_alt_dump_stats(default_data_id, f); } -MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f), - rte_timer_dump_stats_v1905); -BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05); int rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f) diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h index 05d287d8f2..9dc5fc3092 100644 --- a/lib/librte_timer/rte_timer.h +++ b/lib/librte_timer/rte_timer.h @@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id); * subsystem */ int rte_timer_subsystem_init(void); -int rte_timer_subsystem_init_v1905(void); -void rte_timer_subsystem_init_v20(void); /** * @warning @@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim); int rte_timer_reset(struct rte_timer *tim, uint64_t ticks, enum rte_timer_type type, unsigned tim_lcore, rte_timer_cb_t fct, void *arg); -int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks, - enum rte_timer_type type, unsigned int tim_lcore, - rte_timer_cb_t fct, void *arg); -int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks, - enum rte_timer_type type, unsigned int tim_lcore, - rte_timer_cb_t fct, void *arg); - /** * Loop until rte_timer_reset() succeeds. @@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks, * - (-1): The timer is in the RUNNING or CONFIG state. */ int rte_timer_stop(struct rte_timer *tim); -int rte_timer_stop_v1905(struct rte_timer *tim); -int rte_timer_stop_v20(struct rte_timer *tim); /** * Loop until rte_timer_stop() succeeds. @@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim); * - -EINVAL: timer subsystem not yet initialized */ int rte_timer_manage(void); -int rte_timer_manage_v1905(void); -void rte_timer_manage_v20(void); /** * Dump statistics about timers. @@ -371,8 +358,6 @@ void rte_timer_manage_v20(void); * - -EINVAL: timer subsystem not yet initialized */ int rte_timer_dump_stats(FILE *f); -int rte_timer_dump_stats_v1905(FILE *f); -void rte_timer_dump_stats_v20(FILE *f); /** * @warning -- 2.17.1
next prev parent reply index Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-30 9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran 2019-09-30 10:27 ` Bruce Richardson 2019-09-30 9:21 ` [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0 Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor Marcin Baran 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov 2019-10-17 8:50 ` Bruce Richardson 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 " Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 " Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 " Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov 2019-11-20 20:17 ` Thomas Monjalon 2019-11-20 22:13 ` David Marchand 2019-11-21 10:22 ` Burakov, Anatoly 2019-11-21 13:24 ` Kinsella, Ray 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov 2019-11-20 19:51 ` David Marchand 2019-11-20 22:01 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov 2019-11-20 19:35 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-20 20:05 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 07/12] lpm: " Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 08/12] distributor: " Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov 2019-11-20 20:47 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov 2019-11-19 13:53 ` Thomas Monjalon 2019-11-19 15:48 ` Burakov, Anatoly 2019-11-20 12:10 ` Kinsella, Ray 2019-11-20 13:31 ` Thomas Monjalon 2019-11-20 14:10 ` Kinsella, Ray 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-19 14:01 ` Thomas Monjalon 2019-11-19 15:38 ` Burakov, Anatoly 2019-11-19 16:05 ` Thomas Monjalon 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-11-19 17:38 ` Thomas Monjalon 2019-11-20 11:50 ` Burakov, Anatoly 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov 2019-11-19 21:42 ` David Marchand 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov 2019-11-19 21:43 ` David Marchand 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 06/10] distributor: " Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-11-19 17:46 ` Thomas Monjalon 2019-11-19 21:50 ` David Marchand 2019-11-22 7:07 ` Sachin Saxena 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-11-19 18:16 ` Thomas Monjalon 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 05/10] lpm: " Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 06/10] distributor: " Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov 2019-11-05 11:05 ` David Marchand 2019-11-05 13:50 ` Bruce Richardson 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-06 15:38 ` David Marchand 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 05/10] lpm: " Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 06/10] distributor: " Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov 2019-10-17 21:04 ` Carrillo, Erik G 2019-10-21 13:24 ` Kevin Traynor 2019-10-24 9:07 ` Burakov, Anatoly 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 05/10] lpm: " Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov 2019-10-17 15:59 ` Hunt, David 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-10-17 16:00 ` Hunt, David 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-10-17 14:32 ` [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov 2019-10-17 8:44 ` Bruce Richardson 2019-10-17 10:25 ` Burakov, Anatoly 2019-10-17 14:09 ` Luca Boccassi 2019-10-17 14:12 ` Bruce Richardson 2019-10-18 10:07 ` Kevin Traynor 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script Anatoly Burakov 2019-10-16 17:03 ` Anatoly Burakov [this message] 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 5/9] lpm: remove deprecated code Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov 2019-10-17 10:53 ` Hunt, David 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Anatoly Burakov 2019-10-16 13:22 ` Bruce Richardson 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-10-16 13:25 ` Bruce Richardson 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-10-16 13:33 ` Bruce Richardson 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 05/10] lpm: " Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 06/10] distributor: " Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov 2019-10-16 13:18 ` Hunt, David 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script Anatoly Burakov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=fd6c5dbbf3fdd79b43f0c3ab27586d71e9225d3e.1571245316.git.anatoly.burakov@intel.com \ --to=anatoly.burakov@intel.com \ --cc=bruce.richardson@intel.com \ --cc=david.marchand@redhat.com \ --cc=dev@dpdk.org \ --cc=erik.g.carrillo@intel.com \ --cc=john.mcnamara@intel.com \ --cc=marcinx.baran@intel.com \ --cc=rsanford@akamai.com \ --cc=thomas@monjalon.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK-dev Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \ dev@dpdk.org public-inbox-index dpdk-dev Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git