* [dpdk-dev] mlx5 FDIR rule comparison issue @ 2019-04-02 7:23 benli ye 2019-04-02 7:23 ` benli ye 2019-04-03 8:29 ` benli ye 0 siblings, 2 replies; 8+ messages in thread From: benli ye @ 2019-04-02 7:23 UTC (permalink / raw) To: dev Hi Developers, I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 pmd driver. The rules are listed below. struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { { .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, .input.flow.tcp4_flow.ip.dst_ip = dip, .input.flow.tcp4_flow.dst_port = dport, .action.behavior = RTE_ETH_FDIR_ACCEPT, .action.report_status = RTE_ETH_FDIR_REPORT_ID, .soft_id = 0, }, { .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, .input.flow.udp4_flow.ip.dst_ip = dip, .input.flow.udp4_flow.dst_port = dport, .action.behavior = RTE_ETH_FDIR_ACCEPT, .action.report_status = RTE_ETH_FDIR_REPORT_ID, .soft_id = 1, }, }; However, mlx5 lib prevent me to doing this as when it treats the two rules are the same. I debugged for a while and found flow_fdir_cmp() didn’t compare the protocol type in field items of struct mlx5_fdir. So should this be a bug for mlx5? flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) { if (FLOW_FDIR_CMP(f1, f2, attr) || FLOW_FDIR_CMP(f1, f2, l2) || FLOW_FDIR_CMP(f1, f2, l2_mask) || FLOW_FDIR_CMP(f1, f2, l3) || FLOW_FDIR_CMP(f1, f2, l3_mask) || FLOW_FDIR_CMP(f1, f2, l4) || FLOW_FDIR_CMP(f1, f2, l4_mask) || FLOW_FDIR_CMP(f1, f2, actions[0].type)) return 1; if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && FLOW_FDIR_CMP(f1, f2, queue)) return 1; return 0; } Thanks, Daniel ^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-02 7:23 [dpdk-dev] mlx5 FDIR rule comparison issue benli ye @ 2019-04-02 7:23 ` benli ye 2019-04-03 8:29 ` benli ye 1 sibling, 0 replies; 8+ messages in thread From: benli ye @ 2019-04-02 7:23 UTC (permalink / raw) To: dev Hi Developers, I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 pmd driver. The rules are listed below. struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { { .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, .input.flow.tcp4_flow.ip.dst_ip = dip, .input.flow.tcp4_flow.dst_port = dport, .action.behavior = RTE_ETH_FDIR_ACCEPT, .action.report_status = RTE_ETH_FDIR_REPORT_ID, .soft_id = 0, }, { .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, .input.flow.udp4_flow.ip.dst_ip = dip, .input.flow.udp4_flow.dst_port = dport, .action.behavior = RTE_ETH_FDIR_ACCEPT, .action.report_status = RTE_ETH_FDIR_REPORT_ID, .soft_id = 1, }, }; However, mlx5 lib prevent me to doing this as when it treats the two rules are the same. I debugged for a while and found flow_fdir_cmp() didn’t compare the protocol type in field items of struct mlx5_fdir. So should this be a bug for mlx5? flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) { if (FLOW_FDIR_CMP(f1, f2, attr) || FLOW_FDIR_CMP(f1, f2, l2) || FLOW_FDIR_CMP(f1, f2, l2_mask) || FLOW_FDIR_CMP(f1, f2, l3) || FLOW_FDIR_CMP(f1, f2, l3_mask) || FLOW_FDIR_CMP(f1, f2, l4) || FLOW_FDIR_CMP(f1, f2, l4_mask) || FLOW_FDIR_CMP(f1, f2, actions[0].type)) return 1; if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && FLOW_FDIR_CMP(f1, f2, queue)) return 1; return 0; } Thanks, Daniel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-02 7:23 [dpdk-dev] mlx5 FDIR rule comparison issue benli ye 2019-04-02 7:23 ` benli ye @ 2019-04-03 8:29 ` benli ye 2019-04-03 8:29 ` benli ye 2019-04-04 11:18 ` Dekel Peled 1 sibling, 2 replies; 8+ messages in thread From: benli ye @ 2019-04-03 8:29 UTC (permalink / raw) To: dekelp; +Cc: dev +Dekel Add Dekel to see if this is an issue. Thanks, Daniel > On Apr 2, 2019, at 3:23 PM, benli ye <danielbenliye@gmail.com> wrote: > > Hi Developers, > > I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 pmd driver. The rules are listed below. > struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { > { > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, > .input.flow.tcp4_flow.ip.dst_ip = dip, > .input.flow.tcp4_flow.dst_port = dport, > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > .soft_id = 0, > }, > { > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, > .input.flow.udp4_flow.ip.dst_ip = dip, > .input.flow.udp4_flow.dst_port = dport, > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > .soft_id = 1, > }, > }; > > However, mlx5 lib prevent me to doing this as when it treats the two rules are the same. > > I debugged for a while and found flow_fdir_cmp() didn’t compare the protocol type in field items of struct mlx5_fdir. So should this be a bug for mlx5? > > flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) > { > if (FLOW_FDIR_CMP(f1, f2, attr) || > FLOW_FDIR_CMP(f1, f2, l2) || > FLOW_FDIR_CMP(f1, f2, l2_mask) || > FLOW_FDIR_CMP(f1, f2, l3) || > FLOW_FDIR_CMP(f1, f2, l3_mask) || > FLOW_FDIR_CMP(f1, f2, l4) || > FLOW_FDIR_CMP(f1, f2, l4_mask) || > FLOW_FDIR_CMP(f1, f2, actions[0].type)) > return 1; > if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && > FLOW_FDIR_CMP(f1, f2, queue)) > return 1; > return 0; > } > > Thanks, > Daniel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-03 8:29 ` benli ye @ 2019-04-03 8:29 ` benli ye 2019-04-04 11:18 ` Dekel Peled 1 sibling, 0 replies; 8+ messages in thread From: benli ye @ 2019-04-03 8:29 UTC (permalink / raw) To: dekelp; +Cc: dev +Dekel Add Dekel to see if this is an issue. Thanks, Daniel > On Apr 2, 2019, at 3:23 PM, benli ye <danielbenliye@gmail.com> wrote: > > Hi Developers, > > I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 pmd driver. The rules are listed below. > struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { > { > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, > .input.flow.tcp4_flow.ip.dst_ip = dip, > .input.flow.tcp4_flow.dst_port = dport, > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > .soft_id = 0, > }, > { > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, > .input.flow.udp4_flow.ip.dst_ip = dip, > .input.flow.udp4_flow.dst_port = dport, > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > .soft_id = 1, > }, > }; > > However, mlx5 lib prevent me to doing this as when it treats the two rules are the same. > > I debugged for a while and found flow_fdir_cmp() didn’t compare the protocol type in field items of struct mlx5_fdir. So should this be a bug for mlx5? > > flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) > { > if (FLOW_FDIR_CMP(f1, f2, attr) || > FLOW_FDIR_CMP(f1, f2, l2) || > FLOW_FDIR_CMP(f1, f2, l2_mask) || > FLOW_FDIR_CMP(f1, f2, l3) || > FLOW_FDIR_CMP(f1, f2, l3_mask) || > FLOW_FDIR_CMP(f1, f2, l4) || > FLOW_FDIR_CMP(f1, f2, l4_mask) || > FLOW_FDIR_CMP(f1, f2, actions[0].type)) > return 1; > if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && > FLOW_FDIR_CMP(f1, f2, queue)) > return 1; > return 0; > } > > Thanks, > Daniel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-03 8:29 ` benli ye 2019-04-03 8:29 ` benli ye @ 2019-04-04 11:18 ` Dekel Peled 2019-04-04 11:18 ` Dekel Peled 2019-04-04 12:12 ` benli ye 1 sibling, 2 replies; 8+ messages in thread From: Dekel Peled @ 2019-04-04 11:18 UTC (permalink / raw) To: benli ye; +Cc: dev Hi Daniel, The flow_director API will be deprecated in the near future. It was replaced by rte_flow API, which contains much more features, and is fully supported by Mellanox. It is recommended that you use rte_flow API in your application. Regards, Dekel > -----Original Message----- > From: benli ye <danielbenliye@gmail.com> > Sent: Wednesday, April 3, 2019 11:30 AM > To: Dekel Peled <dekelp@mellanox.com> > Cc: dev@dpdk.org > Subject: Re: mlx5 FDIR rule comparison issue > > +Dekel > > Add Dekel to see if this is an issue. > > Thanks, > Daniel > > > On Apr 2, 2019, at 3:23 PM, benli ye <danielbenliye@gmail.com> wrote: > > > > Hi Developers, > > > > I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 > pmd driver. The rules are listed below. > > struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { > > { > > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, > > .input.flow.tcp4_flow.ip.dst_ip = dip, > > .input.flow.tcp4_flow.dst_port = dport, > > > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > > .soft_id = 0, > > }, > > { > > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, > > .input.flow.udp4_flow.ip.dst_ip = dip, > > .input.flow.udp4_flow.dst_port = dport, > > > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > > .soft_id = 1, > > }, > > }; > > > > However, mlx5 lib prevent me to doing this as when it treats the two rules > are the same. > > > > I debugged for a while and found flow_fdir_cmp() didn’t compare the > protocol type in field items of struct mlx5_fdir. So should this be a bug for > mlx5? > > > > flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) > > { > > if (FLOW_FDIR_CMP(f1, f2, attr) || > > FLOW_FDIR_CMP(f1, f2, l2) || > > FLOW_FDIR_CMP(f1, f2, l2_mask) || > > FLOW_FDIR_CMP(f1, f2, l3) || > > FLOW_FDIR_CMP(f1, f2, l3_mask) || > > FLOW_FDIR_CMP(f1, f2, l4) || > > FLOW_FDIR_CMP(f1, f2, l4_mask) || > > FLOW_FDIR_CMP(f1, f2, actions[0].type)) > > return 1; > > if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && > > FLOW_FDIR_CMP(f1, f2, queue)) > > return 1; > > return 0; > > } > > > > Thanks, > > Daniel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-04 11:18 ` Dekel Peled @ 2019-04-04 11:18 ` Dekel Peled 2019-04-04 12:12 ` benli ye 1 sibling, 0 replies; 8+ messages in thread From: Dekel Peled @ 2019-04-04 11:18 UTC (permalink / raw) To: benli ye; +Cc: dev Hi Daniel, The flow_director API will be deprecated in the near future. It was replaced by rte_flow API, which contains much more features, and is fully supported by Mellanox. It is recommended that you use rte_flow API in your application. Regards, Dekel > -----Original Message----- > From: benli ye <danielbenliye@gmail.com> > Sent: Wednesday, April 3, 2019 11:30 AM > To: Dekel Peled <dekelp@mellanox.com> > Cc: dev@dpdk.org > Subject: Re: mlx5 FDIR rule comparison issue > > +Dekel > > Add Dekel to see if this is an issue. > > Thanks, > Daniel > > > On Apr 2, 2019, at 3:23 PM, benli ye <danielbenliye@gmail.com> wrote: > > > > Hi Developers, > > > > I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 > pmd driver. The rules are listed below. > > struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { > > { > > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, > > .input.flow.tcp4_flow.ip.dst_ip = dip, > > .input.flow.tcp4_flow.dst_port = dport, > > > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > > .soft_id = 0, > > }, > > { > > .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, > > .input.flow.udp4_flow.ip.dst_ip = dip, > > .input.flow.udp4_flow.dst_port = dport, > > > > .action.behavior = RTE_ETH_FDIR_ACCEPT, > > .action.report_status = RTE_ETH_FDIR_REPORT_ID, > > .soft_id = 1, > > }, > > }; > > > > However, mlx5 lib prevent me to doing this as when it treats the two rules > are the same. > > > > I debugged for a while and found flow_fdir_cmp() didn’t compare the > protocol type in field items of struct mlx5_fdir. So should this be a bug for > mlx5? > > > > flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) > > { > > if (FLOW_FDIR_CMP(f1, f2, attr) || > > FLOW_FDIR_CMP(f1, f2, l2) || > > FLOW_FDIR_CMP(f1, f2, l2_mask) || > > FLOW_FDIR_CMP(f1, f2, l3) || > > FLOW_FDIR_CMP(f1, f2, l3_mask) || > > FLOW_FDIR_CMP(f1, f2, l4) || > > FLOW_FDIR_CMP(f1, f2, l4_mask) || > > FLOW_FDIR_CMP(f1, f2, actions[0].type)) > > return 1; > > if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && > > FLOW_FDIR_CMP(f1, f2, queue)) > > return 1; > > return 0; > > } > > > > Thanks, > > Daniel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-04 11:18 ` Dekel Peled 2019-04-04 11:18 ` Dekel Peled @ 2019-04-04 12:12 ` benli ye 2019-04-04 12:12 ` benli ye 1 sibling, 1 reply; 8+ messages in thread From: benli ye @ 2019-04-04 12:12 UTC (permalink / raw) To: Dekel Peled; +Cc: dev Thanks Dekel for your information. I will have a try. Bests, Daniel > On Apr 4, 2019, at 7:18 PM, Dekel Peled <dekelp@mellanox.com> wrote: > > Hi Daniel, > > The flow_director API will be deprecated in the near future. > It was replaced by rte_flow API, which contains much more features, and is fully supported by Mellanox. > > It is recommended that you use rte_flow API in your application. > > Regards, > Dekel > >> -----Original Message----- >> From: benli ye <danielbenliye@gmail.com> >> Sent: Wednesday, April 3, 2019 11:30 AM >> To: Dekel Peled <dekelp@mellanox.com> >> Cc: dev@dpdk.org >> Subject: Re: mlx5 FDIR rule comparison issue >> >> +Dekel >> >> Add Dekel to see if this is an issue. >> >> Thanks, >> Daniel >> >>> On Apr 2, 2019, at 3:23 PM, benli ye <danielbenliye@gmail.com> wrote: >>> >>> Hi Developers, >>> >>> I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 >> pmd driver. The rules are listed below. >>> struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { >>> { >>> .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, >>> .input.flow.tcp4_flow.ip.dst_ip = dip, >>> .input.flow.tcp4_flow.dst_port = dport, >>> >>> .action.behavior = RTE_ETH_FDIR_ACCEPT, >>> .action.report_status = RTE_ETH_FDIR_REPORT_ID, >>> .soft_id = 0, >>> }, >>> { >>> .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, >>> .input.flow.udp4_flow.ip.dst_ip = dip, >>> .input.flow.udp4_flow.dst_port = dport, >>> >>> .action.behavior = RTE_ETH_FDIR_ACCEPT, >>> .action.report_status = RTE_ETH_FDIR_REPORT_ID, >>> .soft_id = 1, >>> }, >>> }; >>> >>> However, mlx5 lib prevent me to doing this as when it treats the two rules >> are the same. >>> >>> I debugged for a while and found flow_fdir_cmp() didn’t compare the >> protocol type in field items of struct mlx5_fdir. So should this be a bug for >> mlx5? >>> >>> flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) >>> { >>> if (FLOW_FDIR_CMP(f1, f2, attr) || >>> FLOW_FDIR_CMP(f1, f2, l2) || >>> FLOW_FDIR_CMP(f1, f2, l2_mask) || >>> FLOW_FDIR_CMP(f1, f2, l3) || >>> FLOW_FDIR_CMP(f1, f2, l3_mask) || >>> FLOW_FDIR_CMP(f1, f2, l4) || >>> FLOW_FDIR_CMP(f1, f2, l4_mask) || >>> FLOW_FDIR_CMP(f1, f2, actions[0].type)) >>> return 1; >>> if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && >>> FLOW_FDIR_CMP(f1, f2, queue)) >>> return 1; >>> return 0; >>> } >>> >>> Thanks, >>> Daniel > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] mlx5 FDIR rule comparison issue 2019-04-04 12:12 ` benli ye @ 2019-04-04 12:12 ` benli ye 0 siblings, 0 replies; 8+ messages in thread From: benli ye @ 2019-04-04 12:12 UTC (permalink / raw) To: Dekel Peled; +Cc: dev Thanks Dekel for your information. I will have a try. Bests, Daniel > On Apr 4, 2019, at 7:18 PM, Dekel Peled <dekelp@mellanox.com> wrote: > > Hi Daniel, > > The flow_director API will be deprecated in the near future. > It was replaced by rte_flow API, which contains much more features, and is fully supported by Mellanox. > > It is recommended that you use rte_flow API in your application. > > Regards, > Dekel > >> -----Original Message----- >> From: benli ye <danielbenliye@gmail.com> >> Sent: Wednesday, April 3, 2019 11:30 AM >> To: Dekel Peled <dekelp@mellanox.com> >> Cc: dev@dpdk.org >> Subject: Re: mlx5 FDIR rule comparison issue >> >> +Dekel >> >> Add Dekel to see if this is an issue. >> >> Thanks, >> Daniel >> >>> On Apr 2, 2019, at 3:23 PM, benli ye <danielbenliye@gmail.com> wrote: >>> >>> Hi Developers, >>> >>> I am adding two FDIR rule (one is for UDP and the other is for TCP) for mlx5 >> pmd driver. The rules are listed below. >>> struct rte_eth_fdir_filter filt[MAX_FDIR_PROTO] = { >>> { >>> .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP, >>> .input.flow.tcp4_flow.ip.dst_ip = dip, >>> .input.flow.tcp4_flow.dst_port = dport, >>> >>> .action.behavior = RTE_ETH_FDIR_ACCEPT, >>> .action.report_status = RTE_ETH_FDIR_REPORT_ID, >>> .soft_id = 0, >>> }, >>> { >>> .input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP, >>> .input.flow.udp4_flow.ip.dst_ip = dip, >>> .input.flow.udp4_flow.dst_port = dport, >>> >>> .action.behavior = RTE_ETH_FDIR_ACCEPT, >>> .action.report_status = RTE_ETH_FDIR_REPORT_ID, >>> .soft_id = 1, >>> }, >>> }; >>> >>> However, mlx5 lib prevent me to doing this as when it treats the two rules >> are the same. >>> >>> I debugged for a while and found flow_fdir_cmp() didn’t compare the >> protocol type in field items of struct mlx5_fdir. So should this be a bug for >> mlx5? >>> >>> flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) >>> { >>> if (FLOW_FDIR_CMP(f1, f2, attr) || >>> FLOW_FDIR_CMP(f1, f2, l2) || >>> FLOW_FDIR_CMP(f1, f2, l2_mask) || >>> FLOW_FDIR_CMP(f1, f2, l3) || >>> FLOW_FDIR_CMP(f1, f2, l3_mask) || >>> FLOW_FDIR_CMP(f1, f2, l4) || >>> FLOW_FDIR_CMP(f1, f2, l4_mask) || >>> FLOW_FDIR_CMP(f1, f2, actions[0].type)) >>> return 1; >>> if (f1->actions[0].type == RTE_FLOW_ACTION_TYPE_QUEUE && >>> FLOW_FDIR_CMP(f1, f2, queue)) >>> return 1; >>> return 0; >>> } >>> >>> Thanks, >>> Daniel > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-04-04 12:12 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-02 7:23 [dpdk-dev] mlx5 FDIR rule comparison issue benli ye 2019-04-02 7:23 ` benli ye 2019-04-03 8:29 ` benli ye 2019-04-03 8:29 ` benli ye 2019-04-04 11:18 ` Dekel Peled 2019-04-04 11:18 ` Dekel Peled 2019-04-04 12:12 ` benli ye 2019-04-04 12:12 ` benli ye
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).