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 git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (37 commits) ucc_geth: use correct UCCE macros net_dma: acquire/release dma channels on ifup/ifdown cxgb3: Keep LRO off if disabled when interface is down sfc: SFT9001: Fix condition for LNPGA power-off dccp ccid-3: Fix RFC reference smsc911x: register irq with device name, not driver name smsc911x: fix smsc911x_reg_read compiler warning forcedeth: napi schedule lock fix net: fix section mismatch warnings in dccp/ccids/lib/tfrc.c forcedeth: remove mgmt unit for mcp79 chipset qlge: Remove dynamic alloc of rx ring control blocks. qlge: Fix schedule while atomic issue. qlge: Remove support for device ID 8000. qlge: Get rid of split addresses in hardware control blocks. qlge: Get rid of volatile usage for shadow register. forcedeth: version bump and copyright forcedeth: xmit lock fix netdev: missing validate_address hooks netdev: add missing set_mac_address hook netdev: gianfar: add MII ioctl handler ...
This commit is contained in:
@@ -177,6 +177,7 @@ static const struct net_device_ops el2_netdev_ops = {
|
||||
.ndo_get_stats = eip_get_stats,
|
||||
.ndo_set_multicast_list = eip_set_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = eip_poll,
|
||||
|
||||
@@ -3109,6 +3109,8 @@ static void acpi_set_WOL(struct net_device *dev)
|
||||
struct vortex_private *vp = netdev_priv(dev);
|
||||
void __iomem *ioaddr = vp->ioaddr;
|
||||
|
||||
device_set_wakeup_enable(vp->gendev, vp->enable_wol);
|
||||
|
||||
if (vp->enable_wol) {
|
||||
/* Power up on: 1==Downloaded Filter, 2==Magic Packets, 4==Link Status. */
|
||||
EL3WINDOW(7);
|
||||
|
||||
@@ -1821,6 +1821,7 @@ static const struct net_device_ops cp_netdev_ops = {
|
||||
.ndo_open = cp_open,
|
||||
.ndo_stop = cp_close,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_set_multicast_list = cp_set_rx_mode,
|
||||
.ndo_get_stats = cp_get_stats,
|
||||
.ndo_do_ioctl = cp_ioctl,
|
||||
@@ -1832,6 +1833,7 @@ static const struct net_device_ops cp_netdev_ops = {
|
||||
#ifdef BROKEN
|
||||
.ndo_change_mtu = cp_change_mtu,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = cp_poll_controller,
|
||||
#endif
|
||||
|
||||
@@ -917,6 +917,7 @@ static const struct net_device_ops rtl8139_netdev_ops = {
|
||||
.ndo_stop = rtl8139_close,
|
||||
.ndo_get_stats = rtl8139_get_stats,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_start_xmit = rtl8139_start_xmit,
|
||||
.ndo_set_multicast_list = rtl8139_set_rx_mode,
|
||||
.ndo_do_ioctl = netdev_ioctl,
|
||||
@@ -924,7 +925,6 @@ static const struct net_device_ops rtl8139_netdev_ops = {
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = rtl8139_poll_controller,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
static int __devinit rtl8139_init_one (struct pci_dev *pdev,
|
||||
|
||||
@@ -63,6 +63,7 @@ const struct net_device_ops ei_netdev_ops = {
|
||||
.ndo_get_stats = ei_get_stats,
|
||||
.ndo_set_multicast_list = ei_set_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = ei_poll,
|
||||
|
||||
@@ -68,6 +68,7 @@ const struct net_device_ops eip_netdev_ops = {
|
||||
.ndo_get_stats = eip_get_stats,
|
||||
.ndo_set_multicast_list = eip_set_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = eip_poll,
|
||||
|
||||
+1
-1
@@ -1600,7 +1600,7 @@ config 8139_OLD_RX_RESET
|
||||
old RX-reset behavior. If unsure, say N.
|
||||
|
||||
config R6040
|
||||
tristate "RDC R6040 Fast Ethernet Adapter support (EXPERIMENTAL)"
|
||||
tristate "RDC R6040 Fast Ethernet Adapter support"
|
||||
depends on NET_PCI && PCI
|
||||
select CRC32
|
||||
select MII
|
||||
|
||||
@@ -460,6 +460,7 @@ static const struct net_device_ops ace_netdev_ops = {
|
||||
.ndo_get_stats = ace_get_stats,
|
||||
.ndo_start_xmit = ace_start_xmit,
|
||||
.ndo_set_multicast_list = ace_set_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = ace_set_mac_addr,
|
||||
.ndo_change_mtu = ace_change_mtu,
|
||||
#if ACENIC_DO_VLAN
|
||||
|
||||
@@ -646,6 +646,7 @@ static const struct net_device_ops etherh_netdev_ops = {
|
||||
.ndo_get_stats = ei_get_stats,
|
||||
.ndo_set_multicast_list = ei_set_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_addr = eth_set_mac_addr,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = ei_poll,
|
||||
|
||||
@@ -1357,6 +1357,7 @@ static const struct net_device_ops ks8695_netdev_ops = {
|
||||
.ndo_start_xmit = ks8695_start_xmit,
|
||||
.ndo_tx_timeout = ks8695_timeout,
|
||||
.ndo_set_mac_address = ks8695_set_mac,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_multicast_list = ks8695_set_multicast,
|
||||
};
|
||||
|
||||
|
||||
+6
-7
@@ -73,8 +73,8 @@
|
||||
(BP)->tx_cons - (BP)->tx_prod - TX_RING_GAP(BP))
|
||||
#define NEXT_TX(N) (((N) + 1) & (B44_TX_RING_SIZE - 1))
|
||||
|
||||
#define RX_PKT_OFFSET 30
|
||||
#define RX_PKT_BUF_SZ (1536 + RX_PKT_OFFSET + 64)
|
||||
#define RX_PKT_OFFSET (RX_HEADER_LEN + 2)
|
||||
#define RX_PKT_BUF_SZ (1536 + RX_PKT_OFFSET)
|
||||
|
||||
/* minimum number of free TX descriptors required to wake up TX process */
|
||||
#define B44_TX_WAKEUP_THRESH (B44_TX_RING_SIZE / 4)
|
||||
@@ -682,7 +682,6 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
|
||||
}
|
||||
|
||||
rh = (struct rx_header *) skb->data;
|
||||
skb_reserve(skb, RX_PKT_OFFSET);
|
||||
|
||||
rh->len = 0;
|
||||
rh->flags = 0;
|
||||
@@ -693,13 +692,13 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
|
||||
if (src_map != NULL)
|
||||
src_map->skb = NULL;
|
||||
|
||||
ctrl = (DESC_CTRL_LEN & (RX_PKT_BUF_SZ - RX_PKT_OFFSET));
|
||||
ctrl = (DESC_CTRL_LEN & RX_PKT_BUF_SZ);
|
||||
if (dest_idx == (B44_RX_RING_SIZE - 1))
|
||||
ctrl |= DESC_CTRL_EOT;
|
||||
|
||||
dp = &bp->rx_ring[dest_idx];
|
||||
dp->ctrl = cpu_to_le32(ctrl);
|
||||
dp->addr = cpu_to_le32((u32) mapping + RX_PKT_OFFSET + bp->dma_offset);
|
||||
dp->addr = cpu_to_le32((u32) mapping + bp->dma_offset);
|
||||
|
||||
if (bp->flags & B44_FLAG_RX_RING_HACK)
|
||||
b44_sync_dma_desc_for_device(bp->sdev, bp->rx_ring_dma,
|
||||
@@ -809,8 +808,8 @@ static int b44_rx(struct b44 *bp, int budget)
|
||||
ssb_dma_unmap_single(bp->sdev, map,
|
||||
skb_size, DMA_FROM_DEVICE);
|
||||
/* Leave out rx_header */
|
||||
skb_put(skb, len + RX_PKT_OFFSET);
|
||||
skb_pull(skb, RX_PKT_OFFSET);
|
||||
skb_put(skb, len + RX_PKT_OFFSET);
|
||||
skb_pull(skb, RX_PKT_OFFSET);
|
||||
} else {
|
||||
struct sk_buff *copy_skb;
|
||||
|
||||
|
||||
@@ -50,12 +50,17 @@ struct vlan_group;
|
||||
struct adapter;
|
||||
struct sge_qset;
|
||||
|
||||
enum { /* rx_offload flags */
|
||||
T3_RX_CSUM = 1 << 0,
|
||||
T3_LRO = 1 << 1,
|
||||
};
|
||||
|
||||
struct port_info {
|
||||
struct adapter *adapter;
|
||||
struct vlan_group *vlan_grp;
|
||||
struct sge_qset *qs;
|
||||
u8 port_id;
|
||||
u8 rx_csum_offload;
|
||||
u8 rx_offload;
|
||||
u8 nqsets;
|
||||
u8 first_qset;
|
||||
struct cphy phy;
|
||||
|
||||
@@ -546,7 +546,7 @@ static int setup_sge_qsets(struct adapter *adap)
|
||||
pi->qs = &adap->sge.qs[pi->first_qset];
|
||||
for (j = pi->first_qset; j < pi->first_qset + pi->nqsets;
|
||||
++j, ++qset_idx) {
|
||||
set_qset_lro(dev, qset_idx, pi->rx_csum_offload);
|
||||
set_qset_lro(dev, qset_idx, pi->rx_offload & T3_LRO);
|
||||
err = t3_sge_alloc_qset(adap, qset_idx, 1,
|
||||
(adap->flags & USING_MSIX) ? qset_idx + 1 :
|
||||
irq_idx,
|
||||
@@ -1657,17 +1657,19 @@ static u32 get_rx_csum(struct net_device *dev)
|
||||
{
|
||||
struct port_info *p = netdev_priv(dev);
|
||||
|
||||
return p->rx_csum_offload;
|
||||
return p->rx_offload & T3_RX_CSUM;
|
||||
}
|
||||
|
||||
static int set_rx_csum(struct net_device *dev, u32 data)
|
||||
{
|
||||
struct port_info *p = netdev_priv(dev);
|
||||
|
||||
p->rx_csum_offload = data;
|
||||
if (!data) {
|
||||
if (data) {
|
||||
p->rx_offload |= T3_RX_CSUM;
|
||||
} else {
|
||||
int i;
|
||||
|
||||
p->rx_offload &= ~(T3_RX_CSUM | T3_LRO);
|
||||
for (i = p->first_qset; i < p->first_qset + p->nqsets; i++)
|
||||
set_qset_lro(dev, i, 0);
|
||||
}
|
||||
@@ -1830,15 +1832,18 @@ static int cxgb3_set_flags(struct net_device *dev, u32 data)
|
||||
int i;
|
||||
|
||||
if (data & ETH_FLAG_LRO) {
|
||||
if (!pi->rx_csum_offload)
|
||||
if (!(pi->rx_offload & T3_RX_CSUM))
|
||||
return -EINVAL;
|
||||
|
||||
pi->rx_offload |= T3_LRO;
|
||||
for (i = pi->first_qset; i < pi->first_qset + pi->nqsets; i++)
|
||||
set_qset_lro(dev, i, 1);
|
||||
|
||||
} else
|
||||
} else {
|
||||
pi->rx_offload &= ~T3_LRO;
|
||||
for (i = pi->first_qset; i < pi->first_qset + pi->nqsets; i++)
|
||||
set_qset_lro(dev, i, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1926,7 +1931,7 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
|
||||
pi = adap2pinfo(adapter, i);
|
||||
if (t.qset_idx >= pi->first_qset &&
|
||||
t.qset_idx < pi->first_qset + pi->nqsets &&
|
||||
!pi->rx_csum_offload)
|
||||
!(pi->rx_offload & T3_RX_CSUM))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -2946,7 +2951,7 @@ static int __devinit init_one(struct pci_dev *pdev,
|
||||
adapter->port[i] = netdev;
|
||||
pi = netdev_priv(netdev);
|
||||
pi->adapter = adapter;
|
||||
pi->rx_csum_offload = 1;
|
||||
pi->rx_offload = T3_RX_CSUM | T3_LRO;
|
||||
pi->port_id = i;
|
||||
netif_carrier_off(netdev);
|
||||
netif_tx_stop_all_queues(netdev);
|
||||
@@ -2955,6 +2960,7 @@ static int __devinit init_one(struct pci_dev *pdev,
|
||||
netdev->mem_end = mmio_start + mmio_len - 1;
|
||||
netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO;
|
||||
netdev->features |= NETIF_F_LLTX;
|
||||
netdev->features |= NETIF_F_LRO;
|
||||
if (pci_using_dac)
|
||||
netdev->features |= NETIF_F_HIGHDMA;
|
||||
|
||||
|
||||
@@ -1932,7 +1932,7 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq,
|
||||
skb_pull(skb, sizeof(*p) + pad);
|
||||
skb->protocol = eth_type_trans(skb, adap->port[p->iff]);
|
||||
pi = netdev_priv(skb->dev);
|
||||
if (pi->rx_csum_offload && p->csum_valid && p->csum == htons(0xffff) &&
|
||||
if ((pi->rx_offload & T3_RX_CSUM) && p->csum_valid && p->csum == htons(0xffff) &&
|
||||
!p->fragment) {
|
||||
qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++;
|
||||
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
||||
|
||||
@@ -390,7 +390,8 @@ static s32 e1000_get_variants_ich8lan(struct e1000_adapter *adapter)
|
||||
}
|
||||
|
||||
static DEFINE_MUTEX(nvm_mutex);
|
||||
static pid_t nvm_owner = -1;
|
||||
static pid_t nvm_owner_pid = -1;
|
||||
static char nvm_owner_name[TASK_COMM_LEN] = "";
|
||||
|
||||
/**
|
||||
* e1000_acquire_swflag_ich8lan - Acquire software control flag
|
||||
@@ -408,11 +409,15 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
|
||||
might_sleep();
|
||||
|
||||
if (!mutex_trylock(&nvm_mutex)) {
|
||||
WARN(1, KERN_ERR "e1000e mutex contention. Owned by pid %d\n",
|
||||
nvm_owner);
|
||||
WARN(1, KERN_ERR "e1000e mutex contention. Owned by process "
|
||||
"%s (pid %d), required by process %s (pid %d)\n",
|
||||
nvm_owner_name, nvm_owner_pid,
|
||||
current->comm, current->pid);
|
||||
|
||||
mutex_lock(&nvm_mutex);
|
||||
}
|
||||
nvm_owner = current->pid;
|
||||
nvm_owner_pid = current->pid;
|
||||
strncpy(nvm_owner_name, current->comm, TASK_COMM_LEN);
|
||||
|
||||
while (timeout) {
|
||||
extcnf_ctrl = er32(EXTCNF_CTRL);
|
||||
@@ -430,7 +435,8 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
|
||||
hw_dbg(hw, "FW or HW has locked the resource for too long.\n");
|
||||
extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;
|
||||
ew32(EXTCNF_CTRL, extcnf_ctrl);
|
||||
nvm_owner = -1;
|
||||
nvm_owner_pid = -1;
|
||||
strcpy(nvm_owner_name, "");
|
||||
mutex_unlock(&nvm_mutex);
|
||||
return -E1000_ERR_CONFIG;
|
||||
}
|
||||
@@ -454,7 +460,8 @@ static void e1000_release_swflag_ich8lan(struct e1000_hw *hw)
|
||||
extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;
|
||||
ew32(EXTCNF_CTRL, extcnf_ctrl);
|
||||
|
||||
nvm_owner = -1;
|
||||
nvm_owner_pid = -1;
|
||||
strcpy(nvm_owner_name, "");
|
||||
mutex_unlock(&nvm_mutex);
|
||||
}
|
||||
|
||||
|
||||
@@ -169,6 +169,7 @@ static const struct net_device_ops e21_netdev_ops = {
|
||||
.ndo_get_stats = ei_get_stats,
|
||||
.ndo_set_multicast_list = ei_set_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = ei_poll,
|
||||
|
||||
@@ -1599,6 +1599,7 @@ static const struct net_device_ops enic_netdev_ops = {
|
||||
.ndo_start_xmit = enic_hard_start_xmit,
|
||||
.ndo_get_stats = enic_get_stats,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_set_multicast_list = enic_set_multicast_list,
|
||||
.ndo_change_mtu = enic_change_mtu,
|
||||
.ndo_vlan_rx_register = enic_vlan_rx_register,
|
||||
|
||||
+12
-10
@@ -13,7 +13,7 @@
|
||||
* Copyright (C) 2004 Andrew de Quincey (wol support)
|
||||
* Copyright (C) 2004 Carl-Daniel Hailfinger (invalid MAC handling, insane
|
||||
* IRQ rate fixes, bigendian fixes, cleanups, verification)
|
||||
* Copyright (c) 2004,2005,2006,2007,2008 NVIDIA Corporation
|
||||
* Copyright (c) 2004,2005,2006,2007,2008,2009 NVIDIA Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -39,7 +39,7 @@
|
||||
* DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few
|
||||
* superfluous timer interrupts from the nic.
|
||||
*/
|
||||
#define FORCEDETH_VERSION "0.61"
|
||||
#define FORCEDETH_VERSION "0.62"
|
||||
#define DRV_NAME "forcedeth"
|
||||
|
||||
#include <linux/module.h>
|
||||
@@ -2096,14 +2096,15 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&np->lock, flags);
|
||||
empty_slots = nv_get_empty_tx_slots(np);
|
||||
if (unlikely(empty_slots <= entries)) {
|
||||
spin_lock_irqsave(&np->lock, flags);
|
||||
netif_stop_queue(dev);
|
||||
np->tx_stop = 1;
|
||||
spin_unlock_irqrestore(&np->lock, flags);
|
||||
return NETDEV_TX_BUSY;
|
||||
}
|
||||
spin_unlock_irqrestore(&np->lock, flags);
|
||||
|
||||
start_tx = put_tx = np->put_tx.orig;
|
||||
|
||||
@@ -2214,14 +2215,15 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev)
|
||||
((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&np->lock, flags);
|
||||
empty_slots = nv_get_empty_tx_slots(np);
|
||||
if (unlikely(empty_slots <= entries)) {
|
||||
spin_lock_irqsave(&np->lock, flags);
|
||||
netif_stop_queue(dev);
|
||||
np->tx_stop = 1;
|
||||
spin_unlock_irqrestore(&np->lock, flags);
|
||||
return NETDEV_TX_BUSY;
|
||||
}
|
||||
spin_unlock_irqrestore(&np->lock, flags);
|
||||
|
||||
start_tx = put_tx = np->put_tx.ex;
|
||||
start_tx_ctx = np->put_tx_ctx;
|
||||
@@ -3403,10 +3405,10 @@ static irqreturn_t nv_nic_irq(int foo, void *data)
|
||||
|
||||
#ifdef CONFIG_FORCEDETH_NAPI
|
||||
if (events & NVREG_IRQ_RX_ALL) {
|
||||
spin_lock(&np->lock);
|
||||
netif_rx_schedule(&np->napi);
|
||||
|
||||
/* Disable furthur receive irq's */
|
||||
spin_lock(&np->lock);
|
||||
np->irqmask &= ~NVREG_IRQ_RX_ALL;
|
||||
|
||||
if (np->msi_flags & NV_MSI_X_ENABLED)
|
||||
@@ -3520,10 +3522,10 @@ static irqreturn_t nv_nic_irq_optimized(int foo, void *data)
|
||||
|
||||
#ifdef CONFIG_FORCEDETH_NAPI
|
||||
if (events & NVREG_IRQ_RX_ALL) {
|
||||
spin_lock(&np->lock);
|
||||
netif_rx_schedule(&np->napi);
|
||||
|
||||
/* Disable furthur receive irq's */
|
||||
spin_lock(&np->lock);
|
||||
np->irqmask &= ~NVREG_IRQ_RX_ALL;
|
||||
|
||||
if (np->msi_flags & NV_MSI_X_ENABLED)
|
||||
@@ -6167,19 +6169,19 @@ static struct pci_device_id pci_tbl[] = {
|
||||
},
|
||||
{ /* MCP79 Ethernet Controller */
|
||||
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_36),
|
||||
.driver_data = DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
.driver_data = DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
},
|
||||
{ /* MCP79 Ethernet Controller */
|
||||
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_37),
|
||||
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
},
|
||||
{ /* MCP79 Ethernet Controller */
|
||||
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_38),
|
||||
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
},
|
||||
{ /* MCP79 Ethernet Controller */
|
||||
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_39),
|
||||
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V3|DEV_HAS_TEST_EXTENDED|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT|DEV_HAS_GEAR_MODE,
|
||||
},
|
||||
{0,},
|
||||
};
|
||||
|
||||
@@ -296,6 +296,20 @@ err_out:
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Ioctl MII Interface */
|
||||
static int gfar_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
{
|
||||
struct gfar_private *priv = netdev_priv(dev);
|
||||
|
||||
if (!netif_running(dev))
|
||||
return -EINVAL;
|
||||
|
||||
if (!priv->phydev)
|
||||
return -ENODEV;
|
||||
|
||||
return phy_mii_ioctl(priv->phydev, if_mii(rq), cmd);
|
||||
}
|
||||
|
||||
/* Set up the ethernet device structure, private data,
|
||||
* and anything else we need before we start */
|
||||
static int gfar_probe(struct of_device *ofdev,
|
||||
@@ -366,6 +380,7 @@ static int gfar_probe(struct of_device *ofdev,
|
||||
dev->set_multicast_list = gfar_set_multi;
|
||||
|
||||
dev->ethtool_ops = &gfar_ethtool_ops;
|
||||
dev->do_ioctl = gfar_ioctl;
|
||||
|
||||
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_CSUM) {
|
||||
priv->rx_csum_enable = 1;
|
||||
|
||||
@@ -576,6 +576,7 @@ static const struct net_device_ops hamachi_netdev_ops = {
|
||||
.ndo_set_multicast_list = set_rx_mode,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_tx_timeout = hamachi_tx_timeout,
|
||||
.ndo_do_ioctl = netdev_ioctl,
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user