* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode @ 2021-03-09 14:53 Stéphane Grosjean 2021-03-09 14:58 ` Marc Kleine-Budde 0 siblings, 1 reply; 9+ messages in thread From: Stéphane Grosjean @ 2021-03-09 14:53 UTC (permalink / raw) To: Marc Kleine-Budde, Oliver Hartkopp, linux-can Mailing List In the usb drivers, the echo skb is always released by the USB write complete callback. --- Stéphane From: Marc Kleine-Budde Sent: Tuesday, March 9, 2021 11:58 To: Oliver Hartkopp; Stéphane Grosjean; linux-can Mailing List Subject: Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode On 3/9/21 11:53 AM, Oliver Hartkopp wrote: >> What happens if in one shot mode and the frame is not send? Who takes care of >> the echo skb? > > ONE-SHOT only means that the CAN controller would not retry the > transmission when e.g. loosing the arbitration or getting an error flag. > > The sja1000 does it this way, when the TX interrupt flag is set in the > interrupt register: > > if (isrc & IRQ_TI) { > /* transmission buffer released */ > if (priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT && > !(status & SR_TCS)) { > stats->tx_errors++; > can_free_echo_skb(dev, 0); > } else { > /* transmission complete */ > stats->tx_bytes += > priv->read_reg(priv, > SJA1000_FI) & 0xf; > stats->tx_packets++; > can_get_echo_skb(dev, 0, NULL); > } > netif_wake_queue(dev); > can_led_event(dev, CAN_LED_EVENT_TX); > } > > > Do we need to check this for the other drivers? Yes. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- PEAK-System Technik GmbH Sitz der Gesellschaft Darmstadt - HRB 9183 Geschaeftsfuehrung: Alexander Gach / Uwe Wilhelm Unsere Datenschutzerklaerung mit wichtigen Hinweisen zur Behandlung personenbezogener Daten finden Sie unter www.peak-system.com/Datenschutz.483.0.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-09 14:53 [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode Stéphane Grosjean @ 2021-03-09 14:58 ` Marc Kleine-Budde 0 siblings, 0 replies; 9+ messages in thread From: Marc Kleine-Budde @ 2021-03-09 14:58 UTC (permalink / raw) To: Stéphane Grosjean; +Cc: Oliver Hartkopp, linux-can Mailing List [-- Attachment #1: Type: text/plain, Size: 662 bytes --] On 09.03.2021 14:53:36, Stéphane Grosjean wrote: > In the usb drivers, the echo skb is always released by the USB write > complete callback. This means there will be an echo_skb_get() when the USB write completes, which is usually before the CAN controller sends the CAN frame. This means a TX complete or an TX abort due to one shot mode will not be reported? regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode @ 2021-03-10 11:18 Stéphane Grosjean 2021-03-10 11:53 ` Marc Kleine-Budde 0 siblings, 1 reply; 9+ messages in thread From: Stéphane Grosjean @ 2021-03-10 11:18 UTC (permalink / raw) To: Marc Kleine-Budde, Oliver Hartkopp; +Cc: linux-can Mailing List Hello, To complete the open reflection on this subject: to be perfect, the echo skb should in fact not be released by the USB write completion routine but, like the PCI/PCIe version, on reception in the Rx queue of an echo frame to the one written... This means : 1 - the core of the peak_usb driver has to be deeply modified 2 - the rx path of the USB interface will be much more loaded, resulting in a higher CPU load 2 - in the case of a one-shot frame, how to manage the fact that this echo frame is never received because the one-shot frame could not be written on the bus? Does this need a garbage collector on the echo skbs? Is it worth it? Regards, --- Stéphane From: Marc Kleine-Budde Sent: Tuesday, March 9, 2021 15:58 To: Stéphane Grosjean Cc: Oliver Hartkopp; linux-can Mailing List Subject: Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode On 09.03.2021 14:53:36, Stéphane Grosjean wrote: > In the usb drivers, the echo skb is always released by the USB write > complete callback. This means there will be an echo_skb_get() when the USB write completes, which is usually before the CAN controller sends the CAN frame. This means a TX complete or an TX abort due to one shot mode will not be reported? regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- PEAK-System Technik GmbH Sitz der Gesellschaft Darmstadt - HRB 9183 Geschaeftsfuehrung: Alexander Gach / Uwe Wilhelm Unsere Datenschutzerklaerung mit wichtigen Hinweisen zur Behandlung personenbezogener Daten finden Sie unter www.peak-system.com/Datenschutz.483.0.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-10 11:18 Stéphane Grosjean @ 2021-03-10 11:53 ` Marc Kleine-Budde 0 siblings, 0 replies; 9+ messages in thread From: Marc Kleine-Budde @ 2021-03-10 11:53 UTC (permalink / raw) To: Stéphane Grosjean; +Cc: Oliver Hartkopp, linux-can Mailing List [-- Attachment #1: Type: text/plain, Size: 1472 bytes --] On 10.03.2021 11:18:15, Stéphane Grosjean wrote: > To complete the open reflection on this subject: to be perfect, the > echo skb should in fact not be released by the USB write completion > routine but, like the PCI/PCIe version, on reception in the Rx queue > of an echo frame to the one written... If you don't have a TX complete notification, this would be a workaround to let the TX echo better reflect what's going on on the bus. > This means : > 1 - the core of the peak_usb driver has to be deeply modified > 2 - the rx path of the USB interface will be much more loaded, > resulting in a higher CPU load > 2 - in the case of a one-shot frame, how to manage the fact that this > echo frame is never received because the one-shot frame could not > be written on the bus? Does this need a garbage collector on the > echo skbs? Yes, you have to free the echo skb in case of a no-send due to one-shot mode. Does the HW offer a TX aborted notification? > Is it worth it? If you don't have TX complete or TX abort notifications, then it's not worth it. Better spend time implementing these notifications on the controller side :) regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 0/3] can/peak_usb: Added improvement to the peak_usb driver @ 2021-03-09 8:21 Stephane Grosjean 2021-03-09 8:21 ` [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode Stephane Grosjean 0 siblings, 1 reply; 9+ messages in thread From: Stephane Grosjean @ 2021-03-09 8:21 UTC (permalink / raw) To: linux-can Mailing List; +Cc: Stephane Grosjean This series of patches adds the following improvements: - allows to identify CAN ports by their LEDs - completes the list of devices supported by the module - adds ONE_SHOT mode to some devices Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com> Stephane Grosjean (3): can/peak_usb: add support of ethtool set_phys_id() callback can/peak_usb: add forgotten supported devices can/peak_usb: add support of ONE_SHOT mode drivers/net/can/usb/peak_usb/pcan_usb.c | 47 ++++++++++++++++++++ drivers/net/can/usb/peak_usb/pcan_usb_core.c | 4 ++ drivers/net/can/usb/peak_usb/pcan_usb_core.h | 2 + drivers/net/can/usb/peak_usb/pcan_usb_fd.c | 47 ++++++++++++++++++-- drivers/net/can/usb/peak_usb/pcan_usb_pro.c | 46 +++++++++++++++++-- drivers/net/can/usb/peak_usb/pcan_usb_pro.h | 6 +++ 6 files changed, 144 insertions(+), 8 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-09 8:21 [PATCH 0/3] can/peak_usb: Added improvement to the peak_usb driver Stephane Grosjean @ 2021-03-09 8:21 ` Stephane Grosjean 2021-03-09 10:36 ` Marc Kleine-Budde 2021-03-19 10:01 ` Marc Kleine-Budde 0 siblings, 2 replies; 9+ messages in thread From: Stephane Grosjean @ 2021-03-09 8:21 UTC (permalink / raw) To: linux-can Mailing List; +Cc: Stephane Grosjean This patch adds "ONE-SHOT" mode support to the following CAN-USB PEAK-System GmbH interfaces: - PCAN-USB X6 - PCAN-USB FD - PCAN-USB Pro FD - PCAN-Chip USB - PCAN-USB Pro Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com> --- drivers/net/can/usb/peak_usb/pcan_usb_fd.c | 12 ++++++++---- drivers/net/can/usb/peak_usb/pcan_usb_pro.c | 12 +++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_fd.c b/drivers/net/can/usb/peak_usb/pcan_usb_fd.c index 8e6250c4c417..0e3bb3a4945d 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_fd.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_fd.c @@ -779,6 +779,10 @@ static int pcan_usb_fd_encode_msg(struct peak_usb_device *dev, tx_msg_flags |= PUCAN_MSG_RTR; } + /* Single-Shot frame */ + if (dev->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT) + tx_msg_flags |= PUCAN_MSG_SINGLE_SHOT; + tx_msg->flags = cpu_to_le16(tx_msg_flags); tx_msg->channel_dlc = PUCAN_MSG_CHANNEL_DLC(dev->ctrl_idx, dlc); memcpy(tx_msg->d, cfd->data, cfd->len); @@ -1068,7 +1072,7 @@ const struct peak_usb_adapter pcan_usb_fd = { .ctrl_count = PCAN_USBFD_CHANNEL_COUNT, .ctrlmode_supported = CAN_CTRLMODE_FD | CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY | - CAN_CTRLMODE_CC_LEN8_DLC, + CAN_CTRLMODE_ONE_SHOT | CAN_CTRLMODE_CC_LEN8_DLC, .clock = { .freq = PCAN_UFD_CRYSTAL_HZ, }, @@ -1143,7 +1147,7 @@ const struct peak_usb_adapter pcan_usb_chip = { .ctrl_count = PCAN_USBFD_CHANNEL_COUNT, .ctrlmode_supported = CAN_CTRLMODE_FD | CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY | - CAN_CTRLMODE_CC_LEN8_DLC, + CAN_CTRLMODE_ONE_SHOT | CAN_CTRLMODE_CC_LEN8_DLC, .clock = { .freq = PCAN_UFD_CRYSTAL_HZ, }, @@ -1217,7 +1221,7 @@ const struct peak_usb_adapter pcan_usb_pro_fd = { .ctrl_count = PCAN_USBPROFD_CHANNEL_COUNT, .ctrlmode_supported = CAN_CTRLMODE_FD | CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY | - CAN_CTRLMODE_CC_LEN8_DLC, + CAN_CTRLMODE_ONE_SHOT | CAN_CTRLMODE_CC_LEN8_DLC, .clock = { .freq = PCAN_UFD_CRYSTAL_HZ, }, @@ -1292,7 +1296,7 @@ const struct peak_usb_adapter pcan_usb_x6 = { .ctrl_count = PCAN_USBPROFD_CHANNEL_COUNT, .ctrlmode_supported = CAN_CTRLMODE_FD | CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY | - CAN_CTRLMODE_CC_LEN8_DLC, + CAN_CTRLMODE_ONE_SHOT | CAN_CTRLMODE_CC_LEN8_DLC, .clock = { .freq = PCAN_UFD_CRYSTAL_HZ, }, diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c index ff740b4203fa..5b098d1e3746 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c @@ -39,6 +39,7 @@ MODULE_SUPPORTED_DEVICE("PEAK-System PCAN-USB Pro adapter"); #define PCAN_USBPRO_RTR 0x01 #define PCAN_USBPRO_EXT 0x02 +#define PCAN_USBPRO_SS 0x08 #define PCAN_USBPRO_CMD_BUFFER_SIZE 512 @@ -779,9 +780,13 @@ static int pcan_usb_pro_encode_msg(struct peak_usb_device *dev, flags = 0; if (cf->can_id & CAN_EFF_FLAG) - flags |= 0x02; + flags |= PCAN_USBPRO_EXT; if (cf->can_id & CAN_RTR_FLAG) - flags |= 0x01; + flags |= PCAN_USBPRO_RTR; + + /* Single-Shot frame */ + if (dev->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT) + flags |= PCAN_USBPRO_SS; pcan_msg_add_rec(&usb_msg, data_type, 0, flags, len, cf->can_id, cf->data); @@ -1041,7 +1046,8 @@ const struct peak_usb_adapter pcan_usb_pro = { .name = "PCAN-USB Pro", .device_id = PCAN_USBPRO_PRODUCT_ID, .ctrl_count = PCAN_USBPRO_CHANNEL_COUNT, - .ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY, + .ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY | + CAN_CTRLMODE_ONE_SHOT, .clock = { .freq = PCAN_USBPRO_CRYSTAL_HZ, }, -- 2.25.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-09 8:21 ` [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode Stephane Grosjean @ 2021-03-09 10:36 ` Marc Kleine-Budde 2021-03-09 10:53 ` Oliver Hartkopp 2021-03-19 10:01 ` Marc Kleine-Budde 1 sibling, 1 reply; 9+ messages in thread From: Marc Kleine-Budde @ 2021-03-09 10:36 UTC (permalink / raw) To: Stephane Grosjean, linux-can Mailing List [-- Attachment #1.1: Type: text/plain, Size: 693 bytes --] On 3/9/21 9:21 AM, Stephane Grosjean wrote: > This patch adds "ONE-SHOT" mode support to the following CAN-USB > PEAK-System GmbH interfaces: > - PCAN-USB X6 > - PCAN-USB FD > - PCAN-USB Pro FD > - PCAN-Chip USB > - PCAN-USB Pro > > Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com> What happens if in one shot mode and the frame is not send? Who takes care of the echo skb? regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-09 10:36 ` Marc Kleine-Budde @ 2021-03-09 10:53 ` Oliver Hartkopp 2021-03-09 10:58 ` Marc Kleine-Budde 0 siblings, 1 reply; 9+ messages in thread From: Oliver Hartkopp @ 2021-03-09 10:53 UTC (permalink / raw) To: Marc Kleine-Budde, Stephane Grosjean, linux-can Mailing List On 09.03.21 11:36, Marc Kleine-Budde wrote: > On 3/9/21 9:21 AM, Stephane Grosjean wrote: >> This patch adds "ONE-SHOT" mode support to the following CAN-USB >> PEAK-System GmbH interfaces: >> - PCAN-USB X6 >> - PCAN-USB FD >> - PCAN-USB Pro FD >> - PCAN-Chip USB >> - PCAN-USB Pro >> >> Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com> > > What happens if in one shot mode and the frame is not send? Who takes care of > the echo skb? ONE-SHOT only means that the CAN controller would not retry the transmission when e.g. loosing the arbitration or getting an error flag. The sja1000 does it this way, when the TX interrupt flag is set in the interrupt register: if (isrc & IRQ_TI) { /* transmission buffer released */ if (priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT && !(status & SR_TCS)) { stats->tx_errors++; can_free_echo_skb(dev, 0); } else { /* transmission complete */ stats->tx_bytes += priv->read_reg(priv, SJA1000_FI) & 0xf; stats->tx_packets++; can_get_echo_skb(dev, 0, NULL); } netif_wake_queue(dev); can_led_event(dev, CAN_LED_EVENT_TX); } Do we need to check this for the other drivers? Regards, Oliver ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-09 10:53 ` Oliver Hartkopp @ 2021-03-09 10:58 ` Marc Kleine-Budde 0 siblings, 0 replies; 9+ messages in thread From: Marc Kleine-Budde @ 2021-03-09 10:58 UTC (permalink / raw) To: Oliver Hartkopp, Stephane Grosjean, linux-can Mailing List [-- Attachment #1.1: Type: text/plain, Size: 1639 bytes --] On 3/9/21 11:53 AM, Oliver Hartkopp wrote: >> What happens if in one shot mode and the frame is not send? Who takes care of >> the echo skb? > > ONE-SHOT only means that the CAN controller would not retry the > transmission when e.g. loosing the arbitration or getting an error flag. > > The sja1000 does it this way, when the TX interrupt flag is set in the > interrupt register: > > if (isrc & IRQ_TI) { > /* transmission buffer released */ > if (priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT && > !(status & SR_TCS)) { > stats->tx_errors++; > can_free_echo_skb(dev, 0); > } else { > /* transmission complete */ > stats->tx_bytes += > priv->read_reg(priv, > SJA1000_FI) & 0xf; > stats->tx_packets++; > can_get_echo_skb(dev, 0, NULL); > } > netif_wake_queue(dev); > can_led_event(dev, CAN_LED_EVENT_TX); > } > > > Do we need to check this for the other drivers? Yes. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode 2021-03-09 8:21 ` [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode Stephane Grosjean 2021-03-09 10:36 ` Marc Kleine-Budde @ 2021-03-19 10:01 ` Marc Kleine-Budde 1 sibling, 0 replies; 9+ messages in thread From: Marc Kleine-Budde @ 2021-03-19 10:01 UTC (permalink / raw) To: Stephane Grosjean; +Cc: linux-can Mailing List [-- Attachment #1: Type: text/plain, Size: 1065 bytes --] On 09.03.2021 09:21:28, Stephane Grosjean wrote: > --- a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c > +++ b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c > @@ -39,6 +39,7 @@ MODULE_SUPPORTED_DEVICE("PEAK-System PCAN-USB Pro adapter"); > > #define PCAN_USBPRO_RTR 0x01 > #define PCAN_USBPRO_EXT 0x02 > +#define PCAN_USBPRO_SS 0x08 > > #define PCAN_USBPRO_CMD_BUFFER_SIZE 512 > > @@ -779,9 +780,13 @@ static int pcan_usb_pro_encode_msg(struct peak_usb_device *dev, > > flags = 0; > if (cf->can_id & CAN_EFF_FLAG) > - flags |= 0x02; > + flags |= PCAN_USBPRO_EXT; > if (cf->can_id & CAN_RTR_FLAG) > - flags |= 0x01; > + flags |= PCAN_USBPRO_RTR; I've put this change in a separate patch and applied both to linux-can-next/testing. regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-03-19 10:02 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-09 14:53 [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode Stéphane Grosjean 2021-03-09 14:58 ` Marc Kleine-Budde -- strict thread matches above, loose matches on Subject: below -- 2021-03-10 11:18 Stéphane Grosjean 2021-03-10 11:53 ` Marc Kleine-Budde 2021-03-09 8:21 [PATCH 0/3] can/peak_usb: Added improvement to the peak_usb driver Stephane Grosjean 2021-03-09 8:21 ` [PATCH 3/3] can/peak_usb: add support of ONE_SHOT mode Stephane Grosjean 2021-03-09 10:36 ` Marc Kleine-Budde 2021-03-09 10:53 ` Oliver Hartkopp 2021-03-09 10:58 ` Marc Kleine-Budde 2021-03-19 10:01 ` Marc Kleine-Budde
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).