| .. | .. |
|---|
| 40 | 40 | #include "b44.h" |
|---|
| 41 | 41 | |
|---|
| 42 | 42 | #define DRV_MODULE_NAME "b44" |
|---|
| 43 | | -#define DRV_MODULE_VERSION "2.0" |
|---|
| 44 | 43 | #define DRV_DESCRIPTION "Broadcom 44xx/47xx 10/100 PCI ethernet driver" |
|---|
| 45 | 44 | |
|---|
| 46 | 45 | #define B44_DEF_MSG_ENABLE \ |
|---|
| .. | .. |
|---|
| 97 | 96 | MODULE_AUTHOR("Felix Fietkau, Florian Schirmer, Pekka Pietikainen, David S. Miller"); |
|---|
| 98 | 97 | MODULE_DESCRIPTION(DRV_DESCRIPTION); |
|---|
| 99 | 98 | MODULE_LICENSE("GPL"); |
|---|
| 100 | | -MODULE_VERSION(DRV_MODULE_VERSION); |
|---|
| 101 | 99 | |
|---|
| 102 | 100 | static int b44_debug = -1; /* -1 == use B44_DEF_MSG_ENABLE as value */ |
|---|
| 103 | 101 | module_param(b44_debug, int, 0); |
|---|
| .. | .. |
|---|
| 511 | 509 | *val++ += br32(bp, reg); |
|---|
| 512 | 510 | } |
|---|
| 513 | 511 | |
|---|
| 514 | | - /* Pad */ |
|---|
| 515 | | - reg += 8*4UL; |
|---|
| 516 | | - |
|---|
| 517 | 512 | for (reg = B44_RX_GOOD_O; reg <= B44_RX_NPAUSE; reg += 4UL) { |
|---|
| 518 | 513 | *val++ += br32(bp, reg); |
|---|
| 519 | 514 | } |
|---|
| .. | .. |
|---|
| 638 | 633 | bytes_compl += skb->len; |
|---|
| 639 | 634 | pkts_compl++; |
|---|
| 640 | 635 | |
|---|
| 641 | | - dev_kfree_skb_irq(skb); |
|---|
| 636 | + dev_consume_skb_irq(skb); |
|---|
| 642 | 637 | } |
|---|
| 643 | 638 | |
|---|
| 644 | 639 | netdev_completed_queue(bp->dev, pkts_compl, bytes_compl); |
|---|
| .. | .. |
|---|
| 951 | 946 | return IRQ_RETVAL(handled); |
|---|
| 952 | 947 | } |
|---|
| 953 | 948 | |
|---|
| 954 | | -static void b44_tx_timeout(struct net_device *dev) |
|---|
| 949 | +static void b44_tx_timeout(struct net_device *dev, unsigned int txqueue) |
|---|
| 955 | 950 | { |
|---|
| 956 | 951 | struct b44 *bp = netdev_priv(dev); |
|---|
| 957 | 952 | |
|---|
| .. | .. |
|---|
| 1012 | 1007 | } |
|---|
| 1013 | 1008 | |
|---|
| 1014 | 1009 | skb_copy_from_linear_data(skb, skb_put(bounce_skb, len), len); |
|---|
| 1015 | | - dev_kfree_skb_any(skb); |
|---|
| 1010 | + dev_consume_skb_any(skb); |
|---|
| 1016 | 1011 | skb = bounce_skb; |
|---|
| 1017 | 1012 | } |
|---|
| 1018 | 1013 | |
|---|
| .. | .. |
|---|
| 1794 | 1789 | struct ssb_bus *bus = bp->sdev->bus; |
|---|
| 1795 | 1790 | |
|---|
| 1796 | 1791 | strlcpy(info->driver, DRV_MODULE_NAME, sizeof(info->driver)); |
|---|
| 1797 | | - strlcpy(info->version, DRV_MODULE_VERSION, sizeof(info->version)); |
|---|
| 1798 | 1792 | switch (bus->bustype) { |
|---|
| 1799 | 1793 | case SSB_BUSTYPE_PCI: |
|---|
| 1800 | 1794 | strlcpy(info->bus_info, pci_name(bus->host_pci), sizeof(info->bus_info)); |
|---|
| .. | .. |
|---|
| 2216 | 2210 | { |
|---|
| 2217 | 2211 | struct b44 *bp = netdev_priv(dev); |
|---|
| 2218 | 2212 | struct phy_device *phydev = dev->phydev; |
|---|
| 2219 | | - bool status_changed = 0; |
|---|
| 2213 | + bool status_changed = false; |
|---|
| 2220 | 2214 | |
|---|
| 2221 | 2215 | BUG_ON(!phydev); |
|---|
| 2222 | 2216 | |
|---|
| 2223 | 2217 | if (bp->old_link != phydev->link) { |
|---|
| 2224 | | - status_changed = 1; |
|---|
| 2218 | + status_changed = true; |
|---|
| 2225 | 2219 | bp->old_link = phydev->link; |
|---|
| 2226 | 2220 | } |
|---|
| 2227 | 2221 | |
|---|
| .. | .. |
|---|
| 2229 | 2223 | if (phydev->link) { |
|---|
| 2230 | 2224 | if ((phydev->duplex == DUPLEX_HALF) && |
|---|
| 2231 | 2225 | (bp->flags & B44_FLAG_FULL_DUPLEX)) { |
|---|
| 2232 | | - status_changed = 1; |
|---|
| 2226 | + status_changed = true; |
|---|
| 2233 | 2227 | bp->flags &= ~B44_FLAG_FULL_DUPLEX; |
|---|
| 2234 | 2228 | } else if ((phydev->duplex == DUPLEX_FULL) && |
|---|
| 2235 | 2229 | !(bp->flags & B44_FLAG_FULL_DUPLEX)) { |
|---|
| 2236 | | - status_changed = 1; |
|---|
| 2230 | + status_changed = true; |
|---|
| 2237 | 2231 | bp->flags |= B44_FLAG_FULL_DUPLEX; |
|---|
| 2238 | 2232 | } |
|---|
| 2239 | 2233 | } |
|---|
| .. | .. |
|---|
| 2251 | 2245 | |
|---|
| 2252 | 2246 | static int b44_register_phy_one(struct b44 *bp) |
|---|
| 2253 | 2247 | { |
|---|
| 2248 | + __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, }; |
|---|
| 2254 | 2249 | struct mii_bus *mii_bus; |
|---|
| 2255 | 2250 | struct ssb_device *sdev = bp->sdev; |
|---|
| 2256 | 2251 | struct phy_device *phydev; |
|---|
| .. | .. |
|---|
| 2306 | 2301 | } |
|---|
| 2307 | 2302 | |
|---|
| 2308 | 2303 | /* mask with MAC supported features */ |
|---|
| 2309 | | - phydev->supported &= (SUPPORTED_100baseT_Half | |
|---|
| 2310 | | - SUPPORTED_100baseT_Full | |
|---|
| 2311 | | - SUPPORTED_Autoneg | |
|---|
| 2312 | | - SUPPORTED_MII); |
|---|
| 2313 | | - phydev->advertising = phydev->supported; |
|---|
| 2304 | + linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, mask); |
|---|
| 2305 | + linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, mask); |
|---|
| 2306 | + linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, mask); |
|---|
| 2307 | + linkmode_set_bit(ETHTOOL_LINK_MODE_MII_BIT, mask); |
|---|
| 2308 | + linkmode_and(phydev->supported, phydev->supported, mask); |
|---|
| 2309 | + linkmode_copy(phydev->advertising, phydev->supported); |
|---|
| 2314 | 2310 | |
|---|
| 2315 | 2311 | bp->old_link = 0; |
|---|
| 2316 | 2312 | bp->phy_addr = phydev->mdio.addr; |
|---|
| .. | .. |
|---|
| 2347 | 2343 | int err; |
|---|
| 2348 | 2344 | |
|---|
| 2349 | 2345 | instance++; |
|---|
| 2350 | | - |
|---|
| 2351 | | - pr_info_once("%s version %s\n", DRV_DESCRIPTION, DRV_MODULE_VERSION); |
|---|
| 2352 | 2346 | |
|---|
| 2353 | 2347 | dev = alloc_etherdev(sizeof(*bp)); |
|---|
| 2354 | 2348 | if (!dev) { |
|---|