Skip to content

Commit 1b1bc42

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) GTP fixes from Andreas Schultz (missing genl module alias, clear IP DF on transmit). 2) Netfilter needs to reflect the fwmark when sending resets, from Pau Espin Pedrol. 3) nftable dump OOPS fix from Liping Zhang. 4) Fix erroneous setting of VIRTIO_NET_HDR_F_DATA_VALID on transmit, from Rolf Neugebauer. 5) Fix build error of ipt_CLUSTERIP when procfs is disabled, from Arnd Bergmann. 6) Fix regression in handling of NETIF_F_SG in harmonize_features(), from Eric Dumazet. 7) Fix RTNL deadlock wrt. lwtunnel module loading, from David Ahern. 8) tcp_fastopen_create_child() needs to setup tp->max_window, from Alexey Kodanev. 9) Missing kmemdup() failure check in ipv6 segment routing code, from Eric Dumazet. 10) Don't execute unix_bind() under the bindlock, otherwise we deadlock with splice. From WANG Cong. 11) ip6_tnl_parse_tlv_enc_lim() potentially reallocates the skb buffer, therefore callers must reload cached header pointers into that skb. Fix from Eric Dumazet. 12) Fix various bugs in legacy IRQ fallback handling in alx driver, from Tobias Regnery. 13) Do not allow lwtunnel drivers to be unloaded while they are referenced by active instances, from Robert Shearman. 14) Fix truncated PHY LED trigger names, from Geert Uytterhoeven. 15) Fix a few regressions from virtio_net XDP support, from John Fastabend and Jakub Kicinski. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (102 commits) ISDN: eicon: silence misleading array-bounds warning net: phy: micrel: add support for KSZ8795 gtp: fix cross netns recv on gtp socket gtp: clear DF bit on GTP packet tx gtp: add genl family modules alias tcp: don't annotate mark on control socket from tcp_v6_send_response() ravb: unmap descriptors when freeing rings virtio_net: reject XDP programs using header adjustment virtio_net: use dev_kfree_skb for small buffer XDP receive r8152: check rx after napi is enabled r8152: re-schedule napi for tx r8152: avoid start_xmit to schedule napi when napi is disabled r8152: avoid start_xmit to call napi_schedule during autosuspend net: dsa: Bring back device detaching in dsa_slave_suspend() net: phy: leds: Fix truncated LED trigger names net: phy: leds: Break dependency of phy.h on phy_led_triggers.h net: phy: leds: Clear phy_num_led_triggers on failure to avoid crash net-next: ethernet: mediatek: change the compatible string Documentation: devicetree: change the mediatek ethernet compatible string bnxt_en: Fix RTNL lock usage on bnxt_get_port_module_status(). ...
2 parents 3365135 + 950eabb commit 1b1bc42

File tree

113 files changed

+916
-562
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+916
-562
lines changed

Documentation/devicetree/bindings/net/mediatek-net.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ have dual GMAC each represented by a child node..
77
* Ethernet controller node
88

99
Required properties:
10-
- compatible: Should be "mediatek,mt7623-eth"
10+
- compatible: Should be "mediatek,mt2701-eth"
1111
- reg: Address and length of the register set for the device
1212
- interrupts: Should contain the three frame engines interrupts in numeric
1313
order. These are fe_int0, fe_int1 and fe_int2.

Documentation/devicetree/bindings/net/phy.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ Optional Properties:
1919
specifications. If neither of these are specified, the default is to
2020
assume clause 22.
2121

22-
If the phy's identifier is known then the list may contain an entry
23-
of the form: "ethernet-phy-idAAAA.BBBB" where
22+
If the PHY reports an incorrect ID (or none at all) then the
23+
"compatible" list may contain an entry with the correct PHY ID in the
24+
form: "ethernet-phy-idAAAA.BBBB" where
2425
AAAA - The value of the 16 bit Phy Identifier 1 register as
2526
4 hex digits. This is the chip vendor OUI bits 3:18
2627
BBBB - The value of the 16 bit Phy Identifier 2 register as

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3567,7 +3567,7 @@ F: drivers/infiniband/hw/cxgb3/
35673567
F: include/uapi/rdma/cxgb3-abi.h
35683568

35693569
CXGB4 ETHERNET DRIVER (CXGB4)
3570-
M: Hariprasad S <hariprasad@chelsio.com>
3570+
M: Ganesh Goudar <ganeshgr@chelsio.com>
35713571
L: netdev@vger.kernel.org
35723572
W: http://www.chelsio.com
35733573
S: Supported

drivers/isdn/hardware/eicon/message.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11297,7 +11297,8 @@ static void mixer_notify_update(PLCI *plci, byte others)
1129711297
((CAPI_MSG *) msg)->header.ncci = 0;
1129811298
((CAPI_MSG *) msg)->info.facility_req.Selector = SELECTOR_LINE_INTERCONNECT;
1129911299
((CAPI_MSG *) msg)->info.facility_req.structs[0] = 3;
11300-
PUT_WORD(&(((CAPI_MSG *) msg)->info.facility_req.structs[1]), LI_REQ_SILENT_UPDATE);
11300+
((CAPI_MSG *) msg)->info.facility_req.structs[1] = LI_REQ_SILENT_UPDATE & 0xff;
11301+
((CAPI_MSG *) msg)->info.facility_req.structs[2] = LI_REQ_SILENT_UPDATE >> 8;
1130111302
((CAPI_MSG *) msg)->info.facility_req.structs[3] = 0;
1130211303
w = api_put(notify_plci->appl, (CAPI_MSG *) msg);
1130311304
if (w != _QUEUE_FULL)

drivers/net/can/c_can/c_can_pci.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ static int c_can_pci_probe(struct pci_dev *pdev,
161161

162162
dev->irq = pdev->irq;
163163
priv->base = addr;
164+
priv->device = &pdev->dev;
164165

165166
if (!c_can_pci_data->freq) {
166167
dev_err(&pdev->dev, "no clock frequency defined\n");

drivers/net/can/ti_hecc.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,12 @@ static int ti_hecc_probe(struct platform_device *pdev)
948948
netif_napi_add(ndev, &priv->napi, ti_hecc_rx_poll,
949949
HECC_DEF_NAPI_WEIGHT);
950950

951-
clk_enable(priv->clk);
951+
err = clk_prepare_enable(priv->clk);
952+
if (err) {
953+
dev_err(&pdev->dev, "clk_prepare_enable() failed\n");
954+
goto probe_exit_clk;
955+
}
956+
952957
err = register_candev(ndev);
953958
if (err) {
954959
dev_err(&pdev->dev, "register_candev() failed\n");
@@ -981,7 +986,7 @@ static int ti_hecc_remove(struct platform_device *pdev)
981986
struct ti_hecc_priv *priv = netdev_priv(ndev);
982987

983988
unregister_candev(ndev);
984-
clk_disable(priv->clk);
989+
clk_disable_unprepare(priv->clk);
985990
clk_put(priv->clk);
986991
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
987992
iounmap(priv->base);
@@ -1006,7 +1011,7 @@ static int ti_hecc_suspend(struct platform_device *pdev, pm_message_t state)
10061011
hecc_set_bit(priv, HECC_CANMC, HECC_CANMC_PDR);
10071012
priv->can.state = CAN_STATE_SLEEPING;
10081013

1009-
clk_disable(priv->clk);
1014+
clk_disable_unprepare(priv->clk);
10101015

10111016
return 0;
10121017
}
@@ -1015,8 +1020,11 @@ static int ti_hecc_resume(struct platform_device *pdev)
10151020
{
10161021
struct net_device *dev = platform_get_drvdata(pdev);
10171022
struct ti_hecc_priv *priv = netdev_priv(dev);
1023+
int err;
10181024

1019-
clk_enable(priv->clk);
1025+
err = clk_prepare_enable(priv->clk);
1026+
if (err)
1027+
return err;
10201028

10211029
hecc_clear_bit(priv, HECC_CANMC, HECC_CANMC_PDR);
10221030
priv->can.state = CAN_STATE_ERROR_ACTIVE;

drivers/net/ethernet/amd/xgbe/xgbe-common.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,8 @@
891891
#define PCS_V1_WINDOW_SELECT 0x03fc
892892
#define PCS_V2_WINDOW_DEF 0x9060
893893
#define PCS_V2_WINDOW_SELECT 0x9064
894+
#define PCS_V2_RV_WINDOW_DEF 0x1060
895+
#define PCS_V2_RV_WINDOW_SELECT 0x1064
894896

895897
/* PCS register entry bit positions and sizes */
896898
#define PCS_V2_WINDOW_DEF_OFFSET_INDEX 6

drivers/net/ethernet/amd/xgbe/xgbe-dev.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ static int xgbe_read_mmd_regs_v2(struct xgbe_prv_data *pdata, int prtad,
11511151
offset = pdata->xpcs_window + (mmd_address & pdata->xpcs_window_mask);
11521152

11531153
spin_lock_irqsave(&pdata->xpcs_lock, flags);
1154-
XPCS32_IOWRITE(pdata, PCS_V2_WINDOW_SELECT, index);
1154+
XPCS32_IOWRITE(pdata, pdata->xpcs_window_sel_reg, index);
11551155
mmd_data = XPCS16_IOREAD(pdata, offset);
11561156
spin_unlock_irqrestore(&pdata->xpcs_lock, flags);
11571157

@@ -1183,7 +1183,7 @@ static void xgbe_write_mmd_regs_v2(struct xgbe_prv_data *pdata, int prtad,
11831183
offset = pdata->xpcs_window + (mmd_address & pdata->xpcs_window_mask);
11841184

11851185
spin_lock_irqsave(&pdata->xpcs_lock, flags);
1186-
XPCS32_IOWRITE(pdata, PCS_V2_WINDOW_SELECT, index);
1186+
XPCS32_IOWRITE(pdata, pdata->xpcs_window_sel_reg, index);
11871187
XPCS16_IOWRITE(pdata, offset, mmd_data);
11881188
spin_unlock_irqrestore(&pdata->xpcs_lock, flags);
11891189
}
@@ -3407,8 +3407,10 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
34073407

34083408
/* Flush Tx queues */
34093409
ret = xgbe_flush_tx_queues(pdata);
3410-
if (ret)
3410+
if (ret) {
3411+
netdev_err(pdata->netdev, "error flushing TX queues\n");
34113412
return ret;
3413+
}
34123414

34133415
/*
34143416
* Initialize DMA related features

drivers/net/ethernet/amd/xgbe/xgbe-drv.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,9 @@ static int xgbe_start(struct xgbe_prv_data *pdata)
10701070

10711071
DBGPR("-->xgbe_start\n");
10721072

1073-
hw_if->init(pdata);
1073+
ret = hw_if->init(pdata);
1074+
if (ret)
1075+
return ret;
10741076

10751077
xgbe_napi_enable(pdata, 1);
10761078

drivers/net/ethernet/amd/xgbe/xgbe-pci.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
265265
struct xgbe_prv_data *pdata;
266266
struct device *dev = &pdev->dev;
267267
void __iomem * const *iomap_table;
268+
struct pci_dev *rdev;
268269
unsigned int ma_lo, ma_hi;
269270
unsigned int reg;
270271
int bar_mask;
@@ -326,8 +327,20 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
326327
if (netif_msg_probe(pdata))
327328
dev_dbg(dev, "xpcs_regs = %p\n", pdata->xpcs_regs);
328329

330+
/* Set the PCS indirect addressing definition registers */
331+
rdev = pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(0, 0));
332+
if (rdev &&
333+
(rdev->vendor == PCI_VENDOR_ID_AMD) && (rdev->device == 0x15d0)) {
334+
pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF;
335+
pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT;
336+
} else {
337+
pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF;
338+
pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT;
339+
}
340+
pci_dev_put(rdev);
341+
329342
/* Configure the PCS indirect addressing support */
330-
reg = XPCS32_IOREAD(pdata, PCS_V2_WINDOW_DEF);
343+
reg = XPCS32_IOREAD(pdata, pdata->xpcs_window_def_reg);
331344
pdata->xpcs_window = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, OFFSET);
332345
pdata->xpcs_window <<= 6;
333346
pdata->xpcs_window_size = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, SIZE);

drivers/net/ethernet/amd/xgbe/xgbe.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,8 @@ struct xgbe_prv_data {
955955

956956
/* XPCS indirect addressing lock */
957957
spinlock_t xpcs_lock;
958+
unsigned int xpcs_window_def_reg;
959+
unsigned int xpcs_window_sel_reg;
958960
unsigned int xpcs_window;
959961
unsigned int xpcs_window_size;
960962
unsigned int xpcs_window_mask;

drivers/net/ethernet/atheros/alx/main.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -685,8 +685,6 @@ static int alx_alloc_rings(struct alx_priv *alx)
685685
return -ENOMEM;
686686
}
687687

688-
alx_reinit_rings(alx);
689-
690688
return 0;
691689
}
692690

@@ -703,7 +701,7 @@ static void alx_free_rings(struct alx_priv *alx)
703701
if (alx->qnapi[0] && alx->qnapi[0]->rxq)
704702
kfree(alx->qnapi[0]->rxq->bufs);
705703

706-
if (!alx->descmem.virt)
704+
if (alx->descmem.virt)
707705
dma_free_coherent(&alx->hw.pdev->dev,
708706
alx->descmem.size,
709707
alx->descmem.virt,
@@ -984,6 +982,7 @@ static int alx_realloc_resources(struct alx_priv *alx)
984982
alx_free_rings(alx);
985983
alx_free_napis(alx);
986984
alx_disable_advanced_intr(alx);
985+
alx_init_intr(alx, false);
987986

988987
err = alx_alloc_napis(alx);
989988
if (err)
@@ -1241,6 +1240,12 @@ static int __alx_open(struct alx_priv *alx, bool resume)
12411240
if (err)
12421241
goto out_free_rings;
12431242

1243+
/* must be called after alx_request_irq because the chip stops working
1244+
* if we copy the dma addresses in alx_init_ring_ptrs twice when
1245+
* requesting msi-x interrupts failed
1246+
*/
1247+
alx_reinit_rings(alx);
1248+
12441249
netif_set_real_num_tx_queues(alx->dev, alx->num_txq);
12451250
netif_set_real_num_rx_queues(alx->dev, alx->num_rxq);
12461251

drivers/net/ethernet/broadcom/bcm63xx_enet.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,8 @@ static int bcm_enet_open(struct net_device *dev)
913913
priv->old_link = 0;
914914
priv->old_duplex = -1;
915915
priv->old_pause = -1;
916+
} else {
917+
phydev = NULL;
916918
}
917919

918920
/* mask all interrupts and request them */
@@ -1083,7 +1085,7 @@ static int bcm_enet_open(struct net_device *dev)
10831085
enet_dmac_writel(priv, priv->dma_chan_int_mask,
10841086
ENETDMAC_IRMASK, priv->tx_chan);
10851087

1086-
if (priv->has_phy)
1088+
if (phydev)
10871089
phy_start(phydev);
10881090
else
10891091
bcm_enet_adjust_link(dev);
@@ -1126,7 +1128,7 @@ static int bcm_enet_open(struct net_device *dev)
11261128
free_irq(dev->irq, dev);
11271129

11281130
out_phy_disconnect:
1129-
if (priv->has_phy)
1131+
if (phydev)
11301132
phy_disconnect(phydev);
11311133

11321134
return ret;

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,7 +1099,7 @@ static struct sk_buff *bnxt_gro_func_5730x(struct bnxt_tpa_info *tpa_info,
10991099
{
11001100
#ifdef CONFIG_INET
11011101
struct tcphdr *th;
1102-
int len, nw_off, tcp_opt_len;
1102+
int len, nw_off, tcp_opt_len = 0;
11031103

11041104
if (tcp_ts)
11051105
tcp_opt_len = 12;
@@ -5314,17 +5314,12 @@ static int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
53145314
if ((link_info->support_auto_speeds | diff) !=
53155315
link_info->support_auto_speeds) {
53165316
/* An advertised speed is no longer supported, so we need to
5317-
* update the advertisement settings. See bnxt_reset() for
5318-
* comments about the rtnl_lock() sequence below.
5317+
* update the advertisement settings. Caller holds RTNL
5318+
* so we can modify link settings.
53195319
*/
5320-
clear_bit(BNXT_STATE_IN_SP_TASK, &bp->state);
5321-
rtnl_lock();
53225320
link_info->advertising = link_info->support_auto_speeds;
5323-
if (test_bit(BNXT_STATE_OPEN, &bp->state) &&
5324-
(link_info->autoneg & BNXT_AUTONEG_SPEED))
5321+
if (link_info->autoneg & BNXT_AUTONEG_SPEED)
53255322
bnxt_hwrm_set_link_setting(bp, true, false);
5326-
set_bit(BNXT_STATE_IN_SP_TASK, &bp->state);
5327-
rtnl_unlock();
53285323
}
53295324
return 0;
53305325
}
@@ -6200,29 +6195,37 @@ static void bnxt_timer(unsigned long data)
62006195
mod_timer(&bp->timer, jiffies + bp->current_interval);
62016196
}
62026197

6203-
/* Only called from bnxt_sp_task() */
6204-
static void bnxt_reset(struct bnxt *bp, bool silent)
6198+
static void bnxt_rtnl_lock_sp(struct bnxt *bp)
62056199
{
6206-
/* bnxt_reset_task() calls bnxt_close_nic() which waits
6207-
* for BNXT_STATE_IN_SP_TASK to clear.
6208-
* If there is a parallel dev_close(), bnxt_close() may be holding
6200+
/* We are called from bnxt_sp_task which has BNXT_STATE_IN_SP_TASK
6201+
* set. If the device is being closed, bnxt_close() may be holding
62096202
* rtnl() and waiting for BNXT_STATE_IN_SP_TASK to clear. So we
62106203
* must clear BNXT_STATE_IN_SP_TASK before holding rtnl().
62116204
*/
62126205
clear_bit(BNXT_STATE_IN_SP_TASK, &bp->state);
62136206
rtnl_lock();
6214-
if (test_bit(BNXT_STATE_OPEN, &bp->state))
6215-
bnxt_reset_task(bp, silent);
6207+
}
6208+
6209+
static void bnxt_rtnl_unlock_sp(struct bnxt *bp)
6210+
{
62166211
set_bit(BNXT_STATE_IN_SP_TASK, &bp->state);
62176212
rtnl_unlock();
62186213
}
62196214

6215+
/* Only called from bnxt_sp_task() */
6216+
static void bnxt_reset(struct bnxt *bp, bool silent)
6217+
{
6218+
bnxt_rtnl_lock_sp(bp);
6219+
if (test_bit(BNXT_STATE_OPEN, &bp->state))
6220+
bnxt_reset_task(bp, silent);
6221+
bnxt_rtnl_unlock_sp(bp);
6222+
}
6223+
62206224
static void bnxt_cfg_ntp_filters(struct bnxt *);
62216225

62226226
static void bnxt_sp_task(struct work_struct *work)
62236227
{
62246228
struct bnxt *bp = container_of(work, struct bnxt, sp_task);
6225-
int rc;
62266229

62276230
set_bit(BNXT_STATE_IN_SP_TASK, &bp->state);
62286231
smp_mb__after_atomic();
@@ -6236,16 +6239,6 @@ static void bnxt_sp_task(struct work_struct *work)
62366239

62376240
if (test_and_clear_bit(BNXT_RX_NTP_FLTR_SP_EVENT, &bp->sp_event))
62386241
bnxt_cfg_ntp_filters(bp);
6239-
if (test_and_clear_bit(BNXT_LINK_CHNG_SP_EVENT, &bp->sp_event)) {
6240-
if (test_and_clear_bit(BNXT_LINK_SPEED_CHNG_SP_EVENT,
6241-
&bp->sp_event))
6242-
bnxt_hwrm_phy_qcaps(bp);
6243-
6244-
rc = bnxt_update_link(bp, true);
6245-
if (rc)
6246-
netdev_err(bp->dev, "SP task can't update link (rc: %x)\n",
6247-
rc);
6248-
}
62496242
if (test_and_clear_bit(BNXT_HWRM_EXEC_FWD_REQ_SP_EVENT, &bp->sp_event))
62506243
bnxt_hwrm_exec_fwd_req(bp);
62516244
if (test_and_clear_bit(BNXT_VXLAN_ADD_PORT_SP_EVENT, &bp->sp_event)) {
@@ -6266,18 +6259,39 @@ static void bnxt_sp_task(struct work_struct *work)
62666259
bnxt_hwrm_tunnel_dst_port_free(
62676260
bp, TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE);
62686261
}
6262+
if (test_and_clear_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event))
6263+
bnxt_hwrm_port_qstats(bp);
6264+
6265+
/* These functions below will clear BNXT_STATE_IN_SP_TASK. They
6266+
* must be the last functions to be called before exiting.
6267+
*/
6268+
if (test_and_clear_bit(BNXT_LINK_CHNG_SP_EVENT, &bp->sp_event)) {
6269+
int rc = 0;
6270+
6271+
if (test_and_clear_bit(BNXT_LINK_SPEED_CHNG_SP_EVENT,
6272+
&bp->sp_event))
6273+
bnxt_hwrm_phy_qcaps(bp);
6274+
6275+
bnxt_rtnl_lock_sp(bp);
6276+
if (test_bit(BNXT_STATE_OPEN, &bp->state))
6277+
rc = bnxt_update_link(bp, true);
6278+
bnxt_rtnl_unlock_sp(bp);
6279+
if (rc)
6280+
netdev_err(bp->dev, "SP task can't update link (rc: %x)\n",
6281+
rc);
6282+
}
6283+
if (test_and_clear_bit(BNXT_HWRM_PORT_MODULE_SP_EVENT, &bp->sp_event)) {
6284+
bnxt_rtnl_lock_sp(bp);
6285+
if (test_bit(BNXT_STATE_OPEN, &bp->state))
6286+
bnxt_get_port_module_status(bp);
6287+
bnxt_rtnl_unlock_sp(bp);
6288+
}
62696289
if (test_and_clear_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event))
62706290
bnxt_reset(bp, false);
62716291

62726292
if (test_and_clear_bit(BNXT_RESET_TASK_SILENT_SP_EVENT, &bp->sp_event))
62736293
bnxt_reset(bp, true);
62746294

6275-
if (test_and_clear_bit(BNXT_HWRM_PORT_MODULE_SP_EVENT, &bp->sp_event))
6276-
bnxt_get_port_module_status(bp);
6277-
6278-
if (test_and_clear_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event))
6279-
bnxt_hwrm_port_qstats(bp);
6280-
62816295
smp_mb__before_atomic();
62826296
clear_bit(BNXT_STATE_IN_SP_TASK, &bp->state);
62836297
}

drivers/net/ethernet/freescale/gianfar.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2948,7 +2948,7 @@ static bool gfar_add_rx_frag(struct gfar_rx_buff *rxb, u32 lstatus,
29482948
}
29492949

29502950
/* try reuse page */
2951-
if (unlikely(page_count(page) != 1))
2951+
if (unlikely(page_count(page) != 1 || page_is_pfmemalloc(page)))
29522952
return false;
29532953

29542954
/* change offset to the other half */

0 commit comments

Comments
 (0)