Thread (17 messages) 17 messages, 5 authors, 2021-10-04

Re: [PATCH net-next 3/5] net: bcmasp: Add support for ASP2.0 Ethernet controller

From: Justin Chen <hidden>
Date: 2021-09-29 23:05:09
Also in: dri-devel, linux-devicetree, linux-media, lkml

On Sun, Sep 26, 2021 at 6:58 AM Andrew Lunn [off-list ref] wrote:
quoted
quoted
quoted
+static int bcmasp_set_priv_flags(struct net_device *dev, u32 flags)
+{
+ struct bcmasp_intf *intf = netdev_priv(dev);
+
+ intf->wol_keep_rx_en = flags & BCMASP_WOL_KEEP_RX_EN ? 1 : 0;
+
+ return 0;
Please could you explain this some more. How can you disable RX and
still have WoL working?
Wake-on-LAN using Magic Packets and network filters requires keeping the
UniMAC's receiver turned on, and then the packets feed into the Magic Packet
Detector (MPD) block or the network filter block. In that mode DRAM is in
self refresh and there is local matching of frames into a tiny FIFO however
in the case of magic packets the packets leading to a wake-up are dropped as
there is nowhere to store them. In the case of a network filter match (e.g.:
matching a multicast IP address plus protocol, plus source/destination
ports) the packets are also discarded because the receive DMA was shut down.

When the wol_keep_rx_en flag is set, the above happens but we also allow the
packets that did match a network filter to reach the small FIFO (Justin
would know how many entries are there) that is used to push the packets to
DRAM. The packet contents are held in there until the system wakes up which
is usually just a few hundreds of micro seconds after we received a packet
that triggered a wake-up. Once we overflow the receive DMA FIFO capacity
subsequent packets get dropped which is fine since we are usually talking
about very low bit rates, and we only try to push to DRAM the packets of
interest, that is those for which we have a network filter.

This is convenient in scenarios where you want to wake-up from multicast DNS
(e.g.: wake on Googlecast, Bonjour etc.) because then the packet that
resulted in the system wake-up is not discarded but is then delivered to the
network stack.
Thanks for the explanation. It would be easier for the user if you
automate this. Enable is by default for WoL types which have user
content?
Yup that can work. We can enable it for WAKE_FILTER type wol and leave
it disabled otherwise.
quoted
quoted
quoted
+ /* Per ch */
+ intf->tx_spb_dma = priv->base + TX_SPB_DMA_OFFSET(intf);
+ intf->res.tx_spb_ctrl = priv->base + TX_SPB_CTRL_OFFSET(intf);
+ /*
+  * Stop gap solution. This should be removed when 72165a0 is
+  * deprecated
+  */
Is that an internal commit?
Yes this is a revision of the silicon that is not meant to see the light of
day.
So this can all be removed?
Yup. That can be removed
   Andrew
Thanks for the review.

Justin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help