patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch
@ 2020-01-09 13:34 Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 1/7] eal: drop unused macros for primary process check Kevin Traynor
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor

Fixes for various build configurations.

Ali Alnubani (1):
  net/mlx: fix build with clang 9

^ what it says

Kevin Traynor (2):
  kni: fix ethtool build for gcc 9
  pmdinfogen: fix freebsd build

^ 18.11 branch specific

Stephen Hemminger (3):
  eal: drop unused macros for primary process check
  eventdev: use same log macro for all unsupported calls
  eal: remove legacy PMD log macro

^ Removes unused code that was causing build failure with clang 9

Thomas Monjalon (1):
  net/mlx: allow build only on Linux

^ As libmnl requirement was removed, mlx4 build was being attempted on FreeBSD with meson

Ali Alnubani (1):
  net/mlx: fix build with clang 9

Kevin Traynor (2):
  kni: fix ethtool build for gcc 9
  pmdinfogen: fix freebsd build

Stephen Hemminger (3):
  eal: drop unused macros for primary process check
  eventdev: use same log macro for all unsupported calls
  eal: remove legacy PMD log macro

Thomas Monjalon (1):
  net/mlx: allow build only on Linux

 buildtools/pmdinfogen/meson.build             |  5 ++
 drivers/net/mlx4/meson.build                  | 11 +++-
 drivers/net/mlx4/mlx4_utils.h                 |  5 +-
 drivers/net/mlx5/meson.build                  | 10 +++-
 drivers/net/mlx5/mlx5_utils.h                 |  5 +-
 kernel/linux/kni/ethtool/igb/e1000_82575.c    |  3 +-
 kernel/linux/kni/ethtool/igb/e1000_mbx.c      |  1 +
 kernel/linux/kni/ethtool/igb/e1000_phy.c      |  1 +
 kernel/linux/kni/ethtool/igb/igb_ethtool.c    |  4 ++
 kernel/linux/kni/ethtool/igb/igb_main.c       |  4 ++
 kernel/linux/kni/ethtool/igb/igb_param.c      |  1 +
 kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c  |  2 +
 kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c |  1 +
 .../linux/kni/ethtool/ixgbe/ixgbe_ethtool.c   |  1 +
 kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c   |  4 ++
 lib/librte_eal/common/include/rte_dev.h       | 56 +------------------
 lib/librte_eventdev/rte_eventdev.c            |  4 +-
 17 files changed, 54 insertions(+), 64 deletions(-)

-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 1/7] eal: drop unused macros for primary process check
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 2/7] eventdev: use same log macro for all unsupported calls Kevin Traynor
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Stephen Hemminger, Ferruh Yigit

From: Stephen Hemminger <stephen@networkplumber.org>

[ upstream commit e37aad5ed3f52be57a8b6e20809994c803578b13 ]

No usage in current DPDK code base.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eal/common/include/rte_dev.h | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h
index 24e637d27..850b03e13 100644
--- a/lib/librte_eal/common/include/rte_dev.h
+++ b/lib/librte_eal/common/include/rte_dev.h
@@ -77,19 +77,4 @@ rte_pmd_debug_trace(const char *func_name, const char *fmt, ...)
 #endif
 
-/* Macros for checking for restricting functions to primary instance only */
-#define RTE_PROC_PRIMARY_OR_ERR_RET(retval) do { \
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \
-		RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \
-		return retval; \
-	} \
-} while (0)
-
-#define RTE_PROC_PRIMARY_OR_RET() do { \
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \
-		RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \
-		return; \
-	} \
-} while (0)
-
 /* Macros to check for invalid function pointers */
 #define RTE_FUNC_PTR_OR_ERR_RET(func, retval) do { \
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 2/7] eventdev: use same log macro for all unsupported calls
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 1/7] eal: drop unused macros for primary process check Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 3/7] eal: remove legacy PMD log macro Kevin Traynor
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Stephen Hemminger, Ferruh Yigit

From: Stephen Hemminger <stephen@networkplumber.org>

[ upstream commit b5af9abaa74fc610726c631b58312cc8d77801df ]

The driver already has RTE_EDEV_XXX log macros so use
them in two more places.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eventdev/rte_eventdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
index 677850cd0..6396a9649 100644
--- a/lib/librte_eventdev/rte_eventdev.c
+++ b/lib/librte_eventdev/rte_eventdev.c
@@ -893,5 +893,5 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
 
 	if (*dev->dev_ops->port_link == NULL) {
-		RTE_PMD_DEBUG_TRACE("Function not supported\n");
+		RTE_EDEV_LOG_ERR("Function not supported\n");
 		rte_errno = ENOTSUP;
 		return 0;
@@ -952,5 +952,5 @@ rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
 
 	if (*dev->dev_ops->port_unlink == NULL) {
-		RTE_PMD_DEBUG_TRACE("Function not supported\n");
+		RTE_EDEV_LOG_ERR("Function not supported");
 		rte_errno = ENOTSUP;
 		return 0;
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 3/7] eal: remove legacy PMD log macro
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 1/7] eal: drop unused macros for primary process check Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 2/7] eventdev: use same log macro for all unsupported calls Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 4/7] net/mlx: fix build with clang 9 Kevin Traynor
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Stephen Hemminger, Ferruh Yigit

From: Stephen Hemminger <stephen@networkplumber.org>

[ upstream commit e7d798172f911b1af74f3c54ef67e8bb18b36284 ]

The RTE_PMD_DEBUG_TRACE was only enabled for EVENTDEV_DEBUG and
that configuration is now handled by RTE_EDEV_LOG macros.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eal/common/include/rte_dev.h | 41 ++-----------------------
 1 file changed, 2 insertions(+), 39 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h
index 850b03e13..d006b5743 100644
--- a/lib/librte_eal/common/include/rte_dev.h
+++ b/lib/librte_eal/common/include/rte_dev.h
@@ -44,50 +44,13 @@ typedef void (*rte_dev_event_cb_fn)(const char *device_name,
 					void *cb_arg);
 
-__attribute__((format(printf, 2, 0)))
-static inline void
-rte_pmd_debug_trace(const char *func_name, const char *fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-
-	{
-		char buffer[vsnprintf(NULL, 0, fmt, ap) + 1];
-
-		va_end(ap);
-
-		va_start(ap, fmt);
-		vsnprintf(buffer, sizeof(buffer), fmt, ap);
-		va_end(ap);
-
-		rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s",
-			func_name, buffer);
-	}
-}
-
-/*
- * Enable RTE_PMD_DEBUG_TRACE() when at least one component relying on the
- * RTE_*_RET() macros defined below is compiled in debug mode.
- */
-#if defined(RTE_LIBRTE_EVENTDEV_DEBUG)
-#define RTE_PMD_DEBUG_TRACE(...) \
-	rte_pmd_debug_trace(__func__, __VA_ARGS__)
-#else
-#define RTE_PMD_DEBUG_TRACE(...) (void)0
-#endif
-
 /* Macros to check for invalid function pointers */
 #define RTE_FUNC_PTR_OR_ERR_RET(func, retval) do { \
-	if ((func) == NULL) { \
-		RTE_PMD_DEBUG_TRACE("Function not supported\n"); \
+	if ((func) == NULL) \
 		return retval; \
-	} \
 } while (0)
 
 #define RTE_FUNC_PTR_OR_RET(func) do { \
-	if ((func) == NULL) { \
-		RTE_PMD_DEBUG_TRACE("Function not supported\n"); \
+	if ((func) == NULL) \
 		return; \
-	} \
 } while (0)
 
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 4/7] net/mlx: fix build with clang 9
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
                   ` (2 preceding siblings ...)
  2020-01-09 13:34 ` [dpdk-stable] [18.11 3/7] eal: remove legacy PMD log macro Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 5/7] kni: fix ethtool build for gcc 9 Kevin Traynor
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Ali Alnubani, Matan Azrad

From: Ali Alnubani <alialnu@mellanox.com>

[ upstream commit c3e89f69facbbfe131b6a6723665d48801ac943d ]

This rewrites the MKSTR macro appending an empty string to its arguments
to resolve build failures similar to:

  drivers/net/mlx4/mlx4.c:461:14: fatal error: format string is not a
  string literal [-Wformat-nonliteral]
          MKSTR(path, "%s/device/uevent", device->ibdev_path);

  drivers/net/mlx4/mlx4_utils.h:82:30: note: expanded from macro 'MKSTR'
          char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \

  drivers/net/mlx5/mlx5_stats.c:144:15: fatal error: format string is not a
  string literal [-Wformat-nonliteral]
  	MKSTR(path, "%s/ports/%d/hw_counters/%s",

  drivers/net/mlx5/mlx5_utils.h:149:30: note: expanded from macro 'MKSTR'
  	char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \

The errors reproduce with clang version 9.0.0, and the release notes
don't mention what could have caused them.

Fixes: 7fae69eeff13 ("mlx4: new poll mode driver")
Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")

Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx4/mlx4_utils.h | 5 +++--
 drivers/net/mlx5/mlx5_utils.h | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/mlx4/mlx4_utils.h b/drivers/net/mlx4/mlx4_utils.h
index 2a550df88..a774ccba3 100644
--- a/drivers/net/mlx4/mlx4_utils.h
+++ b/drivers/net/mlx4/mlx4_utils.h
@@ -78,7 +78,8 @@ pmd_drv_log_basename(const char *s)
 /** Allocate a buffer on the stack and fill it with a printf format string. */
 #define MKSTR(name, ...) \
-	char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \
+	int mkstr_size_##name = snprintf(NULL, 0, "" __VA_ARGS__); \
+	char name[mkstr_size_##name + 1]; \
 	\
-	snprintf(name, sizeof(name), __VA_ARGS__)
+	snprintf(name, sizeof(name), "" __VA_ARGS__)
 
 /** Generate a string out of the provided arguments. */
diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h
index 97092c749..fa495b378 100644
--- a/drivers/net/mlx5/mlx5_utils.h
+++ b/drivers/net/mlx5/mlx5_utils.h
@@ -147,7 +147,8 @@ extern int mlx5_logtype;
 /* Allocate a buffer on the stack and fill it with a printf format string. */
 #define MKSTR(name, ...) \
-	char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \
+	int mkstr_size_##name = snprintf(NULL, 0, "" __VA_ARGS__); \
+	char name[mkstr_size_##name + 1]; \
 	\
-	snprintf(name, sizeof(name), __VA_ARGS__)
+	snprintf(name, sizeof(name), "" __VA_ARGS__)
 
 /**
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 5/7] kni: fix ethtool build for gcc 9
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
                   ` (3 preceding siblings ...)
  2020-01-09 13:34 ` [dpdk-stable] [18.11 4/7] net/mlx: fix build with clang 9 Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-09 13:34 ` [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build Kevin Traynor
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Ferruh Yigit

Add fall through comments to switch statements.

This is not an issue on DPDK master branch as ethtool
for KNI has been removed.

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>
---
 kernel/linux/kni/ethtool/igb/e1000_82575.c     | 3 ++-
 kernel/linux/kni/ethtool/igb/e1000_mbx.c       | 1 +
 kernel/linux/kni/ethtool/igb/e1000_phy.c       | 1 +
 kernel/linux/kni/ethtool/igb/igb_ethtool.c     | 4 ++++
 kernel/linux/kni/ethtool/igb/igb_main.c        | 4 ++++
 kernel/linux/kni/ethtool/igb/igb_param.c       | 1 +
 kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c   | 2 ++
 kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c  | 1 +
 kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c | 1 +
 kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c    | 4 ++++
 10 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/kernel/linux/kni/ethtool/igb/e1000_82575.c b/kernel/linux/kni/ethtool/igb/e1000_82575.c
index 98346709d..7ab4b44a8 100644
--- a/kernel/linux/kni/ethtool/igb/e1000_82575.c
+++ b/kernel/linux/kni/ethtool/igb/e1000_82575.c
@@ -1634,5 +1634,5 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw)
 		/* disable PCS autoneg and support parallel detect only */
 		pcs_autoneg = false;
-		/* fall through to default case */
+		/* fallthrough */
 	default:
 		if (hw->mac.type == e1000_82575 ||
@@ -1761,4 +1761,5 @@ static s32 e1000_get_media_type_82575(struct e1000_hw *hw)
 		}
 		/* fall through for I2C based SGMII */
+		/* fallthrough */
 	case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES:
 		/* read media type from SFP EEPROM */
diff --git a/kernel/linux/kni/ethtool/igb/e1000_mbx.c b/kernel/linux/kni/ethtool/igb/e1000_mbx.c
index 1be443491..18e660532 100644
--- a/kernel/linux/kni/ethtool/igb/e1000_mbx.c
+++ b/kernel/linux/kni/ethtool/igb/e1000_mbx.c
@@ -505,4 +505,5 @@ s32 e1000_init_mbx_params_pf(struct e1000_hw *hw)
 		mbx->stats.acks = 0;
 		mbx->stats.rsts = 0;
+		/* fallthrough */
 	default:
 		return E1000_SUCCESS;
diff --git a/kernel/linux/kni/ethtool/igb/e1000_phy.c b/kernel/linux/kni/ethtool/igb/e1000_phy.c
index 1934a309c..5257b9141 100644
--- a/kernel/linux/kni/ethtool/igb/e1000_phy.c
+++ b/kernel/linux/kni/ethtool/igb/e1000_phy.c
@@ -1206,4 +1206,5 @@ s32 e1000_copper_link_setup_m88_gen2(struct e1000_hw *hw)
 			break;
 		}
+		/* fallthrough */
 	case 0:
 	default:
diff --git a/kernel/linux/kni/ethtool/igb/igb_ethtool.c b/kernel/linux/kni/ethtool/igb/igb_ethtool.c
index b6bddc025..a35f3da7d 100644
--- a/kernel/linux/kni/ethtool/igb/igb_ethtool.c
+++ b/kernel/linux/kni/ethtool/igb/igb_ethtool.c
@@ -2565,7 +2565,9 @@ static int igb_get_rss_hash_opts(struct igb_adapter *adapter,
 	case TCP_V4_FLOW:
 		cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+		/* fallthrough */
 	case UDP_V4_FLOW:
 		if (adapter->flags & IGB_FLAG_RSS_FIELD_IPV4_UDP)
 			cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+		/* fallthrough */
 	case SCTP_V4_FLOW:
 	case AH_ESP_V4_FLOW:
@@ -2577,7 +2579,9 @@ static int igb_get_rss_hash_opts(struct igb_adapter *adapter,
 	case TCP_V6_FLOW:
 		cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+		/* fallthrough */
 	case UDP_V6_FLOW:
 		if (adapter->flags & IGB_FLAG_RSS_FIELD_IPV6_UDP)
 			cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+		/* fallthrough */
 	case SCTP_V6_FLOW:
 	case AH_ESP_V6_FLOW:
diff --git a/kernel/linux/kni/ethtool/igb/igb_main.c b/kernel/linux/kni/ethtool/igb/igb_main.c
index 69d3ea5fa..cb1b53677 100644
--- a/kernel/linux/kni/ethtool/igb/igb_main.c
+++ b/kernel/linux/kni/ethtool/igb/igb_main.c
@@ -1042,4 +1042,5 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix)
 		         "Falling back to MSI interrupts.\n");
 		igb_reset_interrupt_capability(adapter);
+		/* fallthrough */
 	case IGB_INT_MODE_MSI:
 		if (!pci_enable_msi(pdev))
@@ -4586,4 +4587,5 @@ bool igb_has_link(struct igb_adapter *adapter)
 		if (!hw->mac.get_link_status)
 			return true;
+		/* fallthrough */
 	case e1000_media_type_internal_serdes:
 		e1000_check_for_link(hw);
@@ -9562,4 +9564,5 @@ static void igb_vmm_control(struct igb_adapter *adapter)
 			E1000_DTXCTL_SPOOF_INT);
 		E1000_WRITE_REG(hw, E1000_DTXCTL, reg);
+		/* fallthrough */
 	case e1000_82580:
 		/* enable replication vlan tag stripping */
@@ -9567,4 +9570,5 @@ static void igb_vmm_control(struct igb_adapter *adapter)
 		reg |= E1000_RPLOLR_STRVLAN;
 		E1000_WRITE_REG(hw, E1000_RPLOLR, reg);
+		/* fallthrough */
 	case e1000_i350:
 	case e1000_i354:
diff --git a/kernel/linux/kni/ethtool/igb/igb_param.c b/kernel/linux/kni/ethtool/igb/igb_param.c
index 98209a101..2aca46ca1 100644
--- a/kernel/linux/kni/ethtool/igb/igb_param.c
+++ b/kernel/linux/kni/ethtool/igb/igb_param.c
@@ -610,4 +610,5 @@ void igb_check_options(struct igb_adapter *adapter)
 				if (adapter->rss_queues)
 					break;
+				/* fallthrough */
 			case 0:
 				adapter->rss_queues = min_t(u32, opt.arg.r.max, num_online_cpus());
diff --git a/kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c b/kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c
index 3f1591230..10e670663 100644
--- a/kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c
+++ b/kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c
@@ -1582,4 +1582,5 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
 		/* mask VLAN ID, fall through to mask VLAN priority */
 		fdirm |= IXGBE_FDIRM_VLANID;
+		/* fallthrough */
 	case 0x0FFF:
 		/* mask VLAN priority */
@@ -1762,4 +1763,5 @@ s32 ixgbe_fdir_add_perfect_filter_82599(struct ixgbe_hw *hw,
 			return IXGBE_ERR_CONFIG;
 		}
+		/* fallthrough */
 	case IXGBE_ATR_FLOW_TYPE_TCPV4:
 	case IXGBE_ATR_FLOW_TYPE_UDPV4:
diff --git a/kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c b/kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c
index e9b9529a2..f17562dd8 100644
--- a/kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c
+++ b/kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c
@@ -3852,4 +3852,5 @@ void ixgbe_set_rxpba_generic(struct ixgbe_hw *hw, int num_pb, u32 headroom,
 			IXGBE_WRITE_REG(hw, IXGBE_RXPBSIZE(i), rxpktsize);
 		/* Fall through to configure remaining packet buffers */
+		/* fallthrough */
 	case PBA_STRATEGY_EQUAL:
 		rxpktsize = (pbsize / (num_pb - i)) << IXGBE_RXPBSIZE_SHIFT;
diff --git a/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c b/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c
index f2ded19e9..a03a77ff2 100644
--- a/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c
+++ b/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c
@@ -1781,4 +1781,5 @@ static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
 				break;
 			}
+			/* fallthrough */
 		case IXGBE_SUBDEV_ID_82599_SFP:
 			retval = 0;
diff --git a/kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c b/kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c
index a5acf19c5..c9b255345 100644
--- a/kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c
+++ b/kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c
@@ -841,4 +841,5 @@ static bool ixgbe_is_sfp(struct ixgbe_hw *hw)
 		if (hw->mac.type == ixgbe_mac_82598EB)
 			return true;
+		/* fallthrough */
 	default:
 		return false;
@@ -1419,4 +1420,5 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter)
 	case ixgbe_mac_X540:
 		adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
+		/* fallthrough */
 	case ixgbe_mac_82599EB:
 		adapter->flags |= IXGBE_FLAG_MSI_CAPABLE |
@@ -2034,4 +2036,5 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
 		hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC);
 		hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC);
+		/* fallthrough */
 	case ixgbe_mac_82599EB:
 		for (i = 0; i < 16; i++)
@@ -2682,4 +2685,5 @@ int ixgbe_kni_probe(struct pci_dev *pdev,
 			if (hw->bus.func != 0)
 				break;
+			/* fallthrough */
 		case IXGBE_SUBDEV_ID_82599_SFP:
 			adapter->wol = IXGBE_WUFC_MAG;
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
                   ` (4 preceding siblings ...)
  2020-01-09 13:34 ` [dpdk-stable] [18.11 5/7] kni: fix ethtool build for gcc 9 Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-09 15:50   ` Neil Horman
  2020-01-09 15:53   ` Neil Horman
  2020-01-09 13:34 ` [dpdk-stable] [18.11 7/7] net/mlx: allow build only on Linux Kevin Traynor
  2020-01-13 16:16 ` [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
  7 siblings, 2 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Neil Horman

rte_compat.h is needed as part of the fixed commit
but it could not be found with meson on FreeBSD causing
a build failure. Add it's include directory.

This is not an issue on DPDK master branch since
rte_compat.h was moved under lib/eal.

Fixes: 3e41c8bc7584 ("eal: add ack interrupt API")

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Cc: Neil Horman <nhorman@tuxdriver.com>
---
 buildtools/pmdinfogen/meson.build | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/buildtools/pmdinfogen/meson.build b/buildtools/pmdinfogen/meson.build
index a219a8e96..ab2b20032 100644
--- a/buildtools/pmdinfogen/meson.build
+++ b/buildtools/pmdinfogen/meson.build
@@ -4,4 +4,9 @@
 pmdinfogen_inc = eal_inc
 pmdinfogen_inc += include_directories('../../lib/librte_pci')
+
+if host_machine.system() == 'freebsd'
+	pmdinfogen_inc += include_directories('../../lib/librte_compat')
+endif
+
 pmdinfogen = executable('pmdinfogen',
 	'pmdinfogen.c',
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [18.11 7/7] net/mlx: allow build only on Linux
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
                   ` (5 preceding siblings ...)
  2020-01-09 13:34 ` [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build Kevin Traynor
@ 2020-01-09 13:34 ` Kevin Traynor
  2020-01-13 16:16 ` [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
  7 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 13:34 UTC (permalink / raw)
  To: stable; +Cc: ktraynor, Thomas Monjalon, Bruce Richardson, Matan Azrad

From: Thomas Monjalon <thomas@monjalon.net>

[ upstream commit 3dee3f1b52127fac8943cbcb08e11328ef666046 ]

Currently mlx4/mlx5 support only Linux.

Fixes: 39a7ab1c14e2 ("net/mlx4: remove dependency on libmnl in meson")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx4/meson.build | 11 +++++++++--
 drivers/net/mlx5/meson.build | 10 +++++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/net/mlx4/meson.build b/drivers/net/mlx4/meson.build
index 4145f5db3..ebad30a04 100644
--- a/drivers/net/mlx4/meson.build
+++ b/drivers/net/mlx4/meson.build
@@ -3,4 +3,11 @@
 # Copyright 2018 Mellanox Technologies, Ltd
 
+if host_machine.system() != 'linux'
+	build = false
+	reason = 'only supported on Linux'
+	subdir_done()
+endif
+build = true
+
 pmd_dlopen = get_option('enable_driver_mlx_glue')
 LIB_GLUE_BASE = 'librte_pmd_mlx4_glue.so'
@@ -14,9 +21,9 @@ if pmd_dlopen
 	]
 endif
+
 libs = [
 	cc.find_library('mlx4', required:false),
 	cc.find_library('ibverbs', required:false),
 ]
-build = true
 foreach lib:libs
 	if not lib.found()
@@ -24,5 +31,5 @@ foreach lib:libs
 	endif
 endforeach
-# Compile PMD
+
 if build
 	allow_experimental_apis = true
diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build
index 81965bddc..87b267a25 100644
--- a/drivers/net/mlx5/meson.build
+++ b/drivers/net/mlx5/meson.build
@@ -3,4 +3,11 @@
 # Copyright 2018 Mellanox Technologies, Ltd
 
+if host_machine.system() != 'linux'
+	build = false
+	reason = 'only supported on Linux'
+	subdir_done()
+endif
+build = true
+
 pmd_dlopen = get_option('enable_driver_mlx_glue')
 LIB_GLUE_BASE = 'librte_pmd_mlx5_glue.so'
@@ -14,4 +21,5 @@ if pmd_dlopen
 	]
 endif
+
 libs = [
 	cc.find_library('mnl', required:false),
@@ -19,5 +27,4 @@ libs = [
 	cc.find_library('ibverbs', required:false),
 ]
-build = true
 foreach lib:libs
 	if not lib.found()
@@ -25,4 +32,5 @@ foreach lib:libs
 	endif
 endforeach
+
 if build
 	allow_experimental_apis = true
-- 
2.21.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build
  2020-01-09 13:34 ` [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build Kevin Traynor
@ 2020-01-09 15:50   ` Neil Horman
  2020-01-09 15:53   ` Neil Horman
  1 sibling, 0 replies; 13+ messages in thread
From: Neil Horman @ 2020-01-09 15:50 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: stable

On Thu, Jan 09, 2020 at 01:34:32PM +0000, Kevin Traynor wrote:
> rte_compat.h is needed as part of the fixed commit
> but it could not be found with meson on FreeBSD causing
> a build failure. Add it's include directory.
> 
> This is not an issue on DPDK master branch since
> rte_compat.h was moved under lib/eal.
> 
> Fixes: 3e41c8bc7584 ("eal: add ack interrupt API")
> 
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
> Cc: Neil Horman <nhorman@tuxdriver.com>
> ---
>  buildtools/pmdinfogen/meson.build | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/buildtools/pmdinfogen/meson.build b/buildtools/pmdinfogen/meson.build
> index a219a8e96..ab2b20032 100644
> --- a/buildtools/pmdinfogen/meson.build
> +++ b/buildtools/pmdinfogen/meson.build
> @@ -4,4 +4,9 @@
>  pmdinfogen_inc = eal_inc
>  pmdinfogen_inc += include_directories('../../lib/librte_pci')
> +
> +if host_machine.system() == 'freebsd'
> +	pmdinfogen_inc += include_directories('../../lib/librte_compat')
> +endif
> +
>  pmdinfogen = executable('pmdinfogen',
>  	'pmdinfogen.c',
> -- 
> 2.21.1
> 
> 
Acked-by: Neil Horman <nhorman@tuxdriver.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build
  2020-01-09 13:34 ` [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build Kevin Traynor
  2020-01-09 15:50   ` Neil Horman
@ 2020-01-09 15:53   ` Neil Horman
  2020-01-09 16:53     ` Kevin Traynor
  1 sibling, 1 reply; 13+ messages in thread
From: Neil Horman @ 2020-01-09 15:53 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: stable

On Thu, Jan 09, 2020 at 01:34:32PM +0000, Kevin Traynor wrote:
> rte_compat.h is needed as part of the fixed commit
> but it could not be found with meson on FreeBSD causing
> a build failure. Add it's include directory.
> 
> This is not an issue on DPDK master branch since
> rte_compat.h was moved under lib/eal.
> 
> Fixes: 3e41c8bc7584 ("eal: add ack interrupt API")
> 
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
> Cc: Neil Horman <nhorman@tuxdriver.com>
> ---
>  buildtools/pmdinfogen/meson.build | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/buildtools/pmdinfogen/meson.build b/buildtools/pmdinfogen/meson.build
> index a219a8e96..ab2b20032 100644
> --- a/buildtools/pmdinfogen/meson.build
> +++ b/buildtools/pmdinfogen/meson.build
> @@ -4,4 +4,9 @@
>  pmdinfogen_inc = eal_inc
>  pmdinfogen_inc += include_directories('../../lib/librte_pci')
> +
> +if host_machine.system() == 'freebsd'
> +	pmdinfogen_inc += include_directories('../../lib/librte_compat')
> +endif
> +
Actually, is there a corresponding Makefile change that needs to be made here
too?

Neil

>  pmdinfogen = executable('pmdinfogen',
>  	'pmdinfogen.c',
> -- 
> 2.21.1
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build
  2020-01-09 15:53   ` Neil Horman
@ 2020-01-09 16:53     ` Kevin Traynor
  0 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-09 16:53 UTC (permalink / raw)
  To: Neil Horman; +Cc: stable

On 09/01/2020 15:53, Neil Horman wrote:
> On Thu, Jan 09, 2020 at 01:34:32PM +0000, Kevin Traynor wrote:
>> rte_compat.h is needed as part of the fixed commit
>> but it could not be found with meson on FreeBSD causing
>> a build failure. Add it's include directory.
>>
>> This is not an issue on DPDK master branch since
>> rte_compat.h was moved under lib/eal.
>>
>> Fixes: 3e41c8bc7584 ("eal: add ack interrupt API")
>>
>> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
>> Cc: Neil Horman <nhorman@tuxdriver.com>
>> ---
>>  buildtools/pmdinfogen/meson.build | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/buildtools/pmdinfogen/meson.build b/buildtools/pmdinfogen/meson.build
>> index a219a8e96..ab2b20032 100644
>> --- a/buildtools/pmdinfogen/meson.build
>> +++ b/buildtools/pmdinfogen/meson.build
>> @@ -4,4 +4,9 @@
>>  pmdinfogen_inc = eal_inc
>>  pmdinfogen_inc += include_directories('../../lib/librte_pci')
>> +
>> +if host_machine.system() == 'freebsd'
>> +	pmdinfogen_inc += include_directories('../../lib/librte_compat')
>> +endif
>> +
> Actually, is there a corresponding Makefile change that needs to be made here
> too?
> 

It is building ok with make, so the header seems to getting pulled in
already along the way with the make build system.

Kevin.

> Neil
> 
>>  pmdinfogen = executable('pmdinfogen',
>>  	'pmdinfogen.c',
>> -- 
>> 2.21.1
>>
>>
> 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch
  2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
                   ` (6 preceding siblings ...)
  2020-01-09 13:34 ` [dpdk-stable] [18.11 7/7] net/mlx: allow build only on Linux Kevin Traynor
@ 2020-01-13 16:16 ` Kevin Traynor
  2020-01-14 14:29   ` Kevin Traynor
  7 siblings, 1 reply; 13+ messages in thread
From: Kevin Traynor @ 2020-01-13 16:16 UTC (permalink / raw)
  To: Kevin Traynor, stable

On 09/01/2020 13:34, Kevin Traynor wrote:
> Fixes for various build configurations.
> 
> Ali Alnubani (1):
>   net/mlx: fix build with clang 9
> 
> ^ what it says
> 
> Kevin Traynor (2):
>   kni: fix ethtool build for gcc 9
>   pmdinfogen: fix freebsd build
> 
> ^ 18.11 branch specific
> 
> Stephen Hemminger (3):
>   eal: drop unused macros for primary process check
>   eventdev: use same log macro for all unsupported calls
>   eal: remove legacy PMD log macro
> 
> ^ Removes unused code that was causing build failure with clang 9
> 
> Thomas Monjalon (1):
>   net/mlx: allow build only on Linux
> 
> ^ As libmnl requirement was removed, mlx4 build was being attempted on FreeBSD with meson
> 
> Ali Alnubani (1):
>   net/mlx: fix build with clang 9
> 
> Kevin Traynor (2):
>   kni: fix ethtool build for gcc 9
>   pmdinfogen: fix freebsd build
> 
> Stephen Hemminger (3):
>   eal: drop unused macros for primary process check
>   eventdev: use same log macro for all unsupported calls
>   eal: remove legacy PMD log macro
> 
> Thomas Monjalon (1):
>   net/mlx: allow build only on Linux
> 
>  buildtools/pmdinfogen/meson.build             |  5 ++
>  drivers/net/mlx4/meson.build                  | 11 +++-
>  drivers/net/mlx4/mlx4_utils.h                 |  5 +-
>  drivers/net/mlx5/meson.build                  | 10 +++-
>  drivers/net/mlx5/mlx5_utils.h                 |  5 +-
>  kernel/linux/kni/ethtool/igb/e1000_82575.c    |  3 +-
>  kernel/linux/kni/ethtool/igb/e1000_mbx.c      |  1 +
>  kernel/linux/kni/ethtool/igb/e1000_phy.c      |  1 +
>  kernel/linux/kni/ethtool/igb/igb_ethtool.c    |  4 ++
>  kernel/linux/kni/ethtool/igb/igb_main.c       |  4 ++
>  kernel/linux/kni/ethtool/igb/igb_param.c      |  1 +
>  kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c  |  2 +
>  kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c |  1 +
>  .../linux/kni/ethtool/ixgbe/ixgbe_ethtool.c   |  1 +
>  kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c   |  4 ++
>  lib/librte_eal/common/include/rte_dev.h       | 56 +------------------
>  lib/librte_eventdev/rte_eventdev.c            |  4 +-
>  17 files changed, 54 insertions(+), 64 deletions(-)
> 

Will push tomorrow if there are no objections.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch
  2020-01-13 16:16 ` [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
@ 2020-01-14 14:29   ` Kevin Traynor
  0 siblings, 0 replies; 13+ messages in thread
From: Kevin Traynor @ 2020-01-14 14:29 UTC (permalink / raw)
  To: Kevin Traynor, stable

On 13/01/2020 16:16, Kevin Traynor wrote:
> On 09/01/2020 13:34, Kevin Traynor wrote:
>> Fixes for various build configurations.
>>
>> Ali Alnubani (1):
>>   net/mlx: fix build with clang 9
>>
>> ^ what it says
>>
>> Kevin Traynor (2):
>>   kni: fix ethtool build for gcc 9
>>   pmdinfogen: fix freebsd build
>>
>> ^ 18.11 branch specific
>>
>> Stephen Hemminger (3):
>>   eal: drop unused macros for primary process check
>>   eventdev: use same log macro for all unsupported calls
>>   eal: remove legacy PMD log macro
>>
>> ^ Removes unused code that was causing build failure with clang 9
>>
>> Thomas Monjalon (1):
>>   net/mlx: allow build only on Linux
>>
>> ^ As libmnl requirement was removed, mlx4 build was being attempted on FreeBSD with meson
>>
>> Ali Alnubani (1):
>>   net/mlx: fix build with clang 9
>>
>> Kevin Traynor (2):
>>   kni: fix ethtool build for gcc 9
>>   pmdinfogen: fix freebsd build
>>
>> Stephen Hemminger (3):
>>   eal: drop unused macros for primary process check
>>   eventdev: use same log macro for all unsupported calls
>>   eal: remove legacy PMD log macro
>>
>> Thomas Monjalon (1):
>>   net/mlx: allow build only on Linux
>>
>>  buildtools/pmdinfogen/meson.build             |  5 ++
>>  drivers/net/mlx4/meson.build                  | 11 +++-
>>  drivers/net/mlx4/mlx4_utils.h                 |  5 +-
>>  drivers/net/mlx5/meson.build                  | 10 +++-
>>  drivers/net/mlx5/mlx5_utils.h                 |  5 +-
>>  kernel/linux/kni/ethtool/igb/e1000_82575.c    |  3 +-
>>  kernel/linux/kni/ethtool/igb/e1000_mbx.c      |  1 +
>>  kernel/linux/kni/ethtool/igb/e1000_phy.c      |  1 +
>>  kernel/linux/kni/ethtool/igb/igb_ethtool.c    |  4 ++
>>  kernel/linux/kni/ethtool/igb/igb_main.c       |  4 ++
>>  kernel/linux/kni/ethtool/igb/igb_param.c      |  1 +
>>  kernel/linux/kni/ethtool/ixgbe/ixgbe_82599.c  |  2 +
>>  kernel/linux/kni/ethtool/ixgbe/ixgbe_common.c |  1 +
>>  .../linux/kni/ethtool/ixgbe/ixgbe_ethtool.c   |  1 +
>>  kernel/linux/kni/ethtool/ixgbe/ixgbe_main.c   |  4 ++
>>  lib/librte_eal/common/include/rte_dev.h       | 56 +------------------
>>  lib/librte_eventdev/rte_eventdev.c            |  4 +-
>>  17 files changed, 54 insertions(+), 64 deletions(-)
>>
> 
> Will push tomorrow if there are no objections.
> 

Pushed these fixes.


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-01-14 14:29 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-09 13:34 [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 1/7] eal: drop unused macros for primary process check Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 2/7] eventdev: use same log macro for all unsupported calls Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 3/7] eal: remove legacy PMD log macro Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 4/7] net/mlx: fix build with clang 9 Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 5/7] kni: fix ethtool build for gcc 9 Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 6/7] pmdinfogen: fix freebsd build Kevin Traynor
2020-01-09 15:50   ` Neil Horman
2020-01-09 15:53   ` Neil Horman
2020-01-09 16:53     ` Kevin Traynor
2020-01-09 13:34 ` [dpdk-stable] [18.11 7/7] net/mlx: allow build only on Linux Kevin Traynor
2020-01-13 16:16 ` [dpdk-stable] [18.11 0/7] Build fixes for 18.11 branch Kevin Traynor
2020-01-14 14:29   ` Kevin Traynor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).