> Subject: Re: [PATCH 01/11] net: phy: Add phy_sysfs_create_links helper
> function
>
> Hi Ioana,
>
> On Mon, May 27, 2019 at 6:47 PM Ioana Ciornei
> wrote:
> >
> > From: Vladimir Oltean
> >
> > This is a cosmetic patch that wraps the operation of creating sysfs
> > links between the netdev->
Hi Eric:
Eric Dumazet wrote:
>
> +void fqdir_exit(struct fqdir *fqdir)
> +{
> + fqdir->high_thresh = 0; /* prevent creation of new frags */
> +
> + /* paired with READ_ONCE() in inet_frag_kill() :
> +* We want to prevent rhashtable_remove_fast() calls
> +*/
> + s
Cake is expected to handle traffic in 2 steps :
First is on the basis of host
Second is within every host, on the basis of flow
So, if I limit traffic to 20Mbps shared across 2 host A & B,
Following are various scenarios, expectation and observations
1. If either A or B is downloading, they will b
On Wed, May 22, 2019 at 03:42:20AM +0200, Andrew Lunn wrote:
> I don't know about the PTP subsystem, but in general, forward
> declarations are frowned upon, and it is generally requested to
> reorder the functions to remove them.
I am not aware of any general coding style rule or even defacto
pra
On Wed, May 22, 2019 at 03:22:27AM +0200, Andrew Lunn wrote:
> Shouldn't unregister_mii_timestamper() be called on error?
Yes.
Thanks,
Richard
On Wed, May 22, 2019 at 03:08:52AM +0200, Andrew Lunn wrote:
> probe_channel returns an PTR_ERR. So if (mii_ts) should probably be
> if (IS_ERR(mii_ts))
Nice catch. Thanks for the careful review!
Richard
> On May 27, 2019, at 6:15 PM, Willem de Bruijn
> wrote:
>> I wanted to discuss whether or not to attach a buffer to the
>> recvmsg(fd, &msg, MSG_ERRQUEUE). Without it, I have
>> MSG_TRUNC errors in my msg_flags. Either I have to add
>> a buffer, or ignore that error flag.
>
> Either sounds r
On Sun, May 26, 2019 at 3:35 AM Chang-Hsien Tsai wrote:
>
> use fgets() as the while loop condition.
>
> Signed-off-by: Chang-Hsien Tsai
Looks like right now we did not really differentiate error in fgets from EOF,
so the change is in this patch is equivalent to its previous behavior.
Acked-by:
On Wed, May 22, 2019 at 02:58:23AM +0200, Andrew Lunn wrote:
> > -static int dp83640_hwtstamp(struct phy_device *phydev, struct ifreq *ifr)
> > +static int dp83640_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq
> > *ifr)
> > {
> > - struct dp83640_private *dp83640 = phydev->priv;
> > +
Update BPF_CGROUP_RUN_PROG_INET_EGRESS() callers to support returning
congestion notifications from the BPF programs.
Signed-off-by: Lawrence Brakmo
Signed-off-by: Alexei Starovoitov
---
net/ipv4/ip_output.c | 34 +++---
net/ipv6/ip6_output.c | 26 +-
Update hbm_out_kern.c to support returning cn notifications.
Also updates relevant files to allow disabling cn notifications.
Signed-off-by: Lawrence Brakmo
---
samples/bpf/do_hbm_test.sh | 10 +++---
samples/bpf/hbm.c | 18 +++---
samples/bpf/hbm.h | 3 ++-
sa
Adds more stats to HBM, including average cwnd and rtt of all TCP
flows, percents of packets that are ecn ce marked and distribution
of return values.
Signed-off-by: Lawrence Brakmo
---
samples/bpf/hbm.c | 33 +++
samples/bpf/hbm.h | 6
samples/bpf/hbm_ker
For egress packets, __cgroup_bpf_fun_filter_skb() will now call
BPF_PROG_CGROUP_INET_EGRESS_RUN_ARRAY() instead of PROG_CGROUP_RUN_ARRAY()
in order to propagate congestion notifications (cn) requests to TCP
callers.
For egress packets, this function can return:
NET_XMIT_SUCCESS(0)- cont
This patchset adds support for propagating congestion notifications (cn)
to TCP from cgroup inet skb egress BPF programs.
Current cgroup skb BPF programs cannot trigger TCP congestion window
reductions, even when they drop a packet. This patch-set adds support
for cgroup skb BPF programs to send c
Create new macro BPF_PROG_CGROUP_INET_EGRESS_RUN_ARRAY() to be used by
__cgroup_bpf_run_filter_skb for EGRESS BPF progs so BPF programs can
request cwr for TCP packets.
Current cgroup skb programs can only return 0 or 1 (0 to drop the
packet. This macro changes the behavior so the low order bit
in
Allows cgroup inet skb programs to return values in the range [0, 3].
The second bit is used to deterine if congestion occurred and higher
level protocol should decrease rate. E.g. TCP would call tcp_enter_cwr()
The bpf_prog must set expected_attach_type to BPF_CGROUP_INET_EGRESS
at load time if i
Hi Ioana,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
[also build test WARNING on v5.2-rc2 next-20190524]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system]
url:
https://github.com/0day-ci/linu
Fixes: 9dd6d07682b1 ("net: dsa: Use PHYLINK for the CPU/DSA ports")
Signed-off-by: kbuild test robot
---
port.c |2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/dsa/port.c b/net/dsa/port.c
index 30d5b08..d74bc9d 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -601,
PTP Tx implementation continuously polls for the availability of timestamp.
Reducing the severity of a debug message in this path to avoid filling up
the syslog buffer with this message, especially in the error scenarios.
Signed-off-by: Sudarsana Reddy Kalluru
Signed-off-by: Michal Kalderon
---
In PTP Tx implementation, driver kept scheduling a poll thread until the
timestamp is available. In the error scenarios (e.g. app requesting the
timestamp for non-ptp packet), this thread kept waiting for the timestamp
forever. This patch add changes to report such scenario as an error and
termina
The patch series addresses an error scenario in the PTP Tx implementation.
Please consider applying it to net-next.
Sudarsana Reddy Kalluru (2):
qed: Reduce the severity of the debug message.
qede: Handle driver spin for Tx timestamp.
drivers/net/ethernet/qlogic/qed/qed_ptp.c | 3 +-
Hi Ioana,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
[also build test WARNING on v5.2-rc2 next-20190524]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system]
url:
https://github.com/0day-ci/linu
On 5/27/2019 2:22 PM, Ioana Ciornei wrote:
> In order to have a common handling of PHYLINK for the slave and non-user
> ports, the DSA core glue logic (between PHYLINK and the driver) must use
> an API that does not rely on a struct net_device.
>
> These will also be called by the CPU-port-hand
On 5/27/2019 2:22 PM, Ioana Ciornei wrote:
> In the PHYLINK_DEV operation type, the PHYLINK infrastructure can work
> without an attached net_device. For printing usecases, instead, a struct
> device * should be passed to PHYLINK using the phylink_config structure.
>
> Also, netif_carrier_* cal
On 5/27/2019 2:22 PM, Ioana Ciornei wrote:
> Export a phy_standalone device attribute that is meant to give the
> indication that this PHY lacks an attached_dev and its corresponding
> sysfs link. The attribute will be created only when the
> phy_attach_direct() function will be called with a NU
On 5/27/2019 2:22 PM, Ioana Ciornei wrote:
> For DSA switches that do not have an .adjust_link callback, aka those
> who transitioned totally to the PHYLINK-compliant API, use PHYLINK to
> drive the CPU/DSA ports.
>
> The PHYLIB usage and .adjust_link are kept but deprecated, and users are
> as
On 5/27/2019 2:22 PM, Ioana Ciornei wrote:
> With the latest addition to the PHYLINK infrastructure, we are faced
> with a decision on when to print necessary info using the struct
> net_device and when with the struct device.
>
> Add a series of macros that encapsulate this decision and replac
On 5/27/2019 2:22 PM, Ioana Ciornei wrote:
> The phylink_config structure will encapsulate a pointer to a struct
> device and the operation type requested for this instance of PHYLINK.
> This patch does not make any functional changes, it just transitions the
> PHYLINK internals and all its user
If llc_mac_hdr_init() returns an error, we must drop the skb
since no llc_build_and_send_ui_pkt() caller will take care of this.
BUG: memory leak
unreferenced object 0x8881202b6800 (size 2048):
comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.590s)
hex dump (first 32 bytes):
fqdir_init() is not fast path and is getting bigger.
Signed-off-by: Eric Dumazet
---
include/net/inet_frag.h | 20 +---
net/ipv4/inet_fragment.c | 19 +++
2 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/include/net/inet_frag.h b/include/net/inet_
As caught by syzbot [1], the rcu grace period that is respected
before fqdir_rwork_fn() proceeds and frees fqdir is not enough
to prevent inet_frag_destroy_rcu() being run after the freeing.
We need a proper rcu_barrier() synchronization to replace
the one we had in inet_frags_fini()
We also have
Latest patch series ('inet-frags-avoid-possible-races-at-netns-dismantle')
brought another syzbot report shown in the third patch changelog.
While fixing the issue, I had to call inet_frags_fini() later
in IPv6 and ilowpan.
Also I believe a completion is needed to ensure proper dismantle
at modul
Both IPv6 and 6lowpan are calling inet_frags_fini() too soon.
inet_frags_fini() is dismantling a kmem_cache, that might be needed
later when unregister_pernet_subsys() eventually has to remove
frags queues from hash tables and free them.
This fixes potential use-after-free, and is a prereq for th
Hi Ioana,
On Mon, May 27, 2019 at 6:47 PM Ioana Ciornei wrote:
>
> From: Vladimir Oltean
>
> This is a cosmetic patch that wraps the operation of creating sysfs
> links between the netdev->phydev and the phydev->attached_dev.
>
> This is needed to keep the indentation level in check in a follow-
Hi Ioana,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
[also build test WARNING on v5.2-rc2 next-20190524]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system]
url:
https://github.com/0day-ci/linu
The phylink_config structure will encapsulate a pointer to a struct
device and the operation type requested for this instance of PHYLINK.
This patch does not make any functional changes, it just transitions the
PHYLINK internals and all its users to the new API.
A pointer to a phylink_config struc
From: Vladimir Oltean
PHYLIB and PHYLINK handle fixed-link interfaces differently. PHYLIB
wraps them in a software PHY ("pseudo fixed link") phydev construct such
that .adjust_link driver callbacks see an unified API. Whereas PHYLINK
simply creates a phylink_link_state structure and passes it to
This is a cosmetic patch that reduces the clutter in phylink_resolve
around calling the .mac_link_up/.mac_link_down driver callbacks. In a
further patch this logic will be extended to emit notifications in case
a net device does not exist.
Signed-off-by: Ioana Ciornei
Reviewed-by: Florian Fainel
In the PHYLINK_DEV operation type, the PHYLINK infrastructure can work
without an attached net_device. For printing usecases, instead, a struct
device * should be passed to PHYLINK using the phylink_config structure.
Also, netif_carrier_* calls ar guarded by the presence of a valid
net_device. Whe
For DSA switches that do not have an .adjust_link callback, aka those
who transitioned totally to the PHYLINK-compliant API, use PHYLINK to
drive the CPU/DSA ports.
The PHYLIB usage and .adjust_link are kept but deprecated, and users are
asked to transition from it. The reason why we can't do any
A prerequisite for PHYLIB to work in the absence of a struct net_device
is to not access pointers to it.
Changes are needed in the following areas:
- Printing: In some places netdev_err was replaced with phydev_err.
- Incrementing reference count to the parent MDIO bus driver: If there
is n
In order to have a common handling of PHYLINK for the slave and non-user
ports, the DSA core glue logic (between PHYLINK and the driver) must use
an API that does not rely on a struct net_device.
These will also be called by the CPU-port-handling code in a further
patch.
Signed-off-by: Ioana Cior
With the latest addition to the PHYLINK infrastructure, we are faced
with a decision on when to print necessary info using the struct
net_device and when with the struct device.
Add a series of macros that encapsulate this decision and replace all
uses of netdev_err&co with phylink_err.
Signed-of
Following two separate discussion threads in:
https://www.spinics.net/lists/netdev/msg569087.html
and:
https://www.spinics.net/lists/netdev/msg570450.html
Previous RFC patch set: https://www.spinics.net/lists/netdev/msg571995.html
PHYLINK was reworked in order to accept multiple operation typ
Export a phy_standalone device attribute that is meant to give the
indication that this PHY lacks an attached_dev and its corresponding
sysfs link. The attribute will be created only when the
phy_attach_direct() function will be called with a NULL net_device.
Signed-off-by: Ioana Ciornei
---
dri
In general, we don't want MAC drivers calling phy_attach_direct with the
net_device being NULL. Add checks against this in all the functions
calling it: phy_attach() and phy_connect_direct().
Signed-off-by: Ioana Ciornei
Suggested-by: Andrew Lunn
---
drivers/net/phy/phy_device.c | 6 ++
1 f
From: Vladimir Oltean
This is a cosmetic patch that wraps the operation of creating sysfs
links between the netdev->phydev and the phydev->attached_dev.
This is needed to keep the indentation level in check in a follow-up
patch where this function will be guarded against the existence of a
phyde
sscanf truncates read port values silently without any error. As sscanf
man says:
(...) sscanf() conform to C89 and C99 and POSIX.1-2001. These standards
do not specify the ERANGE error.
Replace sscanf with safer get_be16 that returns error when value is out
of range.
Example:
tc filter add dev e
Kevin 'ldir' Darbyshire-Bryant writes:
> I have to call it a day. I have no idea why the patches are becoming
> corrupt and hence how to fix it, it’s probably something Apple has
> done to git, or maybe MS to my email server.
Or maybe it's just that your editor saves things with the wrong type o
From: Willem de Bruijn
Test the IPv6 flowlabel control and datapath interfaces:
Acquire and release the right to use flowlabels with socket option
IPV6_FLOWLABEL_MGR.
Then configure flowlabels on send and read them on recv with cmsg
IPV6_FLOWINFO. Also verify auto-flowlabel if not explicitly se
I have to call it a day. I have no idea why the patches are becoming corrupt
and hence how to fix it, it’s probably something Apple has done to git, or
maybe MS to my email server.
Sadly I also think that the only way this patch/functionality will ever be
acceptable is if someone else writes i
On 27.05.2019 21:25, Florian Fainelli wrote:
>
>
> On 5/27/2019 11:28 AM, Heiner Kallweit wrote:
>> The phylib interrupt handler handles link change events only currently.
>> However PHY drivers may want to use other interrupt sources too,
>> e.g. to report temperature monitoring events. Therefor
On 5/27/2019 11:28 AM, Heiner Kallweit wrote:
> The phylib interrupt handler handles link change events only currently.
> However PHY drivers may want to use other interrupt sources too,
> e.g. to report temperature monitoring events. Therefore add a callback
> to struct phy_driver allowing PHY
On 5/27/2019 11:28 AM, Heiner Kallweit wrote:
> We face the issue that link change interrupt and link status may be
> reported by different layers. As a result the link change interrupt
> may occur before the link status changes.
> Export phy_queue_state_machine to allow PHY drivers to specify a
On 5/26/2019 11:16 PM, Max Uvarov wrote:
> After reset SGMII Autoneg timer is set to 2us (bits 6 and 5 are 01).
> That us not enough to finalize autonegatiation on some devices.
s/us/is/
> Increase this timer duration to maximum supported 16ms.
>
> Signed-off-by: Max Uvarov
> Cc: Heiner K
On 5/26/2019 11:16 PM, Max Uvarov wrote:
> Phy state machine calls _config_init just after
> reset.
>
> Signed-off-by: Max Uvarov
Reviewed-by: Florian Fainelli
--
Florian
On 5/26/2019 11:16 PM, Max Uvarov wrote:
> PHY_INTERFACE_MODE_RGMII_RXID is less then TXID
> so code to set tx delay is never called.
> Fixes: 2a10154abcb75 ("net: phy: dp83867: Add TI dp83867 phy")
>
> Signed-off-by: Max Uvarov
> Cc: Florian Fainelli
Reviewed-by: Florian Fainelli
--
Flori
On 5/26/2019 11:16 PM, Max Uvarov wrote:
> For support 10Mps sped in SGMII mode DP83867_10M_SGMII_RATE_ADAPT bit
> of DP83867_10M_SGMII_CFG register has to be cleared by software.
> That does not affect speeds 100 and 1000 so can be done on init.
s/support/supporting/
s/sped/speed/
>
> Signed
We face the issue that link change interrupt and link status may be
reported by different layers. As a result the link change interrupt
may occur before the link status changes.
Export phy_queue_state_machine to allow PHY drivers to specify a
delay between link status change interrupt and link stat
The phylib interrupt handler handles link change events only currently.
However PHY drivers may want to use other interrupt sources too,
e.g. to report temperature monitoring events. Therefore add a callback
to struct phy_driver allowing PHY drivers to implement a custom
interrupt handler.
Signed-
Especially with fibre links there may be very short link drops. And if
interrupt handling is slow we may miss such a link drop. To deal with
this we remove the double link status read from the generic link status
read functions, and call the state machine twice instead.
The flag for double-reading
This series tries to address few problematic aspects raised by
Russell. Concrete example is the Marvell 88x3310, the changes
should be helpful for other complex C45 PHY's too.
Heiner Kallweit (3):
net: phy: export phy_queue_state_machine
net: phy: add callback for custom interrupt handler to s
On 5/23/2019 2:45 AM, Jiri Pirko wrote:
> From: Jiri Pirko
>
> When user is flashing device using devlink, he currenly does not see any
> information about what is going on, percentages, etc.
> Drivers, for example mlxsw and mlx5, have notion about the progress
> and what is happening. This pa
Patch will be worked over and split. I'll need to investigate one more
problem. Split patch will be resent when ready.
On Thu, 2019-05-23 at 09:11 -0700, David Miller wrote:
> From: Andreas Steinmetz
> Date: Thu, 23 May 2019 09:46:15 +0200
>
> > MACsec causes oopses followed by a kernel panic wh
In the pmtu_vti6_link_change_mtu test, both local and remote addresses
for the vti6 tunnel are assigned to the same address given to the dummy
interface that we use as encapsulating device with a known MTU.
This works as long as the dummy interface is actually selected, via
rt6_lookup(), as encaps
From: Igor Russkikh
Date: Mon, 27 May 2019 09:57:18 +
> This is not about introducing tx clean budget, but about fixing a bug.
>
> tx clean budget logic is present in majority of the drivers as I see,
> including igb,ixgbe,mlx5.
>
> I see it as a logical action to limit the time driver spen
From: "Y.b. Lu"
Date: Mon, 27 May 2019 03:55:20 +
> Fix blow sparse warning introduced by a previous patch.
> - restricted __le32 degrades to integer
> - restricted __le16 degrades to integer
>
> Fixes: d39823121911 ("enetc: add hardware timestamping support")
> Signed-off-by: Yangbo Lu
Ap
From: Hangbin Liu
Date: Mon, 27 May 2019 11:31:10 +0800
> Like bond, add ethtool get_link_ksettings to show the total speed.
>
> Signed-off-by: Hangbin Liu
Yeah, this mirrors what bonding does.
Jiri, please review.
Kevin 'ldir' Darbyshire-Bryant writes:
> ctinfo is a new tc filter action module. It is designed to restore
> information contained in firewall conntrack marks to other packet fields
> and is typically used on packet ingress paths. At present it has two
> independent sub-functions or operating
From: Camelia Groza
Add support to configure multiple prioritized TX traffic
classes with mqprio.
Configure one BD ring per TC for the moment, one netdev
queue per TC.
Signed-off-by: Camelia Groza
Signed-off-by: Claudiu Manoil
---
drivers/net/ethernet/freescale/enetc/enetc.c | 56 ++
On Mon, 27 May 2019 12:21:51 +0530
Arun Kumar Neelakantam wrote:
> Hi team,
>
> we are using "skb = netdev_alloc_skb(NULL, len);" which is getting
> failed sometimes for len = 16k.
>
> I suspect mostly system memory got fragmented and hence atomic memory
> allocation for 16k is failing, can y
Hi Rasmus,
On Mon, 27 May 2019 13:02:04 +, Rasmus Villemoes
wrote:
> > On Mon, 27 May 2019 09:36:13 +, Rasmus Villemoes
> > wrote:
> >> Looking through the data sheets comparing the mv88e6240 and 6250, I
> >> noticed that they have the exact same description of the G1_IEEE_PRI
> >> reg
Sat, May 25, 2019 at 02:08:52AM CEST, jakub.kicin...@netronome.com wrote:
>On Sat, 25 May 2019 00:26:35 +0200, Jiri Pirko wrote:
>> Fri, May 24, 2019 at 05:54:46PM CEST, jakub.kicin...@netronome.com wrote:
>> >On Fri, 24 May 2019 10:11:10 +0200, Jiri Pirko wrote:
>> >> Thu, May 23, 2019 at 05:19:
On 27/05/2019 14.32, Vivien Didelot wrote:
> Hi Rasmus,
>
> On Mon, 27 May 2019 09:36:13 +, Rasmus Villemoes
> wrote:
>> Looking through the data sheets comparing the mv88e6240 and 6250, I
>> noticed that they have the exact same description of the G1_IEEE_PRI
>> register (global1, offset 0x
Hi Rasmus,
On Mon, 27 May 2019 09:36:13 +, Rasmus Villemoes
wrote:
> Looking through the data sheets comparing the mv88e6240 and 6250, I
> noticed that they have the exact same description of the G1_IEEE_PRI
> register (global1, offset 0x18). However, the current code used by 6240 does
>
>
Make use of devm_alloc_etherdev_mqs() to simplify the code.
Signed-off-by: Jisheng Zhang
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
b/drivers/net/etherne
ctinfo is a new tc filter action module. It is designed to restore
information contained in firewall conntrack marks to other packet fields
and is typically used on packet ingress paths. At present it has two
independent sub-functions or operating modes, DSCP restoration mode &
skb mark restorati
From: Thierry Reding
If the subdriver defers probe, do not show an error message. It's
perfectly fine for this error to occur since the driver will get another
chance to probe after some time and will usually succeed after all of
the resources that it requires have been registered.
Signed-off-by
On Thu, May 23, 2019 at 04:37:03PM +0100, Stefan Hajnoczi wrote:
> On Tue, May 14, 2019 at 10:15:43AM +0200, Stefano Garzarella wrote:
> > Hi guys,
> > I'm currently interested on implement a multi-transport support for VSOCK in
> > order to handle nested VMs.
> >
> > As Stefan suggested me, I sta
On 27.05.2019 8:15, David Miller wrote:
> From: Igor Russkikh
> Date: Sat, 25 May 2019 09:57:59 +
>
>> In case no other traffic happening on the ring, full tx cleanup
>> may not be completed. That may cause socket buffer to overflow
>> and tx traffic to stuck until next activity on the ring
Hi,
Looking through the data sheets comparing the mv88e6240 and 6250, I
noticed that they have the exact same description of the G1_IEEE_PRI
register (global1, offset 0x18). However, the current code used by 6240 does
int mv88e6085_g1_ieee_pri_map(struct mv88e6xxx_chip *chip)
{
/* Reset t
On Fri, May 24, 2019 at 05:51 PM CEST, John Fastabend wrote:
> Jakub Sitnicki wrote:
>>
>> Now that those pesky crashes are gone, we plan to look into drops when
>> doing echo with sockmap. Marek tried running echo-sockmap [1] with
>> latest bpf-next (plus mentioned crash fixes) and reports that no
On Sat, May 25, 2019 at 09:13:13AM -0600, David Ahern wrote:
> > Using a loopback doesn't work, e.g. if 10.1.1.0/24 was on a global
> > interface:
> >ip ro add vrf vrf-a 10.1.1.0/24 dev lo
>
> That works for MPLS when you exit the LSP and deliver locally, so it
> should work here as well. I'l
83 matches
Mail list logo