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 master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
+3
-1
@@ -2822,10 +2822,11 @@ L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/ixp2000/
|
||||
|
||||
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
|
||||
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe)
|
||||
M: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
|
||||
M: Jesse Brandeburg <jesse.brandeburg@intel.com>
|
||||
M: Bruce Allan <bruce.w.allan@intel.com>
|
||||
M: Alex Duyck <alexander.h.duyck@intel.com>
|
||||
M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>
|
||||
M: John Ronciak <john.ronciak@intel.com>
|
||||
L: e1000-devel@lists.sourceforge.net
|
||||
@@ -2835,6 +2836,7 @@ F: drivers/net/e100.c
|
||||
F: drivers/net/e1000/
|
||||
F: drivers/net/e1000e/
|
||||
F: drivers/net/igb/
|
||||
F: drivers/net/igbvf/
|
||||
F: drivers/net/ixgb/
|
||||
F: drivers/net/ixgbe/
|
||||
|
||||
|
||||
@@ -276,8 +276,13 @@ struct be_adapter {
|
||||
int link_speed;
|
||||
u8 port_type;
|
||||
u8 transceiver;
|
||||
u8 generation; /* BladeEngine ASIC generation */
|
||||
};
|
||||
|
||||
/* BladeEngine Generation numbers */
|
||||
#define BE_GEN2 2
|
||||
#define BE_GEN3 3
|
||||
|
||||
extern const struct ethtool_ops be_ethtool_ops;
|
||||
|
||||
#define drvr_stats(adapter) (&adapter->stats.drvr_stats)
|
||||
|
||||
@@ -286,7 +286,7 @@ static void be_wrb_hdr_prepare(struct be_mcc_wrb *wrb, int payload_len,
|
||||
MCC_WRB_SGE_CNT_SHIFT;
|
||||
wrb->payload_length = payload_len;
|
||||
wrb->tag0 = opcode;
|
||||
be_dws_cpu_to_le(wrb, 20);
|
||||
be_dws_cpu_to_le(wrb, 8);
|
||||
}
|
||||
|
||||
/* Don't touch the hdr after it's prepared */
|
||||
|
||||
@@ -165,7 +165,8 @@ struct be_cmd_req_hdr {
|
||||
u8 domain; /* dword 0 */
|
||||
u32 timeout; /* dword 1 */
|
||||
u32 request_length; /* dword 2 */
|
||||
u32 rsvd; /* dword 3 */
|
||||
u8 version; /* dword 3 */
|
||||
u8 rsvd[3]; /* dword 3 */
|
||||
};
|
||||
|
||||
#define RESP_HDR_INFO_OPCODE_SHIFT 0 /* bits 0 - 7 */
|
||||
|
||||
@@ -2051,6 +2051,7 @@ static void be_unmap_pci_bars(struct be_adapter *adapter)
|
||||
static int be_map_pci_bars(struct be_adapter *adapter)
|
||||
{
|
||||
u8 __iomem *addr;
|
||||
int pcicfg_reg;
|
||||
|
||||
addr = ioremap_nocache(pci_resource_start(adapter->pdev, 2),
|
||||
pci_resource_len(adapter->pdev, 2));
|
||||
@@ -2064,8 +2065,13 @@ static int be_map_pci_bars(struct be_adapter *adapter)
|
||||
goto pci_map_err;
|
||||
adapter->db = addr;
|
||||
|
||||
addr = ioremap_nocache(pci_resource_start(adapter->pdev, 1),
|
||||
pci_resource_len(adapter->pdev, 1));
|
||||
if (adapter->generation == BE_GEN2)
|
||||
pcicfg_reg = 1;
|
||||
else
|
||||
pcicfg_reg = 0;
|
||||
|
||||
addr = ioremap_nocache(pci_resource_start(adapter->pdev, pcicfg_reg),
|
||||
pci_resource_len(adapter->pdev, pcicfg_reg));
|
||||
if (addr == NULL)
|
||||
goto pci_map_err;
|
||||
adapter->pcicfg = addr;
|
||||
@@ -2162,6 +2168,7 @@ static int be_stats_init(struct be_adapter *adapter)
|
||||
cmd->va = pci_alloc_consistent(adapter->pdev, cmd->size, &cmd->dma);
|
||||
if (cmd->va == NULL)
|
||||
return -1;
|
||||
memset(cmd->va, cmd->size, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2240,6 +2247,20 @@ static int __devinit be_probe(struct pci_dev *pdev,
|
||||
goto rel_reg;
|
||||
}
|
||||
adapter = netdev_priv(netdev);
|
||||
|
||||
switch (pdev->device) {
|
||||
case BE_DEVICE_ID1:
|
||||
case OC_DEVICE_ID1:
|
||||
adapter->generation = BE_GEN2;
|
||||
break;
|
||||
case BE_DEVICE_ID2:
|
||||
case OC_DEVICE_ID2:
|
||||
adapter->generation = BE_GEN3;
|
||||
break;
|
||||
default:
|
||||
adapter->generation = 0;
|
||||
}
|
||||
|
||||
adapter->pdev = pdev;
|
||||
pci_set_drvdata(pdev, adapter);
|
||||
adapter->netdev = netdev;
|
||||
|
||||
@@ -3650,7 +3650,7 @@ static int bond_open(struct net_device *bond_dev)
|
||||
*/
|
||||
if (bond_alb_initialize(bond, (bond->params.mode == BOND_MODE_ALB))) {
|
||||
/* something went wrong - fail the open operation */
|
||||
return -1;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor);
|
||||
|
||||
@@ -1698,18 +1698,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
|
||||
rctl &= ~E1000_RCTL_SZ_4096;
|
||||
rctl |= E1000_RCTL_BSEX;
|
||||
switch (adapter->rx_buffer_len) {
|
||||
case E1000_RXBUFFER_256:
|
||||
rctl |= E1000_RCTL_SZ_256;
|
||||
rctl &= ~E1000_RCTL_BSEX;
|
||||
break;
|
||||
case E1000_RXBUFFER_512:
|
||||
rctl |= E1000_RCTL_SZ_512;
|
||||
rctl &= ~E1000_RCTL_BSEX;
|
||||
break;
|
||||
case E1000_RXBUFFER_1024:
|
||||
rctl |= E1000_RCTL_SZ_1024;
|
||||
rctl &= ~E1000_RCTL_BSEX;
|
||||
break;
|
||||
case E1000_RXBUFFER_2048:
|
||||
default:
|
||||
rctl |= E1000_RCTL_SZ_2048;
|
||||
@@ -3176,13 +3164,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
* however with the new *_jumbo_rx* routines, jumbo receives will use
|
||||
* fragmented skbs */
|
||||
|
||||
if (max_frame <= E1000_RXBUFFER_256)
|
||||
adapter->rx_buffer_len = E1000_RXBUFFER_256;
|
||||
else if (max_frame <= E1000_RXBUFFER_512)
|
||||
adapter->rx_buffer_len = E1000_RXBUFFER_512;
|
||||
else if (max_frame <= E1000_RXBUFFER_1024)
|
||||
adapter->rx_buffer_len = E1000_RXBUFFER_1024;
|
||||
else if (max_frame <= E1000_RXBUFFER_2048)
|
||||
if (max_frame <= E1000_RXBUFFER_2048)
|
||||
adapter->rx_buffer_len = E1000_RXBUFFER_2048;
|
||||
else
|
||||
#if (PAGE_SIZE >= E1000_RXBUFFER_16384)
|
||||
|
||||
@@ -2350,18 +2350,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
|
||||
rctl &= ~E1000_RCTL_SZ_4096;
|
||||
rctl |= E1000_RCTL_BSEX;
|
||||
switch (adapter->rx_buffer_len) {
|
||||
case 256:
|
||||
rctl |= E1000_RCTL_SZ_256;
|
||||
rctl &= ~E1000_RCTL_BSEX;
|
||||
break;
|
||||
case 512:
|
||||
rctl |= E1000_RCTL_SZ_512;
|
||||
rctl &= ~E1000_RCTL_BSEX;
|
||||
break;
|
||||
case 1024:
|
||||
rctl |= E1000_RCTL_SZ_1024;
|
||||
rctl &= ~E1000_RCTL_BSEX;
|
||||
break;
|
||||
case 2048:
|
||||
default:
|
||||
rctl |= E1000_RCTL_SZ_2048;
|
||||
@@ -3788,7 +3776,7 @@ static int e1000_tso(struct e1000_adapter *adapter,
|
||||
0, IPPROTO_TCP, 0);
|
||||
cmd_length = E1000_TXD_CMD_IP;
|
||||
ipcse = skb_transport_offset(skb) - 1;
|
||||
} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
|
||||
} else if (skb_is_gso_v6(skb)) {
|
||||
ipv6_hdr(skb)->payload_len = 0;
|
||||
tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
|
||||
&ipv6_hdr(skb)->daddr,
|
||||
@@ -4324,13 +4312,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
* fragmented skbs
|
||||
*/
|
||||
|
||||
if (max_frame <= 256)
|
||||
adapter->rx_buffer_len = 256;
|
||||
else if (max_frame <= 512)
|
||||
adapter->rx_buffer_len = 512;
|
||||
else if (max_frame <= 1024)
|
||||
adapter->rx_buffer_len = 1024;
|
||||
else if (max_frame <= 2048)
|
||||
if (max_frame <= 2048)
|
||||
adapter->rx_buffer_len = 2048;
|
||||
else
|
||||
adapter->rx_buffer_len = 4096;
|
||||
|
||||
@@ -3423,7 +3423,7 @@ static inline int igb_tso_adv(struct igb_ring *tx_ring,
|
||||
iph->daddr, 0,
|
||||
IPPROTO_TCP,
|
||||
0);
|
||||
} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
|
||||
} else if (skb_is_gso_v6(skb)) {
|
||||
ipv6_hdr(skb)->payload_len = 0;
|
||||
tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
|
||||
&ipv6_hdr(skb)->daddr,
|
||||
@@ -3585,6 +3585,7 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb,
|
||||
for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
|
||||
struct skb_frag_struct *frag;
|
||||
|
||||
count++;
|
||||
i++;
|
||||
if (i == tx_ring->count)
|
||||
i = 0;
|
||||
@@ -3606,7 +3607,6 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb,
|
||||
if (pci_dma_mapping_error(pdev, buffer_info->dma))
|
||||
goto dma_error;
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
tx_ring->buffer_info[i].skb = skb;
|
||||
|
||||
@@ -1963,7 +1963,7 @@ static int igbvf_tso(struct igbvf_adapter *adapter,
|
||||
iph->daddr, 0,
|
||||
IPPROTO_TCP,
|
||||
0);
|
||||
} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
|
||||
} else if (skb_is_gso_v6(skb)) {
|
||||
ipv6_hdr(skb)->payload_len = 0;
|
||||
tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
|
||||
&ipv6_hdr(skb)->daddr,
|
||||
@@ -2117,6 +2117,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
|
||||
/* set time_stamp *before* dma to help avoid a possible race */
|
||||
buffer_info->time_stamp = jiffies;
|
||||
buffer_info->next_to_watch = i;
|
||||
buffer_info->mapped_as_page = false;
|
||||
buffer_info->dma = pci_map_single(pdev, skb->data, len,
|
||||
PCI_DMA_TODEVICE);
|
||||
if (pci_dma_mapping_error(pdev, buffer_info->dma))
|
||||
@@ -2126,6 +2127,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
|
||||
for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
|
||||
struct skb_frag_struct *frag;
|
||||
|
||||
count++;
|
||||
i++;
|
||||
if (i == tx_ring->count)
|
||||
i = 0;
|
||||
@@ -2146,7 +2148,6 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
|
||||
PCI_DMA_TODEVICE);
|
||||
if (pci_dma_mapping_error(pdev, buffer_info->dma))
|
||||
goto dma_error;
|
||||
count++;
|
||||
}
|
||||
|
||||
tx_ring->buffer_info[i].skb = skb;
|
||||
|
||||
@@ -223,7 +223,7 @@ static void ixgbe_dcbnl_set_pg_bwg_cfg_tx(struct net_device *netdev, int bwg_id,
|
||||
|
||||
if (adapter->temp_dcb_cfg.bw_percentage[0][bwg_id] !=
|
||||
adapter->dcb_cfg.bw_percentage[0][bwg_id]) {
|
||||
adapter->dcb_set_bitmap |= BIT_PG_RX;
|
||||
adapter->dcb_set_bitmap |= BIT_PG_TX;
|
||||
adapter->dcb_set_bitmap |= BIT_RESETLINK;
|
||||
}
|
||||
}
|
||||
@@ -341,6 +341,12 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
|
||||
if (!adapter->dcb_set_bitmap)
|
||||
return DCB_NO_HW_CHG;
|
||||
|
||||
ret = ixgbe_copy_dcb_cfg(&adapter->temp_dcb_cfg, &adapter->dcb_cfg,
|
||||
adapter->ring_feature[RING_F_DCB].indices);
|
||||
|
||||
if (ret)
|
||||
return DCB_NO_HW_CHG;
|
||||
|
||||
/*
|
||||
* Only take down the adapter if the configuration change
|
||||
* requires a reset.
|
||||
@@ -359,14 +365,6 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
|
||||
}
|
||||
}
|
||||
|
||||
ret = ixgbe_copy_dcb_cfg(&adapter->temp_dcb_cfg, &adapter->dcb_cfg,
|
||||
adapter->ring_feature[RING_F_DCB].indices);
|
||||
if (ret) {
|
||||
if (adapter->dcb_set_bitmap & BIT_RESETLINK)
|
||||
clear_bit(__IXGBE_RESETTING, &adapter->state);
|
||||
return DCB_NO_HW_CHG;
|
||||
}
|
||||
|
||||
if (adapter->dcb_cfg.pfc_mode_enable) {
|
||||
if ((adapter->hw.mac.type != ixgbe_mac_82598EB) &&
|
||||
(adapter->hw.fc.current_mode != ixgbe_fc_pfc))
|
||||
|
||||
@@ -5133,7 +5133,7 @@ static int ixgbe_tso(struct ixgbe_adapter *adapter,
|
||||
iph->daddr, 0,
|
||||
IPPROTO_TCP,
|
||||
0);
|
||||
} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
|
||||
} else if (skb_is_gso_v6(skb)) {
|
||||
ipv6_hdr(skb)->payload_len = 0;
|
||||
tcp_hdr(skb)->check =
|
||||
~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
|
||||
|
||||
@@ -854,8 +854,8 @@ static void ks_update_link_status(struct net_device *netdev, struct ks_net *ks)
|
||||
|
||||
static irqreturn_t ks_irq(int irq, void *pw)
|
||||
{
|
||||
struct ks_net *ks = pw;
|
||||
struct net_device *netdev = ks->netdev;
|
||||
struct net_device *netdev = pw;
|
||||
struct ks_net *ks = netdev_priv(netdev);
|
||||
u16 status;
|
||||
|
||||
/*this should be the first in IRQ handler */
|
||||
|
||||
@@ -717,6 +717,7 @@ static struct pcmcia_device_id fmvj18x_ids[] = {
|
||||
PCMCIA_PFC_DEVICE_PROD_ID12(0, "NEC", "PK-UG-J001" ,0x18df0ba0 ,0x831b1064),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0d0a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0e0a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0e01),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0a05),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x1101),
|
||||
PCMCIA_DEVICE_NULL,
|
||||
|
||||
@@ -4437,7 +4437,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
|
||||
err = pcie_set_readrq(pdev, 4096);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "Set readrq failed.\n");
|
||||
goto err_out;
|
||||
goto err_out1;
|
||||
}
|
||||
|
||||
err = pci_request_regions(pdev, DRV_NAME);
|
||||
@@ -4458,7 +4458,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
|
||||
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "No usable DMA configuration.\n");
|
||||
goto err_out;
|
||||
goto err_out2;
|
||||
}
|
||||
|
||||
/* Set PCIe reset type for EEH to fundamental. */
|
||||
@@ -4470,7 +4470,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
|
||||
if (!qdev->reg_base) {
|
||||
dev_err(&pdev->dev, "Register mapping failed.\n");
|
||||
err = -ENOMEM;
|
||||
goto err_out;
|
||||
goto err_out2;
|
||||
}
|
||||
|
||||
qdev->doorbell_area_size = pci_resource_len(pdev, 3);
|
||||
@@ -4480,14 +4480,14 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
|
||||
if (!qdev->doorbell_area) {
|
||||
dev_err(&pdev->dev, "Doorbell register mapping failed.\n");
|
||||
err = -ENOMEM;
|
||||
goto err_out;
|
||||
goto err_out2;
|
||||
}
|
||||
|
||||
err = ql_get_board_info(qdev);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "Register access failed.\n");
|
||||
err = -EIO;
|
||||
goto err_out;
|
||||
goto err_out2;
|
||||
}
|
||||
qdev->msg_enable = netif_msg_init(debug, default_msg);
|
||||
spin_lock_init(&qdev->hw_lock);
|
||||
@@ -4508,7 +4508,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
|
||||
err = qdev->nic_ops->get_flash(qdev);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "Invalid FLASH.\n");
|
||||
goto err_out;
|
||||
goto err_out2;
|
||||
}
|
||||
|
||||
memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
|
||||
@@ -4542,8 +4542,9 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
|
||||
DRV_NAME, DRV_VERSION);
|
||||
}
|
||||
return 0;
|
||||
err_out:
|
||||
err_out2:
|
||||
ql_release_all(pdev);
|
||||
err_out1:
|
||||
pci_disable_device(pdev);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -804,7 +804,7 @@ int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type,
|
||||
loff_t offset, u8 *buffer, size_t length)
|
||||
{
|
||||
u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN];
|
||||
u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(length)];
|
||||
u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(EFX_MCDI_NVRAM_LEN_MAX)];
|
||||
size_t outlen;
|
||||
int rc;
|
||||
|
||||
@@ -828,7 +828,7 @@ fail:
|
||||
int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type,
|
||||
loff_t offset, const u8 *buffer, size_t length)
|
||||
{
|
||||
u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(length)];
|
||||
u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(EFX_MCDI_NVRAM_LEN_MAX)];
|
||||
int rc;
|
||||
|
||||
MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type);
|
||||
@@ -838,7 +838,8 @@ int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type,
|
||||
|
||||
BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0);
|
||||
|
||||
rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, sizeof(inbuf),
|
||||
rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf,
|
||||
ALIGN(MC_CMD_NVRAM_WRITE_IN_LEN(length), 4),
|
||||
NULL, 0, NULL);
|
||||
if (rc)
|
||||
goto fail;
|
||||
|
||||
@@ -111,6 +111,7 @@ extern int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type,
|
||||
extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type,
|
||||
loff_t offset, const u8 *buffer,
|
||||
size_t length);
|
||||
#define EFX_MCDI_NVRAM_LEN_MAX 128
|
||||
extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type,
|
||||
loff_t offset, size_t length);
|
||||
extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx,
|
||||
|
||||
@@ -1090,8 +1090,10 @@
|
||||
#define MC_CMD_MAC_RX_LANES01_DISP_ERR 57
|
||||
#define MC_CMD_MAC_RX_LANES23_DISP_ERR 58
|
||||
#define MC_CMD_MAC_RX_MATCH_FAULT 59
|
||||
#define MC_CMD_GMAC_DMABUF_START 64
|
||||
#define MC_CMD_GMAC_DMABUF_END 95
|
||||
/* Insert new members here. */
|
||||
#define MC_CMD_MAC_GENERATION_END 60
|
||||
#define MC_CMD_MAC_GENERATION_END 96
|
||||
#define MC_CMD_MAC_NSTATS (MC_CMD_MAC_GENERATION_END+1)
|
||||
|
||||
/* MC_CMD_MAC_STATS:
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include "mcdi_pcol.h"
|
||||
|
||||
#define EFX_SPI_VERIFY_BUF_LEN 16
|
||||
#define EFX_MCDI_CHUNK_LEN 128
|
||||
|
||||
struct efx_mtd_partition {
|
||||
struct mtd_info mtd;
|
||||
@@ -428,7 +427,7 @@ static int siena_mtd_read(struct mtd_info *mtd, loff_t start,
|
||||
int rc = 0;
|
||||
|
||||
while (offset < end) {
|
||||
chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN);
|
||||
chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX);
|
||||
rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset,
|
||||
buffer, chunk);
|
||||
if (rc)
|
||||
@@ -491,7 +490,7 @@ static int siena_mtd_write(struct mtd_info *mtd, loff_t start,
|
||||
}
|
||||
|
||||
while (offset < end) {
|
||||
chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN);
|
||||
chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX);
|
||||
rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset,
|
||||
buffer, chunk);
|
||||
if (rc)
|
||||
|
||||
+35
-7
@@ -644,6 +644,7 @@ static void sky2_phy_power_up(struct sky2_hw *hw, unsigned port)
|
||||
{
|
||||
u32 reg1;
|
||||
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
|
||||
reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
|
||||
reg1 &= ~phy_power[port];
|
||||
|
||||
@@ -651,6 +652,7 @@ static void sky2_phy_power_up(struct sky2_hw *hw, unsigned port)
|
||||
reg1 |= coma_mode[port];
|
||||
|
||||
sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
sky2_pci_read32(hw, PCI_DEV_REG1);
|
||||
|
||||
if (hw->chip_id == CHIP_ID_YUKON_FE)
|
||||
@@ -707,9 +709,11 @@ static void sky2_phy_power_down(struct sky2_hw *hw, unsigned port)
|
||||
gm_phy_write(hw, port, PHY_MARV_CTRL, PHY_CT_PDOWN);
|
||||
}
|
||||
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
|
||||
reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
|
||||
reg1 |= phy_power[port]; /* set PHY to PowerDown/COMA Mode */
|
||||
sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
}
|
||||
|
||||
/* Force a renegotiation */
|
||||
@@ -2149,7 +2153,9 @@ static void sky2_qlink_intr(struct sky2_hw *hw)
|
||||
|
||||
/* reset PHY Link Detect */
|
||||
phy = sky2_pci_read16(hw, PSM_CONFIG_REG4);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
|
||||
sky2_pci_write16(hw, PSM_CONFIG_REG4, phy | 1);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
|
||||
sky2_link_up(sky2);
|
||||
}
|
||||
@@ -2640,6 +2646,7 @@ static void sky2_hw_intr(struct sky2_hw *hw)
|
||||
if (status & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) {
|
||||
u16 pci_err;
|
||||
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
|
||||
pci_err = sky2_pci_read16(hw, PCI_STATUS);
|
||||
if (net_ratelimit())
|
||||
dev_err(&pdev->dev, "PCI hardware error (0x%x)\n",
|
||||
@@ -2647,12 +2654,14 @@ static void sky2_hw_intr(struct sky2_hw *hw)
|
||||
|
||||
sky2_pci_write16(hw, PCI_STATUS,
|
||||
pci_err | PCI_STATUS_ERROR_BITS);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
}
|
||||
|
||||
if (status & Y2_IS_PCI_EXP) {
|
||||
/* PCI-Express uncorrectable Error occurred */
|
||||
u32 err;
|
||||
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
|
||||
err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
|
||||
sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS,
|
||||
0xfffffffful);
|
||||
@@ -2660,6 +2669,7 @@ static void sky2_hw_intr(struct sky2_hw *hw)
|
||||
dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err);
|
||||
|
||||
sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
}
|
||||
|
||||
if (status & Y2_HWE_L1_MASK)
|
||||
@@ -3038,6 +3048,7 @@ static void sky2_reset(struct sky2_hw *hw)
|
||||
}
|
||||
|
||||
sky2_power_on(hw);
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
|
||||
for (i = 0; i < hw->ports; i++) {
|
||||
sky2_write8(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET);
|
||||
@@ -3074,6 +3085,7 @@ static void sky2_reset(struct sky2_hw *hw)
|
||||
reg <<= PSM_CONFIG_REG4_TIMER_PHY_LINK_DETECT_BASE;
|
||||
|
||||
/* reset PHY Link Detect */
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
|
||||
sky2_pci_write16(hw, PSM_CONFIG_REG4,
|
||||
reg | PSM_CONFIG_REG4_RST_PHY_LINK_DETECT);
|
||||
sky2_pci_write16(hw, PSM_CONFIG_REG4, reg);
|
||||
@@ -3091,6 +3103,7 @@ static void sky2_reset(struct sky2_hw *hw)
|
||||
/* restore the PCIe Link Control register */
|
||||
sky2_pci_write16(hw, cap + PCI_EXP_LNKCTL, reg);
|
||||
}
|
||||
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
|
||||
|
||||
/* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */
|
||||
sky2_write32(hw, Y2_PEX_PHY_DATA, PEX_DB_ACCESS | (0x08UL << 16));
|
||||
@@ -3230,6 +3243,27 @@ static inline u8 sky2_wol_supported(const struct sky2_hw *hw)
|
||||
return sky2_is_copper(hw) ? (WAKE_PHY | WAKE_MAGIC) : 0;
|
||||
}
|
||||
|
||||
static void sky2_hw_set_wol(struct sky2_hw *hw)
|
||||
{
|
||||
int wol = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < hw->ports; i++) {
|
||||
struct net_device *dev = hw->dev[i];
|
||||
struct sky2_port *sky2 = netdev_priv(dev);
|
||||
|
||||
if (sky2->wol)
|
||||
wol = 1;
|
||||
}
|
||||
|
||||
if (hw->chip_id == CHIP_ID_YUKON_EC_U ||
|
||||
hw->chip_id == CHIP_ID_YUKON_EX ||
|
||||
hw->chip_id == CHIP_ID_YUKON_FE_P)
|
||||
sky2_write32(hw, B0_CTST, wol ? Y2_HW_WOL_ON : Y2_HW_WOL_OFF);
|
||||
|
||||
device_set_wakeup_enable(&hw->pdev->dev, wol);
|
||||
}
|
||||
|
||||
static void sky2_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
||||
{
|
||||
const struct sky2_port *sky2 = netdev_priv(dev);
|
||||
@@ -3249,13 +3283,7 @@ static int sky2_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
||||
|
||||
sky2->wol = wol->wolopts;
|
||||
|
||||
if (hw->chip_id == CHIP_ID_YUKON_EC_U ||
|
||||
hw->chip_id == CHIP_ID_YUKON_EX ||
|
||||
hw->chip_id == CHIP_ID_YUKON_FE_P)
|
||||
sky2_write32(hw, B0_CTST, sky2->wol
|
||||
? Y2_HW_WOL_ON : Y2_HW_WOL_OFF);
|
||||
|
||||
device_set_wakeup_enable(&hw->pdev->dev, sky2->wol);
|
||||
sky2_hw_set_wol(hw);
|
||||
|
||||
if (!netif_running(dev))
|
||||
sky2_wol_init(sky2);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user