提交 14eabf70 编写于 作者: D David S. Miller

Merge branch 'upstream-net26' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

...@@ -966,8 +966,8 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev, ...@@ -966,8 +966,8 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
addr_len = read_eeprom (ioaddr, 0, 8) == 0x8129 ? 8 : 6; addr_len = read_eeprom (ioaddr, 0, 8) == 0x8129 ? 8 : 6;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
((u16 *) (dev->dev_addr))[i] = ((__le16 *) (dev->dev_addr))[i] =
le16_to_cpu (read_eeprom (ioaddr, i + 7, addr_len)); cpu_to_le16(read_eeprom (ioaddr, i + 7, addr_len));
memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
/* The Rtl8139-specific entries in the device structure. */ /* The Rtl8139-specific entries in the device structure. */
...@@ -1373,8 +1373,8 @@ static void rtl8139_hw_start (struct net_device *dev) ...@@ -1373,8 +1373,8 @@ static void rtl8139_hw_start (struct net_device *dev)
/* unlock Config[01234] and BMCR register writes */ /* unlock Config[01234] and BMCR register writes */
RTL_W8_F (Cfg9346, Cfg9346_Unlock); RTL_W8_F (Cfg9346, Cfg9346_Unlock);
/* Restore our idea of the MAC address. */ /* Restore our idea of the MAC address. */
RTL_W32_F (MAC0 + 0, cpu_to_le32 (*(u32 *) (dev->dev_addr + 0))); RTL_W32_F (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0)));
RTL_W32_F (MAC0 + 4, cpu_to_le32 (*(u32 *) (dev->dev_addr + 4))); RTL_W32_F (MAC0 + 4, le16_to_cpu (*(__le16 *) (dev->dev_addr + 4)));
/* Must enable Tx/Rx before setting transfer thresholds! */ /* Must enable Tx/Rx before setting transfer thresholds! */
RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb); RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb);
...@@ -1945,7 +1945,7 @@ static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp, ...@@ -1945,7 +1945,7 @@ static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp,
rmb(); rmb();
/* read size+status of next frame from DMA ring buffer */ /* read size+status of next frame from DMA ring buffer */
rx_status = le32_to_cpu (*(u32 *) (rx_ring + ring_offset)); rx_status = le32_to_cpu (*(__le32 *) (rx_ring + ring_offset));
rx_size = rx_status >> 16; rx_size = rx_status >> 16;
pkt_size = rx_size - 4; pkt_size = rx_size - 4;
......
...@@ -467,6 +467,13 @@ config SNI_82596 ...@@ -467,6 +467,13 @@ config SNI_82596
Say Y here to support the on-board Intel 82596 ethernet controller Say Y here to support the on-board Intel 82596 ethernet controller
built into SNI RM machines. built into SNI RM machines.
config KORINA
tristate "Korina (IDT RC32434) Ethernet support"
depends on NET_ETHERNET && MIKROTIK_RB500
help
If you have a Mikrotik RouterBoard 500 or IDT RC32434
based system say Y. Otherwise say N.
config MIPS_JAZZ_SONIC config MIPS_JAZZ_SONIC
tristate "MIPS JAZZ onboard SONIC Ethernet support" tristate "MIPS JAZZ onboard SONIC Ethernet support"
depends on MACH_JAZZ depends on MACH_JAZZ
......
...@@ -190,6 +190,7 @@ obj-$(CONFIG_ZORRO8390) += zorro8390.o ...@@ -190,6 +190,7 @@ obj-$(CONFIG_ZORRO8390) += zorro8390.o
obj-$(CONFIG_HPLANCE) += hplance.o 7990.o obj-$(CONFIG_HPLANCE) += hplance.o 7990.o
obj-$(CONFIG_MVME147_NET) += mvme147.o 7990.o obj-$(CONFIG_MVME147_NET) += mvme147.o 7990.o
obj-$(CONFIG_EQUALIZER) += eql.o obj-$(CONFIG_EQUALIZER) += eql.o
obj-$(CONFIG_KORINA) += korina.o
obj-$(CONFIG_MIPS_JAZZ_SONIC) += jazzsonic.o obj-$(CONFIG_MIPS_JAZZ_SONIC) += jazzsonic.o
obj-$(CONFIG_MIPS_AU1X00_ENET) += au1000_eth.o obj-$(CONFIG_MIPS_AU1X00_ENET) += au1000_eth.o
obj-$(CONFIG_MIPS_SIM_NET) += mipsnet.o obj-$(CONFIG_MIPS_SIM_NET) += mipsnet.o
......
...@@ -378,8 +378,8 @@ static void __init get_node_ID(struct net_device *dev) ...@@ -378,8 +378,8 @@ static void __init get_node_ID(struct net_device *dev)
sa_offset = 15; sa_offset = 15;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
((u16 *)dev->dev_addr)[i] = ((__be16 *)dev->dev_addr)[i] =
be16_to_cpu(eeprom_op(ioaddr, EE_READ(sa_offset + i))); cpu_to_be16(eeprom_op(ioaddr, EE_READ(sa_offset + i)));
write_reg(ioaddr, CMR2, CMR2_NULL); write_reg(ioaddr, CMR2, CMR2_NULL);
} }
......
...@@ -833,10 +833,26 @@ static int do_trace(struct t3cdev *dev, struct sk_buff *skb) ...@@ -833,10 +833,26 @@ static int do_trace(struct t3cdev *dev, struct sk_buff *skb)
return 0; return 0;
} }
/*
* That skb would better have come from process_responses() where we abuse
* ->priority and ->csum to carry our data. NB: if we get to per-arch
* ->csum, the things might get really interesting here.
*/
static inline u32 get_hwtid(struct sk_buff *skb)
{
return ntohl((__force __be32)skb->priority) >> 8 & 0xfffff;
}
static inline u32 get_opcode(struct sk_buff *skb)
{
return G_OPCODE(ntohl((__force __be32)skb->csum));
}
static int do_term(struct t3cdev *dev, struct sk_buff *skb) static int do_term(struct t3cdev *dev, struct sk_buff *skb)
{ {
unsigned int hwtid = ntohl(skb->priority) >> 8 & 0xfffff; unsigned int hwtid = get_hwtid(skb);
unsigned int opcode = G_OPCODE(ntohl(skb->csum)); unsigned int opcode = get_opcode(skb);
struct t3c_tid_entry *t3c_tid; struct t3c_tid_entry *t3c_tid;
t3c_tid = lookup_tid(&(T3C_DATA(dev))->tid_maps, hwtid); t3c_tid = lookup_tid(&(T3C_DATA(dev))->tid_maps, hwtid);
...@@ -914,7 +930,7 @@ int process_rx(struct t3cdev *dev, struct sk_buff **skbs, int n) ...@@ -914,7 +930,7 @@ int process_rx(struct t3cdev *dev, struct sk_buff **skbs, int n)
{ {
while (n--) { while (n--) {
struct sk_buff *skb = *skbs++; struct sk_buff *skb = *skbs++;
unsigned int opcode = G_OPCODE(ntohl(skb->csum)); unsigned int opcode = get_opcode(skb);
int ret = cpl_handlers[opcode] (dev, skb); int ret = cpl_handlers[opcode] (dev, skb);
#if VALIDATE_TID #if VALIDATE_TID
......
...@@ -971,7 +971,8 @@ static int __devinit dfx_driver_init(struct net_device *dev, ...@@ -971,7 +971,8 @@ static int __devinit dfx_driver_init(struct net_device *dev,
int alloc_size; /* total buffer size needed */ int alloc_size; /* total buffer size needed */
char *top_v, *curr_v; /* virtual addrs into memory block */ char *top_v, *curr_v; /* virtual addrs into memory block */
dma_addr_t top_p, curr_p; /* physical addrs into memory block */ dma_addr_t top_p, curr_p; /* physical addrs into memory block */
u32 data, le32; /* host data register value */ u32 data; /* host data register value */
__le32 le32;
char *board_name = NULL; char *board_name = NULL;
DBG_printk("In dfx_driver_init...\n"); DBG_printk("In dfx_driver_init...\n");
......
...@@ -188,7 +188,7 @@ struct e1000_tx_ring { ...@@ -188,7 +188,7 @@ struct e1000_tx_ring {
spinlock_t tx_lock; spinlock_t tx_lock;
uint16_t tdh; uint16_t tdh;
uint16_t tdt; uint16_t tdt;
boolean_t last_tx_tso; bool last_tx_tso;
}; };
struct e1000_rx_ring { struct e1000_rx_ring {
...@@ -249,7 +249,6 @@ struct e1000_adapter { ...@@ -249,7 +249,6 @@ struct e1000_adapter {
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
spinlock_t tx_queue_lock; spinlock_t tx_queue_lock;
#endif #endif
atomic_t irq_sem;
unsigned int total_tx_bytes; unsigned int total_tx_bytes;
unsigned int total_tx_packets; unsigned int total_tx_packets;
unsigned int total_rx_bytes; unsigned int total_rx_bytes;
...@@ -283,17 +282,17 @@ struct e1000_adapter { ...@@ -283,17 +282,17 @@ struct e1000_adapter {
uint32_t tx_fifo_size; uint32_t tx_fifo_size;
uint8_t tx_timeout_factor; uint8_t tx_timeout_factor;
atomic_t tx_fifo_stall; atomic_t tx_fifo_stall;
boolean_t pcix_82544; bool pcix_82544;
boolean_t detect_tx_hung; bool detect_tx_hung;
/* RX */ /* RX */
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
boolean_t (*clean_rx) (struct e1000_adapter *adapter, bool (*clean_rx) (struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do); int *work_done, int work_to_do);
#else #else
boolean_t (*clean_rx) (struct e1000_adapter *adapter, bool (*clean_rx) (struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring); struct e1000_rx_ring *rx_ring);
#endif #endif
void (*alloc_rx_buf) (struct e1000_adapter *adapter, void (*alloc_rx_buf) (struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
...@@ -312,7 +311,7 @@ struct e1000_adapter { ...@@ -312,7 +311,7 @@ struct e1000_adapter {
uint32_t alloc_rx_buff_failed; uint32_t alloc_rx_buff_failed;
uint32_t rx_int_delay; uint32_t rx_int_delay;
uint32_t rx_abs_int_delay; uint32_t rx_abs_int_delay;
boolean_t rx_csum; bool rx_csum;
unsigned int rx_ps_pages; unsigned int rx_ps_pages;
uint32_t gorcl; uint32_t gorcl;
uint64_t gorcl_old; uint64_t gorcl_old;
...@@ -335,12 +334,12 @@ struct e1000_adapter { ...@@ -335,12 +334,12 @@ struct e1000_adapter {
struct e1000_rx_ring test_rx_ring; struct e1000_rx_ring test_rx_ring;
int msg_enable; int msg_enable;
boolean_t have_msi; bool have_msi;
/* to not mess up cache alignment, always add to the bottom */ /* to not mess up cache alignment, always add to the bottom */
boolean_t tso_force; bool tso_force;
boolean_t smart_power_down; /* phy smart power down */ bool smart_power_down; /* phy smart power down */
boolean_t quad_port_a; bool quad_port_a;
unsigned long flags; unsigned long flags;
uint32_t eeprom_wol; uint32_t eeprom_wol;
}; };
......
...@@ -353,7 +353,7 @@ e1000_set_tso(struct net_device *netdev, uint32_t data) ...@@ -353,7 +353,7 @@ e1000_set_tso(struct net_device *netdev, uint32_t data)
netdev->features &= ~NETIF_F_TSO6; netdev->features &= ~NETIF_F_TSO6;
DPRINTK(PROBE, INFO, "TSO is %s\n", data ? "Enabled" : "Disabled"); DPRINTK(PROBE, INFO, "TSO is %s\n", data ? "Enabled" : "Disabled");
adapter->tso_force = TRUE; adapter->tso_force = true;
return 0; return 0;
} }
...@@ -922,7 +922,8 @@ static int ...@@ -922,7 +922,8 @@ static int
e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data) e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
{ {
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
uint32_t mask, i=0, shared_int = TRUE; uint32_t mask, i = 0;
bool shared_int = true;
uint32_t irq = adapter->pdev->irq; uint32_t irq = adapter->pdev->irq;
*data = 0; *data = 0;
...@@ -931,7 +932,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data) ...@@ -931,7 +932,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
/* Hook up test interrupt handler just for this test */ /* Hook up test interrupt handler just for this test */
if (!request_irq(irq, &e1000_test_intr, IRQF_PROBE_SHARED, netdev->name, if (!request_irq(irq, &e1000_test_intr, IRQF_PROBE_SHARED, netdev->name,
netdev)) netdev))
shared_int = FALSE; shared_int = false;
else if (request_irq(irq, &e1000_test_intr, IRQF_SHARED, else if (request_irq(irq, &e1000_test_intr, IRQF_SHARED,
netdev->name, netdev)) { netdev->name, netdev)) {
*data = 1; *data = 1;
...@@ -1295,7 +1296,7 @@ e1000_integrated_phy_loopback(struct e1000_adapter *adapter) ...@@ -1295,7 +1296,7 @@ e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
uint32_t ctrl_reg = 0; uint32_t ctrl_reg = 0;
uint32_t stat_reg = 0; uint32_t stat_reg = 0;
adapter->hw.autoneg = FALSE; adapter->hw.autoneg = false;
if (adapter->hw.phy_type == e1000_phy_m88) { if (adapter->hw.phy_type == e1000_phy_m88) {
/* Auto-MDI/MDIX Off */ /* Auto-MDI/MDIX Off */
...@@ -1473,7 +1474,7 @@ e1000_loopback_cleanup(struct e1000_adapter *adapter) ...@@ -1473,7 +1474,7 @@ e1000_loopback_cleanup(struct e1000_adapter *adapter)
case e1000_82545_rev_3: case e1000_82545_rev_3:
case e1000_82546_rev_3: case e1000_82546_rev_3:
default: default:
hw->autoneg = TRUE; hw->autoneg = true;
if (hw->phy_type == e1000_phy_gg82563) if (hw->phy_type == e1000_phy_gg82563)
e1000_write_phy_reg(hw, e1000_write_phy_reg(hw,
GG82563_PHY_KMRN_MODE_CTRL, GG82563_PHY_KMRN_MODE_CTRL,
...@@ -1607,13 +1608,13 @@ e1000_link_test(struct e1000_adapter *adapter, uint64_t *data) ...@@ -1607,13 +1608,13 @@ e1000_link_test(struct e1000_adapter *adapter, uint64_t *data)
*data = 0; *data = 0;
if (adapter->hw.media_type == e1000_media_type_internal_serdes) { if (adapter->hw.media_type == e1000_media_type_internal_serdes) {
int i = 0; int i = 0;
adapter->hw.serdes_link_down = TRUE; adapter->hw.serdes_link_down = true;
/* On some blade server designs, link establishment /* On some blade server designs, link establishment
* could take as long as 2-3 minutes */ * could take as long as 2-3 minutes */
do { do {
e1000_check_for_link(&adapter->hw); e1000_check_for_link(&adapter->hw);
if (adapter->hw.serdes_link_down == FALSE) if (!adapter->hw.serdes_link_down)
return *data; return *data;
msleep(20); msleep(20);
} while (i++ < 3750); } while (i++ < 3750);
...@@ -1649,7 +1650,7 @@ e1000_diag_test(struct net_device *netdev, ...@@ -1649,7 +1650,7 @@ e1000_diag_test(struct net_device *netdev,
struct ethtool_test *eth_test, uint64_t *data) struct ethtool_test *eth_test, uint64_t *data)
{ {
struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_adapter *adapter = netdev_priv(netdev);
boolean_t if_running = netif_running(netdev); bool if_running = netif_running(netdev);
set_bit(__E1000_TESTING, &adapter->flags); set_bit(__E1000_TESTING, &adapter->flags);
if (eth_test->flags == ETH_TEST_FL_OFFLINE) { if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
......
此差异已折叠。
...@@ -100,8 +100,8 @@ typedef enum { ...@@ -100,8 +100,8 @@ typedef enum {
} e1000_fc_type; } e1000_fc_type;
struct e1000_shadow_ram { struct e1000_shadow_ram {
uint16_t eeprom_word; uint16_t eeprom_word;
boolean_t modified; bool modified;
}; };
/* PCI bus types */ /* PCI bus types */
...@@ -274,8 +274,8 @@ struct e1000_eeprom_info { ...@@ -274,8 +274,8 @@ struct e1000_eeprom_info {
uint16_t address_bits; uint16_t address_bits;
uint16_t delay_usec; uint16_t delay_usec;
uint16_t page_size; uint16_t page_size;
boolean_t use_eerd; bool use_eerd;
boolean_t use_eewr; bool use_eewr;
}; };
/* Flex ASF Information */ /* Flex ASF Information */
...@@ -391,8 +391,8 @@ struct e1000_host_mng_dhcp_cookie{ ...@@ -391,8 +391,8 @@ struct e1000_host_mng_dhcp_cookie{
int32_t e1000_mng_write_dhcp_info(struct e1000_hw *hw, uint8_t *buffer, int32_t e1000_mng_write_dhcp_info(struct e1000_hw *hw, uint8_t *buffer,
uint16_t length); uint16_t length);
boolean_t e1000_check_mng_mode(struct e1000_hw *hw); bool e1000_check_mng_mode(struct e1000_hw *hw);
boolean_t e1000_enable_tx_pkt_filtering(struct e1000_hw *hw); bool e1000_enable_tx_pkt_filtering(struct e1000_hw *hw);
int32_t e1000_read_eeprom(struct e1000_hw *hw, uint16_t reg, uint16_t words, uint16_t *data); int32_t e1000_read_eeprom(struct e1000_hw *hw, uint16_t reg, uint16_t words, uint16_t *data);
int32_t e1000_validate_eeprom_checksum(struct e1000_hw *hw); int32_t e1000_validate_eeprom_checksum(struct e1000_hw *hw);
int32_t e1000_update_eeprom_checksum(struct e1000_hw *hw); int32_t e1000_update_eeprom_checksum(struct e1000_hw *hw);
...@@ -1420,7 +1420,7 @@ struct e1000_hw { ...@@ -1420,7 +1420,7 @@ struct e1000_hw {
uint32_t ledctl_default; uint32_t ledctl_default;
uint32_t ledctl_mode1; uint32_t ledctl_mode1;
uint32_t ledctl_mode2; uint32_t ledctl_mode2;
boolean_t tx_pkt_filtering; bool tx_pkt_filtering;
struct e1000_host_mng_dhcp_cookie mng_cookie; struct e1000_host_mng_dhcp_cookie mng_cookie;
uint16_t phy_spd_default; uint16_t phy_spd_default;
uint16_t autoneg_advertised; uint16_t autoneg_advertised;
...@@ -1445,30 +1445,30 @@ struct e1000_hw { ...@@ -1445,30 +1445,30 @@ struct e1000_hw {
uint8_t dma_fairness; uint8_t dma_fairness;
uint8_t mac_addr[NODE_ADDRESS_SIZE]; uint8_t mac_addr[NODE_ADDRESS_SIZE];
uint8_t perm_mac_addr[NODE_ADDRESS_SIZE]; uint8_t perm_mac_addr[NODE_ADDRESS_SIZE];
boolean_t disable_polarity_correction; bool disable_polarity_correction;
boolean_t speed_downgraded; bool speed_downgraded;
e1000_smart_speed smart_speed; e1000_smart_speed smart_speed;
e1000_dsp_config dsp_config_state; e1000_dsp_config dsp_config_state;
boolean_t get_link_status; bool get_link_status;
boolean_t serdes_link_down; bool serdes_link_down;
boolean_t tbi_compatibility_en; bool tbi_compatibility_en;
boolean_t tbi_compatibility_on; bool tbi_compatibility_on;
boolean_t laa_is_present; bool laa_is_present;
boolean_t phy_reset_disable; bool phy_reset_disable;
boolean_t initialize_hw_bits_disable; bool initialize_hw_bits_disable;
boolean_t fc_send_xon; bool fc_send_xon;
boolean_t fc_strict_ieee; bool fc_strict_ieee;
boolean_t report_tx_early; bool report_tx_early;
boolean_t adaptive_ifs; bool adaptive_ifs;
boolean_t ifs_params_forced; bool ifs_params_forced;
boolean_t in_ifs_mode; bool in_ifs_mode;
boolean_t mng_reg_access_disabled; bool mng_reg_access_disabled;
boolean_t leave_av_bit_off; bool leave_av_bit_off;
boolean_t kmrn_lock_loss_workaround_disabled; bool kmrn_lock_loss_workaround_disabled;
boolean_t bad_tx_carr_stats_fd; bool bad_tx_carr_stats_fd;
boolean_t has_manc2h; bool has_manc2h;
boolean_t rx_needs_kicking; bool rx_needs_kicking;
boolean_t has_smbus; bool has_smbus;
}; };
...@@ -2518,11 +2518,11 @@ struct e1000_host_command_info { ...@@ -2518,11 +2518,11 @@ struct e1000_host_command_info {
* Typical use: * Typical use:
* ... * ...
* if (TBI_ACCEPT) { * if (TBI_ACCEPT) {
* accept_frame = TRUE; * accept_frame = true;
* e1000_tbi_adjust_stats(adapter, MacAddress); * e1000_tbi_adjust_stats(adapter, MacAddress);
* frame_length--; * frame_length--;
* } else { * } else {
* accept_frame = FALSE; * accept_frame = false;
* } * }
* ... * ...
*/ */
......
...@@ -169,21 +169,21 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu); ...@@ -169,21 +169,21 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
static int e1000_set_mac(struct net_device *netdev, void *p); static int e1000_set_mac(struct net_device *netdev, void *p);
static irqreturn_t e1000_intr(int irq, void *data); static irqreturn_t e1000_intr(int irq, void *data);
static irqreturn_t e1000_intr_msi(int irq, void *data); static irqreturn_t e1000_intr_msi(int irq, void *data);
static boolean_t e1000_clean_tx_irq(struct e1000_adapter *adapter, static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring); struct e1000_tx_ring *tx_ring);
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
static int e1000_clean(struct napi_struct *napi, int budget); static int e1000_clean(struct napi_struct *napi, int budget);
static boolean_t e1000_clean_rx_irq(struct e1000_adapter *adapter, static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do); int *work_done, int work_to_do);
static boolean_t e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do); int *work_done, int work_to_do);
#else #else
static boolean_t e1000_clean_rx_irq(struct e1000_adapter *adapter, static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring); struct e1000_rx_ring *rx_ring);
static boolean_t e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring); struct e1000_rx_ring *rx_ring);
#endif #endif
static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter, static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
...@@ -347,7 +347,6 @@ static void e1000_free_irq(struct e1000_adapter *adapter) ...@@ -347,7 +347,6 @@ static void e1000_free_irq(struct e1000_adapter *adapter)
static void static void
e1000_irq_disable(struct e1000_adapter *adapter) e1000_irq_disable(struct e1000_adapter *adapter)
{ {
atomic_inc(&adapter->irq_sem);
E1000_WRITE_REG(&adapter->hw, IMC, ~0); E1000_WRITE_REG(&adapter->hw, IMC, ~0);
E1000_WRITE_FLUSH(&adapter->hw); E1000_WRITE_FLUSH(&adapter->hw);
synchronize_irq(adapter->pdev->irq); synchronize_irq(adapter->pdev->irq);
...@@ -361,10 +360,8 @@ e1000_irq_disable(struct e1000_adapter *adapter) ...@@ -361,10 +360,8 @@ e1000_irq_disable(struct e1000_adapter *adapter)
static void static void
e1000_irq_enable(struct e1000_adapter *adapter) e1000_irq_enable(struct e1000_adapter *adapter)
{ {
if (likely(atomic_dec_and_test(&adapter->irq_sem))) { E1000_WRITE_REG(&adapter->hw, IMS, IMS_ENABLE_MASK);
E1000_WRITE_REG(&adapter->hw, IMS, IMS_ENABLE_MASK); E1000_WRITE_FLUSH(&adapter->hw);
E1000_WRITE_FLUSH(&adapter->hw);
}
} }
static void static void
...@@ -584,7 +581,7 @@ void e1000_power_up_phy(struct e1000_adapter *adapter) ...@@ -584,7 +581,7 @@ void e1000_power_up_phy(struct e1000_adapter *adapter)
static void e1000_power_down_phy(struct e1000_adapter *adapter) static void e1000_power_down_phy(struct e1000_adapter *adapter)
{ {
/* Power down the PHY so no link is implied when interface is down * /* Power down the PHY so no link is implied when interface is down *
* The PHY cannot be powered down if any of the following is TRUE * * The PHY cannot be powered down if any of the following is true *
* (a) WoL is enabled * (a) WoL is enabled
* (b) AMT is active * (b) AMT is active
* (c) SoL/IDER session is active */ * (c) SoL/IDER session is active */
...@@ -638,7 +635,6 @@ e1000_down(struct e1000_adapter *adapter) ...@@ -638,7 +635,6 @@ e1000_down(struct e1000_adapter *adapter)
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
napi_disable(&adapter->napi); napi_disable(&adapter->napi);
atomic_set(&adapter->irq_sem, 0);
#endif #endif
e1000_irq_disable(adapter); e1000_irq_disable(adapter);
...@@ -673,7 +669,7 @@ e1000_reset(struct e1000_adapter *adapter) ...@@ -673,7 +669,7 @@ e1000_reset(struct e1000_adapter *adapter)
{ {
uint32_t pba = 0, tx_space, min_tx_space, min_rx_space; uint32_t pba = 0, tx_space, min_tx_space, min_rx_space;
uint16_t fc_high_water_mark = E1000_FC_HIGH_DIFF; uint16_t fc_high_water_mark = E1000_FC_HIGH_DIFF;
boolean_t legacy_pba_adjust = FALSE; bool legacy_pba_adjust = false;
/* Repartition Pba for greater than 9k mtu /* Repartition Pba for greater than 9k mtu
* To take effect CTRL.RST is required. * To take effect CTRL.RST is required.
...@@ -687,7 +683,7 @@ e1000_reset(struct e1000_adapter *adapter) ...@@ -687,7 +683,7 @@ e1000_reset(struct e1000_adapter *adapter)
case e1000_82540: case e1000_82540:
case e1000_82541: case e1000_82541:
case e1000_82541_rev_2: case e1000_82541_rev_2:
legacy_pba_adjust = TRUE; legacy_pba_adjust = true;
pba = E1000_PBA_48K; pba = E1000_PBA_48K;
break; break;
case e1000_82545: case e1000_82545:
...@@ -698,7 +694,7 @@ e1000_reset(struct e1000_adapter *adapter) ...@@ -698,7 +694,7 @@ e1000_reset(struct e1000_adapter *adapter)
break; break;
case e1000_82547: case e1000_82547:
case e1000_82547_rev_2: case e1000_82547_rev_2:
legacy_pba_adjust = TRUE; legacy_pba_adjust = true;
pba = E1000_PBA_30K; pba = E1000_PBA_30K;
break; break;
case e1000_82571: case e1000_82571:
...@@ -716,7 +712,7 @@ e1000_reset(struct e1000_adapter *adapter) ...@@ -716,7 +712,7 @@ e1000_reset(struct e1000_adapter *adapter)
break; break;
} }
if (legacy_pba_adjust == TRUE) { if (legacy_pba_adjust) {
if (adapter->netdev->mtu > E1000_RXBUFFER_8192) if (adapter->netdev->mtu > E1000_RXBUFFER_8192)
pba -= 8; /* allocate more FIFO for Tx */ pba -= 8; /* allocate more FIFO for Tx */
...@@ -1366,15 +1362,15 @@ e1000_sw_init(struct e1000_adapter *adapter) ...@@ -1366,15 +1362,15 @@ e1000_sw_init(struct e1000_adapter *adapter)
e1000_set_media_type(hw); e1000_set_media_type(hw);
hw->wait_autoneg_complete = FALSE; hw->wait_autoneg_complete = false;
hw->tbi_compatibility_en = TRUE; hw->tbi_compatibility_en = true;
hw->adaptive_ifs = TRUE; hw->adaptive_ifs = true;
/* Copper options */ /* Copper options */
if (hw->media_type == e1000_media_type_copper) { if (hw->media_type == e1000_media_type_copper) {
hw->mdix = AUTO_ALL_MODES; hw->mdix = AUTO_ALL_MODES;
hw->disable_polarity_correction = FALSE; hw->disable_polarity_correction = false;
hw->master_slave = E1000_MASTER_SLAVE; hw->master_slave = E1000_MASTER_SLAVE;
} }
...@@ -1396,7 +1392,6 @@ e1000_sw_init(struct e1000_adapter *adapter) ...@@ -1396,7 +1392,6 @@ e1000_sw_init(struct e1000_adapter *adapter)
#endif #endif
/* Explicitly disable IRQ since the NIC can be in any state. */ /* Explicitly disable IRQ since the NIC can be in any state. */
atomic_set(&adapter->irq_sem, 0);
e1000_irq_disable(adapter); e1000_irq_disable(adapter);
spin_lock_init(&adapter->stats_lock); spin_lock_init(&adapter->stats_lock);
...@@ -1576,7 +1571,7 @@ e1000_close(struct net_device *netdev) ...@@ -1576,7 +1571,7 @@ e1000_close(struct net_device *netdev)
* @start: address of beginning of memory * @start: address of beginning of memory
* @len: length of memory * @len: length of memory
**/ **/
static boolean_t static bool
e1000_check_64k_bound(struct e1000_adapter *adapter, e1000_check_64k_bound(struct e1000_adapter *adapter,
void *start, unsigned long len) void *start, unsigned long len)
{ {
...@@ -1587,10 +1582,10 @@ e1000_check_64k_bound(struct e1000_adapter *adapter, ...@@ -1587,10 +1582,10 @@ e1000_check_64k_bound(struct e1000_adapter *adapter,
* write location to cross 64k boundary due to errata 23 */ * write location to cross 64k boundary due to errata 23 */
if (adapter->hw.mac_type == e1000_82545 || if (adapter->hw.mac_type == e1000_82545 ||
adapter->hw.mac_type == e1000_82546) { adapter->hw.mac_type == e1000_82546) {
return ((begin ^ (end - 1)) >> 16) != 0 ? FALSE : TRUE; return ((begin ^ (end - 1)) >> 16) != 0 ? false : true;
} }
return TRUE; return true;
} }
/** /**
...@@ -2133,7 +2128,7 @@ e1000_configure_rx(struct e1000_adapter *adapter) ...@@ -2133,7 +2128,7 @@ e1000_configure_rx(struct e1000_adapter *adapter)
/* Enable 82543 Receive Checksum Offload for TCP and UDP */ /* Enable 82543 Receive Checksum Offload for TCP and UDP */
if (hw->mac_type >= e1000_82543) { if (hw->mac_type >= e1000_82543) {
rxcsum = E1000_READ_REG(hw, RXCSUM); rxcsum = E1000_READ_REG(hw, RXCSUM);
if (adapter->rx_csum == TRUE) { if (adapter->rx_csum) {
rxcsum |= E1000_RXCSUM_TUOFL; rxcsum |= E1000_RXCSUM_TUOFL;
/* Enable 82571 IPv4 payload checksum for UDP fragments /* Enable 82571 IPv4 payload checksum for UDP fragments
...@@ -2669,7 +2664,7 @@ e1000_watchdog(unsigned long data) ...@@ -2669,7 +2664,7 @@ e1000_watchdog(unsigned long data)
if (link) { if (link) {
if (!netif_carrier_ok(netdev)) { if (!netif_carrier_ok(netdev)) {
uint32_t ctrl; uint32_t ctrl;
boolean_t txb2b = 1; bool txb2b = true;
e1000_get_speed_and_duplex(&adapter->hw, e1000_get_speed_and_duplex(&adapter->hw,
&adapter->link_speed, &adapter->link_speed,
&adapter->link_duplex); &adapter->link_duplex);
...@@ -2691,12 +2686,12 @@ e1000_watchdog(unsigned long data) ...@@ -2691,12 +2686,12 @@ e1000_watchdog(unsigned long data)
adapter->tx_timeout_factor = 1; adapter->tx_timeout_factor = 1;
switch (adapter->link_speed) { switch (adapter->link_speed) {
case SPEED_10: case SPEED_10:
txb2b = 0; txb2b = false;
netdev->tx_queue_len = 10; netdev->tx_queue_len = 10;
adapter->tx_timeout_factor = 8; adapter->tx_timeout_factor = 8;
break; break;
case SPEED_100: case SPEED_100:
txb2b = 0; txb2b = false;
netdev->tx_queue_len = 100; netdev->tx_queue_len = 100;
/* maybe add some timeout factor ? */ /* maybe add some timeout factor ? */
break; break;
...@@ -2704,7 +2699,7 @@ e1000_watchdog(unsigned long data) ...@@ -2704,7 +2699,7 @@ e1000_watchdog(unsigned long data)
if ((adapter->hw.mac_type == e1000_82571 || if ((adapter->hw.mac_type == e1000_82571 ||
adapter->hw.mac_type == e1000_82572) && adapter->hw.mac_type == e1000_82572) &&
txb2b == 0) { !txb2b) {
uint32_t tarc0; uint32_t tarc0;
tarc0 = E1000_READ_REG(&adapter->hw, TARC0); tarc0 = E1000_READ_REG(&adapter->hw, TARC0);
tarc0 &= ~(1 << 21); tarc0 &= ~(1 << 21);
...@@ -2802,7 +2797,7 @@ e1000_watchdog(unsigned long data) ...@@ -2802,7 +2797,7 @@ e1000_watchdog(unsigned long data)
E1000_WRITE_REG(&adapter->hw, ICS, E1000_ICS_RXDMT0); E1000_WRITE_REG(&adapter->hw, ICS, E1000_ICS_RXDMT0);
/* Force detection of hung controller every watchdog period */ /* Force detection of hung controller every watchdog period */
adapter->detect_tx_hung = TRUE; adapter->detect_tx_hung = true;
/* With 82571 controllers, LAA may be overwritten due to controller /* With 82571 controllers, LAA may be overwritten due to controller
* reset from the other port. Set the appropriate LAA in RAR[0] */ * reset from the other port. Set the appropriate LAA in RAR[0] */
...@@ -3025,12 +3020,12 @@ e1000_tso(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring, ...@@ -3025,12 +3020,12 @@ e1000_tso(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
if (++i == tx_ring->count) i = 0; if (++i == tx_ring->count) i = 0;
tx_ring->next_to_use = i; tx_ring->next_to_use = i;
return TRUE; return true;
} }
return FALSE; return false;
} }
static boolean_t static bool
e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring, e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
struct sk_buff *skb) struct sk_buff *skb)
{ {
...@@ -3060,10 +3055,10 @@ e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring, ...@@ -3060,10 +3055,10 @@ e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
if (unlikely(++i == tx_ring->count)) i = 0; if (unlikely(++i == tx_ring->count)) i = 0;
tx_ring->next_to_use = i; tx_ring->next_to_use = i;
return TRUE; return true;
} }
return FALSE; return false;
} }
#define E1000_MAX_TXD_PWR 12 #define E1000_MAX_TXD_PWR 12
...@@ -3836,11 +3831,8 @@ e1000_intr_msi(int irq, void *data) ...@@ -3836,11 +3831,8 @@ e1000_intr_msi(int irq, void *data)
#endif #endif
uint32_t icr = E1000_READ_REG(hw, ICR); uint32_t icr = E1000_READ_REG(hw, ICR);
#ifdef CONFIG_E1000_NAPI /* in NAPI mode read ICR disables interrupts using IAM */
/* read ICR disables interrupts using IAM, so keep up with our
* enable/disable accounting */
atomic_inc(&adapter->irq_sem);
#endif
if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
hw->get_link_status = 1; hw->get_link_status = 1;
/* 80003ES2LAN workaround-- For packet buffer work-around on /* 80003ES2LAN workaround-- For packet buffer work-around on
...@@ -3910,12 +3902,8 @@ e1000_intr(int irq, void *data) ...@@ -3910,12 +3902,8 @@ e1000_intr(int irq, void *data)
!(icr & E1000_ICR_INT_ASSERTED))) !(icr & E1000_ICR_INT_ASSERTED)))
return IRQ_NONE; return IRQ_NONE;
/* Interrupt Auto-Mask...upon reading ICR, /* Interrupt Auto-Mask...upon reading ICR, interrupts are masked. No
* interrupts are masked. No need for the * need for the IMC write */
* IMC write, but it does mean we should
* account for it ASAP. */
if (likely(hw->mac_type >= e1000_82571))
atomic_inc(&adapter->irq_sem);
#endif #endif
if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) { if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) {
...@@ -3939,7 +3927,6 @@ e1000_intr(int irq, void *data) ...@@ -3939,7 +3927,6 @@ e1000_intr(int irq, void *data)
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
if (unlikely(hw->mac_type < e1000_82571)) { if (unlikely(hw->mac_type < e1000_82571)) {
/* disable interrupts, without the synchronize_irq bit */ /* disable interrupts, without the synchronize_irq bit */
atomic_inc(&adapter->irq_sem);
E1000_WRITE_REG(hw, IMC, ~0); E1000_WRITE_REG(hw, IMC, ~0);
E1000_WRITE_FLUSH(hw); E1000_WRITE_FLUSH(hw);
} }
...@@ -3964,10 +3951,8 @@ e1000_intr(int irq, void *data) ...@@ -3964,10 +3951,8 @@ e1000_intr(int irq, void *data)
* in dead lock. Writing IMC forces 82547 into * in dead lock. Writing IMC forces 82547 into
* de-assertion state. * de-assertion state.
*/ */
if (hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2) { if (hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2)
atomic_inc(&adapter->irq_sem);
E1000_WRITE_REG(hw, IMC, ~0); E1000_WRITE_REG(hw, IMC, ~0);
}
adapter->total_tx_bytes = 0; adapter->total_tx_bytes = 0;
adapter->total_rx_bytes = 0; adapter->total_rx_bytes = 0;
...@@ -4038,7 +4023,7 @@ e1000_clean(struct napi_struct *napi, int budget) ...@@ -4038,7 +4023,7 @@ e1000_clean(struct napi_struct *napi, int budget)
* @adapter: board private structure * @adapter: board private structure
**/ **/
static boolean_t static bool
e1000_clean_tx_irq(struct e1000_adapter *adapter, e1000_clean_tx_irq(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring) struct e1000_tx_ring *tx_ring)
{ {
...@@ -4049,7 +4034,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter, ...@@ -4049,7 +4034,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
unsigned int count = 0; unsigned int count = 0;
#endif #endif
boolean_t cleaned = FALSE; bool cleaned = false;
unsigned int total_tx_bytes=0, total_tx_packets=0; unsigned int total_tx_bytes=0, total_tx_packets=0;
i = tx_ring->next_to_clean; i = tx_ring->next_to_clean;
...@@ -4057,7 +4042,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter, ...@@ -4057,7 +4042,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
eop_desc = E1000_TX_DESC(*tx_ring, eop); eop_desc = E1000_TX_DESC(*tx_ring, eop);
while (eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) { while (eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) {
for (cleaned = FALSE; !cleaned; ) { for (cleaned = false; !cleaned; ) {
tx_desc = E1000_TX_DESC(*tx_ring, i); tx_desc = E1000_TX_DESC(*tx_ring, i);
buffer_info = &tx_ring->buffer_info[i]; buffer_info = &tx_ring->buffer_info[i];
cleaned = (i == eop); cleaned = (i == eop);
...@@ -4105,7 +4090,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter, ...@@ -4105,7 +4090,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
if (adapter->detect_tx_hung) { if (adapter->detect_tx_hung) {
/* Detect a transmit hang in hardware, this serializes the /* Detect a transmit hang in hardware, this serializes the
* check with the clearing of time_stamp and movement of i */ * check with the clearing of time_stamp and movement of i */
adapter->detect_tx_hung = FALSE; adapter->detect_tx_hung = false;
if (tx_ring->buffer_info[eop].dma && if (tx_ring->buffer_info[eop].dma &&
time_after(jiffies, tx_ring->buffer_info[eop].time_stamp + time_after(jiffies, tx_ring->buffer_info[eop].time_stamp +
(adapter->tx_timeout_factor * HZ)) (adapter->tx_timeout_factor * HZ))
...@@ -4200,7 +4185,7 @@ e1000_rx_checksum(struct e1000_adapter *adapter, ...@@ -4200,7 +4185,7 @@ e1000_rx_checksum(struct e1000_adapter *adapter,
* @adapter: board private structure * @adapter: board private structure
**/ **/
static boolean_t static bool
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
e1000_clean_rx_irq(struct e1000_adapter *adapter, e1000_clean_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
...@@ -4219,7 +4204,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter, ...@@ -4219,7 +4204,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
uint8_t last_byte; uint8_t last_byte;
unsigned int i; unsigned int i;
int cleaned_count = 0; int cleaned_count = 0;
boolean_t cleaned = FALSE; bool cleaned = false;
unsigned int total_rx_bytes=0, total_rx_packets=0; unsigned int total_rx_bytes=0, total_rx_packets=0;
i = rx_ring->next_to_clean; i = rx_ring->next_to_clean;
...@@ -4247,7 +4232,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter, ...@@ -4247,7 +4232,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
next_buffer = &rx_ring->buffer_info[i]; next_buffer = &rx_ring->buffer_info[i];
cleaned = TRUE; cleaned = true;
cleaned_count++; cleaned_count++;
pci_unmap_single(pdev, pci_unmap_single(pdev,
buffer_info->dma, buffer_info->dma,
...@@ -4373,7 +4358,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter, ...@@ -4373,7 +4358,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
* @adapter: board private structure * @adapter: board private structure
**/ **/
static boolean_t static bool
#ifdef CONFIG_E1000_NAPI #ifdef CONFIG_E1000_NAPI
e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, struct e1000_rx_ring *rx_ring,
...@@ -4393,7 +4378,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, ...@@ -4393,7 +4378,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
unsigned int i, j; unsigned int i, j;
uint32_t length, staterr; uint32_t length, staterr;
int cleaned_count = 0; int cleaned_count = 0;
boolean_t cleaned = FALSE; bool cleaned = false;
unsigned int total_rx_bytes=0, total_rx_packets=0; unsigned int total_rx_bytes=0, total_rx_packets=0;
i = rx_ring->next_to_clean; i = rx_ring->next_to_clean;
...@@ -4420,7 +4405,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, ...@@ -4420,7 +4405,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
next_buffer = &rx_ring->buffer_info[i]; next_buffer = &rx_ring->buffer_info[i];
cleaned = TRUE; cleaned = true;
cleaned_count++; cleaned_count++;
pci_unmap_single(pdev, buffer_info->dma, pci_unmap_single(pdev, buffer_info->dma,
buffer_info->length, buffer_info->length,
...@@ -5001,7 +4986,8 @@ e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp) ...@@ -5001,7 +4986,8 @@ e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp)
struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_adapter *adapter = netdev_priv(netdev);
uint32_t ctrl, rctl; uint32_t ctrl, rctl;
e1000_irq_disable(adapter); if (!test_bit(__E1000_DOWN, &adapter->flags))
e1000_irq_disable(adapter);
adapter->vlgrp = grp; adapter->vlgrp = grp;
if (grp) { if (grp) {
...@@ -5038,7 +5024,8 @@ e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp) ...@@ -5038,7 +5024,8 @@ e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp)
} }
} }
e1000_irq_enable(adapter); if (!test_bit(__E1000_DOWN, &adapter->flags))
e1000_irq_enable(adapter);
} }
static void static void
...@@ -5064,9 +5051,11 @@ e1000_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid) ...@@ -5064,9 +5051,11 @@ e1000_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid)
struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_adapter *adapter = netdev_priv(netdev);
uint32_t vfta, index; uint32_t vfta, index;
e1000_irq_disable(adapter); if (!test_bit(__E1000_DOWN, &adapter->flags))
e1000_irq_disable(adapter);
vlan_group_set_device(adapter->vlgrp, vid, NULL); vlan_group_set_device(adapter->vlgrp, vid, NULL);
e1000_irq_enable(adapter); if (!test_bit(__E1000_DOWN, &adapter->flags))
e1000_irq_enable(adapter);
if ((adapter->hw.mng_cookie.status & if ((adapter->hw.mng_cookie.status &
E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT) && E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT) &&
......
...@@ -41,13 +41,6 @@ ...@@ -41,13 +41,6 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/sched.h> #include <linux/sched.h>
typedef enum {
#undef FALSE
FALSE = 0,
#undef TRUE
TRUE = 1
} boolean_t;
#ifdef DBG #ifdef DBG
#define DEBUGOUT(S) printk(KERN_DEBUG S "\n") #define DEBUGOUT(S) printk(KERN_DEBUG S "\n")
#define DEBUGOUT1(S, A...) printk(KERN_DEBUG S "\n", A) #define DEBUGOUT1(S, A...) printk(KERN_DEBUG S "\n", A)
......
...@@ -167,9 +167,6 @@ struct e1000_adapter { ...@@ -167,9 +167,6 @@ struct e1000_adapter {
spinlock_t tx_queue_lock; /* prevent concurrent tail updates */ spinlock_t tx_queue_lock; /* prevent concurrent tail updates */
/* this is still needed for 82571 and above */
atomic_t irq_sem;
/* track device up/down/testing state */ /* track device up/down/testing state */
unsigned long state; unsigned long state;
...@@ -462,7 +459,6 @@ extern s32 e1000e_acquire_nvm(struct e1000_hw *hw); ...@@ -462,7 +459,6 @@ extern s32 e1000e_acquire_nvm(struct e1000_hw *hw);
extern s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data); extern s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
extern s32 e1000e_update_nvm_checksum_generic(struct e1000_hw *hw); extern s32 e1000e_update_nvm_checksum_generic(struct e1000_hw *hw);
extern s32 e1000e_poll_eerd_eewr_done(struct e1000_hw *hw, int ee_reg); extern s32 e1000e_poll_eerd_eewr_done(struct e1000_hw *hw, int ee_reg);
extern s32 e1000e_read_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
extern s32 e1000e_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data); extern s32 e1000e_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
extern s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw); extern s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw);
extern void e1000e_release_nvm(struct e1000_hw *hw); extern void e1000e_release_nvm(struct e1000_hw *hw);
......
...@@ -1851,62 +1851,6 @@ static s32 e1000_ready_nvm_eeprom(struct e1000_hw *hw) ...@@ -1851,62 +1851,6 @@ static s32 e1000_ready_nvm_eeprom(struct e1000_hw *hw)
return 0; return 0;
} }
/**
* e1000e_read_nvm_spi - Reads EEPROM using SPI
* @hw: pointer to the HW structure
* @offset: offset of word in the EEPROM to read
* @words: number of words to read
* @data: word read from the EEPROM
*
* Reads a 16 bit word from the EEPROM.
**/
s32 e1000e_read_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
{
struct e1000_nvm_info *nvm = &hw->nvm;
u32 i = 0;
s32 ret_val;
u16 word_in;
u8 read_opcode = NVM_READ_OPCODE_SPI;
/* A check for invalid values: offset too large, too many words,
* and not enough words. */
if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) ||
(words == 0)) {
hw_dbg(hw, "nvm parameter(s) out of bounds\n");
return -E1000_ERR_NVM;
}
ret_val = nvm->ops.acquire_nvm(hw);
if (ret_val)
return ret_val;
ret_val = e1000_ready_nvm_eeprom(hw);
if (ret_val) {
nvm->ops.release_nvm(hw);
return ret_val;
}
e1000_standby_nvm(hw);
if ((nvm->address_bits == 8) && (offset >= 128))
read_opcode |= NVM_A8_OPCODE_SPI;
/* Send the READ command (opcode + addr) */
e1000_shift_out_eec_bits(hw, read_opcode, nvm->opcode_bits);
e1000_shift_out_eec_bits(hw, (u16)(offset*2), nvm->address_bits);
/* Read the data. SPI NVMs increment the address with each byte
* read and will roll over if reading beyond the end. This allows
* us to read the whole NVM from any offset */
for (i = 0; i < words; i++) {
word_in = e1000_shift_in_eec_bits(hw, 16);
data[i] = (word_in >> 8) | (word_in << 8);
}
nvm->ops.release_nvm(hw);
return 0;
}
/** /**
* e1000e_read_nvm_eerd - Reads EEPROM using EERD register * e1000e_read_nvm_eerd - Reads EEPROM using EERD register
* @hw: pointer to the HW structure * @hw: pointer to the HW structure
......
...@@ -836,9 +836,7 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) ...@@ -836,9 +836,7 @@ static irqreturn_t e1000_intr_msi(int irq, void *data)
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
u32 icr = er32(ICR); u32 icr = er32(ICR);
/* read ICR disables interrupts using IAM, so keep up with our /* read ICR disables interrupts using IAM */
* enable/disable accounting */
atomic_inc(&adapter->irq_sem);
if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
hw->mac.get_link_status = 1; hw->mac.get_link_status = 1;
...@@ -868,8 +866,6 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) ...@@ -868,8 +866,6 @@ static irqreturn_t e1000_intr_msi(int irq, void *data)
adapter->total_rx_bytes = 0; adapter->total_rx_bytes = 0;
adapter->total_rx_packets = 0; adapter->total_rx_packets = 0;
__netif_rx_schedule(netdev, &adapter->napi); __netif_rx_schedule(netdev, &adapter->napi);
} else {
atomic_dec(&adapter->irq_sem);
} }
return IRQ_HANDLED; return IRQ_HANDLED;
...@@ -895,11 +891,8 @@ static irqreturn_t e1000_intr(int irq, void *data) ...@@ -895,11 +891,8 @@ static irqreturn_t e1000_intr(int irq, void *data)
if (!(icr & E1000_ICR_INT_ASSERTED)) if (!(icr & E1000_ICR_INT_ASSERTED))
return IRQ_NONE; return IRQ_NONE;
/* Interrupt Auto-Mask...upon reading ICR, /* Interrupt Auto-Mask...upon reading ICR, interrupts are masked. No
* interrupts are masked. No need for the * need for the IMC write */
* IMC write, but it does mean we should
* account for it ASAP. */
atomic_inc(&adapter->irq_sem);
if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
hw->mac.get_link_status = 1; hw->mac.get_link_status = 1;
...@@ -931,8 +924,6 @@ static irqreturn_t e1000_intr(int irq, void *data) ...@@ -931,8 +924,6 @@ static irqreturn_t e1000_intr(int irq, void *data)
adapter->total_rx_bytes = 0; adapter->total_rx_bytes = 0;
adapter->total_rx_packets = 0; adapter->total_rx_packets = 0;
__netif_rx_schedule(netdev, &adapter->napi); __netif_rx_schedule(netdev, &adapter->napi);
} else {
atomic_dec(&adapter->irq_sem);
} }
return IRQ_HANDLED; return IRQ_HANDLED;
...@@ -983,7 +974,6 @@ static void e1000_irq_disable(struct e1000_adapter *adapter) ...@@ -983,7 +974,6 @@ static void e1000_irq_disable(struct e1000_adapter *adapter)
{ {
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
atomic_inc(&adapter->irq_sem);
ew32(IMC, ~0); ew32(IMC, ~0);
e1e_flush(); e1e_flush();
synchronize_irq(adapter->pdev->irq); synchronize_irq(adapter->pdev->irq);
...@@ -996,10 +986,8 @@ static void e1000_irq_enable(struct e1000_adapter *adapter) ...@@ -996,10 +986,8 @@ static void e1000_irq_enable(struct e1000_adapter *adapter)
{ {
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
if (atomic_dec_and_test(&adapter->irq_sem)) { ew32(IMS, IMS_ENABLE_MASK);
ew32(IMS, IMS_ENABLE_MASK); e1e_flush();
e1e_flush();
}
} }
/** /**
...@@ -1427,9 +1415,12 @@ static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) ...@@ -1427,9 +1415,12 @@ static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
u32 vfta, index; u32 vfta, index;
e1000_irq_disable(adapter); if (!test_bit(__E1000_DOWN, &adapter->state))
e1000_irq_disable(adapter);
vlan_group_set_device(adapter->vlgrp, vid, NULL); vlan_group_set_device(adapter->vlgrp, vid, NULL);
e1000_irq_enable(adapter);
if (!test_bit(__E1000_DOWN, &adapter->state))
e1000_irq_enable(adapter);
if ((adapter->hw.mng_cookie.status & if ((adapter->hw.mng_cookie.status &
E1000_MNG_DHCP_COOKIE_STATUS_VLAN) && E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
...@@ -1480,7 +1471,8 @@ static void e1000_vlan_rx_register(struct net_device *netdev, ...@@ -1480,7 +1471,8 @@ static void e1000_vlan_rx_register(struct net_device *netdev,
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
u32 ctrl, rctl; u32 ctrl, rctl;
e1000_irq_disable(adapter); if (!test_bit(__E1000_DOWN, &adapter->state))
e1000_irq_disable(adapter);
adapter->vlgrp = grp; adapter->vlgrp = grp;
if (grp) { if (grp) {
...@@ -1517,7 +1509,8 @@ static void e1000_vlan_rx_register(struct net_device *netdev, ...@@ -1517,7 +1509,8 @@ static void e1000_vlan_rx_register(struct net_device *netdev,
} }
} }
e1000_irq_enable(adapter); if (!test_bit(__E1000_DOWN, &adapter->state))
e1000_irq_enable(adapter);
} }
static void e1000_restore_vlan(struct e1000_adapter *adapter) static void e1000_restore_vlan(struct e1000_adapter *adapter)
...@@ -2167,7 +2160,6 @@ void e1000e_down(struct e1000_adapter *adapter) ...@@ -2167,7 +2160,6 @@ void e1000e_down(struct e1000_adapter *adapter)
msleep(10); msleep(10);
napi_disable(&adapter->napi); napi_disable(&adapter->napi);
atomic_set(&adapter->irq_sem, 0);
e1000_irq_disable(adapter); e1000_irq_disable(adapter);
del_timer_sync(&adapter->watchdog_timer); del_timer_sync(&adapter->watchdog_timer);
...@@ -2227,7 +2219,6 @@ static int __devinit e1000_sw_init(struct e1000_adapter *adapter) ...@@ -2227,7 +2219,6 @@ static int __devinit e1000_sw_init(struct e1000_adapter *adapter)
spin_lock_init(&adapter->tx_queue_lock); spin_lock_init(&adapter->tx_queue_lock);
/* Explicitly disable IRQ since the NIC can be in any state. */ /* Explicitly disable IRQ since the NIC can be in any state. */
atomic_set(&adapter->irq_sem, 0);
e1000_irq_disable(adapter); e1000_irq_disable(adapter);
spin_lock_init(&adapter->stats_lock); spin_lock_init(&adapter->stats_lock);
......
...@@ -3859,7 +3859,8 @@ static void nv_do_stats_poll(unsigned long data) ...@@ -3859,7 +3859,8 @@ static void nv_do_stats_poll(unsigned long data)
nv_get_hw_stats(dev); nv_get_hw_stats(dev);
if (!np->in_shutdown) if (!np->in_shutdown)
mod_timer(&np->stats_poll, jiffies + STATS_INTERVAL); mod_timer(&np->stats_poll,
round_jiffies(jiffies + STATS_INTERVAL));
} }
static void nv_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) static void nv_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
...@@ -5063,7 +5064,8 @@ static int nv_open(struct net_device *dev) ...@@ -5063,7 +5064,8 @@ static int nv_open(struct net_device *dev)
/* start statistics timer */ /* start statistics timer */
if (np->driver_data & (DEV_HAS_STATISTICS_V1|DEV_HAS_STATISTICS_V2)) if (np->driver_data & (DEV_HAS_STATISTICS_V1|DEV_HAS_STATISTICS_V2))
mod_timer(&np->stats_poll, jiffies + STATS_INTERVAL); mod_timer(&np->stats_poll,
round_jiffies(jiffies + STATS_INTERVAL));
spin_unlock_irq(&np->lock); spin_unlock_irq(&np->lock);
......
...@@ -1185,7 +1185,7 @@ static int gfar_change_mtu(struct net_device *dev, int new_mtu) ...@@ -1185,7 +1185,7 @@ static int gfar_change_mtu(struct net_device *dev, int new_mtu)
int frame_size = new_mtu + ETH_HLEN; int frame_size = new_mtu + ETH_HLEN;
if (priv->vlan_enable) if (priv->vlan_enable)
frame_size += VLAN_ETH_HLEN; frame_size += VLAN_HLEN;
if (gfar_uses_fcb(priv)) if (gfar_uses_fcb(priv))
frame_size += GMAC_FCB_LEN; frame_size += GMAC_FCB_LEN;
...@@ -1299,11 +1299,11 @@ static irqreturn_t gfar_transmit(int irq, void *dev_id) ...@@ -1299,11 +1299,11 @@ static irqreturn_t gfar_transmit(int irq, void *dev_id)
/* If we are coalescing the interrupts, reset the timer */ /* If we are coalescing the interrupts, reset the timer */
/* Otherwise, clear it */ /* Otherwise, clear it */
if (priv->txcoalescing) if (likely(priv->txcoalescing)) {
gfar_write(&priv->regs->txic, 0);
gfar_write(&priv->regs->txic, gfar_write(&priv->regs->txic,
mk_ic_value(priv->txcount, priv->txtime)); mk_ic_value(priv->txcount, priv->txtime));
else }
gfar_write(&priv->regs->txic, 0);
spin_unlock(&priv->txlock); spin_unlock(&priv->txlock);
...@@ -1417,11 +1417,11 @@ irqreturn_t gfar_receive(int irq, void *dev_id) ...@@ -1417,11 +1417,11 @@ irqreturn_t gfar_receive(int irq, void *dev_id)
/* If we are coalescing interrupts, update the timer */ /* If we are coalescing interrupts, update the timer */
/* Otherwise, clear it */ /* Otherwise, clear it */
if (priv->rxcoalescing) if (likely(priv->rxcoalescing)) {
gfar_write(&priv->regs->rxic, 0);
gfar_write(&priv->regs->rxic, gfar_write(&priv->regs->rxic,
mk_ic_value(priv->rxcount, priv->rxtime)); mk_ic_value(priv->rxcount, priv->rxtime));
else }
gfar_write(&priv->regs->rxic, 0);
spin_unlock_irqrestore(&priv->rxlock, flags); spin_unlock_irqrestore(&priv->rxlock, flags);
#endif #endif
...@@ -1526,9 +1526,7 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit) ...@@ -1526,9 +1526,7 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)
rmb(); rmb();
skb = priv->rx_skbuff[priv->skb_currx]; skb = priv->rx_skbuff[priv->skb_currx];
if (!(bdp->status & if ((bdp->status & RXBD_LAST) && !(bdp->status & RXBD_ERR)) {
(RXBD_LARGE | RXBD_SHORT | RXBD_NONOCTET
| RXBD_CRCERR | RXBD_OVERRUN | RXBD_TRUNCATED))) {
/* Increment the number of packets */ /* Increment the number of packets */
dev->stats.rx_packets++; dev->stats.rx_packets++;
howmany++; howmany++;
...@@ -1595,11 +1593,11 @@ static int gfar_poll(struct napi_struct *napi, int budget) ...@@ -1595,11 +1593,11 @@ static int gfar_poll(struct napi_struct *napi, int budget)
/* If we are coalescing interrupts, update the timer */ /* If we are coalescing interrupts, update the timer */
/* Otherwise, clear it */ /* Otherwise, clear it */
if (priv->rxcoalescing) if (likely(priv->rxcoalescing)) {
gfar_write(&priv->regs->rxic, 0);
gfar_write(&priv->regs->rxic, gfar_write(&priv->regs->rxic,
mk_ic_value(priv->rxcount, priv->rxtime)); mk_ic_value(priv->rxcount, priv->rxtime));
else }
gfar_write(&priv->regs->rxic, 0);
} }
return howmany; return howmany;
......
...@@ -102,7 +102,7 @@ extern const char gfar_driver_version[]; ...@@ -102,7 +102,7 @@ extern const char gfar_driver_version[];
#define DEFAULT_FIFO_TX_STARVE 0x40 #define DEFAULT_FIFO_TX_STARVE 0x40
#define DEFAULT_FIFO_TX_STARVE_OFF 0x80 #define DEFAULT_FIFO_TX_STARVE_OFF 0x80
#define DEFAULT_BD_STASH 1 #define DEFAULT_BD_STASH 1
#define DEFAULT_STASH_LENGTH 64 #define DEFAULT_STASH_LENGTH 96
#define DEFAULT_STASH_INDEX 0 #define DEFAULT_STASH_INDEX 0
/* The number of Exact Match registers */ /* The number of Exact Match registers */
...@@ -124,11 +124,11 @@ extern const char gfar_driver_version[]; ...@@ -124,11 +124,11 @@ extern const char gfar_driver_version[];
#define DEFAULT_TX_COALESCE 1 #define DEFAULT_TX_COALESCE 1
#define DEFAULT_TXCOUNT 16 #define DEFAULT_TXCOUNT 16
#define DEFAULT_TXTIME 4 #define DEFAULT_TXTIME 21
#define DEFAULT_RX_COALESCE 1 #define DEFAULT_RX_COALESCE 1
#define DEFAULT_RXCOUNT 16 #define DEFAULT_RXCOUNT 16
#define DEFAULT_RXTIME 4 #define DEFAULT_RXTIME 21
#define TBIPA_VALUE 0x1f #define TBIPA_VALUE 0x1f
#define MIIMCFG_INIT_VALUE 0x00000007 #define MIIMCFG_INIT_VALUE 0x00000007
...@@ -340,6 +340,9 @@ extern const char gfar_driver_version[]; ...@@ -340,6 +340,9 @@ extern const char gfar_driver_version[];
#define RXBD_OVERRUN 0x0002 #define RXBD_OVERRUN 0x0002
#define RXBD_TRUNCATED 0x0001 #define RXBD_TRUNCATED 0x0001
#define RXBD_STATS 0x01ff #define RXBD_STATS 0x01ff
#define RXBD_ERR (RXBD_LARGE | RXBD_SHORT | RXBD_NONOCTET \
| RXBD_CRCERR | RXBD_OVERRUN \
| RXBD_TRUNCATED)
/* Rx FCB status field bits */ /* Rx FCB status field bits */
#define RXFCB_VLN 0x8000 #define RXFCB_VLN 0x8000
......
...@@ -1259,26 +1259,7 @@ static void ibmveth_proc_unregister_driver(void) ...@@ -1259,26 +1259,7 @@ static void ibmveth_proc_unregister_driver(void)
remove_proc_entry(IBMVETH_PROC_DIR, init_net.proc_net); remove_proc_entry(IBMVETH_PROC_DIR, init_net.proc_net);
} }
static void *ibmveth_seq_start(struct seq_file *seq, loff_t *pos) static int ibmveth_show(struct seq_file *seq, void *v)
{
if (*pos == 0) {
return (void *)1;
} else {
return NULL;
}
}
static void *ibmveth_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{
++*pos;
return NULL;
}
static void ibmveth_seq_stop(struct seq_file *seq, void *v)
{
}
static int ibmveth_seq_show(struct seq_file *seq, void *v)
{ {
struct ibmveth_adapter *adapter = seq->private; struct ibmveth_adapter *adapter = seq->private;
char *current_mac = ((char*) &adapter->netdev->dev_addr); char *current_mac = ((char*) &adapter->netdev->dev_addr);
...@@ -1302,27 +1283,10 @@ static int ibmveth_seq_show(struct seq_file *seq, void *v) ...@@ -1302,27 +1283,10 @@ static int ibmveth_seq_show(struct seq_file *seq, void *v)
return 0; return 0;
} }
static struct seq_operations ibmveth_seq_ops = {
.start = ibmveth_seq_start,
.next = ibmveth_seq_next,
.stop = ibmveth_seq_stop,
.show = ibmveth_seq_show,
};
static int ibmveth_proc_open(struct inode *inode, struct file *file) static int ibmveth_proc_open(struct inode *inode, struct file *file)
{ {
struct seq_file *seq; return single_open(file, ibmveth_show, PDE(inode)->data);
struct proc_dir_entry *proc;
int rc;
rc = seq_open(file, &ibmveth_seq_ops);
if (!rc) {
/* recover the pointer buried in proc_dir_entry data */
seq = file->private_data;
proc = PDE(inode);
seq->private = proc->data;
}
return rc;
} }
static const struct file_operations ibmveth_proc_fops = { static const struct file_operations ibmveth_proc_fops = {
...@@ -1330,7 +1294,7 @@ static const struct file_operations ibmveth_proc_fops = { ...@@ -1330,7 +1294,7 @@ static const struct file_operations ibmveth_proc_fops = {
.open = ibmveth_proc_open, .open = ibmveth_proc_open,
.read = seq_read, .read = seq_read,
.llseek = seq_lseek, .llseek = seq_lseek,
.release = seq_release, .release = single_release,
}; };
static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter) static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter)
......
...@@ -158,7 +158,6 @@ struct ixgb_adapter { ...@@ -158,7 +158,6 @@ struct ixgb_adapter {
uint16_t link_speed; uint16_t link_speed;
uint16_t link_duplex; uint16_t link_duplex;
spinlock_t tx_lock; spinlock_t tx_lock;
atomic_t irq_sem;
struct work_struct tx_timeout_task; struct work_struct tx_timeout_task;
struct timer_list blink_timer; struct timer_list blink_timer;
...@@ -173,15 +172,15 @@ struct ixgb_adapter { ...@@ -173,15 +172,15 @@ struct ixgb_adapter {
uint64_t hw_csum_tx_error; uint64_t hw_csum_tx_error;
uint32_t tx_int_delay; uint32_t tx_int_delay;
uint32_t tx_timeout_count; uint32_t tx_timeout_count;
boolean_t tx_int_delay_enable; bool tx_int_delay_enable;
boolean_t detect_tx_hung; bool detect_tx_hung;
/* RX */ /* RX */
struct ixgb_desc_ring rx_ring; struct ixgb_desc_ring rx_ring;
uint64_t hw_csum_rx_error; uint64_t hw_csum_rx_error;
uint64_t hw_csum_rx_good; uint64_t hw_csum_rx_good;
uint32_t rx_int_delay; uint32_t rx_int_delay;
boolean_t rx_csum; bool rx_csum;
/* OS defined structs */ /* OS defined structs */
struct napi_struct napi; struct napi_struct napi;
...@@ -194,7 +193,16 @@ struct ixgb_adapter { ...@@ -194,7 +193,16 @@ struct ixgb_adapter {
u16 msg_enable; u16 msg_enable;
struct ixgb_hw_stats stats; struct ixgb_hw_stats stats;
uint32_t alloc_rx_buff_failed; uint32_t alloc_rx_buff_failed;
boolean_t have_msi; bool have_msi;
unsigned long flags;
};
enum ixgb_state_t {
/* TBD
__IXGB_TESTING,
__IXGB_RESETTING,
*/
__IXGB_DOWN
}; };
/* Exported from other modules */ /* Exported from other modules */
...@@ -203,4 +211,14 @@ extern void ixgb_set_ethtool_ops(struct net_device *netdev); ...@@ -203,4 +211,14 @@ extern void ixgb_set_ethtool_ops(struct net_device *netdev);
extern char ixgb_driver_name[]; extern char ixgb_driver_name[];
extern const char ixgb_driver_version[]; extern const char ixgb_driver_version[];
extern int ixgb_up(struct ixgb_adapter *adapter);
extern void ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog);
extern void ixgb_reset(struct ixgb_adapter *adapter);
extern int ixgb_setup_rx_resources(struct ixgb_adapter *adapter);
extern int ixgb_setup_tx_resources(struct ixgb_adapter *adapter);
extern void ixgb_free_rx_resources(struct ixgb_adapter *adapter);
extern void ixgb_free_tx_resources(struct ixgb_adapter *adapter);
extern void ixgb_update_stats(struct ixgb_adapter *adapter);
#endif /* _IXGB_H_ */ #endif /* _IXGB_H_ */
...@@ -36,7 +36,7 @@ static void ixgb_shift_out_bits(struct ixgb_hw *hw, ...@@ -36,7 +36,7 @@ static void ixgb_shift_out_bits(struct ixgb_hw *hw,
uint16_t count); uint16_t count);
static void ixgb_standby_eeprom(struct ixgb_hw *hw); static void ixgb_standby_eeprom(struct ixgb_hw *hw);
static boolean_t ixgb_wait_eeprom_command(struct ixgb_hw *hw); static bool ixgb_wait_eeprom_command(struct ixgb_hw *hw);
static void ixgb_cleanup_eeprom(struct ixgb_hw *hw); static void ixgb_cleanup_eeprom(struct ixgb_hw *hw);
...@@ -279,10 +279,10 @@ ixgb_cleanup_eeprom(struct ixgb_hw *hw) ...@@ -279,10 +279,10 @@ ixgb_cleanup_eeprom(struct ixgb_hw *hw)
* The command is done when the EEPROM's data out pin goes high. * The command is done when the EEPROM's data out pin goes high.
* *
* Returns: * Returns:
* TRUE: EEPROM data pin is high before timeout. * true: EEPROM data pin is high before timeout.
* FALSE: Time expired. * false: Time expired.
*****************************************************************************/ *****************************************************************************/
static boolean_t static bool
ixgb_wait_eeprom_command(struct ixgb_hw *hw) ixgb_wait_eeprom_command(struct ixgb_hw *hw)
{ {
uint32_t eecd_reg; uint32_t eecd_reg;
...@@ -301,12 +301,12 @@ ixgb_wait_eeprom_command(struct ixgb_hw *hw) ...@@ -301,12 +301,12 @@ ixgb_wait_eeprom_command(struct ixgb_hw *hw)
eecd_reg = IXGB_READ_REG(hw, EECD); eecd_reg = IXGB_READ_REG(hw, EECD);
if(eecd_reg & IXGB_EECD_DO) if(eecd_reg & IXGB_EECD_DO)
return (TRUE); return (true);
udelay(50); udelay(50);
} }
ASSERT(0); ASSERT(0);
return (FALSE); return (false);
} }
/****************************************************************************** /******************************************************************************
...@@ -319,10 +319,10 @@ ixgb_wait_eeprom_command(struct ixgb_hw *hw) ...@@ -319,10 +319,10 @@ ixgb_wait_eeprom_command(struct ixgb_hw *hw)
* valid. * valid.
* *
* Returns: * Returns:
* TRUE: Checksum is valid * true: Checksum is valid
* FALSE: Checksum is not valid. * false: Checksum is not valid.
*****************************************************************************/ *****************************************************************************/
boolean_t bool
ixgb_validate_eeprom_checksum(struct ixgb_hw *hw) ixgb_validate_eeprom_checksum(struct ixgb_hw *hw)
{ {
uint16_t checksum = 0; uint16_t checksum = 0;
...@@ -332,9 +332,9 @@ ixgb_validate_eeprom_checksum(struct ixgb_hw *hw) ...@@ -332,9 +332,9 @@ ixgb_validate_eeprom_checksum(struct ixgb_hw *hw)
checksum += ixgb_read_eeprom(hw, i); checksum += ixgb_read_eeprom(hw, i);
if(checksum == (uint16_t) EEPROM_SUM) if(checksum == (uint16_t) EEPROM_SUM)
return (TRUE); return (true);
else else
return (FALSE); return (false);
} }
/****************************************************************************** /******************************************************************************
...@@ -457,10 +457,10 @@ ixgb_read_eeprom(struct ixgb_hw *hw, ...@@ -457,10 +457,10 @@ ixgb_read_eeprom(struct ixgb_hw *hw,
* hw - Struct containing variables accessed by shared code * hw - Struct containing variables accessed by shared code
* *
* Returns: * Returns:
* TRUE: if eeprom read is successful * true: if eeprom read is successful
* FALSE: otherwise. * false: otherwise.
*****************************************************************************/ *****************************************************************************/
boolean_t bool
ixgb_get_eeprom_data(struct ixgb_hw *hw) ixgb_get_eeprom_data(struct ixgb_hw *hw)
{ {
uint16_t i; uint16_t i;
...@@ -484,16 +484,16 @@ ixgb_get_eeprom_data(struct ixgb_hw *hw) ...@@ -484,16 +484,16 @@ ixgb_get_eeprom_data(struct ixgb_hw *hw)
/* clear the init_ctrl_reg_1 to signify that the cache is /* clear the init_ctrl_reg_1 to signify that the cache is
* invalidated */ * invalidated */
ee_map->init_ctrl_reg_1 = cpu_to_le16(EEPROM_ICW1_SIGNATURE_CLEAR); ee_map->init_ctrl_reg_1 = cpu_to_le16(EEPROM_ICW1_SIGNATURE_CLEAR);
return (FALSE); return (false);
} }
if ((ee_map->init_ctrl_reg_1 & cpu_to_le16(EEPROM_ICW1_SIGNATURE_MASK)) if ((ee_map->init_ctrl_reg_1 & cpu_to_le16(EEPROM_ICW1_SIGNATURE_MASK))
!= cpu_to_le16(EEPROM_ICW1_SIGNATURE_VALID)) { != cpu_to_le16(EEPROM_ICW1_SIGNATURE_VALID)) {
DEBUGOUT("ixgb_ee: Signature invalid.\n"); DEBUGOUT("ixgb_ee: Signature invalid.\n");
return(FALSE); return(false);
} }
return(TRUE); return(true);
} }
/****************************************************************************** /******************************************************************************
...@@ -503,17 +503,17 @@ ixgb_get_eeprom_data(struct ixgb_hw *hw) ...@@ -503,17 +503,17 @@ ixgb_get_eeprom_data(struct ixgb_hw *hw)
* hw - Struct containing variables accessed by shared code * hw - Struct containing variables accessed by shared code
* *
* Returns: * Returns:
* TRUE: eeprom signature was good and the eeprom read was successful * true: eeprom signature was good and the eeprom read was successful
* FALSE: otherwise. * false: otherwise.
******************************************************************************/ ******************************************************************************/
static boolean_t static bool
ixgb_check_and_get_eeprom_data (struct ixgb_hw* hw) ixgb_check_and_get_eeprom_data (struct ixgb_hw* hw)
{ {
struct ixgb_ee_map_type *ee_map = (struct ixgb_ee_map_type *)hw->eeprom; struct ixgb_ee_map_type *ee_map = (struct ixgb_ee_map_type *)hw->eeprom;
if ((ee_map->init_ctrl_reg_1 & cpu_to_le16(EEPROM_ICW1_SIGNATURE_MASK)) if ((ee_map->init_ctrl_reg_1 & cpu_to_le16(EEPROM_ICW1_SIGNATURE_MASK))
== cpu_to_le16(EEPROM_ICW1_SIGNATURE_VALID)) { == cpu_to_le16(EEPROM_ICW1_SIGNATURE_VALID)) {
return (TRUE); return (true);
} else { } else {
return ixgb_get_eeprom_data(hw); return ixgb_get_eeprom_data(hw);
} }
...@@ -533,7 +533,7 @@ ixgb_get_eeprom_word(struct ixgb_hw *hw, uint16_t index) ...@@ -533,7 +533,7 @@ ixgb_get_eeprom_word(struct ixgb_hw *hw, uint16_t index)
{ {
if ((index < IXGB_EEPROM_SIZE) && if ((index < IXGB_EEPROM_SIZE) &&
(ixgb_check_and_get_eeprom_data(hw) == TRUE)) { (ixgb_check_and_get_eeprom_data(hw) == true)) {
return(hw->eeprom[index]); return(hw->eeprom[index]);
} }
...@@ -557,7 +557,7 @@ ixgb_get_ee_mac_addr(struct ixgb_hw *hw, ...@@ -557,7 +557,7 @@ ixgb_get_ee_mac_addr(struct ixgb_hw *hw,
DEBUGFUNC("ixgb_get_ee_mac_addr"); DEBUGFUNC("ixgb_get_ee_mac_addr");
if (ixgb_check_and_get_eeprom_data(hw) == TRUE) { if (ixgb_check_and_get_eeprom_data(hw) == true) {
for (i = 0; i < IXGB_ETH_LENGTH_OF_ADDRESS; i++) { for (i = 0; i < IXGB_ETH_LENGTH_OF_ADDRESS; i++) {
mac_addr[i] = ee_map->mac_addr[i]; mac_addr[i] = ee_map->mac_addr[i];
DEBUGOUT2("mac(%d) = %.2X\n", i, mac_addr[i]); DEBUGOUT2("mac(%d) = %.2X\n", i, mac_addr[i]);
...@@ -577,7 +577,7 @@ ixgb_get_ee_mac_addr(struct ixgb_hw *hw, ...@@ -577,7 +577,7 @@ ixgb_get_ee_mac_addr(struct ixgb_hw *hw,
uint32_t uint32_t
ixgb_get_ee_pba_number(struct ixgb_hw *hw) ixgb_get_ee_pba_number(struct ixgb_hw *hw)
{ {
if(ixgb_check_and_get_eeprom_data(hw) == TRUE) if (ixgb_check_and_get_eeprom_data(hw) == true)
return (le16_to_cpu(hw->eeprom[EEPROM_PBA_1_2_REG]) return (le16_to_cpu(hw->eeprom[EEPROM_PBA_1_2_REG])
| (le16_to_cpu(hw->eeprom[EEPROM_PBA_3_4_REG])<<16)); | (le16_to_cpu(hw->eeprom[EEPROM_PBA_3_4_REG])<<16));
...@@ -598,7 +598,7 @@ ixgb_get_ee_device_id(struct ixgb_hw *hw) ...@@ -598,7 +598,7 @@ ixgb_get_ee_device_id(struct ixgb_hw *hw)
{ {
struct ixgb_ee_map_type *ee_map = (struct ixgb_ee_map_type *)hw->eeprom; struct ixgb_ee_map_type *ee_map = (struct ixgb_ee_map_type *)hw->eeprom;
if(ixgb_check_and_get_eeprom_data(hw) == TRUE) if (ixgb_check_and_get_eeprom_data(hw) == true)
return (le16_to_cpu(ee_map->device_id)); return (le16_to_cpu(ee_map->device_id));
return (0); return (0);
......
...@@ -97,7 +97,7 @@ struct ixgb_ee_map_type { ...@@ -97,7 +97,7 @@ struct ixgb_ee_map_type {
/* EEPROM Functions */ /* EEPROM Functions */
uint16_t ixgb_read_eeprom(struct ixgb_hw *hw, uint16_t reg); uint16_t ixgb_read_eeprom(struct ixgb_hw *hw, uint16_t reg);
boolean_t ixgb_validate_eeprom_checksum(struct ixgb_hw *hw); bool ixgb_validate_eeprom_checksum(struct ixgb_hw *hw);
void ixgb_update_eeprom_checksum(struct ixgb_hw *hw); void ixgb_update_eeprom_checksum(struct ixgb_hw *hw);
......
...@@ -32,15 +32,6 @@ ...@@ -32,15 +32,6 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
extern int ixgb_up(struct ixgb_adapter *adapter);
extern void ixgb_down(struct ixgb_adapter *adapter, boolean_t kill_watchdog);
extern void ixgb_reset(struct ixgb_adapter *adapter);
extern int ixgb_setup_rx_resources(struct ixgb_adapter *adapter);
extern int ixgb_setup_tx_resources(struct ixgb_adapter *adapter);
extern void ixgb_free_rx_resources(struct ixgb_adapter *adapter);
extern void ixgb_free_tx_resources(struct ixgb_adapter *adapter);
extern void ixgb_update_stats(struct ixgb_adapter *adapter);
#define IXGB_ALL_RAR_ENTRIES 16 #define IXGB_ALL_RAR_ENTRIES 16
struct ixgb_stats { struct ixgb_stats {
...@@ -136,7 +127,7 @@ ixgb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) ...@@ -136,7 +127,7 @@ ixgb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
return -EINVAL; return -EINVAL;
if(netif_running(adapter->netdev)) { if(netif_running(adapter->netdev)) {
ixgb_down(adapter, TRUE); ixgb_down(adapter, true);
ixgb_reset(adapter); ixgb_reset(adapter);
ixgb_up(adapter); ixgb_up(adapter);
ixgb_set_speed_duplex(netdev); ixgb_set_speed_duplex(netdev);
...@@ -185,7 +176,7 @@ ixgb_set_pauseparam(struct net_device *netdev, ...@@ -185,7 +176,7 @@ ixgb_set_pauseparam(struct net_device *netdev,
hw->fc.type = ixgb_fc_none; hw->fc.type = ixgb_fc_none;
if(netif_running(adapter->netdev)) { if(netif_running(adapter->netdev)) {
ixgb_down(adapter, TRUE); ixgb_down(adapter, true);
ixgb_up(adapter); ixgb_up(adapter);
ixgb_set_speed_duplex(netdev); ixgb_set_speed_duplex(netdev);
} else } else
...@@ -210,7 +201,7 @@ ixgb_set_rx_csum(struct net_device *netdev, uint32_t data) ...@@ -210,7 +201,7 @@ ixgb_set_rx_csum(struct net_device *netdev, uint32_t data)
adapter->rx_csum = data; adapter->rx_csum = data;
if(netif_running(netdev)) { if(netif_running(netdev)) {
ixgb_down(adapter,TRUE); ixgb_down(adapter, true);
ixgb_up(adapter); ixgb_up(adapter);
ixgb_set_speed_duplex(netdev); ixgb_set_speed_duplex(netdev);
} else } else
...@@ -570,7 +561,7 @@ ixgb_set_ringparam(struct net_device *netdev, ...@@ -570,7 +561,7 @@ ixgb_set_ringparam(struct net_device *netdev,
return -EINVAL; return -EINVAL;
if(netif_running(adapter->netdev)) if(netif_running(adapter->netdev))
ixgb_down(adapter,TRUE); ixgb_down(adapter, true);
rxdr->count = max(ring->rx_pending,(uint32_t)MIN_RXD); rxdr->count = max(ring->rx_pending,(uint32_t)MIN_RXD);
rxdr->count = min(rxdr->count,(uint32_t)MAX_RXD); rxdr->count = min(rxdr->count,(uint32_t)MAX_RXD);
......
...@@ -41,7 +41,7 @@ static void ixgb_mta_set(struct ixgb_hw *hw, uint32_t hash_value); ...@@ -41,7 +41,7 @@ static void ixgb_mta_set(struct ixgb_hw *hw, uint32_t hash_value);
static void ixgb_get_bus_info(struct ixgb_hw *hw); static void ixgb_get_bus_info(struct ixgb_hw *hw);
static boolean_t ixgb_link_reset(struct ixgb_hw *hw); static bool ixgb_link_reset(struct ixgb_hw *hw);
static void ixgb_optics_reset(struct ixgb_hw *hw); static void ixgb_optics_reset(struct ixgb_hw *hw);
...@@ -60,9 +60,9 @@ static uint16_t ixgb_read_phy_reg(struct ixgb_hw *hw, ...@@ -60,9 +60,9 @@ static uint16_t ixgb_read_phy_reg(struct ixgb_hw *hw,
uint32_t phy_address, uint32_t phy_address,
uint32_t device_type); uint32_t device_type);
static boolean_t ixgb_setup_fc(struct ixgb_hw *hw); static bool ixgb_setup_fc(struct ixgb_hw *hw);
static boolean_t mac_addr_valid(uint8_t *mac_addr); static bool mac_addr_valid(uint8_t *mac_addr);
static uint32_t ixgb_mac_reset(struct ixgb_hw *hw) static uint32_t ixgb_mac_reset(struct ixgb_hw *hw)
{ {
...@@ -114,7 +114,7 @@ static uint32_t ixgb_mac_reset(struct ixgb_hw *hw) ...@@ -114,7 +114,7 @@ static uint32_t ixgb_mac_reset(struct ixgb_hw *hw)
* *
* hw - Struct containing variables accessed by shared code * hw - Struct containing variables accessed by shared code
*****************************************************************************/ *****************************************************************************/
boolean_t bool
ixgb_adapter_stop(struct ixgb_hw *hw) ixgb_adapter_stop(struct ixgb_hw *hw)
{ {
uint32_t ctrl_reg; uint32_t ctrl_reg;
...@@ -127,13 +127,13 @@ ixgb_adapter_stop(struct ixgb_hw *hw) ...@@ -127,13 +127,13 @@ ixgb_adapter_stop(struct ixgb_hw *hw)
*/ */
if(hw->adapter_stopped) { if(hw->adapter_stopped) {
DEBUGOUT("Exiting because the adapter is already stopped!!!\n"); DEBUGOUT("Exiting because the adapter is already stopped!!!\n");
return FALSE; return false;
} }
/* Set the Adapter Stopped flag so other driver functions stop /* Set the Adapter Stopped flag so other driver functions stop
* touching the Hardware. * touching the Hardware.
*/ */
hw->adapter_stopped = TRUE; hw->adapter_stopped = true;
/* Clear interrupt mask to stop board from generating interrupts */ /* Clear interrupt mask to stop board from generating interrupts */
DEBUGOUT("Masking off all interrupts\n"); DEBUGOUT("Masking off all interrupts\n");
...@@ -286,15 +286,15 @@ ixgb_identify_phy(struct ixgb_hw *hw) ...@@ -286,15 +286,15 @@ ixgb_identify_phy(struct ixgb_hw *hw)
* Leaves the transmit and receive units disabled and uninitialized. * Leaves the transmit and receive units disabled and uninitialized.
* *
* Returns: * Returns:
* TRUE if successful, * true if successful,
* FALSE if unrecoverable problems were encountered. * false if unrecoverable problems were encountered.
*****************************************************************************/ *****************************************************************************/
boolean_t bool
ixgb_init_hw(struct ixgb_hw *hw) ixgb_init_hw(struct ixgb_hw *hw)
{ {
uint32_t i; uint32_t i;
uint32_t ctrl_reg; uint32_t ctrl_reg;
boolean_t status; bool status;
DEBUGFUNC("ixgb_init_hw"); DEBUGFUNC("ixgb_init_hw");
...@@ -318,9 +318,8 @@ ixgb_init_hw(struct ixgb_hw *hw) ...@@ -318,9 +318,8 @@ ixgb_init_hw(struct ixgb_hw *hw)
/* Delay a few ms just to allow the reset to complete */ /* Delay a few ms just to allow the reset to complete */
msleep(IXGB_DELAY_AFTER_EE_RESET); msleep(IXGB_DELAY_AFTER_EE_RESET);
if (ixgb_get_eeprom_data(hw) == FALSE) { if (!ixgb_get_eeprom_data(hw))
return(FALSE); return false;
}
/* Use the device id to determine the type of phy/transceiver. */ /* Use the device id to determine the type of phy/transceiver. */
hw->device_id = ixgb_get_ee_device_id(hw); hw->device_id = ixgb_get_ee_device_id(hw);
...@@ -337,11 +336,11 @@ ixgb_init_hw(struct ixgb_hw *hw) ...@@ -337,11 +336,11 @@ ixgb_init_hw(struct ixgb_hw *hw)
*/ */
if (!mac_addr_valid(hw->curr_mac_addr)) { if (!mac_addr_valid(hw->curr_mac_addr)) {
DEBUGOUT("MAC address invalid after ixgb_init_rx_addrs\n"); DEBUGOUT("MAC address invalid after ixgb_init_rx_addrs\n");
return(FALSE); return(false);
} }
/* tell the routines in this file they can access hardware again */ /* tell the routines in this file they can access hardware again */
hw->adapter_stopped = FALSE; hw->adapter_stopped = false;
/* Fill in the bus_info structure */ /* Fill in the bus_info structure */
ixgb_get_bus_info(hw); ixgb_get_bus_info(hw);
...@@ -661,12 +660,12 @@ ixgb_clear_vfta(struct ixgb_hw *hw) ...@@ -661,12 +660,12 @@ ixgb_clear_vfta(struct ixgb_hw *hw)
* hw - Struct containing variables accessed by shared code * hw - Struct containing variables accessed by shared code
*****************************************************************************/ *****************************************************************************/
static boolean_t static bool
ixgb_setup_fc(struct ixgb_hw *hw) ixgb_setup_fc(struct ixgb_hw *hw)
{ {
uint32_t ctrl_reg; uint32_t ctrl_reg;
uint32_t pap_reg = 0; /* by default, assume no pause time */ uint32_t pap_reg = 0; /* by default, assume no pause time */
boolean_t status = TRUE; bool status = true;
DEBUGFUNC("ixgb_setup_fc"); DEBUGFUNC("ixgb_setup_fc");
...@@ -950,7 +949,7 @@ ixgb_check_for_link(struct ixgb_hw *hw) ...@@ -950,7 +949,7 @@ ixgb_check_for_link(struct ixgb_hw *hw)
if ((xpcss_reg & IXGB_XPCSS_ALIGN_STATUS) && if ((xpcss_reg & IXGB_XPCSS_ALIGN_STATUS) &&
(status_reg & IXGB_STATUS_LU)) { (status_reg & IXGB_STATUS_LU)) {
hw->link_up = TRUE; hw->link_up = true;
} else if (!(xpcss_reg & IXGB_XPCSS_ALIGN_STATUS) && } else if (!(xpcss_reg & IXGB_XPCSS_ALIGN_STATUS) &&
(status_reg & IXGB_STATUS_LU)) { (status_reg & IXGB_STATUS_LU)) {
DEBUGOUT("XPCSS Not Aligned while Status:LU is set.\n"); DEBUGOUT("XPCSS Not Aligned while Status:LU is set.\n");
...@@ -974,10 +973,10 @@ ixgb_check_for_link(struct ixgb_hw *hw) ...@@ -974,10 +973,10 @@ ixgb_check_for_link(struct ixgb_hw *hw)
* *
* Called by any function that needs to check the link status of the adapter. * Called by any function that needs to check the link status of the adapter.
*****************************************************************************/ *****************************************************************************/
boolean_t ixgb_check_for_bad_link(struct ixgb_hw *hw) bool ixgb_check_for_bad_link(struct ixgb_hw *hw)
{ {
uint32_t newLFC, newRFC; uint32_t newLFC, newRFC;
boolean_t bad_link_returncode = FALSE; bool bad_link_returncode = false;
if (hw->phy_type == ixgb_phy_type_txn17401) { if (hw->phy_type == ixgb_phy_type_txn17401) {
newLFC = IXGB_READ_REG(hw, LFC); newLFC = IXGB_READ_REG(hw, LFC);
...@@ -986,7 +985,7 @@ boolean_t ixgb_check_for_bad_link(struct ixgb_hw *hw) ...@@ -986,7 +985,7 @@ boolean_t ixgb_check_for_bad_link(struct ixgb_hw *hw)
|| (hw->lastRFC + 250 < newRFC)) { || (hw->lastRFC + 250 < newRFC)) {
DEBUGOUT DEBUGOUT
("BAD LINK! too many LFC/RFC since last check\n"); ("BAD LINK! too many LFC/RFC since last check\n");
bad_link_returncode = TRUE; bad_link_returncode = true;
} }
hw->lastLFC = newLFC; hw->lastLFC = newLFC;
hw->lastRFC = newRFC; hw->lastRFC = newRFC;
...@@ -1155,21 +1154,21 @@ ixgb_get_bus_info(struct ixgb_hw *hw) ...@@ -1155,21 +1154,21 @@ ixgb_get_bus_info(struct ixgb_hw *hw)
* mac_addr - pointer to MAC address. * mac_addr - pointer to MAC address.
* *
*****************************************************************************/ *****************************************************************************/
static boolean_t static bool
mac_addr_valid(uint8_t *mac_addr) mac_addr_valid(uint8_t *mac_addr)
{ {
boolean_t is_valid = TRUE; bool is_valid = true;
DEBUGFUNC("mac_addr_valid"); DEBUGFUNC("mac_addr_valid");
/* Make sure it is not a multicast address */ /* Make sure it is not a multicast address */
if (IS_MULTICAST(mac_addr)) { if (IS_MULTICAST(mac_addr)) {
DEBUGOUT("MAC address is multicast\n"); DEBUGOUT("MAC address is multicast\n");
is_valid = FALSE; is_valid = false;
} }
/* Not a broadcast address */ /* Not a broadcast address */
else if (IS_BROADCAST(mac_addr)) { else if (IS_BROADCAST(mac_addr)) {
DEBUGOUT("MAC address is broadcast\n"); DEBUGOUT("MAC address is broadcast\n");
is_valid = FALSE; is_valid = false;
} }
/* Reject the zero address */ /* Reject the zero address */
else if (mac_addr[0] == 0 && else if (mac_addr[0] == 0 &&
...@@ -1179,7 +1178,7 @@ mac_addr_valid(uint8_t *mac_addr) ...@@ -1179,7 +1178,7 @@ mac_addr_valid(uint8_t *mac_addr)
mac_addr[4] == 0 && mac_addr[4] == 0 &&
mac_addr[5] == 0) { mac_addr[5] == 0) {
DEBUGOUT("MAC address is all zeros\n"); DEBUGOUT("MAC address is all zeros\n");
is_valid = FALSE; is_valid = false;
} }
return (is_valid); return (is_valid);
} }
...@@ -1190,10 +1189,10 @@ mac_addr_valid(uint8_t *mac_addr) ...@@ -1190,10 +1189,10 @@ mac_addr_valid(uint8_t *mac_addr)
* *
* hw - Struct containing variables accessed by shared code * hw - Struct containing variables accessed by shared code
*****************************************************************************/ *****************************************************************************/
static boolean_t static bool
ixgb_link_reset(struct ixgb_hw *hw) ixgb_link_reset(struct ixgb_hw *hw)
{ {
boolean_t link_status = FALSE; bool link_status = false;
uint8_t wait_retries = MAX_RESET_ITERATIONS; uint8_t wait_retries = MAX_RESET_ITERATIONS;
uint8_t lrst_retries = MAX_RESET_ITERATIONS; uint8_t lrst_retries = MAX_RESET_ITERATIONS;
...@@ -1208,7 +1207,7 @@ ixgb_link_reset(struct ixgb_hw *hw) ...@@ -1208,7 +1207,7 @@ ixgb_link_reset(struct ixgb_hw *hw)
link_status = link_status =
((IXGB_READ_REG(hw, STATUS) & IXGB_STATUS_LU) ((IXGB_READ_REG(hw, STATUS) & IXGB_STATUS_LU)
&& (IXGB_READ_REG(hw, XPCSS) & && (IXGB_READ_REG(hw, XPCSS) &
IXGB_XPCSS_ALIGN_STATUS)) ? TRUE : FALSE; IXGB_XPCSS_ALIGN_STATUS)) ? true : false;
} while (!link_status && --wait_retries); } while (!link_status && --wait_retries);
} while (!link_status && --lrst_retries); } while (!link_status && --lrst_retries);
......
...@@ -650,7 +650,7 @@ struct ixgb_flash_buffer { ...@@ -650,7 +650,7 @@ struct ixgb_flash_buffer {
* This is a little-endian specific check. * This is a little-endian specific check.
*/ */
#define IS_MULTICAST(Address) \ #define IS_MULTICAST(Address) \
(boolean_t)(((uint8_t *)(Address))[0] & ((uint8_t)0x01)) (bool)(((uint8_t *)(Address))[0] & ((uint8_t)0x01))
/* /*
* Check whether an address is broadcast. * Check whether an address is broadcast.
...@@ -663,7 +663,7 @@ struct ixgb_fc { ...@@ -663,7 +663,7 @@ struct ixgb_fc {
uint32_t high_water; /* Flow Control High-water */ uint32_t high_water; /* Flow Control High-water */
uint32_t low_water; /* Flow Control Low-water */ uint32_t low_water; /* Flow Control Low-water */
uint16_t pause_time; /* Flow Control Pause timer */ uint16_t pause_time; /* Flow Control Pause timer */
boolean_t send_xon; /* Flow control send XON */ bool send_xon; /* Flow control send XON */
ixgb_fc_type type; /* Type of flow control */ ixgb_fc_type type; /* Type of flow control */
}; };
...@@ -700,8 +700,8 @@ struct ixgb_hw { ...@@ -700,8 +700,8 @@ struct ixgb_hw {
uint32_t num_tx_desc; /* Number of Transmit descriptors */ uint32_t num_tx_desc; /* Number of Transmit descriptors */
uint32_t num_rx_desc; /* Number of Receive descriptors */ uint32_t num_rx_desc; /* Number of Receive descriptors */
uint32_t rx_buffer_size; /* Size of Receive buffer */ uint32_t rx_buffer_size; /* Size of Receive buffer */
boolean_t link_up; /* TRUE if link is valid */ bool link_up; /* true if link is valid */
boolean_t adapter_stopped; /* State of adapter */ bool adapter_stopped; /* State of adapter */
uint16_t device_id; /* device id from PCI configuration space */ uint16_t device_id; /* device id from PCI configuration space */
uint16_t vendor_id; /* vendor id from PCI configuration space */ uint16_t vendor_id; /* vendor id from PCI configuration space */
uint8_t revision_id; /* revision id from PCI configuration space */ uint8_t revision_id; /* revision id from PCI configuration space */
...@@ -783,11 +783,11 @@ struct ixgb_hw_stats { ...@@ -783,11 +783,11 @@ struct ixgb_hw_stats {
}; };
/* Function Prototypes */ /* Function Prototypes */
extern boolean_t ixgb_adapter_stop(struct ixgb_hw *hw); extern bool ixgb_adapter_stop(struct ixgb_hw *hw);
extern boolean_t ixgb_init_hw(struct ixgb_hw *hw); extern bool ixgb_init_hw(struct ixgb_hw *hw);
extern boolean_t ixgb_adapter_start(struct ixgb_hw *hw); extern bool ixgb_adapter_start(struct ixgb_hw *hw);
extern void ixgb_check_for_link(struct ixgb_hw *hw); extern void ixgb_check_for_link(struct ixgb_hw *hw);
extern boolean_t ixgb_check_for_bad_link(struct ixgb_hw *hw); extern bool ixgb_check_for_bad_link(struct ixgb_hw *hw);
extern void ixgb_rar_set(struct ixgb_hw *hw, extern void ixgb_rar_set(struct ixgb_hw *hw,
uint8_t *addr, uint8_t *addr,
...@@ -809,7 +809,7 @@ extern void ixgb_write_vfta(struct ixgb_hw *hw, ...@@ -809,7 +809,7 @@ extern void ixgb_write_vfta(struct ixgb_hw *hw,
void ixgb_get_ee_mac_addr(struct ixgb_hw *hw, uint8_t *mac_addr); void ixgb_get_ee_mac_addr(struct ixgb_hw *hw, uint8_t *mac_addr);
uint32_t ixgb_get_ee_pba_number(struct ixgb_hw *hw); uint32_t ixgb_get_ee_pba_number(struct ixgb_hw *hw);
uint16_t ixgb_get_ee_device_id(struct ixgb_hw *hw); uint16_t ixgb_get_ee_device_id(struct ixgb_hw *hw);
boolean_t ixgb_get_eeprom_data(struct ixgb_hw *hw); bool ixgb_get_eeprom_data(struct ixgb_hw *hw);
__le16 ixgb_get_eeprom_word(struct ixgb_hw *hw, uint16_t index); __le16 ixgb_get_eeprom_word(struct ixgb_hw *hw, uint16_t index);
/* Everything else */ /* Everything else */
......
...@@ -67,7 +67,7 @@ MODULE_DEVICE_TABLE(pci, ixgb_pci_tbl); ...@@ -67,7 +67,7 @@ MODULE_DEVICE_TABLE(pci, ixgb_pci_tbl);
/* Local Function Prototypes */ /* Local Function Prototypes */
int ixgb_up(struct ixgb_adapter *adapter); int ixgb_up(struct ixgb_adapter *adapter);
void ixgb_down(struct ixgb_adapter *adapter, boolean_t kill_watchdog); void ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog);
void ixgb_reset(struct ixgb_adapter *adapter); void ixgb_reset(struct ixgb_adapter *adapter);
int ixgb_setup_tx_resources(struct ixgb_adapter *adapter); int ixgb_setup_tx_resources(struct ixgb_adapter *adapter);
int ixgb_setup_rx_resources(struct ixgb_adapter *adapter); int ixgb_setup_rx_resources(struct ixgb_adapter *adapter);
...@@ -94,14 +94,14 @@ static struct net_device_stats *ixgb_get_stats(struct net_device *netdev); ...@@ -94,14 +94,14 @@ static struct net_device_stats *ixgb_get_stats(struct net_device *netdev);
static int ixgb_change_mtu(struct net_device *netdev, int new_mtu); static int ixgb_change_mtu(struct net_device *netdev, int new_mtu);
static int ixgb_set_mac(struct net_device *netdev, void *p); static int ixgb_set_mac(struct net_device *netdev, void *p);
static irqreturn_t ixgb_intr(int irq, void *data); static irqreturn_t ixgb_intr(int irq, void *data);
static boolean_t ixgb_clean_tx_irq(struct ixgb_adapter *adapter); static bool ixgb_clean_tx_irq(struct ixgb_adapter *adapter);
#ifdef CONFIG_IXGB_NAPI #ifdef CONFIG_IXGB_NAPI
static int ixgb_clean(struct napi_struct *napi, int budget); static int ixgb_clean(struct napi_struct *napi, int budget);
static boolean_t ixgb_clean_rx_irq(struct ixgb_adapter *adapter, static bool ixgb_clean_rx_irq(struct ixgb_adapter *adapter,
int *work_done, int work_to_do); int *work_done, int work_to_do);
#else #else
static boolean_t ixgb_clean_rx_irq(struct ixgb_adapter *adapter); static bool ixgb_clean_rx_irq(struct ixgb_adapter *adapter);
#endif #endif
static void ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter); static void ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter);
static void ixgb_tx_timeout(struct net_device *dev); static void ixgb_tx_timeout(struct net_device *dev);
...@@ -197,7 +197,6 @@ module_exit(ixgb_exit_module); ...@@ -197,7 +197,6 @@ module_exit(ixgb_exit_module);
static void static void
ixgb_irq_disable(struct ixgb_adapter *adapter) ixgb_irq_disable(struct ixgb_adapter *adapter)
{ {
atomic_inc(&adapter->irq_sem);
IXGB_WRITE_REG(&adapter->hw, IMC, ~0); IXGB_WRITE_REG(&adapter->hw, IMC, ~0);
IXGB_WRITE_FLUSH(&adapter->hw); IXGB_WRITE_FLUSH(&adapter->hw);
synchronize_irq(adapter->pdev->irq); synchronize_irq(adapter->pdev->irq);
...@@ -211,14 +210,12 @@ ixgb_irq_disable(struct ixgb_adapter *adapter) ...@@ -211,14 +210,12 @@ ixgb_irq_disable(struct ixgb_adapter *adapter)
static void static void
ixgb_irq_enable(struct ixgb_adapter *adapter) ixgb_irq_enable(struct ixgb_adapter *adapter)
{ {
if(atomic_dec_and_test(&adapter->irq_sem)) { u32 val = IXGB_INT_RXT0 | IXGB_INT_RXDMT0 |
u32 val = IXGB_INT_RXT0 | IXGB_INT_RXDMT0 | IXGB_INT_TXDW | IXGB_INT_LSC;
IXGB_INT_TXDW | IXGB_INT_LSC; if (adapter->hw.subsystem_vendor_id == SUN_SUBVENDOR_ID)
if (adapter->hw.subsystem_vendor_id == SUN_SUBVENDOR_ID) val |= IXGB_INT_GPI0;
val |= IXGB_INT_GPI0; IXGB_WRITE_REG(&adapter->hw, IMS, val);
IXGB_WRITE_REG(&adapter->hw, IMS, val); IXGB_WRITE_FLUSH(&adapter->hw);
IXGB_WRITE_FLUSH(&adapter->hw);
}
} }
int int
...@@ -283,26 +280,30 @@ ixgb_up(struct ixgb_adapter *adapter) ...@@ -283,26 +280,30 @@ ixgb_up(struct ixgb_adapter *adapter)
} }
} }
mod_timer(&adapter->watchdog_timer, jiffies); clear_bit(__IXGB_DOWN, &adapter->flags);
#ifdef CONFIG_IXGB_NAPI #ifdef CONFIG_IXGB_NAPI
napi_enable(&adapter->napi); napi_enable(&adapter->napi);
#endif #endif
ixgb_irq_enable(adapter); ixgb_irq_enable(adapter);
mod_timer(&adapter->watchdog_timer, jiffies);
return 0; return 0;
} }
void void
ixgb_down(struct ixgb_adapter *adapter, boolean_t kill_watchdog) ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog)
{ {
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
/* prevent the interrupt handler from restarting watchdog */
set_bit(__IXGB_DOWN, &adapter->flags);
#ifdef CONFIG_IXGB_NAPI #ifdef CONFIG_IXGB_NAPI
napi_disable(&adapter->napi); napi_disable(&adapter->napi);
atomic_set(&adapter->irq_sem, 0);
#endif #endif
/* waiting for NAPI to complete can re-enable interrupts */
ixgb_irq_disable(adapter); ixgb_irq_disable(adapter);
free_irq(adapter->pdev->irq, netdev); free_irq(adapter->pdev->irq, netdev);
...@@ -589,9 +590,9 @@ ixgb_sw_init(struct ixgb_adapter *adapter) ...@@ -589,9 +590,9 @@ ixgb_sw_init(struct ixgb_adapter *adapter)
/* enable flow control to be programmed */ /* enable flow control to be programmed */
hw->fc.send_xon = 1; hw->fc.send_xon = 1;
atomic_set(&adapter->irq_sem, 1);
spin_lock_init(&adapter->tx_lock); spin_lock_init(&adapter->tx_lock);
set_bit(__IXGB_DOWN, &adapter->flags);
return 0; return 0;
} }
...@@ -656,7 +657,7 @@ ixgb_close(struct net_device *netdev) ...@@ -656,7 +657,7 @@ ixgb_close(struct net_device *netdev)
{ {
struct ixgb_adapter *adapter = netdev_priv(netdev); struct ixgb_adapter *adapter = netdev_priv(netdev);
ixgb_down(adapter, TRUE); ixgb_down(adapter, true);
ixgb_free_tx_resources(adapter); ixgb_free_tx_resources(adapter);
ixgb_free_rx_resources(adapter); ixgb_free_rx_resources(adapter);
...@@ -881,7 +882,7 @@ ixgb_configure_rx(struct ixgb_adapter *adapter) ...@@ -881,7 +882,7 @@ ixgb_configure_rx(struct ixgb_adapter *adapter)
IXGB_WRITE_REG(hw, RXDCTL, rxdctl); IXGB_WRITE_REG(hw, RXDCTL, rxdctl);
/* Enable Receive Checksum Offload for TCP and UDP */ /* Enable Receive Checksum Offload for TCP and UDP */
if(adapter->rx_csum == TRUE) { if (adapter->rx_csum) {
rxcsum = IXGB_READ_REG(hw, RXCSUM); rxcsum = IXGB_READ_REG(hw, RXCSUM);
rxcsum |= IXGB_RXCSUM_TUOFL; rxcsum |= IXGB_RXCSUM_TUOFL;
IXGB_WRITE_REG(hw, RXCSUM, rxcsum); IXGB_WRITE_REG(hw, RXCSUM, rxcsum);
...@@ -1164,7 +1165,7 @@ ixgb_watchdog(unsigned long data) ...@@ -1164,7 +1165,7 @@ ixgb_watchdog(unsigned long data)
} }
/* Force detection of hung controller every watchdog period */ /* Force detection of hung controller every watchdog period */
adapter->detect_tx_hung = TRUE; adapter->detect_tx_hung = true;
/* generate an interrupt to force clean up of any stragglers */ /* generate an interrupt to force clean up of any stragglers */
IXGB_WRITE_REG(&adapter->hw, ICS, IXGB_INT_TXDW); IXGB_WRITE_REG(&adapter->hw, ICS, IXGB_INT_TXDW);
...@@ -1243,7 +1244,7 @@ ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb) ...@@ -1243,7 +1244,7 @@ ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb)
return 0; return 0;
} }
static boolean_t static bool
ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb) ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb)
{ {
struct ixgb_context_desc *context_desc; struct ixgb_context_desc *context_desc;
...@@ -1275,10 +1276,10 @@ ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb) ...@@ -1275,10 +1276,10 @@ ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb)
if(++i == adapter->tx_ring.count) i = 0; if(++i == adapter->tx_ring.count) i = 0;
adapter->tx_ring.next_to_use = i; adapter->tx_ring.next_to_use = i;
return TRUE; return true;
} }
return FALSE; return false;
} }
#define IXGB_MAX_TXD_PWR 14 #define IXGB_MAX_TXD_PWR 14
...@@ -1464,14 +1465,18 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev) ...@@ -1464,14 +1465,18 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
int vlan_id = 0; int vlan_id = 0;
int tso; int tso;
if (test_bit(__IXGB_DOWN, &adapter->flags)) {
dev_kfree_skb(skb);
return NETDEV_TX_OK;
}
if(skb->len <= 0) { if(skb->len <= 0) {
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
return 0; return 0;
} }
#ifdef NETIF_F_LLTX #ifdef NETIF_F_LLTX
local_irq_save(flags); if (!spin_trylock_irqsave(&adapter->tx_lock, flags)) {
if (!spin_trylock(&adapter->tx_lock)) {
/* Collision - tell upper layer to requeue */ /* Collision - tell upper layer to requeue */
local_irq_restore(flags); local_irq_restore(flags);
return NETDEV_TX_LOCKED; return NETDEV_TX_LOCKED;
...@@ -1548,7 +1553,7 @@ ixgb_tx_timeout_task(struct work_struct *work) ...@@ -1548,7 +1553,7 @@ ixgb_tx_timeout_task(struct work_struct *work)
container_of(work, struct ixgb_adapter, tx_timeout_task); container_of(work, struct ixgb_adapter, tx_timeout_task);
adapter->tx_timeout_count++; adapter->tx_timeout_count++;
ixgb_down(adapter, TRUE); ixgb_down(adapter, true);
ixgb_up(adapter); ixgb_up(adapter);
} }
...@@ -1595,7 +1600,7 @@ ixgb_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -1595,7 +1600,7 @@ ixgb_change_mtu(struct net_device *netdev, int new_mtu)
netdev->mtu = new_mtu; netdev->mtu = new_mtu;
if ((old_max_frame != max_frame) && netif_running(netdev)) { if ((old_max_frame != max_frame) && netif_running(netdev)) {
ixgb_down(adapter, TRUE); ixgb_down(adapter, true);
ixgb_up(adapter); ixgb_up(adapter);
} }
...@@ -1753,9 +1758,9 @@ ixgb_intr(int irq, void *data) ...@@ -1753,9 +1758,9 @@ ixgb_intr(int irq, void *data)
if(unlikely(!icr)) if(unlikely(!icr))
return IRQ_NONE; /* Not our interrupt */ return IRQ_NONE; /* Not our interrupt */
if(unlikely(icr & (IXGB_INT_RXSEQ | IXGB_INT_LSC))) { if (unlikely(icr & (IXGB_INT_RXSEQ | IXGB_INT_LSC)))
mod_timer(&adapter->watchdog_timer, jiffies); if (!test_bit(__IXGB_DOWN, &adapter->flags))
} mod_timer(&adapter->watchdog_timer, jiffies);
#ifdef CONFIG_IXGB_NAPI #ifdef CONFIG_IXGB_NAPI
if (netif_rx_schedule_prep(netdev, &adapter->napi)) { if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
...@@ -1764,7 +1769,6 @@ ixgb_intr(int irq, void *data) ...@@ -1764,7 +1769,6 @@ ixgb_intr(int irq, void *data)
of the posted write is intentionally left out. of the posted write is intentionally left out.
*/ */
atomic_inc(&adapter->irq_sem);
IXGB_WRITE_REG(&adapter->hw, IMC, ~0); IXGB_WRITE_REG(&adapter->hw, IMC, ~0);
__netif_rx_schedule(netdev, &adapter->napi); __netif_rx_schedule(netdev, &adapter->napi);
} }
...@@ -1812,7 +1816,7 @@ ixgb_clean(struct napi_struct *napi, int budget) ...@@ -1812,7 +1816,7 @@ ixgb_clean(struct napi_struct *napi, int budget)
* @adapter: board private structure * @adapter: board private structure
**/ **/
static boolean_t static bool
ixgb_clean_tx_irq(struct ixgb_adapter *adapter) ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
{ {
struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; struct ixgb_desc_ring *tx_ring = &adapter->tx_ring;
...@@ -1820,7 +1824,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter) ...@@ -1820,7 +1824,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
struct ixgb_tx_desc *tx_desc, *eop_desc; struct ixgb_tx_desc *tx_desc, *eop_desc;
struct ixgb_buffer *buffer_info; struct ixgb_buffer *buffer_info;
unsigned int i, eop; unsigned int i, eop;
boolean_t cleaned = FALSE; bool cleaned = false;
i = tx_ring->next_to_clean; i = tx_ring->next_to_clean;
eop = tx_ring->buffer_info[i].next_to_watch; eop = tx_ring->buffer_info[i].next_to_watch;
...@@ -1828,7 +1832,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter) ...@@ -1828,7 +1832,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
while(eop_desc->status & IXGB_TX_DESC_STATUS_DD) { while(eop_desc->status & IXGB_TX_DESC_STATUS_DD) {
for(cleaned = FALSE; !cleaned; ) { for (cleaned = false; !cleaned; ) {
tx_desc = IXGB_TX_DESC(*tx_ring, i); tx_desc = IXGB_TX_DESC(*tx_ring, i);
buffer_info = &tx_ring->buffer_info[i]; buffer_info = &tx_ring->buffer_info[i];
...@@ -1862,7 +1866,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter) ...@@ -1862,7 +1866,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
if(adapter->detect_tx_hung) { if(adapter->detect_tx_hung) {
/* detect a transmit hang in hardware, this serializes the /* detect a transmit hang in hardware, this serializes the
* check with the clearing of time_stamp and movement of i */ * check with the clearing of time_stamp and movement of i */
adapter->detect_tx_hung = FALSE; adapter->detect_tx_hung = false;
if (tx_ring->buffer_info[eop].dma && if (tx_ring->buffer_info[eop].dma &&
time_after(jiffies, tx_ring->buffer_info[eop].time_stamp + HZ) time_after(jiffies, tx_ring->buffer_info[eop].time_stamp + HZ)
&& !(IXGB_READ_REG(&adapter->hw, STATUS) & && !(IXGB_READ_REG(&adapter->hw, STATUS) &
...@@ -1932,7 +1936,7 @@ ixgb_rx_checksum(struct ixgb_adapter *adapter, ...@@ -1932,7 +1936,7 @@ ixgb_rx_checksum(struct ixgb_adapter *adapter,
* @adapter: board private structure * @adapter: board private structure
**/ **/
static boolean_t static bool
#ifdef CONFIG_IXGB_NAPI #ifdef CONFIG_IXGB_NAPI
ixgb_clean_rx_irq(struct ixgb_adapter *adapter, int *work_done, int work_to_do) ixgb_clean_rx_irq(struct ixgb_adapter *adapter, int *work_done, int work_to_do)
#else #else
...@@ -1946,7 +1950,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter) ...@@ -1946,7 +1950,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
struct ixgb_buffer *buffer_info, *next_buffer, *next2_buffer; struct ixgb_buffer *buffer_info, *next_buffer, *next2_buffer;
uint32_t length; uint32_t length;
unsigned int i, j; unsigned int i, j;
boolean_t cleaned = FALSE; bool cleaned = false;
i = rx_ring->next_to_clean; i = rx_ring->next_to_clean;
rx_desc = IXGB_RX_DESC(*rx_ring, i); rx_desc = IXGB_RX_DESC(*rx_ring, i);
...@@ -1980,7 +1984,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter) ...@@ -1980,7 +1984,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
next_skb = next_buffer->skb; next_skb = next_buffer->skb;
prefetch(next_skb); prefetch(next_skb);
cleaned = TRUE; cleaned = true;
pci_unmap_single(pdev, pci_unmap_single(pdev,
buffer_info->dma, buffer_info->dma,
...@@ -2195,7 +2199,9 @@ ixgb_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp) ...@@ -2195,7 +2199,9 @@ ixgb_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp)
IXGB_WRITE_REG(&adapter->hw, RCTL, rctl); IXGB_WRITE_REG(&adapter->hw, RCTL, rctl);
} }
ixgb_irq_enable(adapter); /* don't enable interrupts unless we are UP */
if (adapter->netdev->flags & IFF_UP)
ixgb_irq_enable(adapter);
} }
static void static void
...@@ -2222,9 +2228,11 @@ ixgb_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid) ...@@ -2222,9 +2228,11 @@ ixgb_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid)
vlan_group_set_device(adapter->vlgrp, vid, NULL); vlan_group_set_device(adapter->vlgrp, vid, NULL);
ixgb_irq_enable(adapter); /* don't enable interrupts unless we are UP */
if (adapter->netdev->flags & IFF_UP)
ixgb_irq_enable(adapter);
/* remove VID from filter table*/ /* remove VID from filter table */
index = (vid >> 5) & 0x7F; index = (vid >> 5) & 0x7F;
vfta = IXGB_READ_REG_ARRAY(&adapter->hw, VFTA, index); vfta = IXGB_READ_REG_ARRAY(&adapter->hw, VFTA, index);
...@@ -2279,7 +2287,7 @@ static pci_ers_result_t ixgb_io_error_detected (struct pci_dev *pdev, ...@@ -2279,7 +2287,7 @@ static pci_ers_result_t ixgb_io_error_detected (struct pci_dev *pdev,
struct ixgb_adapter *adapter = netdev_priv(netdev); struct ixgb_adapter *adapter = netdev_priv(netdev);
if(netif_running(netdev)) if(netif_running(netdev))
ixgb_down(adapter, TRUE); ixgb_down(adapter, true);
pci_disable_device(pdev); pci_disable_device(pdev);
......
...@@ -39,13 +39,6 @@ ...@@ -39,13 +39,6 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/sched.h> #include <linux/sched.h>
typedef enum {
#undef FALSE
FALSE = 0,
#undef TRUE
TRUE = 1
} boolean_t;
#undef ASSERT #undef ASSERT
#define ASSERT(x) if(!(x)) BUG() #define ASSERT(x) if(!(x)) BUG()
#define MSGOUT(S, A, B) printk(KERN_DEBUG S "\n", A, B) #define MSGOUT(S, A, B) printk(KERN_DEBUG S "\n", A, B)
......
此差异已折叠。
...@@ -3156,7 +3156,7 @@ struct mv643xx_stats { ...@@ -3156,7 +3156,7 @@ struct mv643xx_stats {
int stat_offset; int stat_offset;
}; };
#define MV643XX_STAT(m) sizeof(((struct mv643xx_private *)0)->m), \ #define MV643XX_STAT(m) FIELD_SIZEOF(struct mv643xx_private, m), \
offsetof(struct mv643xx_private, m) offsetof(struct mv643xx_private, m)
static const struct mv643xx_stats mv643xx_gstrings_stats[] = { static const struct mv643xx_stats mv643xx_gstrings_stats[] = {
......
...@@ -511,10 +511,10 @@ enum PhyCtrl_bits { ...@@ -511,10 +511,10 @@ enum PhyCtrl_bits {
/* Note that using only 32 bit fields simplifies conversion to big-endian /* Note that using only 32 bit fields simplifies conversion to big-endian
architectures. */ architectures. */
struct netdev_desc { struct netdev_desc {
u32 next_desc; __le32 next_desc;
s32 cmd_status; __le32 cmd_status;
u32 addr; __le32 addr;
u32 software_use; __le32 software_use;
}; };
/* Bits in network_desc.status */ /* Bits in network_desc.status */
...@@ -2018,7 +2018,7 @@ static void drain_rx(struct net_device *dev) ...@@ -2018,7 +2018,7 @@ static void drain_rx(struct net_device *dev)
/* Free all the skbuffs in the Rx queue. */ /* Free all the skbuffs in the Rx queue. */
for (i = 0; i < RX_RING_SIZE; i++) { for (i = 0; i < RX_RING_SIZE; i++) {
np->rx_ring[i].cmd_status = 0; np->rx_ring[i].cmd_status = 0;
np->rx_ring[i].addr = 0xBADF00D0; /* An invalid address. */ np->rx_ring[i].addr = cpu_to_le32(0xBADF00D0); /* An invalid address. */
if (np->rx_skbuff[i]) { if (np->rx_skbuff[i]) {
pci_unmap_single(np->pci_dev, pci_unmap_single(np->pci_dev,
np->rx_dma[i], buflen, np->rx_dma[i], buflen,
......
此差异已折叠。
...@@ -39,8 +39,8 @@ struct scp_struct ...@@ -39,8 +39,8 @@ struct scp_struct
u16 zero_dum0; /* has to be zero */ u16 zero_dum0; /* has to be zero */
u8 sysbus; /* 0=16Bit,1=8Bit */ u8 sysbus; /* 0=16Bit,1=8Bit */
u8 zero_dum1; /* has to be zero for 586 */ u8 zero_dum1; /* has to be zero for 586 */
u8 zero_dum2; u16 zero_dum2;
u8 zero_dum3; u16 zero_dum3;
u32 iscp; /* pointer to the iscp-block */ u32 iscp; /* pointer to the iscp-block */
}; };
......
...@@ -99,6 +99,41 @@ static int bcm54xx_config_intr(struct phy_device *phydev) ...@@ -99,6 +99,41 @@ static int bcm54xx_config_intr(struct phy_device *phydev)
return err; return err;
} }
static int bcm5481_config_aneg(struct phy_device *phydev)
{
int ret;
/* Aneg firsly. */
ret = genphy_config_aneg(phydev);
/* Then we can set up the delay. */
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) {
u16 reg;
/*
* There is no BCM5481 specification available, so down
* here is everything we know about "register 0x18". This
* at least helps BCM5481 to successfuly receive packets
* on MPC8360E-RDK board. Peter Barada <peterb@logicpd.com>
* says: "This sets delay between the RXD and RXC signals
* instead of using trace lengths to achieve timing".
*/
/* Set RDX clk delay. */
reg = 0x7 | (0x7 << 12);
phy_write(phydev, 0x18, reg);
reg = phy_read(phydev, 0x18);
/* Set RDX-RXC skew. */
reg |= (1 << 8);
/* Write bits 14:0. */
reg |= (1 << 15);
phy_write(phydev, 0x18, reg);
}
return ret;
}
static struct phy_driver bcm5411_driver = { static struct phy_driver bcm5411_driver = {
.phy_id = 0x00206070, .phy_id = 0x00206070,
.phy_id_mask = 0xfffffff0, .phy_id_mask = 0xfffffff0,
...@@ -141,8 +176,22 @@ static struct phy_driver bcm5461_driver = { ...@@ -141,8 +176,22 @@ static struct phy_driver bcm5461_driver = {
.driver = { .owner = THIS_MODULE }, .driver = { .owner = THIS_MODULE },
}; };
static struct phy_driver bcm5481_driver = {
.phy_id = 0x0143bca0,
.phy_id_mask = 0xfffffff0,
.name = "Broadcom BCM5481",
.features = PHY_GBIT_FEATURES,
.flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
.config_init = bcm54xx_config_init,
.config_aneg = bcm5481_config_aneg,
.read_status = genphy_read_status,
.ack_interrupt = bcm54xx_ack_interrupt,
.config_intr = bcm54xx_config_intr,
.driver = { .owner = THIS_MODULE },
};
static struct phy_driver bcm5482_driver = { static struct phy_driver bcm5482_driver = {
.phy_id = 0x0143bcb0, .phy_id = 0x0143bcb0,
.phy_id_mask = 0xfffffff0, .phy_id_mask = 0xfffffff0,
.name = "Broadcom BCM5482", .name = "Broadcom BCM5482",
.features = PHY_GBIT_FEATURES, .features = PHY_GBIT_FEATURES,
...@@ -168,12 +217,17 @@ static int __init broadcom_init(void) ...@@ -168,12 +217,17 @@ static int __init broadcom_init(void)
ret = phy_driver_register(&bcm5461_driver); ret = phy_driver_register(&bcm5461_driver);
if (ret) if (ret)
goto out_5461; goto out_5461;
ret = phy_driver_register(&bcm5481_driver);
if (ret)
goto out_5481;
ret = phy_driver_register(&bcm5482_driver); ret = phy_driver_register(&bcm5482_driver);
if (ret) if (ret)
goto out_5482; goto out_5482;
return ret; return ret;
out_5482: out_5482:
phy_driver_unregister(&bcm5481_driver);
out_5481:
phy_driver_unregister(&bcm5461_driver); phy_driver_unregister(&bcm5461_driver);
out_5461: out_5461:
phy_driver_unregister(&bcm5421_driver); phy_driver_unregister(&bcm5421_driver);
...@@ -186,6 +240,7 @@ static int __init broadcom_init(void) ...@@ -186,6 +240,7 @@ static int __init broadcom_init(void)
static void __exit broadcom_exit(void) static void __exit broadcom_exit(void)
{ {
phy_driver_unregister(&bcm5482_driver); phy_driver_unregister(&bcm5482_driver);
phy_driver_unregister(&bcm5481_driver);
phy_driver_unregister(&bcm5461_driver); phy_driver_unregister(&bcm5461_driver);
phy_driver_unregister(&bcm5421_driver); phy_driver_unregister(&bcm5421_driver);
phy_driver_unregister(&bcm5411_driver); phy_driver_unregister(&bcm5411_driver);
......
...@@ -2472,8 +2472,7 @@ static int ql_send_map(struct ql3_adapter *qdev, ...@@ -2472,8 +2472,7 @@ static int ql_send_map(struct ql3_adapter *qdev,
if (seg_cnt == 1) { if (seg_cnt == 1) {
/* Terminate the last segment. */ /* Terminate the last segment. */
oal_entry->len = oal_entry->len |= cpu_to_le32(OAL_LAST_ENTRY);
cpu_to_le32(le32_to_cpu(oal_entry->len) | OAL_LAST_ENTRY);
} else { } else {
oal = tx_cb->oal; oal = tx_cb->oal;
for (completed_segs=0; completed_segs<frag_cnt; completed_segs++,seg++) { for (completed_segs=0; completed_segs<frag_cnt; completed_segs++,seg++) {
...@@ -2530,8 +2529,7 @@ static int ql_send_map(struct ql3_adapter *qdev, ...@@ -2530,8 +2529,7 @@ static int ql_send_map(struct ql3_adapter *qdev,
frag->size); frag->size);
} }
/* Terminate the last segment. */ /* Terminate the last segment. */
oal_entry->len = oal_entry->len |= cpu_to_le32(OAL_LAST_ENTRY);
cpu_to_le32(le32_to_cpu(oal_entry->len) | OAL_LAST_ENTRY);
} }
return NETDEV_TX_OK; return NETDEV_TX_OK;
......
...@@ -4267,11 +4267,12 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -4267,11 +4267,12 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
txdp->Control_1 |= TXD_UFO_MSS(ufo_size); txdp->Control_1 |= TXD_UFO_MSS(ufo_size);
txdp->Control_1 |= TXD_BUFFER0_SIZE(8); txdp->Control_1 |= TXD_BUFFER0_SIZE(8);
#ifdef __BIG_ENDIAN #ifdef __BIG_ENDIAN
/* both variants do cpu_to_be64(be32_to_cpu(...)) */
fifo->ufo_in_band_v[put_off] = fifo->ufo_in_band_v[put_off] =
(u64)skb_shinfo(skb)->ip6_frag_id; (__force u64)skb_shinfo(skb)->ip6_frag_id;
#else #else
fifo->ufo_in_band_v[put_off] = fifo->ufo_in_band_v[put_off] =
(u64)skb_shinfo(skb)->ip6_frag_id << 32; (__force u64)skb_shinfo(skb)->ip6_frag_id << 32;
#endif #endif
txdp->Host_Control = (unsigned long)fifo->ufo_in_band_v; txdp->Host_Control = (unsigned long)fifo->ufo_in_band_v;
txdp->Buffer_Pointer = pci_map_single(sp->pdev, txdp->Buffer_Pointer = pci_map_single(sp->pdev,
...@@ -7089,11 +7090,11 @@ static int s2io_add_isr(struct s2io_nic * sp) ...@@ -7089,11 +7090,11 @@ static int s2io_add_isr(struct s2io_nic * sp)
if(!(sp->msix_info[i].addr && if(!(sp->msix_info[i].addr &&
sp->msix_info[i].data)) { sp->msix_info[i].data)) {
DBG_PRINT(ERR_DBG, "%s @ Addr:0x%llx " DBG_PRINT(ERR_DBG, "%s @ Addr:0x%llx "
"Data:0x%lx\n",sp->desc[i], "Data:0x%llx\n",sp->desc[i],
(unsigned long long) (unsigned long long)
sp->msix_info[i].addr, sp->msix_info[i].addr,
(unsigned long) (unsigned long long)
ntohl(sp->msix_info[i].data)); sp->msix_info[i].data);
} else { } else {
msix_tx_cnt++; msix_tx_cnt++;
} }
...@@ -7107,11 +7108,11 @@ static int s2io_add_isr(struct s2io_nic * sp) ...@@ -7107,11 +7108,11 @@ static int s2io_add_isr(struct s2io_nic * sp)
if(!(sp->msix_info[i].addr && if(!(sp->msix_info[i].addr &&
sp->msix_info[i].data)) { sp->msix_info[i].data)) {
DBG_PRINT(ERR_DBG, "%s @ Addr:0x%llx " DBG_PRINT(ERR_DBG, "%s @ Addr:0x%llx "
"Data:0x%lx\n",sp->desc[i], "Data:0x%llx\n",sp->desc[i],
(unsigned long long) (unsigned long long)
sp->msix_info[i].addr, sp->msix_info[i].addr,
(unsigned long) (unsigned long long)
ntohl(sp->msix_info[i].data)); sp->msix_info[i].data);
} else { } else {
msix_rx_cnt++; msix_rx_cnt++;
} }
......
...@@ -401,18 +401,18 @@ static void copy_tx_mac(struct s_smc *smc, u_long td, struct fddi_mac *mac, ...@@ -401,18 +401,18 @@ static void copy_tx_mac(struct s_smc *smc, u_long td, struct fddi_mac *mac,
/* int len ; length of the frame including the FC */ /* int len ; length of the frame including the FC */
{ {
int i ; int i ;
u_int *p ; __le32 *p ;
CHECK_NPP() ; CHECK_NPP() ;
MARW(off) ; /* set memory address reg for writes */ MARW(off) ; /* set memory address reg for writes */
p = (u_int *) mac ; p = (__le32 *) mac ;
for (i = (len + 3)/4 ; i ; i--) { for (i = (len + 3)/4 ; i ; i--) {
if (i == 1) { if (i == 1) {
/* last word, set the tag bit */ /* last word, set the tag bit */
outpw(FM_A(FM_CMDREG2),FM_ISTTB) ; outpw(FM_A(FM_CMDREG2),FM_ISTTB) ;
} }
write_mdr(smc,MDR_REVERSE(*p)) ; write_mdr(smc,le32_to_cpu(*p)) ;
p++ ; p++ ;
} }
...@@ -444,7 +444,7 @@ static void copy_tx_mac(struct s_smc *smc, u_long td, struct fddi_mac *mac, ...@@ -444,7 +444,7 @@ static void copy_tx_mac(struct s_smc *smc, u_long td, struct fddi_mac *mac,
*/ */
static void directed_beacon(struct s_smc *smc) static void directed_beacon(struct s_smc *smc)
{ {
SK_LOC_DECL(u_int,a[2]) ; SK_LOC_DECL(__le32,a[2]) ;
/* /*
* set UNA in frame * set UNA in frame
...@@ -458,9 +458,9 @@ static void directed_beacon(struct s_smc *smc) ...@@ -458,9 +458,9 @@ static void directed_beacon(struct s_smc *smc)
CHECK_NPP() ; CHECK_NPP() ;
/* set memory address reg for writes */ /* set memory address reg for writes */
MARW(smc->hw.fp.fifo.rbc_ram_start+DBEACON_FRAME_OFF+4) ; MARW(smc->hw.fp.fifo.rbc_ram_start+DBEACON_FRAME_OFF+4) ;
write_mdr(smc,MDR_REVERSE(a[0])) ; write_mdr(smc,le32_to_cpu(a[0])) ;
outpw(FM_A(FM_CMDREG2),FM_ISTTB) ; /* set the tag bit */ outpw(FM_A(FM_CMDREG2),FM_ISTTB) ; /* set the tag bit */
write_mdr(smc,MDR_REVERSE(a[1])) ; write_mdr(smc,le32_to_cpu(a[1])) ;
outpw(FM_A(FM_SABC),smc->hw.fp.fifo.rbc_ram_start + DBEACON_FRAME_OFF) ; outpw(FM_A(FM_SABC),smc->hw.fp.fifo.rbc_ram_start + DBEACON_FRAME_OFF) ;
} }
......
...@@ -50,12 +50,12 @@ struct err_st { ...@@ -50,12 +50,12 @@ struct err_st {
* Transmit Descriptor struct * Transmit Descriptor struct
*/ */
struct s_smt_fp_txd { struct s_smt_fp_txd {
u_int txd_tbctrl ; /* transmit buffer control */ __le32 txd_tbctrl ; /* transmit buffer control */
u_int txd_txdscr ; /* transmit frame status word */ __le32 txd_txdscr ; /* transmit frame status word */
u_int txd_tbadr ; /* physical tx buffer address */ __le32 txd_tbadr ; /* physical tx buffer address */
u_int txd_ntdadr ; /* physical pointer to the next TxD */ __le32 txd_ntdadr ; /* physical pointer to the next TxD */
#ifdef ENA_64BIT_SUP #ifdef ENA_64BIT_SUP
u_int txd_tbadr_hi ; /* physical tx buffer addr (high dword)*/ __le32 txd_tbadr_hi ; /* physical tx buffer addr (high dword)*/
#endif #endif
char far *txd_virt ; /* virtual pointer to the data frag */ char far *txd_virt ; /* virtual pointer to the data frag */
/* virt pointer to the next TxD */ /* virt pointer to the next TxD */
...@@ -67,12 +67,12 @@ struct s_smt_fp_txd { ...@@ -67,12 +67,12 @@ struct s_smt_fp_txd {
* Receive Descriptor struct * Receive Descriptor struct
*/ */
struct s_smt_fp_rxd { struct s_smt_fp_rxd {
u_int rxd_rbctrl ; /* receive buffer control */ __le32 rxd_rbctrl ; /* receive buffer control */
u_int rxd_rfsw ; /* receive frame status word */ __le32 rxd_rfsw ; /* receive frame status word */
u_int rxd_rbadr ; /* physical rx buffer address */ __le32 rxd_rbadr ; /* physical rx buffer address */
u_int rxd_nrdadr ; /* physical pointer to the next RxD */ __le32 rxd_nrdadr ; /* physical pointer to the next RxD */
#ifdef ENA_64BIT_SUP #ifdef ENA_64BIT_SUP
u_int rxd_rbadr_hi ; /* physical tx buffer addr (high dword)*/ __le32 rxd_rbadr_hi ; /* physical tx buffer addr (high dword)*/
#endif #endif
char far *rxd_virt ; /* virtual pointer to the data frag */ char far *rxd_virt ; /* virtual pointer to the data frag */
/* virt pointer to the next RxD */ /* virt pointer to the next RxD */
......
...@@ -208,7 +208,7 @@ SMbuf* smt_get_mbuf(struct s_smc *smc); ...@@ -208,7 +208,7 @@ SMbuf* smt_get_mbuf(struct s_smc *smc);
#if defined(NDIS_OS2) || defined(ODI2) #if defined(NDIS_OS2) || defined(ODI2)
#define CR_READ(var) ((var) & 0xffff0000 | ((var) & 0xffff)) #define CR_READ(var) ((var) & 0xffff0000 | ((var) & 0xffff))
#else #else
#define CR_READ(var) (u_long)(var) #define CR_READ(var) (__le32)(var)
#endif #endif
#define IMASK_SLOW (IS_PLINT1 | IS_PLINT2 | IS_TIMINT | IS_TOKEN | \ #define IMASK_SLOW (IS_PLINT1 | IS_PLINT2 | IS_TIMINT | IS_TOKEN | \
...@@ -343,16 +343,16 @@ static u_long init_descr_ring(struct s_smc *smc, ...@@ -343,16 +343,16 @@ static u_long init_descr_ring(struct s_smc *smc,
for (i=count-1, d1=start; i ; i--) { for (i=count-1, d1=start; i ; i--) {
d2 = d1 ; d2 = d1 ;
d1++ ; /* descr is owned by the host */ d1++ ; /* descr is owned by the host */
d2->r.rxd_rbctrl = AIX_REVERSE(BMU_CHECK) ; d2->r.rxd_rbctrl = cpu_to_le32(BMU_CHECK) ;
d2->r.rxd_next = &d1->r ; d2->r.rxd_next = &d1->r ;
phys = mac_drv_virt2phys(smc,(void *)d1) ; phys = mac_drv_virt2phys(smc,(void *)d1) ;
d2->r.rxd_nrdadr = AIX_REVERSE(phys) ; d2->r.rxd_nrdadr = cpu_to_le32(phys) ;
} }
DB_GEN("descr ring ends at = %x ",(void *)d1,0,3) ; DB_GEN("descr ring ends at = %x ",(void *)d1,0,3) ;
d1->r.rxd_rbctrl = AIX_REVERSE(BMU_CHECK) ; d1->r.rxd_rbctrl = cpu_to_le32(BMU_CHECK) ;
d1->r.rxd_next = &start->r ; d1->r.rxd_next = &start->r ;
phys = mac_drv_virt2phys(smc,(void *)start) ; phys = mac_drv_virt2phys(smc,(void *)start) ;
d1->r.rxd_nrdadr = AIX_REVERSE(phys) ; d1->r.rxd_nrdadr = cpu_to_le32(phys) ;
for (i=count, d1=start; i ; i--) { for (i=count, d1=start; i ; i--) {
DRV_BUF_FLUSH(&d1->r,DDI_DMA_SYNC_FORDEV) ; DRV_BUF_FLUSH(&d1->r,DDI_DMA_SYNC_FORDEV) ;
...@@ -376,7 +376,7 @@ static void init_txd_ring(struct s_smc *smc) ...@@ -376,7 +376,7 @@ static void init_txd_ring(struct s_smc *smc)
DB_GEN("Init async TxD ring, %d TxDs ",HWM_ASYNC_TXD_COUNT,0,3) ; DB_GEN("Init async TxD ring, %d TxDs ",HWM_ASYNC_TXD_COUNT,0,3) ;
(void)init_descr_ring(smc,(union s_fp_descr volatile *)ds, (void)init_descr_ring(smc,(union s_fp_descr volatile *)ds,
HWM_ASYNC_TXD_COUNT) ; HWM_ASYNC_TXD_COUNT) ;
phys = AIX_REVERSE(ds->txd_ntdadr) ; phys = le32_to_cpu(ds->txd_ntdadr) ;
ds++ ; ds++ ;
queue->tx_curr_put = queue->tx_curr_get = ds ; queue->tx_curr_put = queue->tx_curr_get = ds ;
ds-- ; ds-- ;
...@@ -390,7 +390,7 @@ static void init_txd_ring(struct s_smc *smc) ...@@ -390,7 +390,7 @@ static void init_txd_ring(struct s_smc *smc)
DB_GEN("Init sync TxD ring, %d TxDs ",HWM_SYNC_TXD_COUNT,0,3) ; DB_GEN("Init sync TxD ring, %d TxDs ",HWM_SYNC_TXD_COUNT,0,3) ;
(void)init_descr_ring(smc,(union s_fp_descr volatile *)ds, (void)init_descr_ring(smc,(union s_fp_descr volatile *)ds,
HWM_SYNC_TXD_COUNT) ; HWM_SYNC_TXD_COUNT) ;
phys = AIX_REVERSE(ds->txd_ntdadr) ; phys = le32_to_cpu(ds->txd_ntdadr) ;
ds++ ; ds++ ;
queue->tx_curr_put = queue->tx_curr_get = ds ; queue->tx_curr_put = queue->tx_curr_get = ds ;
queue->tx_free = HWM_SYNC_TXD_COUNT ; queue->tx_free = HWM_SYNC_TXD_COUNT ;
...@@ -412,7 +412,7 @@ static void init_rxd_ring(struct s_smc *smc) ...@@ -412,7 +412,7 @@ static void init_rxd_ring(struct s_smc *smc)
DB_GEN("Init RxD ring, %d RxDs ",SMT_R1_RXD_COUNT,0,3) ; DB_GEN("Init RxD ring, %d RxDs ",SMT_R1_RXD_COUNT,0,3) ;
(void)init_descr_ring(smc,(union s_fp_descr volatile *)ds, (void)init_descr_ring(smc,(union s_fp_descr volatile *)ds,
SMT_R1_RXD_COUNT) ; SMT_R1_RXD_COUNT) ;
phys = AIX_REVERSE(ds->rxd_nrdadr) ; phys = le32_to_cpu(ds->rxd_nrdadr) ;
ds++ ; ds++ ;
queue->rx_curr_put = queue->rx_curr_get = ds ; queue->rx_curr_put = queue->rx_curr_get = ds ;
queue->rx_free = SMT_R1_RXD_COUNT ; queue->rx_free = SMT_R1_RXD_COUNT ;
...@@ -607,12 +607,12 @@ static u_long repair_txd_ring(struct s_smc *smc, struct s_smt_tx_queue *queue) ...@@ -607,12 +607,12 @@ static u_long repair_txd_ring(struct s_smc *smc, struct s_smt_tx_queue *queue)
for (i = tx_used+queue->tx_free-1 ; i ; i-- ) { for (i = tx_used+queue->tx_free-1 ; i ; i-- ) {
t = t->txd_next ; t = t->txd_next ;
} }
phys = AIX_REVERSE(t->txd_ntdadr) ; phys = le32_to_cpu(t->txd_ntdadr) ;
t = queue->tx_curr_get ; t = queue->tx_curr_get ;
while (tx_used) { while (tx_used) {
DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORCPU) ;
tbctrl = AIX_REVERSE(t->txd_tbctrl) ; tbctrl = le32_to_cpu(t->txd_tbctrl) ;
if (tbctrl & BMU_OWN) { if (tbctrl & BMU_OWN) {
if (tbctrl & BMU_STF) { if (tbctrl & BMU_STF) {
...@@ -622,10 +622,10 @@ static u_long repair_txd_ring(struct s_smc *smc, struct s_smt_tx_queue *queue) ...@@ -622,10 +622,10 @@ static u_long repair_txd_ring(struct s_smc *smc, struct s_smt_tx_queue *queue)
/* /*
* repair the descriptor * repair the descriptor
*/ */
t->txd_tbctrl &= AIX_REVERSE(~BMU_OWN) ; t->txd_tbctrl &= ~cpu_to_le32(BMU_OWN) ;
} }
} }
phys = AIX_REVERSE(t->txd_ntdadr) ; phys = le32_to_cpu(t->txd_ntdadr) ;
DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORDEV) ; DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORDEV) ;
t = t->txd_next ; t = t->txd_next ;
tx_used-- ; tx_used-- ;
...@@ -659,12 +659,12 @@ static u_long repair_rxd_ring(struct s_smc *smc, struct s_smt_rx_queue *queue) ...@@ -659,12 +659,12 @@ static u_long repair_rxd_ring(struct s_smc *smc, struct s_smt_rx_queue *queue)
for (i = SMT_R1_RXD_COUNT-1 ; i ; i-- ) { for (i = SMT_R1_RXD_COUNT-1 ; i ; i-- ) {
r = r->rxd_next ; r = r->rxd_next ;
} }
phys = AIX_REVERSE(r->rxd_nrdadr) ; phys = le32_to_cpu(r->rxd_nrdadr) ;
r = queue->rx_curr_get ; r = queue->rx_curr_get ;
while (rx_used) { while (rx_used) {
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
rbctrl = AIX_REVERSE(r->rxd_rbctrl) ; rbctrl = le32_to_cpu(r->rxd_rbctrl) ;
if (rbctrl & BMU_OWN) { if (rbctrl & BMU_OWN) {
if (rbctrl & BMU_STF) { if (rbctrl & BMU_STF) {
...@@ -674,10 +674,10 @@ static u_long repair_rxd_ring(struct s_smc *smc, struct s_smt_rx_queue *queue) ...@@ -674,10 +674,10 @@ static u_long repair_rxd_ring(struct s_smc *smc, struct s_smt_rx_queue *queue)
/* /*
* repair the descriptor * repair the descriptor
*/ */
r->rxd_rbctrl &= AIX_REVERSE(~BMU_OWN) ; r->rxd_rbctrl &= ~cpu_to_le32(BMU_OWN) ;
} }
} }
phys = AIX_REVERSE(r->rxd_nrdadr) ; phys = le32_to_cpu(r->rxd_nrdadr) ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORDEV) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORDEV) ;
r = r->rxd_next ; r = r->rxd_next ;
rx_used-- ; rx_used-- ;
...@@ -1094,8 +1094,7 @@ void process_receive(struct s_smc *smc) ...@@ -1094,8 +1094,7 @@ void process_receive(struct s_smc *smc)
do { do {
DB_RX("Check RxD %x for OWN and EOF",(void *)r,0,5) ; DB_RX("Check RxD %x for OWN and EOF",(void *)r,0,5) ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
rbctrl = CR_READ(r->rxd_rbctrl) ; rbctrl = le32_to_cpu(CR_READ(r->rxd_rbctrl));
rbctrl = AIX_REVERSE(rbctrl) ;
if (rbctrl & BMU_OWN) { if (rbctrl & BMU_OWN) {
NDD_TRACE("RHxE",r,rfsw,rbctrl) ; NDD_TRACE("RHxE",r,rfsw,rbctrl) ;
...@@ -1118,7 +1117,7 @@ void process_receive(struct s_smc *smc) ...@@ -1118,7 +1117,7 @@ void process_receive(struct s_smc *smc)
smc->os.hwm.detec_count = 0 ; smc->os.hwm.detec_count = 0 ;
goto rx_end ; goto rx_end ;
} }
rfsw = AIX_REVERSE(r->rxd_rfsw) ; rfsw = le32_to_cpu(r->rxd_rfsw) ;
if ((rbctrl & BMU_STF) != ((rbctrl & BMU_ST_BUF) <<5)) { if ((rbctrl & BMU_STF) != ((rbctrl & BMU_ST_BUF) <<5)) {
/* /*
* The BMU_STF bit is deleted, 1 frame is * The BMU_STF bit is deleted, 1 frame is
...@@ -1151,7 +1150,7 @@ void process_receive(struct s_smc *smc) ...@@ -1151,7 +1150,7 @@ void process_receive(struct s_smc *smc)
/* may be next 2 DRV_BUF_FLUSH() can be skipped, because */ /* may be next 2 DRV_BUF_FLUSH() can be skipped, because */
/* BMU_ST_BUF will not be changed by the ASIC */ /* BMU_ST_BUF will not be changed by the ASIC */
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
while (rx_used && !(r->rxd_rbctrl & AIX_REVERSE(BMU_ST_BUF))) { while (rx_used && !(r->rxd_rbctrl & cpu_to_le32(BMU_ST_BUF))) {
DB_RX("Check STF bit in %x",(void *)r,0,5) ; DB_RX("Check STF bit in %x",(void *)r,0,5) ;
r = r->rxd_next ; r = r->rxd_next ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
...@@ -1171,7 +1170,7 @@ void process_receive(struct s_smc *smc) ...@@ -1171,7 +1170,7 @@ void process_receive(struct s_smc *smc)
/* /*
* ASIC Errata no. 7 (STF - Bit Bug) * ASIC Errata no. 7 (STF - Bit Bug)
*/ */
rxd->rxd_rbctrl &= AIX_REVERSE(~BMU_STF) ; rxd->rxd_rbctrl &= cpu_to_le32(~BMU_STF) ;
for (r=rxd, i=frag_count ; i ; r=r->rxd_next, i--){ for (r=rxd, i=frag_count ; i ; r=r->rxd_next, i--){
DB_RX("dma_complete for RxD %x",(void *)r,0,5) ; DB_RX("dma_complete for RxD %x",(void *)r,0,5) ;
...@@ -1287,7 +1286,7 @@ void process_receive(struct s_smc *smc) ...@@ -1287,7 +1286,7 @@ void process_receive(struct s_smc *smc)
hwm_cpy_rxd2mb(rxd,data,len) ; hwm_cpy_rxd2mb(rxd,data,len) ;
#else #else
for (r=rxd, i=used_frags ; i ; r=r->rxd_next, i--){ for (r=rxd, i=used_frags ; i ; r=r->rxd_next, i--){
n = AIX_REVERSE(r->rxd_rbctrl) & RD_LENGTH ; n = le32_to_cpu(r->rxd_rbctrl) & RD_LENGTH ;
DB_RX("cp SMT frame to mb: len = %d",n,0,6) ; DB_RX("cp SMT frame to mb: len = %d",n,0,6) ;
memcpy(data,r->rxd_virt,n) ; memcpy(data,r->rxd_virt,n) ;
data += n ; data += n ;
...@@ -1426,14 +1425,14 @@ void hwm_rx_frag(struct s_smc *smc, char far *virt, u_long phys, int len, ...@@ -1426,14 +1425,14 @@ void hwm_rx_frag(struct s_smc *smc, char far *virt, u_long phys, int len,
int frame_status) int frame_status)
{ {
struct s_smt_fp_rxd volatile *r ; struct s_smt_fp_rxd volatile *r ;
u_int rbctrl ; __le32 rbctrl;
NDD_TRACE("RHfB",virt,len,frame_status) ; NDD_TRACE("RHfB",virt,len,frame_status) ;
DB_RX("hwm_rx_frag: len = %d, frame_status = %x\n",len,frame_status,2) ; DB_RX("hwm_rx_frag: len = %d, frame_status = %x\n",len,frame_status,2) ;
r = smc->hw.fp.rx_q[QUEUE_R1].rx_curr_put ; r = smc->hw.fp.rx_q[QUEUE_R1].rx_curr_put ;
r->rxd_virt = virt ; r->rxd_virt = virt ;
r->rxd_rbadr = AIX_REVERSE(phys) ; r->rxd_rbadr = cpu_to_le32(phys) ;
rbctrl = AIX_REVERSE( (((u_long)frame_status & rbctrl = cpu_to_le32( (((__u32)frame_status &
(FIRST_FRAG|LAST_FRAG))<<26) | (FIRST_FRAG|LAST_FRAG))<<26) |
(((u_long) frame_status & FIRST_FRAG) << 21) | (((u_long) frame_status & FIRST_FRAG) << 21) |
BMU_OWN | BMU_CHECK | BMU_EN_IRQ_EOF | len) ; BMU_OWN | BMU_CHECK | BMU_EN_IRQ_EOF | len) ;
...@@ -1444,7 +1443,7 @@ void hwm_rx_frag(struct s_smc *smc, char far *virt, u_long phys, int len, ...@@ -1444,7 +1443,7 @@ void hwm_rx_frag(struct s_smc *smc, char far *virt, u_long phys, int len,
smc->hw.fp.rx_q[QUEUE_R1].rx_free-- ; smc->hw.fp.rx_q[QUEUE_R1].rx_free-- ;
smc->hw.fp.rx_q[QUEUE_R1].rx_used++ ; smc->hw.fp.rx_q[QUEUE_R1].rx_used++ ;
smc->hw.fp.rx_q[QUEUE_R1].rx_curr_put = r->rxd_next ; smc->hw.fp.rx_q[QUEUE_R1].rx_curr_put = r->rxd_next ;
NDD_TRACE("RHfE",r,AIX_REVERSE(r->rxd_rbadr),0) ; NDD_TRACE("RHfE",r,le32_to_cpu(r->rxd_rbadr),0) ;
} }
/* /*
...@@ -1494,15 +1493,15 @@ void mac_drv_clear_rx_queue(struct s_smc *smc) ...@@ -1494,15 +1493,15 @@ void mac_drv_clear_rx_queue(struct s_smc *smc)
while (queue->rx_used) { while (queue->rx_used) {
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
DB_RX("switch OWN bit of RxD 0x%x ",r,0,5) ; DB_RX("switch OWN bit of RxD 0x%x ",r,0,5) ;
r->rxd_rbctrl &= AIX_REVERSE(~BMU_OWN) ; r->rxd_rbctrl &= ~cpu_to_le32(BMU_OWN) ;
frag_count = 1 ; frag_count = 1 ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORDEV) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORDEV) ;
r = r->rxd_next ; r = r->rxd_next ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
while (r != queue->rx_curr_put && while (r != queue->rx_curr_put &&
!(r->rxd_rbctrl & AIX_REVERSE(BMU_ST_BUF))) { !(r->rxd_rbctrl & cpu_to_le32(BMU_ST_BUF))) {
DB_RX("Check STF bit in %x",(void *)r,0,5) ; DB_RX("Check STF bit in %x",(void *)r,0,5) ;
r->rxd_rbctrl &= AIX_REVERSE(~BMU_OWN) ; r->rxd_rbctrl &= ~cpu_to_le32(BMU_OWN) ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORDEV) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORDEV) ;
r = r->rxd_next ; r = r->rxd_next ;
DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(r,DDI_DMA_SYNC_FORCPU) ;
...@@ -1640,7 +1639,7 @@ void hwm_tx_frag(struct s_smc *smc, char far *virt, u_long phys, int len, ...@@ -1640,7 +1639,7 @@ void hwm_tx_frag(struct s_smc *smc, char far *virt, u_long phys, int len,
{ {
struct s_smt_fp_txd volatile *t ; struct s_smt_fp_txd volatile *t ;
struct s_smt_tx_queue *queue ; struct s_smt_tx_queue *queue ;
u_int tbctrl ; __le32 tbctrl ;
queue = smc->os.hwm.tx_p ; queue = smc->os.hwm.tx_p ;
...@@ -1657,9 +1656,9 @@ void hwm_tx_frag(struct s_smc *smc, char far *virt, u_long phys, int len, ...@@ -1657,9 +1656,9 @@ void hwm_tx_frag(struct s_smc *smc, char far *virt, u_long phys, int len,
/* '*t' is already defined */ /* '*t' is already defined */
DB_TX("LAN_TX: TxD = %x, virt = %x ",t,virt,3) ; DB_TX("LAN_TX: TxD = %x, virt = %x ",t,virt,3) ;
t->txd_virt = virt ; t->txd_virt = virt ;
t->txd_txdscr = AIX_REVERSE(smc->os.hwm.tx_descr) ; t->txd_txdscr = cpu_to_le32(smc->os.hwm.tx_descr) ;
t->txd_tbadr = AIX_REVERSE(phys) ; t->txd_tbadr = cpu_to_le32(phys) ;
tbctrl = AIX_REVERSE((((u_long)frame_status & tbctrl = cpu_to_le32((((__u32)frame_status &
(FIRST_FRAG|LAST_FRAG|EN_IRQ_EOF))<< 26) | (FIRST_FRAG|LAST_FRAG|EN_IRQ_EOF))<< 26) |
BMU_OWN|BMU_CHECK |len) ; BMU_OWN|BMU_CHECK |len) ;
t->txd_tbctrl = tbctrl ; t->txd_tbctrl = tbctrl ;
...@@ -1826,7 +1825,7 @@ void smt_send_mbuf(struct s_smc *smc, SMbuf *mb, int fc) ...@@ -1826,7 +1825,7 @@ void smt_send_mbuf(struct s_smc *smc, SMbuf *mb, int fc)
struct s_smt_tx_queue *queue ; struct s_smt_tx_queue *queue ;
struct s_smt_fp_txd volatile *t ; struct s_smt_fp_txd volatile *t ;
u_long phys ; u_long phys ;
u_int tbctrl ; __le32 tbctrl;
NDD_TRACE("THSB",mb,fc,0) ; NDD_TRACE("THSB",mb,fc,0) ;
DB_TX("smt_send_mbuf: mb = 0x%x, fc = 0x%x",mb,fc,4) ; DB_TX("smt_send_mbuf: mb = 0x%x, fc = 0x%x",mb,fc,4) ;
...@@ -1894,14 +1893,14 @@ void smt_send_mbuf(struct s_smc *smc, SMbuf *mb, int fc) ...@@ -1894,14 +1893,14 @@ void smt_send_mbuf(struct s_smc *smc, SMbuf *mb, int fc)
DB_TX("init TxD = 0x%x",(void *)t,0,5) ; DB_TX("init TxD = 0x%x",(void *)t,0,5) ;
if (i == frag_count-1) { if (i == frag_count-1) {
frame_status |= LAST_FRAG ; frame_status |= LAST_FRAG ;
t->txd_txdscr = AIX_REVERSE(TX_DESCRIPTOR | t->txd_txdscr = cpu_to_le32(TX_DESCRIPTOR |
(((u_long)(mb->sm_len-1)&3) << 27)) ; (((__u32)(mb->sm_len-1)&3) << 27)) ;
} }
t->txd_virt = virt[i] ; t->txd_virt = virt[i] ;
phys = dma_master(smc, (void far *)virt[i], phys = dma_master(smc, (void far *)virt[i],
frag_len[i], DMA_RD|SMT_BUF) ; frag_len[i], DMA_RD|SMT_BUF) ;
t->txd_tbadr = AIX_REVERSE(phys) ; t->txd_tbadr = cpu_to_le32(phys) ;
tbctrl = AIX_REVERSE((((u_long) frame_status & tbctrl = cpu_to_le32((((__u32)frame_status &
(FIRST_FRAG|LAST_FRAG)) << 26) | (FIRST_FRAG|LAST_FRAG)) << 26) |
BMU_OWN | BMU_CHECK | BMU_SMT_TX |frag_len[i]) ; BMU_OWN | BMU_CHECK | BMU_SMT_TX |frag_len[i]) ;
t->txd_tbctrl = tbctrl ; t->txd_tbctrl = tbctrl ;
...@@ -1971,8 +1970,7 @@ static void mac_drv_clear_txd(struct s_smc *smc) ...@@ -1971,8 +1970,7 @@ static void mac_drv_clear_txd(struct s_smc *smc)
do { do {
DRV_BUF_FLUSH(t1,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(t1,DDI_DMA_SYNC_FORCPU) ;
DB_TX("check OWN/EOF bit of TxD 0x%x",t1,0,5) ; DB_TX("check OWN/EOF bit of TxD 0x%x",t1,0,5) ;
tbctrl = CR_READ(t1->txd_tbctrl) ; tbctrl = le32_to_cpu(CR_READ(t1->txd_tbctrl));
tbctrl = AIX_REVERSE(tbctrl) ;
if (tbctrl & BMU_OWN || !queue->tx_used){ if (tbctrl & BMU_OWN || !queue->tx_used){
DB_TX("End of TxDs queue %d",i,0,4) ; DB_TX("End of TxDs queue %d",i,0,4) ;
...@@ -1984,7 +1982,7 @@ static void mac_drv_clear_txd(struct s_smc *smc) ...@@ -1984,7 +1982,7 @@ static void mac_drv_clear_txd(struct s_smc *smc)
t1 = queue->tx_curr_get ; t1 = queue->tx_curr_get ;
for (n = frag_count; n; n--) { for (n = frag_count; n; n--) {
tbctrl = AIX_REVERSE(t1->txd_tbctrl) ; tbctrl = le32_to_cpu(t1->txd_tbctrl) ;
dma_complete(smc, dma_complete(smc,
(union s_fp_descr volatile *) t1, (union s_fp_descr volatile *) t1,
(int) (DMA_RD | (int) (DMA_RD |
...@@ -2064,7 +2062,7 @@ void mac_drv_clear_tx_queue(struct s_smc *smc) ...@@ -2064,7 +2062,7 @@ void mac_drv_clear_tx_queue(struct s_smc *smc)
while (tx_used) { while (tx_used) {
DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORCPU) ; DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORCPU) ;
DB_TX("switch OWN bit of TxD 0x%x ",t,0,5) ; DB_TX("switch OWN bit of TxD 0x%x ",t,0,5) ;
t->txd_tbctrl &= AIX_REVERSE(~BMU_OWN) ; t->txd_tbctrl &= ~cpu_to_le32(BMU_OWN) ;
DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORDEV) ; DRV_BUF_FLUSH(t,DDI_DMA_SYNC_FORDEV) ;
t = t->txd_next ; t = t->txd_next ;
tx_used-- ; tx_used-- ;
...@@ -2086,10 +2084,10 @@ void mac_drv_clear_tx_queue(struct s_smc *smc) ...@@ -2086,10 +2084,10 @@ void mac_drv_clear_tx_queue(struct s_smc *smc)
* tx_curr_get and tx_curr_put to this position * tx_curr_get and tx_curr_put to this position
*/ */
if (i == QUEUE_S) { if (i == QUEUE_S) {
outpd(ADDR(B5_XS_DA),AIX_REVERSE(t->txd_ntdadr)) ; outpd(ADDR(B5_XS_DA),le32_to_cpu(t->txd_ntdadr)) ;
} }
else { else {
outpd(ADDR(B5_XA_DA),AIX_REVERSE(t->txd_ntdadr)) ; outpd(ADDR(B5_XA_DA),le32_to_cpu(t->txd_ntdadr)) ;
} }
queue->tx_curr_put = queue->tx_curr_get->txd_next ; queue->tx_curr_put = queue->tx_curr_get->txd_next ;
......
...@@ -495,7 +495,7 @@ static int skfp_open(struct net_device *dev) ...@@ -495,7 +495,7 @@ static int skfp_open(struct net_device *dev)
PRINTK(KERN_INFO "entering skfp_open\n"); PRINTK(KERN_INFO "entering skfp_open\n");
/* Register IRQ - support shared interrupts by passing device ptr */ /* Register IRQ - support shared interrupts by passing device ptr */
err = request_irq(dev->irq, (void *) skfp_interrupt, IRQF_SHARED, err = request_irq(dev->irq, skfp_interrupt, IRQF_SHARED,
dev->name, dev); dev->name, dev);
if (err) if (err)
return err; return err;
...@@ -1644,7 +1644,7 @@ void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, ...@@ -1644,7 +1644,7 @@ void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
// Get RIF length from Routing Control (RC) field. // Get RIF length from Routing Control (RC) field.
cp = virt + FDDI_MAC_HDR_LEN; // Point behind MAC header. cp = virt + FDDI_MAC_HDR_LEN; // Point behind MAC header.
ri = ntohs(*((unsigned short *) cp)); ri = ntohs(*((__be16 *) cp));
RifLength = ri & FDDI_RCF_LEN_MASK; RifLength = ri & FDDI_RCF_LEN_MASK;
if (len < (int) (FDDI_MAC_HDR_LEN + RifLength)) { if (len < (int) (FDDI_MAC_HDR_LEN + RifLength)) {
printk("fddi: Invalid RIF.\n"); printk("fddi: Invalid RIF.\n");
......
...@@ -155,7 +155,7 @@ static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value) ...@@ -155,7 +155,7 @@ static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
dm_write_async_helper(dev, reg, value, 0, NULL); dm_write_async_helper(dev, reg, value, 0, NULL);
} }
static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, u16 *value) static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *value)
{ {
int ret, i; int ret, i;
...@@ -194,7 +194,7 @@ static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, u16 *value) ...@@ -194,7 +194,7 @@ static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, u16 *value)
return ret; return ret;
} }
static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, u16 value) static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 value)
{ {
int ret, i; int ret, i;
...@@ -249,7 +249,7 @@ static int dm9601_get_eeprom(struct net_device *net, ...@@ -249,7 +249,7 @@ static int dm9601_get_eeprom(struct net_device *net,
struct ethtool_eeprom *eeprom, u8 * data) struct ethtool_eeprom *eeprom, u8 * data)
{ {
struct usbnet *dev = netdev_priv(net); struct usbnet *dev = netdev_priv(net);
u16 *ebuf = (u16 *) data; __le16 *ebuf = (__le16 *) data;
int i; int i;
/* access is 16bit */ /* access is 16bit */
...@@ -268,7 +268,7 @@ static int dm9601_mdio_read(struct net_device *netdev, int phy_id, int loc) ...@@ -268,7 +268,7 @@ static int dm9601_mdio_read(struct net_device *netdev, int phy_id, int loc)
{ {
struct usbnet *dev = netdev_priv(netdev); struct usbnet *dev = netdev_priv(netdev);
u16 res; __le16 res;
if (phy_id) { if (phy_id) {
devdbg(dev, "Only internal phy supported"); devdbg(dev, "Only internal phy supported");
...@@ -288,7 +288,7 @@ static void dm9601_mdio_write(struct net_device *netdev, int phy_id, int loc, ...@@ -288,7 +288,7 @@ static void dm9601_mdio_write(struct net_device *netdev, int phy_id, int loc,
int val) int val)
{ {
struct usbnet *dev = netdev_priv(netdev); struct usbnet *dev = netdev_priv(netdev);
u16 res = cpu_to_le16(val); __le16 res = cpu_to_le16(val);
if (phy_id) { if (phy_id) {
devdbg(dev, "Only internal phy supported"); devdbg(dev, "Only internal phy supported");
......
...@@ -218,7 +218,7 @@ EXPORT_SYMBOL_GPL(rndis_command); ...@@ -218,7 +218,7 @@ EXPORT_SYMBOL_GPL(rndis_command);
* ActiveSync 4.1 Windows driver. * ActiveSync 4.1 Windows driver.
*/ */
static int rndis_query(struct usbnet *dev, struct usb_interface *intf, static int rndis_query(struct usbnet *dev, struct usb_interface *intf,
void *buf, u32 oid, u32 in_len, void *buf, __le32 oid, u32 in_len,
void **reply, int *reply_len) void **reply, int *reply_len)
{ {
int retval; int retval;
...@@ -283,7 +283,8 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) ...@@ -283,7 +283,8 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
struct rndis_set_c *set_c; struct rndis_set_c *set_c;
struct rndis_halt *halt; struct rndis_halt *halt;
} u; } u;
u32 tmp, *phym; u32 tmp;
__le32 *phym;
int reply_len; int reply_len;
unsigned char *bp; unsigned char *bp;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册