···169169 index = next_index;170170 }171171172172- _unlock_tx_hashtbl(bond);173173-174172 tlb_init_slave(slave);173173+174174+ _unlock_tx_hashtbl(bond);175175}176176177177/* Must be called before starting the monitor timer */
···132132 * TODO:133133 * o several entry points race with dev->close134134 * o check for tx-no-resources/stop Q races with tx clean/wake Q135135+ *136136+ * FIXES:137137+ * 2005/12/02 - Michael O'Donnell <Michael.ODonnell at stratus dot com>138138+ * - Stratus87247: protect MDI control register manipulations135139 */136140137141#include <linux/config.h>···582578 u16 leds;583579 u16 eeprom_wc;584580 u16 eeprom[256];581581+ spinlock_t mdio_lock;585582};586583587584static inline void e100_write_flush(struct nic *nic)···881876{882877 u32 data_out = 0;883878 unsigned int i;879879+ unsigned long flags;884880881881+882882+ /*883883+ * Stratus87247: we shouldn't be writing the MDI control884884+ * register until the Ready bit shows True. Also, since885885+ * manipulation of the MDI control registers is a multi-step886886+ * procedure it should be done under lock.887887+ */888888+ spin_lock_irqsave(&nic->mdio_lock, flags);889889+ for (i = 100; i; --i) {890890+ if (readl(&nic->csr->mdi_ctrl) & mdi_ready)891891+ break;892892+ udelay(20);893893+ }894894+ if (unlikely(!i)) {895895+ printk("e100.mdio_ctrl(%s) won't go Ready\n",896896+ nic->netdev->name );897897+ spin_unlock_irqrestore(&nic->mdio_lock, flags);898898+ return 0; /* No way to indicate timeout error */899899+ }885900 writel((reg << 16) | (addr << 21) | dir | data, &nic->csr->mdi_ctrl);886901887887- for(i = 0; i < 100; i++) {902902+ for (i = 0; i < 100; i++) {888903 udelay(20);889889- if((data_out = readl(&nic->csr->mdi_ctrl)) & mdi_ready)904904+ if ((data_out = readl(&nic->csr->mdi_ctrl)) & mdi_ready)890905 break;891906 }892892-907907+ spin_unlock_irqrestore(&nic->mdio_lock, flags);893908 DPRINTK(HW, DEBUG,894909 "%s:addr=%d, reg=%d, data_in=0x%04X, data_out=0x%04X\n",895910 dir == mdi_read ? "READ" : "WRITE", addr, reg, data, data_out);···25872562 /* locks must be initialized before calling hw_reset */25882563 spin_lock_init(&nic->cb_lock);25892564 spin_lock_init(&nic->cmd_lock);25652565+ spin_lock_init(&nic->mdio_lock);2590256625912567 /* Reset the device before pci_set_master() in case device is in some25922568 * funky state and has an interrupt pending - hint: we don't have the
···4242 */4343void phy_print_status(struct phy_device *phydev)4444{4545- pr_info("%s: Link is %s", phydev->dev.bus_id,4545+ pr_info("PHY: %s - Link is %s", phydev->dev.bus_id,4646 phydev->link ? "Up" : "Down");4747 if (phydev->link)4848 printk(" - %d/%s", phydev->speed,
+3-3
drivers/net/tulip/uli526x.c
···16891689MODULE_DESCRIPTION("ULi M5261/M5263 fast ethernet driver");16901690MODULE_LICENSE("GPL");1691169116921692-MODULE_PARM(debug, "i");16931693-MODULE_PARM(mode, "i");16941694-MODULE_PARM(cr6set, "i");16921692+module_param(debug, int, 0644);16931693+module_param(mode, int, 0);16941694+module_param(cr6set, int, 0);16951695MODULE_PARM_DESC(debug, "ULi M5261/M5263 enable debugging (0-1)");16961696MODULE_PARM_DESC(mode, "ULi M5261/M5263: Bit 0: 10/100Mbps, bit 2: duplex, bit 8: HomePNA");16971697
+1-1
drivers/net/via-velocity.c
···791791#endif792792793793 if (vptr->flags & VELOCITY_FLAGS_TX_CSUM) {794794- dev->features |= NETIF_F_HW_CSUM;794794+ dev->features |= NETIF_F_IP_CSUM;795795 }796796797797 ret = register_netdev(dev);
+1-1
drivers/net/wireless/Kconfig
···243243244244config AIRO245245 tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"246246- depends on NET_RADIO && ISA_DMA_API && (PCI || BROKEN)246246+ depends on NET_RADIO && ISA_DMA_API && CRYPTO && (PCI || BROKEN)247247 ---help---248248 This is the standard Linux driver to support Cisco/Aironet ISA and249249 PCI 802.11 wireless cards.
···50505151 /* board specific information */5252 u32 board_flags;5353- const char *bus_id;5353+ u32 bus_id;5454+ u32 phy_id;5455 u8 mac_addr[6];5556};56575758struct gianfar_mdio_data {5858- /* device specific information */5959- u32 paddr;6060-6159 /* board specific information */6260 int irq[32];6361};
+3
include/linux/phy.h
···53535454#define PHY_MAX_ADDR 3255555656+/* Used when trying to connect to a specific phy (mii bus id:phy device id) */5757+#define PHY_ID_FMT "%x:%02x"5858+5659/* The Bus class for PHYs. Devices which provide access to5760 * PHYs should register using this structure */5861struct mii_bus {
+4-2
include/net/ieee80211.h
···363363#define IEEE80211_OFDM_SHIFT_MASK_A 4364364365365/* NOTE: This data is for statistical purposes; not all hardware provides this366366- * information for frames received. Not setting these will not cause367367- * any adverse affects. */366366+ * information for frames received.367367+ * For ieee80211_rx_mgt, you need to set at least the 'len' parameter.368368+ */368369struct ieee80211_rx_stats {369370 u32 mac_time;370371 s8 rssi;···10891088/* ieee80211_rx.c */10901089extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,10911090 struct ieee80211_rx_stats *rx_stats);10911091+/* make sure to set stats->len */10921092extern void ieee80211_rx_mgt(struct ieee80211_device *ieee,10931093 struct ieee80211_hdr_4addr *header,10941094 struct ieee80211_rx_stats *stats);