hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/usb/lan78xx.c
....@@ -1,18 +1,6 @@
1
+// SPDX-License-Identifier: GPL-2.0+
12 /*
23 * Copyright (C) 2015 Microchip Technology
3
- *
4
- * This program is free software; you can redistribute it and/or
5
- * modify it under the terms of the GNU General Public License
6
- * as published by the Free Software Foundation; either version 2
7
- * of the License, or (at your option) any later version.
8
- *
9
- * This program is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
164 */
175 #include <linux/version.h>
186 #include <linux/module.h>
....@@ -25,6 +13,7 @@
2513 #include <linux/slab.h>
2614 #include <linux/if_vlan.h>
2715 #include <linux/uaccess.h>
16
+#include <linux/linkmode.h>
2817 #include <linux/list.h>
2918 #include <linux/ip.h>
3019 #include <linux/ipv6.h>
....@@ -835,20 +824,19 @@
835824 u32 length, u8 *data)
836825 {
837826 int i;
838
- int ret;
839827 u32 buf;
840828 unsigned long timeout;
841829
842
- ret = lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
830
+ lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
843831
844832 if (buf & OTP_PWR_DN_PWRDN_N_) {
845833 /* clear it and wait to be cleared */
846
- ret = lan78xx_write_reg(dev, OTP_PWR_DN, 0);
834
+ lan78xx_write_reg(dev, OTP_PWR_DN, 0);
847835
848836 timeout = jiffies + HZ;
849837 do {
850838 usleep_range(1, 10);
851
- ret = lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
839
+ lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
852840 if (time_after(jiffies, timeout)) {
853841 netdev_warn(dev->net,
854842 "timeout on OTP_PWR_DN");
....@@ -858,18 +846,18 @@
858846 }
859847
860848 for (i = 0; i < length; i++) {
861
- ret = lan78xx_write_reg(dev, OTP_ADDR1,
849
+ lan78xx_write_reg(dev, OTP_ADDR1,
862850 ((offset + i) >> 8) & OTP_ADDR1_15_11);
863
- ret = lan78xx_write_reg(dev, OTP_ADDR2,
851
+ lan78xx_write_reg(dev, OTP_ADDR2,
864852 ((offset + i) & OTP_ADDR2_10_3));
865853
866
- ret = lan78xx_write_reg(dev, OTP_FUNC_CMD, OTP_FUNC_CMD_READ_);
867
- ret = lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_);
854
+ lan78xx_write_reg(dev, OTP_FUNC_CMD, OTP_FUNC_CMD_READ_);
855
+ lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_);
868856
869857 timeout = jiffies + HZ;
870858 do {
871859 udelay(1);
872
- ret = lan78xx_read_reg(dev, OTP_STATUS, &buf);
860
+ lan78xx_read_reg(dev, OTP_STATUS, &buf);
873861 if (time_after(jiffies, timeout)) {
874862 netdev_warn(dev->net,
875863 "timeout on OTP_STATUS");
....@@ -877,7 +865,7 @@
877865 }
878866 } while (buf & OTP_STATUS_BUSY_);
879867
880
- ret = lan78xx_read_reg(dev, OTP_RD_DATA, &buf);
868
+ lan78xx_read_reg(dev, OTP_RD_DATA, &buf);
881869
882870 data[i] = (u8)(buf & 0xFF);
883871 }
....@@ -889,20 +877,19 @@
889877 u32 length, u8 *data)
890878 {
891879 int i;
892
- int ret;
893880 u32 buf;
894881 unsigned long timeout;
895882
896
- ret = lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
883
+ lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
897884
898885 if (buf & OTP_PWR_DN_PWRDN_N_) {
899886 /* clear it and wait to be cleared */
900
- ret = lan78xx_write_reg(dev, OTP_PWR_DN, 0);
887
+ lan78xx_write_reg(dev, OTP_PWR_DN, 0);
901888
902889 timeout = jiffies + HZ;
903890 do {
904891 udelay(1);
905
- ret = lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
892
+ lan78xx_read_reg(dev, OTP_PWR_DN, &buf);
906893 if (time_after(jiffies, timeout)) {
907894 netdev_warn(dev->net,
908895 "timeout on OTP_PWR_DN completion");
....@@ -912,21 +899,21 @@
912899 }
913900
914901 /* set to BYTE program mode */
915
- ret = lan78xx_write_reg(dev, OTP_PRGM_MODE, OTP_PRGM_MODE_BYTE_);
902
+ lan78xx_write_reg(dev, OTP_PRGM_MODE, OTP_PRGM_MODE_BYTE_);
916903
917904 for (i = 0; i < length; i++) {
918
- ret = lan78xx_write_reg(dev, OTP_ADDR1,
905
+ lan78xx_write_reg(dev, OTP_ADDR1,
919906 ((offset + i) >> 8) & OTP_ADDR1_15_11);
920
- ret = lan78xx_write_reg(dev, OTP_ADDR2,
907
+ lan78xx_write_reg(dev, OTP_ADDR2,
921908 ((offset + i) & OTP_ADDR2_10_3));
922
- ret = lan78xx_write_reg(dev, OTP_PRGM_DATA, data[i]);
923
- ret = lan78xx_write_reg(dev, OTP_TST_CMD, OTP_TST_CMD_PRGVRFY_);
924
- ret = lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_);
909
+ lan78xx_write_reg(dev, OTP_PRGM_DATA, data[i]);
910
+ lan78xx_write_reg(dev, OTP_TST_CMD, OTP_TST_CMD_PRGVRFY_);
911
+ lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_);
925912
926913 timeout = jiffies + HZ;
927914 do {
928915 udelay(1);
929
- ret = lan78xx_read_reg(dev, OTP_STATUS, &buf);
916
+ lan78xx_read_reg(dev, OTP_STATUS, &buf);
930917 if (time_after(jiffies, timeout)) {
931918 netdev_warn(dev->net,
932919 "Timeout on OTP_STATUS completion");
....@@ -1024,7 +1011,7 @@
10241011 static void lan78xx_set_addr_filter(struct lan78xx_priv *pdata,
10251012 int index, u8 addr[ETH_ALEN])
10261013 {
1027
- u32 temp;
1014
+ u32 temp;
10281015
10291016 if ((pdata) && (index > 0) && (index < NUM_OF_MAF)) {
10301017 temp = addr[3];
....@@ -1051,7 +1038,6 @@
10511038 container_of(param, struct lan78xx_priv, set_multicast);
10521039 struct lan78xx_net *dev = pdata->dev;
10531040 int i;
1054
- int ret;
10551041
10561042 netif_dbg(dev, drv, dev->net, "deferred multicast write 0x%08x\n",
10571043 pdata->rfe_ctl);
....@@ -1060,14 +1046,14 @@
10601046 DP_SEL_VHF_HASH_LEN, pdata->mchash_table);
10611047
10621048 for (i = 1; i < NUM_OF_MAF; i++) {
1063
- ret = lan78xx_write_reg(dev, MAF_HI(i), 0);
1064
- ret = lan78xx_write_reg(dev, MAF_LO(i),
1049
+ lan78xx_write_reg(dev, MAF_HI(i), 0);
1050
+ lan78xx_write_reg(dev, MAF_LO(i),
10651051 pdata->pfilter_table[i][1]);
1066
- ret = lan78xx_write_reg(dev, MAF_HI(i),
1052
+ lan78xx_write_reg(dev, MAF_HI(i),
10671053 pdata->pfilter_table[i][0]);
10681054 }
10691055
1070
- ret = lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
1056
+ lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
10711057 }
10721058
10731059 static void lan78xx_set_multicast(struct net_device *netdev)
....@@ -1137,7 +1123,6 @@
11371123 u16 lcladv, u16 rmtadv)
11381124 {
11391125 u32 flow = 0, fct_flow = 0;
1140
- int ret;
11411126 u8 cap;
11421127
11431128 if (dev->fc_autoneg)
....@@ -1160,10 +1145,10 @@
11601145 (cap & FLOW_CTRL_RX ? "enabled" : "disabled"),
11611146 (cap & FLOW_CTRL_TX ? "enabled" : "disabled"));
11621147
1163
- ret = lan78xx_write_reg(dev, FCT_FLOW, fct_flow);
1148
+ lan78xx_write_reg(dev, FCT_FLOW, fct_flow);
11641149
11651150 /* threshold value should be set before enabling flow */
1166
- ret = lan78xx_write_reg(dev, FLOW, flow);
1151
+ lan78xx_write_reg(dev, FLOW, flow);
11671152
11681153 return 0;
11691154 }
....@@ -1271,8 +1256,7 @@
12711256 return;
12721257 }
12731258
1274
- memcpy(&intdata, urb->transfer_buffer, 4);
1275
- le32_to_cpus(&intdata);
1259
+ intdata = get_unaligned_le32(urb->transfer_buffer);
12761260
12771261 if (intdata & INT_ENP_PHY_INT) {
12781262 netif_dbg(dev, link, dev->net, "PHY INTR: 0x%08x\n", intdata);
....@@ -1608,18 +1592,17 @@
16081592 dev->fc_request_control |= FLOW_CTRL_TX;
16091593
16101594 if (ecmd.base.autoneg) {
1595
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(fc) = { 0, };
16111596 u32 mii_adv;
1612
- u32 advertising;
16131597
1614
- ethtool_convert_link_mode_to_legacy_u32(
1615
- &advertising, ecmd.link_modes.advertising);
1616
-
1617
- advertising &= ~(ADVERTISED_Pause | ADVERTISED_Asym_Pause);
1598
+ linkmode_clear_bit(ETHTOOL_LINK_MODE_Pause_BIT,
1599
+ ecmd.link_modes.advertising);
1600
+ linkmode_clear_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT,
1601
+ ecmd.link_modes.advertising);
16181602 mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
1619
- advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
1620
-
1621
- ethtool_convert_legacy_u32_to_link_mode(
1622
- ecmd.link_modes.advertising, advertising);
1603
+ mii_adv_to_linkmode_adv_t(fc, mii_adv);
1604
+ linkmode_or(ecmd.link_modes.advertising, fc,
1605
+ ecmd.link_modes.advertising);
16231606
16241607 phy_ethtool_ksettings_set(phydev, &ecmd);
16251608 }
....@@ -1683,22 +1666,13 @@
16831666 .get_regs = lan78xx_get_regs,
16841667 };
16851668
1686
-static int lan78xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
1687
-{
1688
- if (!netif_running(netdev))
1689
- return -EINVAL;
1690
-
1691
- return phy_mii_ioctl(netdev->phydev, rq, cmd);
1692
-}
1693
-
16941669 static void lan78xx_init_mac_address(struct lan78xx_net *dev)
16951670 {
16961671 u32 addr_lo, addr_hi;
1697
- int ret;
16981672 u8 addr[6];
16991673
1700
- ret = lan78xx_read_reg(dev, RX_ADDRL, &addr_lo);
1701
- ret = lan78xx_read_reg(dev, RX_ADDRH, &addr_hi);
1674
+ lan78xx_read_reg(dev, RX_ADDRL, &addr_lo);
1675
+ lan78xx_read_reg(dev, RX_ADDRH, &addr_hi);
17021676
17031677 addr[0] = addr_lo & 0xFF;
17041678 addr[1] = (addr_lo >> 8) & 0xFF;
....@@ -1731,12 +1705,12 @@
17311705 (addr[2] << 16) | (addr[3] << 24);
17321706 addr_hi = addr[4] | (addr[5] << 8);
17331707
1734
- ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
1735
- ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
1708
+ lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
1709
+ lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
17361710 }
17371711
1738
- ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
1739
- ret = lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
1712
+ lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
1713
+ lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
17401714
17411715 ether_addr_copy(dev->net->dev_addr, addr);
17421716 }
....@@ -1847,8 +1821,7 @@
18471821
18481822 node = of_get_child_by_name(dev->udev->dev.of_node, "mdio");
18491823 ret = of_mdiobus_register(dev->mdiobus, node);
1850
- if (node)
1851
- of_node_put(node);
1824
+ of_node_put(node);
18521825 if (ret) {
18531826 netdev_err(dev->net, "can't register MDIO bus\n");
18541827 goto exit1;
....@@ -1870,33 +1843,8 @@
18701843 static void lan78xx_link_status_change(struct net_device *net)
18711844 {
18721845 struct phy_device *phydev = net->phydev;
1873
- int ret, temp;
18741846
1875
- /* At forced 100 F/H mode, chip may fail to set mode correctly
1876
- * when cable is switched between long(~50+m) and short one.
1877
- * As workaround, set to 10 before setting to 100
1878
- * at forced 100 F/H mode.
1879
- */
1880
- if (!phydev->autoneg && (phydev->speed == 100)) {
1881
- /* disable phy interrupt */
1882
- temp = phy_read(phydev, LAN88XX_INT_MASK);
1883
- temp &= ~LAN88XX_INT_MASK_MDINTPIN_EN_;
1884
- ret = phy_write(phydev, LAN88XX_INT_MASK, temp);
1885
-
1886
- temp = phy_read(phydev, MII_BMCR);
1887
- temp &= ~(BMCR_SPEED100 | BMCR_SPEED1000);
1888
- phy_write(phydev, MII_BMCR, temp); /* set to 10 first */
1889
- temp |= BMCR_SPEED100;
1890
- phy_write(phydev, MII_BMCR, temp); /* set to 100 later */
1891
-
1892
- /* clear pending interrupt generated while workaround */
1893
- temp = phy_read(phydev, LAN88XX_INT_STS);
1894
-
1895
- /* enable phy interrupt back */
1896
- temp = phy_read(phydev, LAN88XX_INT_MASK);
1897
- temp |= LAN88XX_INT_MASK_MDINTPIN_EN_;
1898
- ret = phy_write(phydev, LAN88XX_INT_MASK, temp);
1899
- }
1847
+ phy_print_status(phydev);
19001848 }
19011849
19021850 static int irq_map(struct irq_domain *d, unsigned int irq,
....@@ -1949,14 +1897,13 @@
19491897 struct lan78xx_net *dev =
19501898 container_of(data, struct lan78xx_net, domain_data);
19511899 u32 buf;
1952
- int ret;
19531900
19541901 /* call register access here because irq_bus_lock & irq_bus_sync_unlock
19551902 * are only two callbacks executed in non-atomic contex.
19561903 */
1957
- ret = lan78xx_read_reg(dev, INT_EP_CTL, &buf);
1904
+ lan78xx_read_reg(dev, INT_EP_CTL, &buf);
19581905 if (buf != data->irqenable)
1959
- ret = lan78xx_write_reg(dev, INT_EP_CTL, data->irqenable);
1906
+ lan78xx_write_reg(dev, INT_EP_CTL, data->irqenable);
19601907
19611908 mutex_unlock(&data->irq_lock);
19621909 }
....@@ -2023,7 +1970,6 @@
20231970 static int lan8835_fixup(struct phy_device *phydev)
20241971 {
20251972 int buf;
2026
- int ret;
20271973 struct lan78xx_net *dev = netdev_priv(phydev->attached_dev);
20281974
20291975 /* LED2/PME_N/IRQ_N/RGMII_ID pin to IRQ_N mode */
....@@ -2033,11 +1979,11 @@
20331979 phy_write_mmd(phydev, MDIO_MMD_PCS, 0x8010, buf);
20341980
20351981 /* RGMII MAC TXC Delay Enable */
2036
- ret = lan78xx_write_reg(dev, MAC_RGMII_ID,
1982
+ lan78xx_write_reg(dev, MAC_RGMII_ID,
20371983 MAC_RGMII_ID_TXC_DELAY_EN_);
20381984
20391985 /* RGMII TX DLL Tune Adjust */
2040
- ret = lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00);
1986
+ lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00);
20411987
20421988 dev->interface = PHY_INTERFACE_MODE_RGMII_TXID;
20431989
....@@ -2075,8 +2021,7 @@
20752021 phydev = phy_find_first(dev->mdiobus);
20762022 if (!phydev) {
20772023 netdev_dbg(dev->net, "PHY Not Found!! Registering Fixed PHY\n");
2078
- phydev = fixed_phy_register(PHY_POLL, &fphy_status, -1,
2079
- NULL);
2024
+ phydev = fixed_phy_register(PHY_POLL, &fphy_status, NULL);
20802025 if (IS_ERR(phydev)) {
20812026 netdev_err(dev->net, "No PHY/fixed_PHY found\n");
20822027 return NULL;
....@@ -2119,6 +2064,7 @@
21192064
21202065 static int lan78xx_phy_init(struct lan78xx_net *dev)
21212066 {
2067
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(fc) = { 0, };
21222068 int ret;
21232069 u32 mii_adv;
21242070 struct phy_device *phydev;
....@@ -2178,13 +2124,17 @@
21782124 }
21792125
21802126 /* MAC doesn't support 1000T Half */
2181
- phydev->supported &= ~SUPPORTED_1000baseT_Half;
2127
+ phy_remove_link_mode(phydev, ETHTOOL_LINK_MODE_1000baseT_Half_BIT);
21822128
21832129 /* support both flow controls */
21842130 dev->fc_request_control = (FLOW_CTRL_RX | FLOW_CTRL_TX);
2185
- phydev->advertising &= ~(ADVERTISED_Pause | ADVERTISED_Asym_Pause);
2131
+ linkmode_clear_bit(ETHTOOL_LINK_MODE_Pause_BIT,
2132
+ phydev->advertising);
2133
+ linkmode_clear_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT,
2134
+ phydev->advertising);
21862135 mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
2187
- phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
2136
+ mii_adv_to_linkmode_adv_t(fc, mii_adv);
2137
+ linkmode_or(phydev->advertising, fc, phydev->advertising);
21882138
21892139 if (phydev->mdio.dev.of_node) {
21902140 u32 reg;
....@@ -2217,28 +2167,27 @@
22172167
22182168 static int lan78xx_set_rx_max_frame_length(struct lan78xx_net *dev, int size)
22192169 {
2220
- int ret = 0;
22212170 u32 buf;
22222171 bool rxenabled;
22232172
2224
- ret = lan78xx_read_reg(dev, MAC_RX, &buf);
2173
+ lan78xx_read_reg(dev, MAC_RX, &buf);
22252174
22262175 rxenabled = ((buf & MAC_RX_RXEN_) != 0);
22272176
22282177 if (rxenabled) {
22292178 buf &= ~MAC_RX_RXEN_;
2230
- ret = lan78xx_write_reg(dev, MAC_RX, buf);
2179
+ lan78xx_write_reg(dev, MAC_RX, buf);
22312180 }
22322181
22332182 /* add 4 to size for FCS */
22342183 buf &= ~MAC_RX_MAX_SIZE_MASK_;
22352184 buf |= (((size + 4) << MAC_RX_MAX_SIZE_SHIFT_) & MAC_RX_MAX_SIZE_MASK_);
22362185
2237
- ret = lan78xx_write_reg(dev, MAC_RX, buf);
2186
+ lan78xx_write_reg(dev, MAC_RX, buf);
22382187
22392188 if (rxenabled) {
22402189 buf |= MAC_RX_RXEN_;
2241
- ret = lan78xx_write_reg(dev, MAC_RX, buf);
2190
+ lan78xx_write_reg(dev, MAC_RX, buf);
22422191 }
22432192
22442193 return 0;
....@@ -2295,13 +2244,12 @@
22952244 int ll_mtu = new_mtu + netdev->hard_header_len;
22962245 int old_hard_mtu = dev->hard_mtu;
22972246 int old_rx_urb_size = dev->rx_urb_size;
2298
- int ret;
22992247
23002248 /* no second zero-length packet read wanted after mtu-sized packets */
23012249 if ((ll_mtu % dev->maxpacket) == 0)
23022250 return -EDOM;
23032251
2304
- ret = lan78xx_set_rx_max_frame_length(dev, new_mtu + VLAN_ETH_HLEN);
2252
+ lan78xx_set_rx_max_frame_length(dev, new_mtu + VLAN_ETH_HLEN);
23052253
23062254 netdev->mtu = new_mtu;
23072255
....@@ -2324,7 +2272,6 @@
23242272 struct lan78xx_net *dev = netdev_priv(netdev);
23252273 struct sockaddr *addr = p;
23262274 u32 addr_lo, addr_hi;
2327
- int ret;
23282275
23292276 if (netif_running(netdev))
23302277 return -EBUSY;
....@@ -2341,12 +2288,12 @@
23412288 addr_hi = netdev->dev_addr[4] |
23422289 netdev->dev_addr[5] << 8;
23432290
2344
- ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
2345
- ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
2291
+ lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
2292
+ lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
23462293
23472294 /* Added to support MAC address changes */
2348
- ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
2349
- ret = lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
2295
+ lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
2296
+ lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
23502297
23512298 return 0;
23522299 }
....@@ -2358,7 +2305,6 @@
23582305 struct lan78xx_net *dev = netdev_priv(netdev);
23592306 struct lan78xx_priv *pdata = (struct lan78xx_priv *)(dev->data[0]);
23602307 unsigned long flags;
2361
- int ret;
23622308
23632309 spin_lock_irqsave(&pdata->rfe_ctl_lock, flags);
23642310
....@@ -2382,7 +2328,7 @@
23822328
23832329 spin_unlock_irqrestore(&pdata->rfe_ctl_lock, flags);
23842330
2385
- ret = lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
2331
+ lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl);
23862332
23872333 return 0;
23882334 }
....@@ -2706,7 +2652,7 @@
27062652
27072653 static int lan78xx_stop(struct net_device *net)
27082654 {
2709
- struct lan78xx_net *dev = netdev_priv(net);
2655
+ struct lan78xx_net *dev = netdev_priv(net);
27102656
27112657 if (timer_pending(&dev->stat_monitor))
27122658 del_timer_sync(&dev->stat_monitor);
....@@ -2745,6 +2691,7 @@
27452691 struct sk_buff *skb, gfp_t flags)
27462692 {
27472693 u32 tx_cmd_a, tx_cmd_b;
2694
+ void *ptr;
27482695
27492696 if (skb_cow_head(skb, TX_OVERHEAD)) {
27502697 dev_kfree_skb_any(skb);
....@@ -2775,13 +2722,9 @@
27752722 tx_cmd_b |= skb_vlan_tag_get(skb) & TX_CMD_B_VTAG_MASK_;
27762723 }
27772724
2778
- skb_push(skb, 4);
2779
- cpu_to_le32s(&tx_cmd_b);
2780
- memcpy(skb->data, &tx_cmd_b, 4);
2781
-
2782
- skb_push(skb, 4);
2783
- cpu_to_le32s(&tx_cmd_a);
2784
- memcpy(skb->data, &tx_cmd_a, 4);
2725
+ ptr = skb_push(skb, 8);
2726
+ put_unaligned_le32(tx_cmd_a, ptr);
2727
+ put_unaligned_le32(tx_cmd_b, ptr + 4);
27852728
27862729 return skb;
27872730 }
....@@ -3020,7 +2963,7 @@
30202963
30212964 static void lan78xx_skb_return(struct lan78xx_net *dev, struct sk_buff *skb)
30222965 {
3023
- int status;
2966
+ int status;
30242967
30252968 if (test_bit(EVENT_RX_PAUSED, &dev->flags)) {
30262969 skb_queue_tail(&dev->rxq_pause, skb);
....@@ -3056,16 +2999,13 @@
30562999 struct sk_buff *skb2;
30573000 unsigned char *packet;
30583001
3059
- memcpy(&rx_cmd_a, skb->data, sizeof(rx_cmd_a));
3060
- le32_to_cpus(&rx_cmd_a);
3002
+ rx_cmd_a = get_unaligned_le32(skb->data);
30613003 skb_pull(skb, sizeof(rx_cmd_a));
30623004
3063
- memcpy(&rx_cmd_b, skb->data, sizeof(rx_cmd_b));
3064
- le32_to_cpus(&rx_cmd_b);
3005
+ rx_cmd_b = get_unaligned_le32(skb->data);
30653006 skb_pull(skb, sizeof(rx_cmd_b));
30663007
3067
- memcpy(&rx_cmd_c, skb->data, sizeof(rx_cmd_c));
3068
- le16_to_cpus(&rx_cmd_c);
3008
+ rx_cmd_c = get_unaligned_le16(skb->data);
30693009 skb_pull(skb, sizeof(rx_cmd_c));
30703010
30713011 packet = skb->data;
....@@ -3226,7 +3166,7 @@
32263166 case -EPIPE:
32273167 dev->net->stats.rx_errors++;
32283168 lan78xx_defer_kevent(dev, EVENT_RX_HALT);
3229
- /* FALLTHROUGH */
3169
+ fallthrough;
32303170 case -ECONNRESET: /* async unlink */
32313171 case -ESHUTDOWN: /* hardware gone */
32323172 netif_dbg(dev, ifdown, dev->net,
....@@ -3247,7 +3187,7 @@
32473187 /* data overrun ... flush fifo? */
32483188 case -EOVERFLOW:
32493189 dev->net->stats.rx_over_errors++;
3250
- /* FALLTHROUGH */
3190
+ fallthrough;
32513191
32523192 default:
32533193 state = rx_cleanup;
....@@ -3287,9 +3227,9 @@
32873227 count = 0;
32883228 length = 0;
32893229 spin_lock_irqsave(&tqp->lock, flags);
3290
- for (skb = tqp->next; pkt_cnt < tqp->qlen; skb = skb->next) {
3230
+ skb_queue_walk(tqp, skb) {
32913231 if (skb_is_gso(skb)) {
3292
- if (pkt_cnt) {
3232
+ if (!skb_queue_is_first(tqp, skb)) {
32933233 /* handle previous packets first */
32943234 break;
32953235 }
....@@ -3580,10 +3520,10 @@
35803520
35813521 static void lan78xx_disconnect(struct usb_interface *intf)
35823522 {
3583
- struct lan78xx_net *dev;
3584
- struct usb_device *udev;
3585
- struct net_device *net;
3586
- struct phy_device *phydev;
3523
+ struct lan78xx_net *dev;
3524
+ struct usb_device *udev;
3525
+ struct net_device *net;
3526
+ struct phy_device *phydev;
35873527
35883528 dev = usb_get_intfdata(intf);
35893529 usb_set_intfdata(intf, NULL);
....@@ -3617,7 +3557,7 @@
36173557 usb_put_dev(udev);
36183558 }
36193559
3620
-static void lan78xx_tx_timeout(struct net_device *net)
3560
+static void lan78xx_tx_timeout(struct net_device *net, unsigned int txqueue)
36213561 {
36223562 struct lan78xx_net *dev = netdev_priv(net);
36233563
....@@ -3646,7 +3586,7 @@
36463586 .ndo_change_mtu = lan78xx_change_mtu,
36473587 .ndo_set_mac_address = lan78xx_set_mac_addr,
36483588 .ndo_validate_addr = eth_validate_addr,
3649
- .ndo_do_ioctl = lan78xx_ioctl,
3589
+ .ndo_do_ioctl = phy_do_ioctl_running,
36503590 .ndo_set_rx_mode = lan78xx_set_multicast,
36513591 .ndo_set_features = lan78xx_set_features,
36523592 .ndo_vlan_rx_add_vid = lan78xx_vlan_rx_add_vid,
....@@ -3744,7 +3684,6 @@
37443684 ret = lan78xx_bind(dev, intf);
37453685 if (ret < 0)
37463686 goto out2;
3747
- strcpy(netdev->name, "eth%d");
37483687
37493688 if (netdev->mtu > (dev->hard_mtu - netdev->hard_header_len))
37503689 netdev->mtu = dev->hard_mtu - netdev->hard_header_len;
....@@ -3845,7 +3784,6 @@
38453784 static int lan78xx_set_suspend(struct lan78xx_net *dev, u32 wol)
38463785 {
38473786 u32 buf;
3848
- int ret;
38493787 int mask_index;
38503788 u16 crc;
38513789 u32 temp_wucsr;
....@@ -3854,26 +3792,26 @@
38543792 const u8 ipv6_multicast[3] = { 0x33, 0x33 };
38553793 const u8 arp_type[2] = { 0x08, 0x06 };
38563794
3857
- ret = lan78xx_read_reg(dev, MAC_TX, &buf);
3795
+ lan78xx_read_reg(dev, MAC_TX, &buf);
38583796 buf &= ~MAC_TX_TXEN_;
3859
- ret = lan78xx_write_reg(dev, MAC_TX, buf);
3860
- ret = lan78xx_read_reg(dev, MAC_RX, &buf);
3797
+ lan78xx_write_reg(dev, MAC_TX, buf);
3798
+ lan78xx_read_reg(dev, MAC_RX, &buf);
38613799 buf &= ~MAC_RX_RXEN_;
3862
- ret = lan78xx_write_reg(dev, MAC_RX, buf);
3800
+ lan78xx_write_reg(dev, MAC_RX, buf);
38633801
3864
- ret = lan78xx_write_reg(dev, WUCSR, 0);
3865
- ret = lan78xx_write_reg(dev, WUCSR2, 0);
3866
- ret = lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL);
3802
+ lan78xx_write_reg(dev, WUCSR, 0);
3803
+ lan78xx_write_reg(dev, WUCSR2, 0);
3804
+ lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL);
38673805
38683806 temp_wucsr = 0;
38693807
38703808 temp_pmt_ctl = 0;
3871
- ret = lan78xx_read_reg(dev, PMT_CTL, &temp_pmt_ctl);
3809
+ lan78xx_read_reg(dev, PMT_CTL, &temp_pmt_ctl);
38723810 temp_pmt_ctl &= ~PMT_CTL_RES_CLR_WKP_EN_;
38733811 temp_pmt_ctl |= PMT_CTL_RES_CLR_WKP_STS_;
38743812
38753813 for (mask_index = 0; mask_index < NUM_OF_WUF_CFG; mask_index++)
3876
- ret = lan78xx_write_reg(dev, WUF_CFG(mask_index), 0);
3814
+ lan78xx_write_reg(dev, WUF_CFG(mask_index), 0);
38773815
38783816 mask_index = 0;
38793817 if (wol & WAKE_PHY) {
....@@ -3902,30 +3840,30 @@
39023840
39033841 /* set WUF_CFG & WUF_MASK for IPv4 Multicast */
39043842 crc = lan78xx_wakeframe_crc16(ipv4_multicast, 3);
3905
- ret = lan78xx_write_reg(dev, WUF_CFG(mask_index),
3843
+ lan78xx_write_reg(dev, WUF_CFG(mask_index),
39063844 WUF_CFGX_EN_ |
39073845 WUF_CFGX_TYPE_MCAST_ |
39083846 (0 << WUF_CFGX_OFFSET_SHIFT_) |
39093847 (crc & WUF_CFGX_CRC16_MASK_));
39103848
3911
- ret = lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7);
3912
- ret = lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0);
3913
- ret = lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0);
3914
- ret = lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0);
3849
+ lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7);
3850
+ lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0);
3851
+ lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0);
3852
+ lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0);
39153853 mask_index++;
39163854
39173855 /* for IPv6 Multicast */
39183856 crc = lan78xx_wakeframe_crc16(ipv6_multicast, 2);
3919
- ret = lan78xx_write_reg(dev, WUF_CFG(mask_index),
3857
+ lan78xx_write_reg(dev, WUF_CFG(mask_index),
39203858 WUF_CFGX_EN_ |
39213859 WUF_CFGX_TYPE_MCAST_ |
39223860 (0 << WUF_CFGX_OFFSET_SHIFT_) |
39233861 (crc & WUF_CFGX_CRC16_MASK_));
39243862
3925
- ret = lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3);
3926
- ret = lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0);
3927
- ret = lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0);
3928
- ret = lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0);
3863
+ lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3);
3864
+ lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0);
3865
+ lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0);
3866
+ lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0);
39293867 mask_index++;
39303868
39313869 temp_pmt_ctl |= PMT_CTL_WOL_EN_;
....@@ -3946,16 +3884,16 @@
39463884 * for packettype (offset 12,13) = ARP (0x0806)
39473885 */
39483886 crc = lan78xx_wakeframe_crc16(arp_type, 2);
3949
- ret = lan78xx_write_reg(dev, WUF_CFG(mask_index),
3887
+ lan78xx_write_reg(dev, WUF_CFG(mask_index),
39503888 WUF_CFGX_EN_ |
39513889 WUF_CFGX_TYPE_ALL_ |
39523890 (0 << WUF_CFGX_OFFSET_SHIFT_) |
39533891 (crc & WUF_CFGX_CRC16_MASK_));
39543892
3955
- ret = lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000);
3956
- ret = lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0);
3957
- ret = lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0);
3958
- ret = lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0);
3893
+ lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000);
3894
+ lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0);
3895
+ lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0);
3896
+ lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0);
39593897 mask_index++;
39603898
39613899 temp_pmt_ctl |= PMT_CTL_WOL_EN_;
....@@ -3963,7 +3901,7 @@
39633901 temp_pmt_ctl |= PMT_CTL_SUS_MODE_0_;
39643902 }
39653903
3966
- ret = lan78xx_write_reg(dev, WUCSR, temp_wucsr);
3904
+ lan78xx_write_reg(dev, WUCSR, temp_wucsr);
39673905
39683906 /* when multiple WOL bits are set */
39693907 if (hweight_long((unsigned long)wol) > 1) {
....@@ -3971,16 +3909,16 @@
39713909 temp_pmt_ctl &= ~PMT_CTL_SUS_MODE_MASK_;
39723910 temp_pmt_ctl |= PMT_CTL_SUS_MODE_0_;
39733911 }
3974
- ret = lan78xx_write_reg(dev, PMT_CTL, temp_pmt_ctl);
3912
+ lan78xx_write_reg(dev, PMT_CTL, temp_pmt_ctl);
39753913
39763914 /* clear WUPS */
3977
- ret = lan78xx_read_reg(dev, PMT_CTL, &buf);
3915
+ lan78xx_read_reg(dev, PMT_CTL, &buf);
39783916 buf |= PMT_CTL_WUPS_MASK_;
3979
- ret = lan78xx_write_reg(dev, PMT_CTL, buf);
3917
+ lan78xx_write_reg(dev, PMT_CTL, buf);
39803918
3981
- ret = lan78xx_read_reg(dev, MAC_RX, &buf);
3919
+ lan78xx_read_reg(dev, MAC_RX, &buf);
39823920 buf |= MAC_RX_RXEN_;
3983
- ret = lan78xx_write_reg(dev, MAC_RX, buf);
3921
+ lan78xx_write_reg(dev, MAC_RX, buf);
39843922
39853923 return 0;
39863924 }
....@@ -3991,9 +3929,6 @@
39913929 struct lan78xx_priv *pdata = (struct lan78xx_priv *)(dev->data[0]);
39923930 u32 buf;
39933931 int ret;
3994
- int event;
3995
-
3996
- event = message.event;
39973932
39983933 if (!dev->suspend_count++) {
39993934 spin_lock_irq(&dev->txq.lock);