On 12/12/22 16:29, Niel Fourie wrote:

[...]

+static int _usb_eth_start(struct ether_priv *priv)
+{
+       unsigned long ts;
+       unsigned long timeout = USB_CONNECT_TIMEOUT;
+       struct eth_dev *dev = &priv->ethdev;
+
+       if (!dev->gadget)
+               return -1;
+ dev->network_started = 0;

Will this work on systems which already have netconsole active ? I think this would break the netconsole connection, since the network would be reinitialized, won't it ?

I would expect this assignment to be in _init and _stop , not in _start callback.

But I wonder whether the current ethernet uclass interface running code does not make the entire network_started mechanism obsolete. See the patch which you referenced previously in related patch:

fa795f45254 ("net: eth-uclass: avoid running start() twice without stop()")

        packet_received = 0;
        packet_sent = 0;
- gadget = dev->gadget;
-       usb_gadget_connect(gadget);
+       usb_gadget_connect(dev->gadget);
if (env_get("cdc_connect_timeout"))
                timeout = dectoul(env_get("cdc_connect_timeout"), NULL) * 
CONFIG_SYS_HZ;

[...]

@@ -2493,9 +2509,13 @@ static void _usb_eth_halt(struct ether_priv *priv)
  #ifndef CONFIG_DM_ETH
  static int usb_eth_init(struct eth_device *netdev, struct bd_info *bd)
  {
+       int ret;
        struct ether_priv *priv = (struct ether_priv *)netdev->priv;

Keep the vars sorted as reverse xmas tree please, i.e. int ret goes below the struct .

[...]

Reply via email to