* [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible
@ 2017-06-08 22:01 netanel
2017-06-08 22:01 ` [PATCH net-next 08/13] net: ena: separate skb allocation to dedicated function netanel
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 04aade8..424b4d7 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -1264,7 +1264,7 @@ static irqreturn_t ena_intr_msix_io(int irq, void *data)
{
struct ena_napi *ena_napi = data;
- napi_schedule(&ena_napi->napi);
+ napi_schedule_irqoff(&ena_napi->napi);
return IRQ_HANDLED;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 08/13] net: ena: separate skb allocation to dedicated function
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
@ 2017-06-08 22:01 ` netanel
2017-06-08 22:01 ` [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set() netanel
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 44 +++++++++++++++++-----------
1 file changed, 27 insertions(+), 17 deletions(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 424b4d7..7dee448 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -825,6 +825,28 @@ static int ena_clean_tx_irq(struct ena_ring *tx_ring, u32 budget)
return tx_pkts;
}
+static struct sk_buff *ena_alloc_skb(struct ena_ring *rx_ring, bool frags)
+{
+ struct sk_buff *skb;
+
+ if (frags)
+ skb = napi_get_frags(rx_ring->napi);
+ else
+ skb = netdev_alloc_skb_ip_align(rx_ring->netdev,
+ rx_ring->rx_copybreak);
+
+ if (unlikely(!skb)) {
+ u64_stats_update_begin(&rx_ring->syncp);
+ rx_ring->rx_stats.skb_alloc_fail++;
+ u64_stats_update_end(&rx_ring->syncp);
+ netif_dbg(rx_ring->adapter, rx_err, rx_ring->netdev,
+ "Failed to allocate skb. frags: %d\n", frags);
+ return NULL;
+ }
+
+ return skb;
+}
+
static struct sk_buff *ena_rx_skb(struct ena_ring *rx_ring,
struct ena_com_rx_buf_info *ena_bufs,
u32 descs,
@@ -854,16 +876,9 @@ static struct sk_buff *ena_rx_skb(struct ena_ring *rx_ring,
prefetch(va + NET_IP_ALIGN);
if (len <= rx_ring->rx_copybreak) {
- skb = netdev_alloc_skb_ip_align(rx_ring->netdev,
- rx_ring->rx_copybreak);
- if (unlikely(!skb)) {
- u64_stats_update_begin(&rx_ring->syncp);
- rx_ring->rx_stats.skb_alloc_fail++;
- u64_stats_update_end(&rx_ring->syncp);
- netif_err(rx_ring->adapter, rx_err, rx_ring->netdev,
- "Failed to allocate skb\n");
+ skb = ena_alloc_skb(rx_ring, false);
+ if (unlikely(!skb))
return NULL;
- }
netif_dbg(rx_ring->adapter, rx_status, rx_ring->netdev,
"rx allocated small packet. len %d. data_len %d\n",
@@ -882,20 +897,15 @@ static struct sk_buff *ena_rx_skb(struct ena_ring *rx_ring,
skb_put(skb, len);
skb->protocol = eth_type_trans(skb, rx_ring->netdev);
+ rx_ring->free_rx_ids[*next_to_clean] = req_id;
*next_to_clean = ENA_RX_RING_IDX_ADD(*next_to_clean, descs,
rx_ring->ring_size);
return skb;
}
- skb = napi_get_frags(rx_ring->napi);
- if (unlikely(!skb)) {
- netif_dbg(rx_ring->adapter, rx_status, rx_ring->netdev,
- "Failed allocating skb\n");
- u64_stats_update_begin(&rx_ring->syncp);
- rx_ring->rx_stats.skb_alloc_fail++;
- u64_stats_update_end(&rx_ring->syncp);
+ skb = ena_alloc_skb(rx_ring, true);
+ if (unlikely(!skb))
return NULL;
- }
do {
dma_unmap_page(rx_ring->dev,
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set()
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
2017-06-08 22:01 ` [PATCH net-next 08/13] net: ena: separate skb allocation to dedicated function netanel
@ 2017-06-08 22:01 ` netanel
2017-06-08 22:01 ` [PATCH net-next 10/13] net: ena: add mtu limitation in ena_change_mtu() netanel
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_com.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
index f6e1d30..8efb85e 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.c
+++ b/drivers/net/ethernet/amazon/ena/ena_com.c
@@ -100,7 +100,7 @@ static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev,
}
ena_addr->mem_addr_low = (u32)addr;
- ena_addr->mem_addr_high = (u64)addr >> 32;
+ ena_addr->mem_addr_high = (u16)((u64)addr >> 32);
return 0;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 10/13] net: ena: add mtu limitation in ena_change_mtu()
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
2017-06-08 22:01 ` [PATCH net-next 08/13] net: ena: separate skb allocation to dedicated function netanel
2017-06-08 22:01 ` [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set() netanel
@ 2017-06-08 22:01 ` netanel
2017-06-08 22:01 ` [PATCH net-next 11/13] net: ena: update driver's rx drop statistics netanel
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 7dee448..7f31f4c 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -108,6 +108,13 @@ static int ena_change_mtu(struct net_device *dev, int new_mtu)
struct ena_adapter *adapter = netdev_priv(dev);
int ret;
+ if ((new_mtu > adapter->max_mtu) || (new_mtu < ENA_MIN_MTU)) {
+ netif_err(adapter, drv, dev,
+ "Invalid MTU setting. new_mtu: %d max mtu: %d min mtu: %d\n",
+ new_mtu, adapter->max_mtu, ENA_MIN_MTU);
+ return -EINVAL;
+ }
+
ret = ena_com_set_dev_mtu(adapter->ena_dev, new_mtu);
if (!ret) {
netif_dbg(adapter, drv, dev, "set MTU to %d\n", new_mtu);
@@ -3008,8 +3015,6 @@ static void ena_set_conf_feat_params(struct ena_adapter *adapter,
ena_set_dev_offloads(feat, netdev);
adapter->max_mtu = feat->dev_attr.max_mtu;
- netdev->max_mtu = adapter->max_mtu;
- netdev->min_mtu = ENA_MIN_MTU;
}
static int ena_rss_init_default(struct ena_adapter *adapter)
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 11/13] net: ena: update driver's rx drop statistics
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
` (2 preceding siblings ...)
2017-06-08 22:01 ` [PATCH net-next 10/13] net: ena: add mtu limitation in ena_change_mtu() netanel
@ 2017-06-08 22:01 ` netanel
2017-06-08 22:01 ` [PATCH net-next 12/13] net: ena: change validate_tx_req_id() to be inline function netanel
2017-06-08 22:01 ` [PATCH net-next 13/13] net: ena: update ena driver to version 1.2.0 netanel
5 siblings, 0 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
rx drop counter is reported by the device in the keep-alive
event.
update the driver's counter with the device counter.
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 7f31f4c..4540cd3 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -3483,8 +3483,17 @@ static void ena_keep_alive_wd(void *adapter_data,
struct ena_admin_aenq_entry *aenq_e)
{
struct ena_adapter *adapter = (struct ena_adapter *)adapter_data;
+ struct ena_admin_aenq_keep_alive_desc *desc;
+ u64 rx_drops;
+ desc = (struct ena_admin_aenq_keep_alive_desc *)aenq_e;
adapter->last_keep_alive_jiffies = jiffies;
+
+ rx_drops = ((u64)desc->rx_drops_high << 32) | desc->rx_drops_low;
+
+ u64_stats_update_begin(&adapter->syncp);
+ adapter->dev_stats.rx_drops = rx_drops;
+ u64_stats_update_end(&adapter->syncp);
}
static void ena_notification(void *adapter_data,
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 12/13] net: ena: change validate_tx_req_id() to be inline function
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
` (3 preceding siblings ...)
2017-06-08 22:01 ` [PATCH net-next 11/13] net: ena: update driver's rx drop statistics netanel
@ 2017-06-08 22:01 ` netanel
2017-06-08 22:01 ` [PATCH net-next 13/13] net: ena: update ena driver to version 1.2.0 netanel
5 siblings, 0 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
for optimization purpose, change validate_tx_req_id() to be
inline function.
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 4540cd3..da14b78 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -698,7 +698,7 @@ static void ena_destroy_all_io_queues(struct ena_adapter *adapter)
ena_destroy_all_rx_queues(adapter);
}
-static int validate_tx_req_id(struct ena_ring *tx_ring, u16 req_id)
+static inline int validate_tx_req_id(struct ena_ring *tx_ring, u16 req_id)
{
struct ena_tx_buffer *tx_info = NULL;
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 13/13] net: ena: update ena driver to version 1.2.0
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
` (4 preceding siblings ...)
2017-06-08 22:01 ` [PATCH net-next 12/13] net: ena: change validate_tx_req_id() to be inline function netanel
@ 2017-06-08 22:01 ` netanel
5 siblings, 0 replies; 10+ messages in thread
From: netanel @ 2017-06-08 22:01 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.h | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
index 4518a9d..f309a58 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
@@ -44,15 +44,16 @@
#include "ena_eth_com.h"
#define DRV_MODULE_VER_MAJOR 1
-#define DRV_MODULE_VER_MINOR 1
-#define DRV_MODULE_VER_SUBMINOR 2
+#define DRV_MODULE_VER_MINOR 2
+#define DRV_MODULE_VER_SUBMINOR 0
#define DRV_MODULE_NAME "ena"
#ifndef DRV_MODULE_VERSION
#define DRV_MODULE_VERSION \
__stringify(DRV_MODULE_VER_MAJOR) "." \
__stringify(DRV_MODULE_VER_MINOR) "." \
- __stringify(DRV_MODULE_VER_SUBMINOR)
+ __stringify(DRV_MODULE_VER_SUBMINOR) \
+ "k"
#endif
#define DEVICE_NAME "Elastic Network Adapter (ENA)"
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set()
2017-06-18 11:28 [PATCH net-next 00/13] update ena ethernet " netanel
@ 2017-06-18 11:28 ` netanel
2017-06-19 5:00 ` Leon Romanovsky
0 siblings, 1 reply; 10+ messages in thread
From: netanel @ 2017-06-18 11:28 UTC (permalink / raw)
To: davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, matua, saeedb, msw, aliguori,
nafea, evgenys
From: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: Netanel Belgazal <netanel@amazon.com>
---
drivers/net/ethernet/amazon/ena/ena_com.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
index f6e1d30523a6..8efb85e25a42 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.c
+++ b/drivers/net/ethernet/amazon/ena/ena_com.c
@@ -100,7 +100,7 @@ static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev,
}
ena_addr->mem_addr_low = (u32)addr;
- ena_addr->mem_addr_high = (u64)addr >> 32;
+ ena_addr->mem_addr_high = (u16)((u64)addr >> 32);
return 0;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set()
2017-06-18 11:28 ` [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set() netanel
@ 2017-06-19 5:00 ` Leon Romanovsky
2017-06-19 12:45 ` Belgazal, Netanel
0 siblings, 1 reply; 10+ messages in thread
From: Leon Romanovsky @ 2017-06-19 5:00 UTC (permalink / raw)
To: netanel
Cc: davem, netdev, dwmw, zorik, matua, saeedb, msw, aliguori, nafea,
evgenys
[-- Attachment #1: Type: text/plain, Size: 896 bytes --]
On Sun, Jun 18, 2017 at 02:28:14PM +0300, netanel@amazon.com wrote:
> From: Netanel Belgazal <netanel@amazon.com>
>
> Signed-off-by: Netanel Belgazal <netanel@amazon.com>
> ---
> drivers/net/ethernet/amazon/ena/ena_com.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
> index f6e1d30523a6..8efb85e25a42 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_com.c
> +++ b/drivers/net/ethernet/amazon/ena/ena_com.c
> @@ -100,7 +100,7 @@ static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev,
> }
>
> ena_addr->mem_addr_low = (u32)addr;
> - ena_addr->mem_addr_high = (u64)addr >> 32;
> + ena_addr->mem_addr_high = (u16)((u64)addr >> 32);
We have macro for getting upper 32 bits - upper_32_bits(addr), the same
goes for lower 32 bits.
>
> return 0;
> }
> --
> 2.7.4
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set()
2017-06-19 5:00 ` Leon Romanovsky
@ 2017-06-19 12:45 ` Belgazal, Netanel
0 siblings, 0 replies; 10+ messages in thread
From: Belgazal, Netanel @ 2017-06-19 12:45 UTC (permalink / raw)
To: Leon Romanovsky
Cc: davem@davemloft.net, netdev@vger.kernel.org, Woodhouse, David,
Machulsky, Zorik, Matushevsky, Alexander, BSHARA, Said,
Wilson, Matt, Liguori, Anthony, Bshara, Nafea, Schmeilin, Evgeny
Ack,
Will use the proposed functions.
________________________________________
From: Leon Romanovsky <leon@kernel.org>
Sent: Monday, June 19, 2017 8:00 AM
To: Belgazal, Netanel
Cc: davem@davemloft.net; netdev@vger.kernel.org; Woodhouse, David; Machulsky, Zorik; Matushevsky, Alexander; BSHARA, Said; Wilson, Matt; Liguori, Anthony; Bshara, Nafea; Schmeilin, Evgeny
Subject: Re: [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set()
On Sun, Jun 18, 2017 at 02:28:14PM +0300, netanel@amazon.com wrote:
> From: Netanel Belgazal <netanel@amazon.com>
>
> Signed-off-by: Netanel Belgazal <netanel@amazon.com>
> ---
> drivers/net/ethernet/amazon/ena/ena_com.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
> index f6e1d30523a6..8efb85e25a42 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_com.c
> +++ b/drivers/net/ethernet/amazon/ena/ena_com.c
> @@ -100,7 +100,7 @@ static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev,
> }
>
> ena_addr->mem_addr_low = (u32)addr;
> - ena_addr->mem_addr_high = (u64)addr >> 32;
> + ena_addr->mem_addr_high = (u16)((u64)addr >> 32);
We have macro for getting upper 32 bits - upper_32_bits(addr), the same
goes for lower 32 bits.
>
> return 0;
> }
> --
> 2.7.4
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-06-19 12:47 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-08 22:01 [PATCH net-next 07/13] net: ena: use napi_schedule_irqoff when possible netanel
2017-06-08 22:01 ` [PATCH net-next 08/13] net: ena: separate skb allocation to dedicated function netanel
2017-06-08 22:01 ` [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set() netanel
2017-06-08 22:01 ` [PATCH net-next 10/13] net: ena: add mtu limitation in ena_change_mtu() netanel
2017-06-08 22:01 ` [PATCH net-next 11/13] net: ena: update driver's rx drop statistics netanel
2017-06-08 22:01 ` [PATCH net-next 12/13] net: ena: change validate_tx_req_id() to be inline function netanel
2017-06-08 22:01 ` [PATCH net-next 13/13] net: ena: update ena driver to version 1.2.0 netanel
-- strict thread matches above, loose matches on Subject: below --
2017-06-18 11:28 [PATCH net-next 00/13] update ena ethernet " netanel
2017-06-18 11:28 ` [PATCH net-next 09/13] net: ena: adding missing cast in ena_com_mem_addr_set() netanel
2017-06-19 5:00 ` Leon Romanovsky
2017-06-19 12:45 ` Belgazal, Netanel
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).