Skip to content

Commit bdec419

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: "Just a pile of random fixes, including: 1) Do not apply TSO limits to non-TSO packets, fix from Herbert Xu. 2) MDI{,X} eeprom check in e100 driver is reversed, from John W. Linville. 3) Missing error return assignments in several ethernet drivers, from Julia Lawall. 4) Altera TSE device doesn't come back up after ifconfig down/up sequence, fix from Kostya Belezko. 5) Add more cases to the check for whether the qmi_wwan device has a bogus MAC address and needs to be assigned a random one. From Kristian Evensen. 6) Fix interrupt hangs in CPSW, from Felipe Balbi. 7) Implement ndo_features_check in r8152 so that the stack doesn't feed GSO packets which are outside of the chip's capabilities. From Hayes Wang" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (26 commits) qla3xxx: don't allow never end busy loop xen-netback: fixing the propagation of the transmit shaper timeout r8152: support ndo_features_check batman-adv: fix potential TT client + orig-node memory leak batman-adv: fix multicast counter when purging originators batman-adv: fix counter for multicast supporting nodes batman-adv: fix lock class for decoding hash in network-coding.c batman-adv: fix delayed foreign originator recognition batman-adv: fix and simplify condition when bonding should be used Revert "mac80211: Fix accounting of the tailroom-needed counter" net: ethernet: cpsw: fix hangs with interrupts enic: free all rq buffs when allocation fails qmi_wwan: Set random MAC on devices with buggy fw openvswitch: Consistently include VLAN header in flow and port stats. tcp: Do not apply TSO segment limit to non-TSO packets Altera TSE: Add missing phydev net/mlx4_core: Fix error flow in mlx4_init_hca() net/mlx4_core: Correcly update the mtt's offset in the MR re-reg flow qlcnic: Fix return value in qlcnic_probe() net: axienet: fix error return code ...
2 parents 0adc180 + 2abad79 commit bdec419

File tree

27 files changed

+105
-71
lines changed

27 files changed

+105
-71
lines changed

drivers/net/ethernet/allwinner/sun4i-emac.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -850,8 +850,10 @@ static int emac_probe(struct platform_device *pdev)
850850
}
851851

852852
db->clk = devm_clk_get(&pdev->dev, NULL);
853-
if (IS_ERR(db->clk))
853+
if (IS_ERR(db->clk)) {
854+
ret = PTR_ERR(db->clk);
854855
goto out;
856+
}
855857

856858
clk_prepare_enable(db->clk);
857859

drivers/net/ethernet/altera/altera_tse_main.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,10 +1170,6 @@ static int tse_open(struct net_device *dev)
11701170
init_error:
11711171
free_skbufs(dev);
11721172
alloc_skbuf_error:
1173-
if (priv->phydev) {
1174-
phy_disconnect(priv->phydev);
1175-
priv->phydev = NULL;
1176-
}
11771173
phy_error:
11781174
return ret;
11791175
}
@@ -1186,12 +1182,9 @@ static int tse_shutdown(struct net_device *dev)
11861182
int ret;
11871183
unsigned long int flags;
11881184

1189-
/* Stop and disconnect the PHY */
1190-
if (priv->phydev) {
1185+
/* Stop the PHY */
1186+
if (priv->phydev)
11911187
phy_stop(priv->phydev);
1192-
phy_disconnect(priv->phydev);
1193-
priv->phydev = NULL;
1194-
}
11951188

11961189
netif_stop_queue(dev);
11971190
napi_disable(&priv->napi);
@@ -1525,6 +1518,10 @@ static int altera_tse_probe(struct platform_device *pdev)
15251518
static int altera_tse_remove(struct platform_device *pdev)
15261519
{
15271520
struct net_device *ndev = platform_get_drvdata(pdev);
1521+
struct altera_tse_private *priv = netdev_priv(ndev);
1522+
1523+
if (priv->phydev)
1524+
phy_disconnect(priv->phydev);
15281525

15291526
platform_set_drvdata(pdev, NULL);
15301527
altera_tse_mdio_destroy(ndev);

drivers/net/ethernet/cisco/enic/enic_main.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,7 +1616,7 @@ static int enic_open(struct net_device *netdev)
16161616
if (vnic_rq_desc_used(&enic->rq[i]) == 0) {
16171617
netdev_err(netdev, "Unable to alloc receive buffers\n");
16181618
err = -ENOMEM;
1619-
goto err_out_notify_unset;
1619+
goto err_out_free_rq;
16201620
}
16211621
}
16221622

@@ -1649,7 +1649,9 @@ static int enic_open(struct net_device *netdev)
16491649

16501650
return 0;
16511651

1652-
err_out_notify_unset:
1652+
err_out_free_rq:
1653+
for (i = 0; i < enic->rq_count; i++)
1654+
vnic_rq_clean(&enic->rq[i], enic_free_rq_buf);
16531655
enic_dev_notify_unset(enic);
16541656
err_out_free_intr:
16551657
enic_free_intr(enic);

drivers/net/ethernet/intel/e100.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1543,7 +1543,7 @@ static int e100_phy_init(struct nic *nic)
15431543
mdio_write(netdev, nic->mii.phy_id, MII_BMCR, bmcr);
15441544
} else if ((nic->mac >= mac_82550_D102) || ((nic->flags & ich) &&
15451545
(mdio_read(netdev, nic->mii.phy_id, MII_TPISTATUS) & 0x8000) &&
1546-
!(nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled))) {
1546+
(nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled))) {
15471547
/* enable/disable MDI/MDI-X auto-switching. */
15481548
mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG,
15491549
nic->mii.force_media ? 0 : NCONFIG_AUTO_SWITCH);

drivers/net/ethernet/intel/i40e/i40e_debugfs.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n,
829829
if (desc_n >= ring->count || desc_n < 0) {
830830
dev_info(&pf->pdev->dev,
831831
"descriptor %d not found\n", desc_n);
832-
return;
832+
goto out;
833833
}
834834
if (!is_rx_ring) {
835835
txd = I40E_TX_DESC(ring, desc_n);
@@ -855,6 +855,8 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n,
855855
} else {
856856
dev_info(&pf->pdev->dev, "dump desc rx/tx <vsi_seid> <ring_id> [<desc_n>]\n");
857857
}
858+
859+
out:
858860
kfree(ring);
859861
}
860862

drivers/net/ethernet/intel/igb/e1000_82575.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,7 @@ static s32 igb_acquire_swfw_sync_82575(struct e1000_hw *hw, u16 mask)
11251125
u32 swmask = mask;
11261126
u32 fwmask = mask << 16;
11271127
s32 ret_val = 0;
1128-
s32 i = 0, timeout = 200; /* FIXME: find real value to use here */
1128+
s32 i = 0, timeout = 200;
11291129

11301130
while (i < timeout) {
11311131
if (igb_get_hw_semaphore(hw)) {

drivers/net/ethernet/mellanox/mlx4/main.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,7 +1829,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
18291829
err = mlx4_dev_cap(dev, &dev_cap);
18301830
if (err) {
18311831
mlx4_err(dev, "QUERY_DEV_CAP command failed, aborting\n");
1832-
goto err_stop_fw;
1832+
return err;
18331833
}
18341834

18351835
choose_steering_mode(dev, &dev_cap);
@@ -1860,7 +1860,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
18601860
&init_hca);
18611861
if ((long long) icm_size < 0) {
18621862
err = icm_size;
1863-
goto err_stop_fw;
1863+
return err;
18641864
}
18651865

18661866
dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1;
@@ -1874,7 +1874,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
18741874

18751875
err = mlx4_init_icm(dev, &dev_cap, &init_hca, icm_size);
18761876
if (err)
1877-
goto err_stop_fw;
1877+
return err;
18781878

18791879
err = mlx4_INIT_HCA(dev, &init_hca);
18801880
if (err) {
@@ -1886,7 +1886,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
18861886
err = mlx4_query_func(dev, &dev_cap);
18871887
if (err < 0) {
18881888
mlx4_err(dev, "QUERY_FUNC command failed, aborting.\n");
1889-
goto err_stop_fw;
1889+
goto err_close;
18901890
} else if (err & MLX4_QUERY_FUNC_NUM_SYS_EQS) {
18911891
dev->caps.num_eqs = dev_cap.max_eqs;
18921892
dev->caps.reserved_eqs = dev_cap.reserved_eqs;
@@ -2006,11 +2006,6 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
20062006
if (!mlx4_is_slave(dev))
20072007
mlx4_free_icms(dev);
20082008

2009-
err_stop_fw:
2010-
if (!mlx4_is_slave(dev)) {
2011-
mlx4_UNMAP_FA(dev);
2012-
mlx4_free_icm(dev, priv->fw.fw_icm, 0);
2013-
}
20142009
return err;
20152010
}
20162011

drivers/net/ethernet/mellanox/mlx4/mr.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,7 @@ EXPORT_SYMBOL_GPL(mlx4_mr_free);
584584
void mlx4_mr_rereg_mem_cleanup(struct mlx4_dev *dev, struct mlx4_mr *mr)
585585
{
586586
mlx4_mtt_cleanup(dev, &mr->mtt);
587+
mr->mtt.order = -1;
587588
}
588589
EXPORT_SYMBOL_GPL(mlx4_mr_rereg_mem_cleanup);
589590

@@ -593,14 +594,14 @@ int mlx4_mr_rereg_mem_write(struct mlx4_dev *dev, struct mlx4_mr *mr,
593594
{
594595
int err;
595596

596-
mpt_entry->start = cpu_to_be64(iova);
597-
mpt_entry->length = cpu_to_be64(size);
598-
mpt_entry->entity_size = cpu_to_be32(page_shift);
599-
600597
err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
601598
if (err)
602599
return err;
603600

601+
mpt_entry->start = cpu_to_be64(mr->iova);
602+
mpt_entry->length = cpu_to_be64(mr->size);
603+
mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift);
604+
604605
mpt_entry->pd_flags &= cpu_to_be32(MLX4_MPT_PD_MASK |
605606
MLX4_MPT_PD_FLAG_EN_INV);
606607
mpt_entry->flags &= cpu_to_be32(MLX4_MPT_FLAG_FREE |

drivers/net/ethernet/myricom/myri10ge/myri10ge.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4033,8 +4033,10 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
40334033
(void)pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
40344034
mgp->cmd = dma_alloc_coherent(&pdev->dev, sizeof(*mgp->cmd),
40354035
&mgp->cmd_bus, GFP_KERNEL);
4036-
if (mgp->cmd == NULL)
4036+
if (!mgp->cmd) {
4037+
status = -ENOMEM;
40374038
goto abort_with_enabled;
4039+
}
40384040

40394041
mgp->board_span = pci_resource_len(pdev, 0);
40404042
mgp->iomem_base = pci_resource_start(pdev, 0);

drivers/net/ethernet/qlogic/qla3xxx.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,7 @@ static int ql_wait_for_drvr_lock(struct ql3_adapter *qdev)
146146
{
147147
int i = 0;
148148

149-
while (i < 10) {
150-
if (i)
151-
ssleep(1);
152-
149+
do {
153150
if (ql_sem_lock(qdev,
154151
QL_DRVR_SEM_MASK,
155152
(QL_RESOURCE_BITS_BASE_CODE | (qdev->mac_index)
@@ -158,7 +155,8 @@ static int ql_wait_for_drvr_lock(struct ql3_adapter *qdev)
158155
"driver lock acquired\n");
159156
return 1;
160157
}
161-
}
158+
ssleep(1);
159+
} while (++i < 10);
162160

163161
netdev_err(qdev->ndev, "Timed out waiting for driver lock...\n");
164162
return 0;

0 commit comments

Comments
 (0)