400 |
* the ESSID is empty. Too many firmwares break if we do. |
* the ESSID is empty. Too many firmwares break if we do. |
401 |
* o 2.6 merges: Replace pdev->slot_name with pci_name(), remove |
* o 2.6 merges: Replace pdev->slot_name with pci_name(), remove |
402 |
* __devinitdata from PCI ID tables, use free_netdev(). |
* __devinitdata from PCI ID tables, use free_netdev(). |
403 |
|
* o Move netif_wake_queue() (back) to the Tx completion from the |
404 |
|
* ALLOC event. This seems to prevent/mitigate the rolling |
405 |
|
* error -110 problems at least on some Intersil firmwares. |
406 |
|
* Theoretically reduces performance, but I can't measure it. |
407 |
|
* Patch from Andrew Tridgell <tridge AT samba.org> |
408 |
* |
* |
409 |
* TODO |
* TODO |
410 |
* o New wireless extensions API (patch from Moustafa |
* o New wireless extensions API (patch from Moustafa |
1866 |
{ |
{ |
1867 |
struct orinoco_private *priv = dev->priv; |
struct orinoco_private *priv = dev->priv; |
1868 |
struct net_device_stats *stats = &priv->stats; |
struct net_device_stats *stats = &priv->stats; |
1869 |
|
u16 fid = hermes_read_regn(hw, TXCOMPLFID); |
1870 |
|
|
1871 |
stats->tx_packets++; |
stats->tx_packets++; |
1872 |
|
|
1873 |
|
if (fid != priv->txfid) { |
1874 |
|
if (fid != DUMMY_FID) |
1875 |
|
printk(KERN_WARNING "%s: Tx event on unexpected fid (%04X)\n", |
1876 |
|
dev->name, fid); |
1877 |
|
return; |
1878 |
|
} |
1879 |
|
|
1880 |
|
netif_wake_queue(dev); |
1881 |
|
|
1882 |
hermes_write_regn(hw, TXCOMPLFID, DUMMY_FID); |
hermes_write_regn(hw, TXCOMPLFID, DUMMY_FID); |
1883 |
} |
} |
1884 |
|
|
1885 |
static void __orinoco_ev_alloc(struct net_device *dev, hermes_t *hw) |
static void __orinoco_ev_alloc(struct net_device *dev, hermes_t *hw) |
1886 |
{ |
{ |
1887 |
struct orinoco_private *priv = dev->priv; |
struct orinoco_private *priv = dev->priv; |
|
|
|
1888 |
u16 fid = hermes_read_regn(hw, ALLOCFID); |
u16 fid = hermes_read_regn(hw, ALLOCFID); |
1889 |
|
|
1890 |
if (fid != priv->txfid) { |
if (fid != priv->txfid) { |
1892 |
printk(KERN_WARNING "%s: Allocate event on unexpected fid (%04X)\n", |
printk(KERN_WARNING "%s: Allocate event on unexpected fid (%04X)\n", |
1893 |
dev->name, fid); |
dev->name, fid); |
1894 |
return; |
return; |
|
} else { |
|
|
netif_wake_queue(dev); |
|
1895 |
} |
} |
1896 |
|
|
1897 |
hermes_write_regn(hw, ALLOCFID, DUMMY_FID); |
hermes_write_regn(hw, ALLOCFID, DUMMY_FID); |