From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [net-next,19/19] net: usb: aqc111: Add support for wake on LAN by MAGIC packet From: Andrew Lunn Message-Id: <20181006174921.GG6990@lunn.ch> Date: Sat, 6 Oct 2018 19:49:21 +0200 To: Igor Russkikh Cc: "David S . Miller" , "linux-usb@vger.kernel.org" , "netdev@vger.kernel.org" , Dmitry Bezrukov List-ID: PiArCQlpZiAoYXFjMTExX2RhdGEtPmRwYSkgewo+ICsJCQlhcWMxMTFfc2V0X3BoeV9zcGVlZChk ZXYsIEFVVE9ORUdfRElTQUJMRSwgU1BFRURfMTAwKTsKCkkgZG9uJ3QgdGhpbmsgdGhhdCB3b3Jr cy4gWW91IHNob3VsZCBsZWF2ZSBBVVRPTkVHIG9uLCBidXQgb25seQphZHZlcnRpc2UgU1BFRURf MTAwIGFuZCB0cmlnZ2VyIGF1dG8tbmVnLiBJZiB5b3UgZm9yY2UgaXQgdG8gMTAwLAp0aGVyZSBp cyBubyBndWFyYW50ZWUgdGhlIHBlZXIgd2lsbCBmaWd1cmUgb3V0IHdoYXQgdGhlIG5ldyBsaW5r IHNwZWVkCmlzLiBJJ3ZlIG9mdGVuIHNlZW4gZmFpbGVkIGF1dG8tbmV0IHJlc3VsdCBpbiAxMC9I YWxmLiBTbyB5b3Ugd2lsbApsb29zZSB0aGUgbGluaywgbWFraW5nIFdvTCBwb2ludGxlc3MuCgo+ ICtzdGF0aWMgaW50IGFxYzExMV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCj4g K3sKPiArCXN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7Cj4gKwlz dHJ1Y3QgYXFjMTExX2RhdGEgKmFxYzExMV9kYXRhID0gKHN0cnVjdCBhcWMxMTFfZGF0YSAqKWRl di0+ZGF0YVswXTsKPiArCXU4IHJlZzg7Cj4gKwl1MTYgcmVnMTY7Cj4gKwo+ICsJbmV0aWZfY2Fy cmllcl9vZmYoZGV2LT5uZXQpOwo+ICsKPiArCS8qIFBvd2VyIHVwIGV0aGVybmV0IFBIWSAqLwo+ ICsJYXFjMTExX2RhdGEtPnBoeV9vcHMucGh5X3Bvd2VyID0gMTsKPiArCWFxYzExMV9kYXRhLT5w aHlfb3BzLmxvd19wb3dlciA9IDA7Cj4gKwlhcWMxMTFfZGF0YS0+cGh5X29wcy53b2wgPSAwOwo+ ICsJaWYgKGFxYzExMV9kYXRhLT5kcGEpIHsKPiArCQlhcWMxMTFfcmVhZF9jbWRfbm9wbShkZXYs IEFRX1BIWV9QT1dFUiwgMCwgMCwgMSwgJnJlZzgpOwo+ICsJCWlmIChyZWc4ID09IDB4MDApIHsK PiArCQkJcmVnOCA9IDB4MDI7Cj4gKwkJCWFxYzExMV93cml0ZV9jbWRfbm9wbShkZXYsIEFRX1BI WV9QT1dFUiwgMCwgMCwKPiArCQkJCQkgICAgICAxLCAmcmVnOCk7Cj4gKwkJCW1zbGVlcCgyMDAp Owo+ICsJCX0KPiArCj4gKwkJYXFfbWRpb19yZWFkX2NtZChkZXYsIEFRX0dMQl9TVERfQ1RSTF9S RUcsIEFRX1BIWV9HTE9CQUxfQUREUiwKPiArCQkJCSAyLCAmcmVnMTYpOwo+ICsJCWlmIChyZWcx NiAmIEFRX1BIWV9MT1dfUE9XRVJfTU9ERSkgewo+ICsJCQlyZWcxNiAmPSB+QVFfUEhZX0xPV19Q T1dFUl9NT0RFOwo+ICsJCQlhcV9tZGlvX3dyaXRlX2NtZChkZXYsIEFRX0dMQl9TVERfQ1RSTF9S RUcsCj4gKwkJCQkJICBBUV9QSFlfR0xPQkFMX0FERFIsIDIsICZyZWcxNik7Cj4gKwkJfQo+ICsJ fQo+ICsKPiArCXJlZzggPSAweEZGOwo+ICsJYXFjMTExX3dyaXRlX2NtZF9ub3BtKGRldiwgQVFf QUNDRVNTX01BQywgU0ZSX0JNX0lOVF9NQVNLLAo+ICsJCQkgICAgICAxLCAxLCAmcmVnOCk7Cj4g KwkvKiBDb25maWd1cmUgUlggY29udHJvbCByZWdpc3RlciA9PiBzdGFydCBvcGVyYXRpb24gKi8K PiArCXJlZzE2ID0gYXFjMTExX2RhdGEtPnJ4Y3RsOwo+ICsJcmVnMTYgJj0gflNGUl9SWF9DVExf U1RBUlQ7Cj4gKwlhcWMxMTFfd3JpdGVfY21kX25vcG0oZGV2LCBBUV9BQ0NFU1NfTUFDLCBTRlJf UlhfQ1RMLCAyLCAyLCAmcmVnMTYpOwo+ICsKPiArCXJlZzE2IHw9IFNGUl9SWF9DVExfU1RBUlQ7 Cj4gKwlhcWMxMTFfd3JpdGVfY21kX25vcG0oZGV2LCBBUV9BQ0NFU1NfTUFDLCBTRlJfUlhfQ1RM LCAyLCAyLCAmcmVnMTYpOwo+ICsKPiArCWFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTEx X2RhdGEtPmF1dG9uZWcsCj4gKwkJCSAgICAgYXFjMTExX2RhdGEtPmFkdmVydGlzZWRfc3BlZWQp Owo+ICsKClNob3VsZCB0aGF0IGJlIGNvbmRpdGlvbmFsIG9uIGFxYzExMV9kYXRhLT5kcGE/Cgo+ ICtzdHJ1Y3QgYXFjMTExX3dvbF9jZmcgewo+ICsJdTggaHdfYWRkcls2XTsKPiArCXU4IGZsYWdz Owo+ICsJdTggcnN2ZFsyODNdOwo+ICt9OwoKRG8geW91IHJlYWxseSBuZWVkIHRoZXNlIDI4MyBi eXRlcz8/Cgo+ICsKPiArI2RlZmluZSBXT0xfQ0ZHX1NJWkUgc2l6ZW9mKHN0cnVjdCBhcWMxMTFf d29sX2NmZykKPiArCj4gIHN0cnVjdCBhcWMxMTFfZGF0YSB7Cj4gIAl1MTYgcnhjdGw7Cj4gIAl1 OCByeF9jaGVja3N1bTsKPiBAQCAtMjI4LDYgKzIzOCw3IEBAIHN0cnVjdCBhcWMxMTFfZGF0YSB7 Cj4gIAl9IGZ3X3ZlcjsKPiAgCXU4IGRwYTsgLypkaXJlY3QgUEhZIGFjY2VzcyovCj4gIAlzdHJ1 Y3QgYXFjMTExX3BoeV9vcHRpb25zIHBoeV9vcHM7Cj4gKwlzdHJ1Y3QgYXFjMTExX3dvbF9jZmcg d29sX2NmZzsKClRob3NlIDI4MyBieXRlcyBtYWtlIHRoaXMgd2hvbGUgc3RydWN0dXJlIGJpZ2dl ci4uLgoKICAgICAgQW5kcmV3Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Lunn Subject: Re: [PATCH net-next 19/19] net: usb: aqc111: Add support for wake on LAN by MAGIC packet Date: Sat, 6 Oct 2018 19:49:21 +0200 Message-ID: <20181006174921.GG6990@lunn.ch> References: <1a7d4af1b3a6397b76338d543f86bb4c327f5060.1538734658.git.igor.russkikh@aquantia.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "David S . Miller" , "linux-usb@vger.kernel.org" , "netdev@vger.kernel.org" , Dmitry Bezrukov To: Igor Russkikh Return-path: Received: from vps0.lunn.ch ([185.16.172.187]:55802 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726348AbeJGAxh (ORCPT ); Sat, 6 Oct 2018 20:53:37 -0400 Content-Disposition: inline In-Reply-To: <1a7d4af1b3a6397b76338d543f86bb4c327f5060.1538734658.git.igor.russkikh@aquantia.com> Sender: netdev-owner@vger.kernel.org List-ID: > + if (aqc111_data->dpa) { > + aqc111_set_phy_speed(dev, AUTONEG_DISABLE, SPEED_100); I don't think that works. You should leave AUTONEG on, but only advertise SPEED_100 and trigger auto-neg. If you force it to 100, there is no guarantee the peer will figure out what the new link speed is. I've often seen failed auto-net result in 10/Half. So you will loose the link, making WoL pointless. > +static int aqc111_resume(struct usb_interface *intf) > +{ > + struct usbnet *dev = usb_get_intfdata(intf); > + struct aqc111_data *aqc111_data = (struct aqc111_data *)dev->data[0]; > + u8 reg8; > + u16 reg16; > + > + netif_carrier_off(dev->net); > + > + /* Power up ethernet PHY */ > + aqc111_data->phy_ops.phy_power = 1; > + aqc111_data->phy_ops.low_power = 0; > + aqc111_data->phy_ops.wol = 0; > + if (aqc111_data->dpa) { > + aqc111_read_cmd_nopm(dev, AQ_PHY_POWER, 0, 0, 1, ®8); > + if (reg8 == 0x00) { > + reg8 = 0x02; > + aqc111_write_cmd_nopm(dev, AQ_PHY_POWER, 0, 0, > + 1, ®8); > + msleep(200); > + } > + > + aq_mdio_read_cmd(dev, AQ_GLB_STD_CTRL_REG, AQ_PHY_GLOBAL_ADDR, > + 2, ®16); > + if (reg16 & AQ_PHY_LOW_POWER_MODE) { > + reg16 &= ~AQ_PHY_LOW_POWER_MODE; > + aq_mdio_write_cmd(dev, AQ_GLB_STD_CTRL_REG, > + AQ_PHY_GLOBAL_ADDR, 2, ®16); > + } > + } > + > + reg8 = 0xFF; > + aqc111_write_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_BM_INT_MASK, > + 1, 1, ®8); > + /* Configure RX control register => start operation */ > + reg16 = aqc111_data->rxctl; > + reg16 &= ~SFR_RX_CTL_START; > + aqc111_write_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_RX_CTL, 2, 2, ®16); > + > + reg16 |= SFR_RX_CTL_START; > + aqc111_write_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_RX_CTL, 2, 2, ®16); > + > + aqc111_set_phy_speed(dev, aqc111_data->autoneg, > + aqc111_data->advertised_speed); > + Should that be conditional on aqc111_data->dpa? > +struct aqc111_wol_cfg { > + u8 hw_addr[6]; > + u8 flags; > + u8 rsvd[283]; > +}; Do you really need these 283 bytes?? > + > +#define WOL_CFG_SIZE sizeof(struct aqc111_wol_cfg) > + > struct aqc111_data { > u16 rxctl; > u8 rx_checksum; > @@ -228,6 +238,7 @@ struct aqc111_data { > } fw_ver; > u8 dpa; /*direct PHY access*/ > struct aqc111_phy_options phy_ops; > + struct aqc111_wol_cfg wol_cfg; Those 283 bytes make this whole structure bigger... Andrew