.. | .. |
---|
134 | 134 | |
---|
135 | 135 | /** |
---|
136 | 136 | * iw_valid_channel - validate channel in regulatory domain |
---|
137 | | - * @reg_comain: regulatory domain |
---|
| 137 | + * @reg_domain: regulatory domain |
---|
138 | 138 | * @channel: channel to validate |
---|
139 | 139 | * |
---|
140 | 140 | * Returns 0 if invalid in the specified regulatory domain, non-zero if valid. |
---|
.. | .. |
---|
458 | 458 | /** |
---|
459 | 459 | * wl3501_send_pkt - Send a packet. |
---|
460 | 460 | * @this: Card |
---|
461 | | - * |
---|
462 | | - * Send a packet. |
---|
463 | | - * |
---|
464 | | - * data = Ethernet raw frame. (e.g. data[0] - data[5] is Dest MAC Addr, |
---|
| 461 | + * @data: Ethernet raw frame. (e.g. data[0] - data[5] is Dest MAC Addr, |
---|
465 | 462 | * data[6] - data[11] is Src MAC Addr) |
---|
| 463 | + * @len: Packet length |
---|
466 | 464 | * Ref: IEEE 802.11 |
---|
467 | 465 | */ |
---|
468 | 466 | static int wl3501_send_pkt(struct wl3501_card *this, u8 *data, u16 len) |
---|
.. | .. |
---|
1330 | 1328 | } else { |
---|
1331 | 1329 | ++dev->stats.tx_packets; |
---|
1332 | 1330 | dev->stats.tx_bytes += skb->len; |
---|
1333 | | - kfree_skb(skb); |
---|
| 1331 | + dev_kfree_skb_irq(skb); |
---|
1334 | 1332 | |
---|
1335 | 1333 | if (this->tx_buffer_cnt < 2) |
---|
1336 | 1334 | netif_stop_queue(dev); |
---|
.. | .. |
---|
1864 | 1862 | { |
---|
1865 | 1863 | struct net_device *dev; |
---|
1866 | 1864 | struct wl3501_card *this; |
---|
| 1865 | + int ret; |
---|
1867 | 1866 | |
---|
1868 | 1867 | /* The io structure describes IO port mapping */ |
---|
1869 | 1868 | p_dev->resource[0]->end = 16; |
---|
.. | .. |
---|
1875 | 1874 | |
---|
1876 | 1875 | dev = alloc_etherdev(sizeof(struct wl3501_card)); |
---|
1877 | 1876 | if (!dev) |
---|
1878 | | - goto out_link; |
---|
1879 | | - |
---|
| 1877 | + return -ENOMEM; |
---|
1880 | 1878 | |
---|
1881 | 1879 | dev->netdev_ops = &wl3501_netdev_ops; |
---|
1882 | 1880 | dev->watchdog_timeo = 5 * HZ; |
---|
.. | .. |
---|
1889 | 1887 | netif_stop_queue(dev); |
---|
1890 | 1888 | p_dev->priv = dev; |
---|
1891 | 1889 | |
---|
1892 | | - return wl3501_config(p_dev); |
---|
1893 | | -out_link: |
---|
1894 | | - return -ENOMEM; |
---|
| 1890 | + ret = wl3501_config(p_dev); |
---|
| 1891 | + if (ret) |
---|
| 1892 | + goto out_free_etherdev; |
---|
| 1893 | + |
---|
| 1894 | + return 0; |
---|
| 1895 | + |
---|
| 1896 | +out_free_etherdev: |
---|
| 1897 | + free_netdev(dev); |
---|
| 1898 | + return ret; |
---|
1895 | 1899 | } |
---|
1896 | 1900 | |
---|
1897 | 1901 | static int wl3501_config(struct pcmcia_device *link) |
---|
.. | .. |
---|
1947 | 1951 | goto failed; |
---|
1948 | 1952 | } |
---|
1949 | 1953 | |
---|
1950 | | - for (i = 0; i < 6; i++) |
---|
1951 | | - dev->dev_addr[i] = ((char *)&this->mac_addr)[i]; |
---|
| 1954 | + eth_hw_addr_set(dev, this->mac_addr); |
---|
1952 | 1955 | |
---|
1953 | 1956 | /* print probe information */ |
---|
1954 | 1957 | printk(KERN_INFO "%s: wl3501 @ 0x%3.3x, IRQ %d, " |
---|