You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/usb/rndis_host.c drivers/net/wireless/b43/dma.c net/ipv6/ndisc.c
This commit is contained in:
+1
-1
@@ -2101,7 +2101,7 @@ M: reinette.chatre@intel.com
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: ipw3945-devel@lists.sourceforge.net
|
||||
W: http://intellinuxwireless.org
|
||||
T: git git://intellinuxwireless.org/repos/iwlwifi
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rchatre/iwlwifi-2.6.git
|
||||
S: Supported
|
||||
|
||||
IOC3 ETHERNET DRIVER
|
||||
|
||||
@@ -256,11 +256,7 @@ static struct net_device_stats *uml_net_get_stats(struct net_device *dev)
|
||||
|
||||
static void uml_net_set_multicast_list(struct net_device *dev)
|
||||
{
|
||||
if (dev->flags & IFF_PROMISC)
|
||||
return;
|
||||
else if (dev->mc_count)
|
||||
dev->flags |= IFF_ALLMULTI;
|
||||
else dev->flags &= ~IFF_ALLMULTI;
|
||||
}
|
||||
|
||||
static void uml_net_tx_timeout(struct net_device *dev)
|
||||
|
||||
@@ -2082,6 +2082,11 @@ static int __devinit b44_get_invariants(struct b44 *bp)
|
||||
addr = sdev->bus->sprom.et0mac;
|
||||
bp->phy_addr = sdev->bus->sprom.et0phyaddr;
|
||||
}
|
||||
/* Some ROMs have buggy PHY addresses with the high
|
||||
* bits set (sign extension?). Truncate them to a
|
||||
* valid PHY address. */
|
||||
bp->phy_addr &= 0x1F;
|
||||
|
||||
memcpy(bp->dev->dev_addr, addr, 6);
|
||||
|
||||
if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){
|
||||
|
||||
@@ -310,7 +310,7 @@ static inline int __check_agg_selection_timer(struct port *port)
|
||||
*/
|
||||
static inline void __get_rx_machine_lock(struct port *port)
|
||||
{
|
||||
spin_lock(&(SLAVE_AD_INFO(port->slave).rx_machine_lock));
|
||||
spin_lock_bh(&(SLAVE_AD_INFO(port->slave).rx_machine_lock));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -320,7 +320,7 @@ static inline void __get_rx_machine_lock(struct port *port)
|
||||
*/
|
||||
static inline void __release_rx_machine_lock(struct port *port)
|
||||
{
|
||||
spin_unlock(&(SLAVE_AD_INFO(port->slave).rx_machine_lock));
|
||||
spin_unlock_bh(&(SLAVE_AD_INFO(port->slave).rx_machine_lock));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -678,12 +678,8 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon
|
||||
}
|
||||
|
||||
if (!list_empty(&bond->vlan_list)) {
|
||||
unsigned short vlan_id;
|
||||
int res = vlan_get_tag(skb, &vlan_id);
|
||||
if (!res) {
|
||||
if (!vlan_get_tag(skb, &client_info->vlan_id))
|
||||
client_info->tag = 1;
|
||||
client_info->vlan_id = vlan_id;
|
||||
}
|
||||
}
|
||||
|
||||
if (!client_info->assigned) {
|
||||
|
||||
@@ -383,7 +383,7 @@ struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr)
|
||||
*/
|
||||
int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev)
|
||||
{
|
||||
unsigned short vlan_id;
|
||||
unsigned short uninitialized_var(vlan_id);
|
||||
|
||||
if (!list_empty(&bond->vlan_list) &&
|
||||
!(slave_dev->features & NETIF_F_HW_VLAN_TX) &&
|
||||
@@ -4528,8 +4528,7 @@ static void bond_free_all(void)
|
||||
netif_tx_unlock_bh(bond_dev);
|
||||
/* Release the bonded slaves */
|
||||
bond_release_all(bond_dev);
|
||||
bond_deinit(bond_dev);
|
||||
unregister_netdevice(bond_dev);
|
||||
bond_destroy(bond);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
#include "bond_3ad.h"
|
||||
#include "bond_alb.h"
|
||||
|
||||
#define DRV_VERSION "3.2.4"
|
||||
#define DRV_RELDATE "January 28, 2008"
|
||||
#define DRV_VERSION "3.2.5"
|
||||
#define DRV_RELDATE "March 21, 2008"
|
||||
#define DRV_NAME "bonding"
|
||||
#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
|
||||
|
||||
|
||||
@@ -557,9 +557,9 @@ static void t3_free_qset(struct adapter *adapter, struct sge_qset *q)
|
||||
|
||||
for (i = 0; i < SGE_RXQ_PER_SET; ++i)
|
||||
if (q->fl[i].desc) {
|
||||
spin_lock(&adapter->sge.reg_lock);
|
||||
spin_lock_irq(&adapter->sge.reg_lock);
|
||||
t3_sge_disable_fl(adapter, q->fl[i].cntxt_id);
|
||||
spin_unlock(&adapter->sge.reg_lock);
|
||||
spin_unlock_irq(&adapter->sge.reg_lock);
|
||||
free_rx_bufs(pdev, &q->fl[i]);
|
||||
kfree(q->fl[i].sdesc);
|
||||
dma_free_coherent(&pdev->dev,
|
||||
@@ -570,9 +570,9 @@ static void t3_free_qset(struct adapter *adapter, struct sge_qset *q)
|
||||
|
||||
for (i = 0; i < SGE_TXQ_PER_SET; ++i)
|
||||
if (q->txq[i].desc) {
|
||||
spin_lock(&adapter->sge.reg_lock);
|
||||
spin_lock_irq(&adapter->sge.reg_lock);
|
||||
t3_sge_enable_ecntxt(adapter, q->txq[i].cntxt_id, 0);
|
||||
spin_unlock(&adapter->sge.reg_lock);
|
||||
spin_unlock_irq(&adapter->sge.reg_lock);
|
||||
if (q->txq[i].sdesc) {
|
||||
free_tx_desc(adapter, &q->txq[i],
|
||||
q->txq[i].in_use);
|
||||
@@ -586,9 +586,9 @@ static void t3_free_qset(struct adapter *adapter, struct sge_qset *q)
|
||||
}
|
||||
|
||||
if (q->rspq.desc) {
|
||||
spin_lock(&adapter->sge.reg_lock);
|
||||
spin_lock_irq(&adapter->sge.reg_lock);
|
||||
t3_sge_disable_rspcntxt(adapter, q->rspq.cntxt_id);
|
||||
spin_unlock(&adapter->sge.reg_lock);
|
||||
spin_unlock_irq(&adapter->sge.reg_lock);
|
||||
dma_free_coherent(&pdev->dev,
|
||||
q->rspq.size * sizeof(struct rsp_desc),
|
||||
q->rspq.desc, q->rspq.phys_addr);
|
||||
@@ -2667,7 +2667,7 @@ int t3_sge_alloc_qset(struct adapter *adapter, unsigned int id, int nports,
|
||||
(16 * 1024) - SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) :
|
||||
MAX_FRAME_SIZE + 2 + sizeof(struct cpl_rx_pkt);
|
||||
|
||||
spin_lock(&adapter->sge.reg_lock);
|
||||
spin_lock_irq(&adapter->sge.reg_lock);
|
||||
|
||||
/* FL threshold comparison uses < */
|
||||
ret = t3_sge_init_rspcntxt(adapter, q->rspq.cntxt_id, irq_vec_idx,
|
||||
@@ -2711,7 +2711,7 @@ int t3_sge_alloc_qset(struct adapter *adapter, unsigned int id, int nports,
|
||||
goto err_unlock;
|
||||
}
|
||||
|
||||
spin_unlock(&adapter->sge.reg_lock);
|
||||
spin_unlock_irq(&adapter->sge.reg_lock);
|
||||
|
||||
q->adap = adapter;
|
||||
q->netdev = dev;
|
||||
@@ -2728,7 +2728,7 @@ int t3_sge_alloc_qset(struct adapter *adapter, unsigned int id, int nports,
|
||||
return 0;
|
||||
|
||||
err_unlock:
|
||||
spin_unlock(&adapter->sge.reg_lock);
|
||||
spin_unlock_irq(&adapter->sge.reg_lock);
|
||||
err:
|
||||
t3_free_qset(adapter, q);
|
||||
return ret;
|
||||
|
||||
@@ -798,8 +798,6 @@ dm9000_init_dm9000(struct net_device *dev)
|
||||
/* Set address filter table */
|
||||
dm9000_hash_table(dev);
|
||||
|
||||
/* Activate DM9000 */
|
||||
iow(db, DM9000_RCR, RCR_DIS_LONG | RCR_DIS_CRC | RCR_RXEN);
|
||||
/* Enable TX/RX interrupt mask */
|
||||
iow(db, DM9000_IMR, IMR_PAR | IMR_PTM | IMR_PRM);
|
||||
|
||||
@@ -1197,6 +1195,7 @@ dm9000_hash_table(struct net_device *dev)
|
||||
int i, oft;
|
||||
u32 hash_val;
|
||||
u16 hash_table[4];
|
||||
u8 rcr = RCR_DIS_LONG | RCR_DIS_CRC | RCR_RXEN;
|
||||
unsigned long flags;
|
||||
|
||||
dm9000_dbg(db, 1, "entering %s\n", __func__);
|
||||
@@ -1213,6 +1212,12 @@ dm9000_hash_table(struct net_device *dev)
|
||||
/* broadcast address */
|
||||
hash_table[3] = 0x8000;
|
||||
|
||||
if (dev->flags & IFF_PROMISC)
|
||||
rcr |= RCR_PRMSC;
|
||||
|
||||
if (dev->flags & IFF_ALLMULTI)
|
||||
rcr |= RCR_ALL;
|
||||
|
||||
/* the multicast address in Hash Table : 64 bits */
|
||||
for (i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
|
||||
hash_val = ether_crc_le(6, mcptr->dmi_addr) & 0x3f;
|
||||
@@ -1225,6 +1230,7 @@ dm9000_hash_table(struct net_device *dev)
|
||||
iow(db, oft++, hash_table[i] >> 8);
|
||||
}
|
||||
|
||||
iow(db, DM9000_RCR, rcr);
|
||||
spin_unlock_irqrestore(&db->lock, flags);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -960,7 +960,7 @@ static void e100_get_defaults(struct nic *nic)
|
||||
|
||||
/* Template for a freshly allocated RFD */
|
||||
nic->blank_rfd.command = 0;
|
||||
nic->blank_rfd.rbd = 0xFFFFFFFF;
|
||||
nic->blank_rfd.rbd = cpu_to_le32(0xFFFFFFFF);
|
||||
nic->blank_rfd.size = cpu_to_le16(VLAN_ETH_FRAME_LEN);
|
||||
|
||||
/* MII setup */
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include <asm/io.h>
|
||||
|
||||
#define DRV_NAME "ehea"
|
||||
#define DRV_VERSION "EHEA_0087"
|
||||
#define DRV_VERSION "EHEA_0089"
|
||||
|
||||
/* eHEA capability flags */
|
||||
#define DLPAR_PORT_ADD_REM 1
|
||||
|
||||
@@ -3108,7 +3108,7 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
|
||||
dev->vlan_rx_add_vid = ehea_vlan_rx_add_vid;
|
||||
dev->vlan_rx_kill_vid = ehea_vlan_rx_kill_vid;
|
||||
dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO
|
||||
| NETIF_F_HIGHDMA | NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_TX
|
||||
| NETIF_F_HIGHDMA | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX
|
||||
| NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER
|
||||
| NETIF_F_LLTX;
|
||||
dev->tx_timeout = &ehea_tx_watchdog;
|
||||
|
||||
@@ -61,28 +61,28 @@
|
||||
/* Receive Descriptor - Advanced */
|
||||
union e1000_adv_rx_desc {
|
||||
struct {
|
||||
u64 pkt_addr; /* Packet buffer address */
|
||||
u64 hdr_addr; /* Header buffer address */
|
||||
__le64 pkt_addr; /* Packet buffer address */
|
||||
__le64 hdr_addr; /* Header buffer address */
|
||||
} read;
|
||||
struct {
|
||||
struct {
|
||||
struct {
|
||||
u16 pkt_info; /* RSS type, Packet type */
|
||||
u16 hdr_info; /* Split Header,
|
||||
__le16 pkt_info; /* RSS type, Packet type */
|
||||
__le16 hdr_info; /* Split Header,
|
||||
* header buffer length */
|
||||
} lo_dword;
|
||||
union {
|
||||
u32 rss; /* RSS Hash */
|
||||
__le32 rss; /* RSS Hash */
|
||||
struct {
|
||||
u16 ip_id; /* IP id */
|
||||
u16 csum; /* Packet Checksum */
|
||||
__le16 ip_id; /* IP id */
|
||||
__le16 csum; /* Packet Checksum */
|
||||
} csum_ip;
|
||||
} hi_dword;
|
||||
} lower;
|
||||
struct {
|
||||
u32 status_error; /* ext status/error */
|
||||
u16 length; /* Packet length */
|
||||
u16 vlan; /* VLAN tag */
|
||||
__le32 status_error; /* ext status/error */
|
||||
__le16 length; /* Packet length */
|
||||
__le16 vlan; /* VLAN tag */
|
||||
} upper;
|
||||
} wb; /* writeback */
|
||||
};
|
||||
@@ -97,14 +97,14 @@ union e1000_adv_rx_desc {
|
||||
/* Transmit Descriptor - Advanced */
|
||||
union e1000_adv_tx_desc {
|
||||
struct {
|
||||
u64 buffer_addr; /* Address of descriptor's data buf */
|
||||
u32 cmd_type_len;
|
||||
u32 olinfo_status;
|
||||
__le64 buffer_addr; /* Address of descriptor's data buf */
|
||||
__le32 cmd_type_len;
|
||||
__le32 olinfo_status;
|
||||
} read;
|
||||
struct {
|
||||
u64 rsvd; /* Reserved */
|
||||
u32 nxtseq_seed;
|
||||
u32 status;
|
||||
__le64 rsvd; /* Reserved */
|
||||
__le32 nxtseq_seed;
|
||||
__le32 status;
|
||||
} wb;
|
||||
};
|
||||
|
||||
@@ -119,10 +119,10 @@ union e1000_adv_tx_desc {
|
||||
|
||||
/* Context descriptors */
|
||||
struct e1000_adv_tx_context_desc {
|
||||
u32 vlan_macip_lens;
|
||||
u32 seqnum_seed;
|
||||
u32 type_tucmd_mlhl;
|
||||
u32 mss_l4len_idx;
|
||||
__le32 vlan_macip_lens;
|
||||
__le32 seqnum_seed;
|
||||
__le32 type_tucmd_mlhl;
|
||||
__le32 mss_l4len_idx;
|
||||
};
|
||||
|
||||
#define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */
|
||||
|
||||
+41
-41
@@ -143,35 +143,35 @@ enum e1000_fc_type {
|
||||
|
||||
/* Receive Descriptor */
|
||||
struct e1000_rx_desc {
|
||||
u64 buffer_addr; /* Address of the descriptor's data buffer */
|
||||
u16 length; /* Length of data DMAed into data buffer */
|
||||
u16 csum; /* Packet checksum */
|
||||
__le64 buffer_addr; /* Address of the descriptor's data buffer */
|
||||
__le16 length; /* Length of data DMAed into data buffer */
|
||||
__le16 csum; /* Packet checksum */
|
||||
u8 status; /* Descriptor status */
|
||||
u8 errors; /* Descriptor Errors */
|
||||
u16 special;
|
||||
__le16 special;
|
||||
};
|
||||
|
||||
/* Receive Descriptor - Extended */
|
||||
union e1000_rx_desc_extended {
|
||||
struct {
|
||||
u64 buffer_addr;
|
||||
u64 reserved;
|
||||
__le64 buffer_addr;
|
||||
__le64 reserved;
|
||||
} read;
|
||||
struct {
|
||||
struct {
|
||||
u32 mrq; /* Multiple Rx Queues */
|
||||
__le32 mrq; /* Multiple Rx Queues */
|
||||
union {
|
||||
u32 rss; /* RSS Hash */
|
||||
__le32 rss; /* RSS Hash */
|
||||
struct {
|
||||
u16 ip_id; /* IP id */
|
||||
u16 csum; /* Packet Checksum */
|
||||
__le16 ip_id; /* IP id */
|
||||
__le16 csum; /* Packet Checksum */
|
||||
} csum_ip;
|
||||
} hi_dword;
|
||||
} lower;
|
||||
struct {
|
||||
u32 status_error; /* ext status/error */
|
||||
u16 length;
|
||||
u16 vlan; /* VLAN tag */
|
||||
__le32 status_error; /* ext status/error */
|
||||
__le16 length;
|
||||
__le16 vlan; /* VLAN tag */
|
||||
} upper;
|
||||
} wb; /* writeback */
|
||||
};
|
||||
@@ -181,49 +181,49 @@ union e1000_rx_desc_extended {
|
||||
union e1000_rx_desc_packet_split {
|
||||
struct {
|
||||
/* one buffer for protocol header(s), three data buffers */
|
||||
u64 buffer_addr[MAX_PS_BUFFERS];
|
||||
__le64 buffer_addr[MAX_PS_BUFFERS];
|
||||
} read;
|
||||
struct {
|
||||
struct {
|
||||
u32 mrq; /* Multiple Rx Queues */
|
||||
__le32 mrq; /* Multiple Rx Queues */
|
||||
union {
|
||||
u32 rss; /* RSS Hash */
|
||||
__le32 rss; /* RSS Hash */
|
||||
struct {
|
||||
u16 ip_id; /* IP id */
|
||||
u16 csum; /* Packet Checksum */
|
||||
__le16 ip_id; /* IP id */
|
||||
__le16 csum; /* Packet Checksum */
|
||||
} csum_ip;
|
||||
} hi_dword;
|
||||
} lower;
|
||||
struct {
|
||||
u32 status_error; /* ext status/error */
|
||||
u16 length0; /* length of buffer 0 */
|
||||
u16 vlan; /* VLAN tag */
|
||||
__le32 status_error; /* ext status/error */
|
||||
__le16 length0; /* length of buffer 0 */
|
||||
__le16 vlan; /* VLAN tag */
|
||||
} middle;
|
||||
struct {
|
||||
u16 header_status;
|
||||
u16 length[3]; /* length of buffers 1-3 */
|
||||
__le16 header_status;
|
||||
__le16 length[3]; /* length of buffers 1-3 */
|
||||
} upper;
|
||||
u64 reserved;
|
||||
__le64 reserved;
|
||||
} wb; /* writeback */
|
||||
};
|
||||
|
||||
/* Transmit Descriptor */
|
||||
struct e1000_tx_desc {
|
||||
u64 buffer_addr; /* Address of the descriptor's data buffer */
|
||||
__le64 buffer_addr; /* Address of the descriptor's data buffer */
|
||||
union {
|
||||
u32 data;
|
||||
__le32 data;
|
||||
struct {
|
||||
u16 length; /* Data buffer length */
|
||||
__le16 length; /* Data buffer length */
|
||||
u8 cso; /* Checksum offset */
|
||||
u8 cmd; /* Descriptor control */
|
||||
} flags;
|
||||
} lower;
|
||||
union {
|
||||
u32 data;
|
||||
__le32 data;
|
||||
struct {
|
||||
u8 status; /* Descriptor status */
|
||||
u8 css; /* Checksum start */
|
||||
u16 special;
|
||||
__le16 special;
|
||||
} fields;
|
||||
} upper;
|
||||
};
|
||||
@@ -231,49 +231,49 @@ struct e1000_tx_desc {
|
||||
/* Offload Context Descriptor */
|
||||
struct e1000_context_desc {
|
||||
union {
|
||||
u32 ip_config;
|
||||
__le32 ip_config;
|
||||
struct {
|
||||
u8 ipcss; /* IP checksum start */
|
||||
u8 ipcso; /* IP checksum offset */
|
||||
u16 ipcse; /* IP checksum end */
|
||||
__le16 ipcse; /* IP checksum end */
|
||||
} ip_fields;
|
||||
} lower_setup;
|
||||
union {
|
||||
u32 tcp_config;
|
||||
__le32 tcp_config;
|
||||
struct {
|
||||
u8 tucss; /* TCP checksum start */
|
||||
u8 tucso; /* TCP checksum offset */
|
||||
u16 tucse; /* TCP checksum end */
|
||||
__le16 tucse; /* TCP checksum end */
|
||||
} tcp_fields;
|
||||
} upper_setup;
|
||||
u32 cmd_and_length;
|
||||
__le32 cmd_and_length;
|
||||
union {
|
||||
u32 data;
|
||||
__le32 data;
|
||||
struct {
|
||||
u8 status; /* Descriptor status */
|
||||
u8 hdr_len; /* Header length */
|
||||
u16 mss; /* Maximum segment size */
|
||||
__le16 mss; /* Maximum segment size */
|
||||
} fields;
|
||||
} tcp_seg_setup;
|
||||
};
|
||||
|
||||
/* Offload data descriptor */
|
||||
struct e1000_data_desc {
|
||||
u64 buffer_addr; /* Address of the descriptor's buffer address */
|
||||
__le64 buffer_addr; /* Address of the descriptor's buffer address */
|
||||
union {
|
||||
u32 data;
|
||||
__le32 data;
|
||||
struct {
|
||||
u16 length; /* Data buffer length */
|
||||
__le16 length; /* Data buffer length */
|
||||
u8 typ_len_ext;
|
||||
u8 cmd;
|
||||
} flags;
|
||||
} lower;
|
||||
union {
|
||||
u32 data;
|
||||
__le32 data;
|
||||
struct {
|
||||
u8 status; /* Descriptor status */
|
||||
u8 popts; /* Packet Options */
|
||||
u16 special;
|
||||
__le16 special;
|
||||
} fields;
|
||||
} upper;
|
||||
};
|
||||
|
||||
@@ -3254,6 +3254,13 @@ quit_polling:
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline u32 get_head(struct igb_ring *tx_ring)
|
||||
{
|
||||
void *end = (struct e1000_tx_desc *)tx_ring->desc + tx_ring->count;
|
||||
return le32_to_cpu(*(volatile __le32 *)end);
|
||||
}
|
||||
|
||||
/**
|
||||
* igb_clean_tx_irq - Reclaim resources after transmit completes
|
||||
* @adapter: board private structure
|
||||
@@ -3275,9 +3282,7 @@ static bool igb_clean_tx_irq(struct igb_adapter *adapter,
|
||||
unsigned int total_bytes = 0, total_packets = 0;
|
||||
|
||||
rmb();
|
||||
head = *(volatile u32 *)((struct e1000_tx_desc *)tx_ring->desc
|
||||
+ tx_ring->count);
|
||||
head = le32_to_cpu(head);
|
||||
head = get_head(tx_ring);
|
||||
i = tx_ring->next_to_clean;
|
||||
while (1) {
|
||||
while (i != head) {
|
||||
@@ -3312,9 +3317,7 @@ static bool igb_clean_tx_irq(struct igb_adapter *adapter,
|
||||
}
|
||||
oldhead = head;
|
||||
rmb();
|
||||
head = *(volatile u32 *)((struct e1000_tx_desc *)tx_ring->desc
|
||||
+ tx_ring->count);
|
||||
head = le32_to_cpu(head);
|
||||
head = get_head(tx_ring);
|
||||
if (head == oldhead)
|
||||
goto done_cleaning;
|
||||
} /* while (1) */
|
||||
@@ -3388,7 +3391,7 @@ done_cleaning:
|
||||
* @vlan: descriptor vlan field as written by hardware (no le/be conversion)
|
||||
* @skb: pointer to sk_buff to be indicated to stack
|
||||
**/
|
||||
static void igb_receive_skb(struct igb_adapter *adapter, u8 status, u16 vlan,
|
||||
static void igb_receive_skb(struct igb_adapter *adapter, u8 status, __le16 vlan,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
if (adapter->vlgrp && (status & E1000_RXD_STAT_VP))
|
||||
@@ -3452,8 +3455,8 @@ static bool igb_clean_rx_irq_adv(struct igb_adapter *adapter,
|
||||
* that case, it fills the header buffer and spills the rest
|
||||
* into the page.
|
||||
*/
|
||||
hlen = le16_to_cpu((rx_desc->wb.lower.lo_dword.hdr_info &
|
||||
E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT);
|
||||
hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hdr_info) &
|
||||
E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT;
|
||||
if (hlen > adapter->rx_ps_hdr_size)
|
||||
hlen = adapter->rx_ps_hdr_size;
|
||||
|
||||
|
||||
@@ -2092,14 +2092,12 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter)
|
||||
struct ixgb_buffer *buffer_info;
|
||||
struct sk_buff *skb;
|
||||
unsigned int i;
|
||||
int num_group_tail_writes;
|
||||
long cleancount;
|
||||
|
||||
i = rx_ring->next_to_use;
|
||||
buffer_info = &rx_ring->buffer_info[i];
|
||||
cleancount = IXGB_DESC_UNUSED(rx_ring);
|
||||
|
||||
num_group_tail_writes = IXGB_RX_BUFFER_WRITE;
|
||||
|
||||
/* leave three descriptors unused */
|
||||
while(--cleancount > 2) {
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
(sizeof(struct netxen_cmd_buffer) * adapter->max_tx_desc_count)
|
||||
#define RCV_BUFFSIZE \
|
||||
(sizeof(struct netxen_rx_buffer) * rcv_desc->max_rx_desc_count)
|
||||
#define find_diff_among(a,b,range) ((a)<=(b)?((b)-(a)):((b)+(range)-(a)))
|
||||
#define find_diff_among(a,b,range) ((a)<(b)?((b)-(a)):((b)+(range)-(a)))
|
||||
|
||||
#define NETXEN_NETDEV_STATUS 0x1
|
||||
#define NETXEN_RCV_PRODUCER_OFFSET 0
|
||||
@@ -204,7 +204,7 @@ enum {
|
||||
? RCV_DESC_LRO : \
|
||||
(RCV_DESC_NORMAL)))
|
||||
|
||||
#define MAX_CMD_DESCRIPTORS 1024
|
||||
#define MAX_CMD_DESCRIPTORS 4096
|
||||
#define MAX_RCV_DESCRIPTORS 16384
|
||||
#define MAX_CMD_DESCRIPTORS_HOST (MAX_CMD_DESCRIPTORS / 4)
|
||||
#define MAX_RCV_DESCRIPTORS_1G (MAX_RCV_DESCRIPTORS / 4)
|
||||
@@ -818,15 +818,8 @@ struct netxen_adapter_stats {
|
||||
u64 badskblen;
|
||||
u64 nocmddescriptor;
|
||||
u64 polled;
|
||||
u64 uphappy;
|
||||
u64 updropped;
|
||||
u64 uplcong;
|
||||
u64 uphcong;
|
||||
u64 upmcong;
|
||||
u64 updunno;
|
||||
u64 skbfreed;
|
||||
u64 rxdropped;
|
||||
u64 txdropped;
|
||||
u64 txnullskb;
|
||||
u64 csummed;
|
||||
u64 no_rcv;
|
||||
u64 rxbytes;
|
||||
@@ -842,7 +835,6 @@ struct netxen_rcv_desc_ctx {
|
||||
u32 flags;
|
||||
u32 producer;
|
||||
u32 rcv_pending; /* Num of bufs posted in phantom */
|
||||
u32 rcv_free; /* Num of bufs in free list */
|
||||
dma_addr_t phys_addr;
|
||||
struct pci_dev *phys_pdev;
|
||||
struct rcv_desc *desc_head; /* address of rx ring in Phantom */
|
||||
@@ -889,8 +881,6 @@ struct netxen_adapter {
|
||||
int mtu;
|
||||
int portnum;
|
||||
|
||||
spinlock_t tx_lock;
|
||||
spinlock_t lock;
|
||||
struct work_struct watchdog_task;
|
||||
struct timer_list watchdog_timer;
|
||||
struct work_struct tx_timeout_task;
|
||||
@@ -899,16 +889,12 @@ struct netxen_adapter {
|
||||
|
||||
u32 cmd_producer;
|
||||
__le32 *cmd_consumer;
|
||||
|
||||
u32 last_cmd_consumer;
|
||||
|
||||
u32 max_tx_desc_count;
|
||||
u32 max_rx_desc_count;
|
||||
u32 max_jumbo_rx_desc_count;
|
||||
u32 max_lro_rx_desc_count;
|
||||
/* Num of instances active on cmd buffer ring */
|
||||
u32 proc_cmd_buf_counter;
|
||||
|
||||
u32 num_threads, total_threads; /*Use to keep track of xmit threads */
|
||||
|
||||
u32 flags;
|
||||
u32 irq;
|
||||
@@ -942,6 +928,7 @@ struct netxen_adapter {
|
||||
struct pci_dev *ctx_desc_pdev;
|
||||
dma_addr_t ctx_desc_phys_addr;
|
||||
int intr_scheme;
|
||||
int msi_mode;
|
||||
int (*enable_phy_interrupts) (struct netxen_adapter *);
|
||||
int (*disable_phy_interrupts) (struct netxen_adapter *);
|
||||
void (*handle_phy_intr) (struct netxen_adapter *);
|
||||
@@ -1075,12 +1062,10 @@ void netxen_tso_check(struct netxen_adapter *adapter,
|
||||
struct cmd_desc_type0 *desc, struct sk_buff *skb);
|
||||
int netxen_nic_hw_resources(struct netxen_adapter *adapter);
|
||||
void netxen_nic_clear_stats(struct netxen_adapter *adapter);
|
||||
int netxen_nic_rx_has_work(struct netxen_adapter *adapter);
|
||||
int netxen_nic_tx_has_work(struct netxen_adapter *adapter);
|
||||
void netxen_watchdog_task(struct work_struct *work);
|
||||
void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx,
|
||||
u32 ringid);
|
||||
int netxen_process_cmd_ring(unsigned long data);
|
||||
int netxen_process_cmd_ring(struct netxen_adapter *adapter);
|
||||
u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max);
|
||||
void netxen_nic_set_multi(struct net_device *netdev);
|
||||
int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu);
|
||||
|
||||
@@ -64,15 +64,7 @@ static const struct netxen_nic_stats netxen_nic_gstrings_stats[] = {
|
||||
{"bad_skb_len", NETXEN_NIC_STAT(stats.badskblen)},
|
||||
{"no_cmd_desc", NETXEN_NIC_STAT(stats.nocmddescriptor)},
|
||||
{"polled", NETXEN_NIC_STAT(stats.polled)},
|
||||
{"uphappy", NETXEN_NIC_STAT(stats.uphappy)},
|
||||
{"updropped", NETXEN_NIC_STAT(stats.updropped)},
|
||||
{"uplcong", NETXEN_NIC_STAT(stats.uplcong)},
|
||||
{"uphcong", NETXEN_NIC_STAT(stats.uphcong)},
|
||||
{"upmcong", NETXEN_NIC_STAT(stats.upmcong)},
|
||||
{"updunno", NETXEN_NIC_STAT(stats.updunno)},
|
||||
{"skb_freed", NETXEN_NIC_STAT(stats.skbfreed)},
|
||||
{"tx_dropped", NETXEN_NIC_STAT(stats.txdropped)},
|
||||
{"tx_null_skb", NETXEN_NIC_STAT(stats.txnullskb)},
|
||||
{"csummed", NETXEN_NIC_STAT(stats.csummed)},
|
||||
{"no_rcv", NETXEN_NIC_STAT(stats.no_rcv)},
|
||||
{"rx_bytes", NETXEN_NIC_STAT(stats.rxbytes)},
|
||||
|
||||
@@ -456,6 +456,12 @@ enum {
|
||||
#define ISR_INT_MASK_SLOW (NETXEN_PCIX_PS_REG(PCIX_INT_MASK))
|
||||
#define ISR_INT_TARGET_STATUS (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS))
|
||||
#define ISR_INT_TARGET_MASK (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK))
|
||||
#define ISR_INT_TARGET_STATUS_F1 (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS_F1))
|
||||
#define ISR_INT_TARGET_MASK_F1 (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK_F1))
|
||||
#define ISR_INT_TARGET_STATUS_F2 (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS_F2))
|
||||
#define ISR_INT_TARGET_MASK_F2 (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK_F2))
|
||||
#define ISR_INT_TARGET_STATUS_F3 (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS_F3))
|
||||
#define ISR_INT_TARGET_MASK_F3 (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK_F3))
|
||||
|
||||
#define NETXEN_PCI_MAPSIZE 128
|
||||
#define NETXEN_PCI_DDR_NET (0x00000000UL)
|
||||
@@ -662,6 +668,12 @@ enum {
|
||||
|
||||
#define PCIX_TARGET_STATUS (0x10118)
|
||||
#define PCIX_TARGET_MASK (0x10128)
|
||||
#define PCIX_TARGET_STATUS_F1 (0x10160)
|
||||
#define PCIX_TARGET_MASK_F1 (0x10170)
|
||||
#define PCIX_TARGET_STATUS_F2 (0x10164)
|
||||
#define PCIX_TARGET_MASK_F2 (0x10174)
|
||||
#define PCIX_TARGET_STATUS_F3 (0x10168)
|
||||
#define PCIX_TARGET_MASK_F3 (0x10178)
|
||||
|
||||
#define PCIX_MSI_F0 (0x13000)
|
||||
#define PCIX_MSI_F1 (0x13004)
|
||||
|
||||
@@ -398,6 +398,8 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
|
||||
NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_FW));
|
||||
printk(KERN_NOTICE "%s: FW capabilities:0x%x\n", netxen_nic_driver_name,
|
||||
adapter->intr_scheme);
|
||||
adapter->msi_mode = readl(
|
||||
NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_FW));
|
||||
DPRINTK(INFO, "Receive Peg ready too. starting stuff\n");
|
||||
|
||||
addr = netxen_alloc(adapter->ahw.pdev,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user