Skip to content

Commit 27b4ad6

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: "This pull request is dedicated to the upcoming snowpocalypse parts 2 and 3 in the Pacific Northwest: 1) Drop profiles are broken because some drivers use dev_kfree_skb* instead of dev_consume_skb*, from Yang Wei. 2) Fix IWLWIFI kconfig deps, from Luca Coelho. 3) Fix percpu maps updating in bpftool, from Paolo Abeni. 4) Missing station release in batman-adv, from Felix Fietkau. 5) Fix some networking compat ioctl bugs, from Johannes Berg. 6) ucc_geth must reset the BQL queue state when stopping the device, from Mathias Thore. 7) Several XDP bug fixes in virtio_net from Toshiaki Makita. 8) TSO packets must be sent always on queue 0 in stmmac, from Jose Abreu. 9) Fix socket refcounting bug in RDS, from Eric Dumazet. 10) Handle sparse cpu allocations in bpf selftests, from Martynas Pumputis. 11) Make sure mgmt frames have enough tailroom in mac80211, from Felix Feitkau. 12) Use safe list walking in sctp_sendmsg() asoc list traversal, from Greg Kroah-Hartman. 13) Make DCCP's ccid_hc_[rt]x_parse_options always check for NULL ccid, from Eric Dumazet. 14) Need to reload WoL password into bcmsysport device after deep sleeps, from Florian Fainelli. 15) Remove filter from mask before freeing in cls_flower, from Petr Machata. 16) Missing release and use after free in error paths of s390 qeth code, from Julian Wiedmann. 17) Fix lockdep false positive in dsa code, from Marc Zyngier. 18) Fix counting of ATU violations in mv88e6xxx, from Andrew Lunn. 19) Fix EQ firmware assert in qed driver, from Manish Chopra. 20) Don't default Caivum PTP to Y in kconfig, from Bjorn Helgaas" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits) net: dsa: b53: Fix for failure when irq is not defined in dt sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach() geneve: should not call rt6_lookup() when ipv6 was disabled net: Don't default Cavium PTP driver to 'y' net: broadcom: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: via-velocity: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: tehuti: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: sun: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: fsl_ucc_hdlc: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: fec_mpc52xx: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: smsc: epic100: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: dscc4: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: tulip: de2104x: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net: defxx: replace dev_kfree_skb_irq by dev_consume_skb_irq for drop profiles net/mlx5e: Don't overwrite pedit action when multiple pedit used net/mlx5e: Update hw flows when encap source mac changed qed*: Advance drivers version to 8.37.0.20 qed: Change verbosity for coalescing message. qede: Fix system crash on configuring channels. qed: Consider TX tcs while deriving the max num_queues for PF. ...
2 parents 6809054 + 39841cc commit 27b4ad6

File tree

127 files changed

+1802
-544
lines changed

Some content is hidden

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

127 files changed

+1802
-544
lines changed

MAINTAINERS

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2848,6 +2848,9 @@ F: include/uapi/linux/if_bonding.h
28482848
BPF (Safe dynamic programs and tools)
28492849
M: Alexei Starovoitov <ast@kernel.org>
28502850
M: Daniel Borkmann <daniel@iogearbox.net>
2851+
R: Martin KaFai Lau <kafai@fb.com>
2852+
R: Song Liu <songliubraving@fb.com>
2853+
R: Yonghong Song <yhs@fb.com>
28512854
L: netdev@vger.kernel.org
28522855
L: linux-kernel@vger.kernel.org
28532856
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
@@ -2873,6 +2876,8 @@ F: samples/bpf/
28732876
F: tools/bpf/
28742877
F: tools/lib/bpf/
28752878
F: tools/testing/selftests/bpf/
2879+
K: bpf
2880+
N: bpf
28762881

28772882
BPF JIT for ARM
28782883
M: Shubham Bansal <illusionist.neo@gmail.com>
@@ -12868,6 +12873,13 @@ F: Documentation/devicetree/bindings/net/dsa/realtek-smi.txt
1286812873
F: drivers/net/dsa/realtek-smi*
1286912874
F: drivers/net/dsa/rtl83*
1287012875

12876+
REDPINE WIRELESS DRIVER
12877+
M: Amitkumar Karwar <amitkarwar@gmail.com>
12878+
M: Siva Rebbagondla <siva8118@gmail.com>
12879+
L: linux-wireless@vger.kernel.org
12880+
S: Maintained
12881+
F: drivers/net/wireless/rsi/
12882+
1287112883
REGISTER MAP ABSTRACTION
1287212884
M: Mark Brown <broonie@kernel.org>
1287312885
L: linux-kernel@vger.kernel.org
@@ -13696,6 +13708,15 @@ L: netdev@vger.kernel.org
1369613708
S: Supported
1369713709
F: drivers/net/ethernet/sfc/
1369813710

13711+
SFF/SFP/SFP+ MODULE SUPPORT
13712+
M: Russell King <linux@armlinux.org.uk>
13713+
L: netdev@vger.kernel.org
13714+
S: Maintained
13715+
F: drivers/net/phy/phylink.c
13716+
F: drivers/net/phy/sfp*
13717+
F: include/linux/phylink.h
13718+
F: include/linux/sfp.h
13719+
1369913720
SGI GRU DRIVER
1370013721
M: Dimitri Sivanich <sivanich@sgi.com>
1370113722
S: Maintained

drivers/isdn/mISDN/timerdev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ dev_expire_timer(struct timer_list *t)
170170
spin_lock_irqsave(&timer->dev->lock, flags);
171171
if (timer->id >= 0)
172172
list_move_tail(&timer->list, &timer->dev->expired);
173-
spin_unlock_irqrestore(&timer->dev->lock, flags);
174173
wake_up_interruptible(&timer->dev->wait);
174+
spin_unlock_irqrestore(&timer->dev->lock, flags);
175175
}
176176

177177
static int

drivers/net/dsa/b53/b53_srab.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -511,9 +511,6 @@ static void b53_srab_prepare_irq(struct platform_device *pdev)
511511
/* Clear all pending interrupts */
512512
writel(0xffffffff, priv->regs + B53_SRAB_INTR);
513513

514-
if (dev->pdata && dev->pdata->chip_id != BCM58XX_DEVICE_ID)
515-
return;
516-
517514
for (i = 0; i < B53_N_PORTS; i++) {
518515
port = &priv->port_intrs[i];
519516

drivers/net/dsa/mv88e6xxx/global1_atu.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)
314314
{
315315
struct mv88e6xxx_chip *chip = dev_id;
316316
struct mv88e6xxx_atu_entry entry;
317+
int spid;
317318
int err;
318319
u16 val;
319320

@@ -336,6 +337,8 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)
336337
if (err)
337338
goto out;
338339

340+
spid = entry.state;
341+
339342
if (val & MV88E6XXX_G1_ATU_OP_AGE_OUT_VIOLATION) {
340343
dev_err_ratelimited(chip->dev,
341344
"ATU age out violation for %pM\n",
@@ -344,23 +347,23 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)
344347

345348
if (val & MV88E6XXX_G1_ATU_OP_MEMBER_VIOLATION) {
346349
dev_err_ratelimited(chip->dev,
347-
"ATU member violation for %pM portvec %x\n",
348-
entry.mac, entry.portvec);
349-
chip->ports[entry.portvec].atu_member_violation++;
350+
"ATU member violation for %pM portvec %x spid %d\n",
351+
entry.mac, entry.portvec, spid);
352+
chip->ports[spid].atu_member_violation++;
350353
}
351354

352355
if (val & MV88E6XXX_G1_ATU_OP_MISS_VIOLATION) {
353356
dev_err_ratelimited(chip->dev,
354-
"ATU miss violation for %pM portvec %x\n",
355-
entry.mac, entry.portvec);
356-
chip->ports[entry.portvec].atu_miss_violation++;
357+
"ATU miss violation for %pM portvec %x spid %d\n",
358+
entry.mac, entry.portvec, spid);
359+
chip->ports[spid].atu_miss_violation++;
357360
}
358361

359362
if (val & MV88E6XXX_G1_ATU_OP_FULL_VIOLATION) {
360363
dev_err_ratelimited(chip->dev,
361-
"ATU full violation for %pM portvec %x\n",
362-
entry.mac, entry.portvec);
363-
chip->ports[entry.portvec].atu_full_violation++;
364+
"ATU full violation for %pM portvec %x spid %d\n",
365+
entry.mac, entry.portvec, spid);
366+
chip->ports[spid].atu_full_violation++;
364367
}
365368
mutex_unlock(&chip->reg_lock);
366369

drivers/net/ethernet/broadcom/bcmsysport.c

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -520,19 +520,14 @@ static void bcm_sysport_get_wol(struct net_device *dev,
520520
struct ethtool_wolinfo *wol)
521521
{
522522
struct bcm_sysport_priv *priv = netdev_priv(dev);
523-
u32 reg;
524523

525524
wol->supported = WAKE_MAGIC | WAKE_MAGICSECURE | WAKE_FILTER;
526525
wol->wolopts = priv->wolopts;
527526

528527
if (!(priv->wolopts & WAKE_MAGICSECURE))
529528
return;
530529

531-
/* Return the programmed SecureOn password */
532-
reg = umac_readl(priv, UMAC_PSW_MS);
533-
put_unaligned_be16(reg, &wol->sopass[0]);
534-
reg = umac_readl(priv, UMAC_PSW_LS);
535-
put_unaligned_be32(reg, &wol->sopass[2]);
530+
memcpy(wol->sopass, priv->sopass, sizeof(priv->sopass));
536531
}
537532

538533
static int bcm_sysport_set_wol(struct net_device *dev,
@@ -548,13 +543,8 @@ static int bcm_sysport_set_wol(struct net_device *dev,
548543
if (wol->wolopts & ~supported)
549544
return -EINVAL;
550545

551-
/* Program the SecureOn password */
552-
if (wol->wolopts & WAKE_MAGICSECURE) {
553-
umac_writel(priv, get_unaligned_be16(&wol->sopass[0]),
554-
UMAC_PSW_MS);
555-
umac_writel(priv, get_unaligned_be32(&wol->sopass[2]),
556-
UMAC_PSW_LS);
557-
}
546+
if (wol->wolopts & WAKE_MAGICSECURE)
547+
memcpy(priv->sopass, wol->sopass, sizeof(priv->sopass));
558548

559549
/* Flag the device and relevant IRQ as wakeup capable */
560550
if (wol->wolopts) {
@@ -2649,13 +2639,18 @@ static int bcm_sysport_suspend_to_wol(struct bcm_sysport_priv *priv)
26492639
unsigned int index, i = 0;
26502640
u32 reg;
26512641

2652-
/* Password has already been programmed */
26532642
reg = umac_readl(priv, UMAC_MPD_CTRL);
26542643
if (priv->wolopts & (WAKE_MAGIC | WAKE_MAGICSECURE))
26552644
reg |= MPD_EN;
26562645
reg &= ~PSW_EN;
2657-
if (priv->wolopts & WAKE_MAGICSECURE)
2646+
if (priv->wolopts & WAKE_MAGICSECURE) {
2647+
/* Program the SecureOn password */
2648+
umac_writel(priv, get_unaligned_be16(&priv->sopass[0]),
2649+
UMAC_PSW_MS);
2650+
umac_writel(priv, get_unaligned_be32(&priv->sopass[2]),
2651+
UMAC_PSW_LS);
26582652
reg |= PSW_EN;
2653+
}
26592654
umac_writel(priv, reg, UMAC_MPD_CTRL);
26602655

26612656
if (priv->wolopts & WAKE_FILTER) {

drivers/net/ethernet/broadcom/bcmsysport.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#define __BCM_SYSPORT_H
1313

1414
#include <linux/bitmap.h>
15+
#include <linux/ethtool.h>
1516
#include <linux/if_vlan.h>
1617
#include <linux/net_dim.h>
1718

@@ -778,6 +779,7 @@ struct bcm_sysport_priv {
778779
unsigned int crc_fwd:1;
779780
u16 rev;
780781
u32 wolopts;
782+
u8 sopass[SOPASS_MAX];
781783
unsigned int wol_irq_disabled:1;
782784

783785
/* MIB related fields */

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4973,12 +4973,18 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp)
49734973
struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring;
49744974
struct bnxt_ring_struct *ring = &cpr->cp_ring_struct;
49754975
u32 map_idx = ring->map_idx;
4976+
unsigned int vector;
49764977

4978+
vector = bp->irq_tbl[map_idx].vector;
4979+
disable_irq_nosync(vector);
49774980
rc = hwrm_ring_alloc_send_msg(bp, ring, type, map_idx);
4978-
if (rc)
4981+
if (rc) {
4982+
enable_irq(vector);
49794983
goto err_out;
4984+
}
49804985
bnxt_set_db(bp, &cpr->cp_db, type, map_idx, ring->fw_ring_id);
49814986
bnxt_db_nq(bp, &cpr->cp_db, cpr->cp_raw_cons);
4987+
enable_irq(vector);
49824988
bp->grp_info[i].cp_fw_ring_id = ring->fw_ring_id;
49834989

49844990
if (!i) {

drivers/net/ethernet/broadcom/sb1250-mac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1288,7 +1288,7 @@ static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d,
12881288
* for transmits, we just free buffers.
12891289
*/
12901290

1291-
dev_kfree_skb_irq(sb);
1291+
dev_consume_skb_irq(sb);
12921292

12931293
/*
12941294
* .. and advance to the next buffer.

drivers/net/ethernet/cavium/Kconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ config CAVIUM_PTP
5454
tristate "Cavium PTP coprocessor as PTP clock"
5555
depends on 64BIT && PCI
5656
imply PTP_1588_CLOCK
57-
default y
5857
---help---
5958
This driver adds support for the Precision Time Protocol Clocks and
6059
Timestamping coprocessor (PTP) found on Cavium processors.

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1434,7 +1434,8 @@ static void enic_rq_indicate_buf(struct vnic_rq *rq,
14341434
* csum is correct or is zero.
14351435
*/
14361436
if ((netdev->features & NETIF_F_RXCSUM) && !csum_not_calc &&
1437-
tcp_udp_csum_ok && ipv4_csum_ok && outer_csum_ok) {
1437+
tcp_udp_csum_ok && outer_csum_ok &&
1438+
(ipv4_csum_ok || ipv6)) {
14381439
skb->ip_summed = CHECKSUM_UNNECESSARY;
14391440
skb->csum_level = encap;
14401441
}

drivers/net/ethernet/dec/tulip/de2104x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ static void de_tx (struct de_private *de)
585585
netif_dbg(de, tx_done, de->dev,
586586
"tx done, slot %d\n", tx_tail);
587587
}
588-
dev_kfree_skb_irq(skb);
588+
dev_consume_skb_irq(skb);
589589
}
590590

591591
next:

drivers/net/ethernet/freescale/fec_mpc52xx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
369369
dma_unmap_single(dev->dev.parent, bd->skb_pa, skb->len,
370370
DMA_TO_DEVICE);
371371

372-
dev_kfree_skb_irq(skb);
372+
dev_consume_skb_irq(skb);
373373
}
374374
spin_unlock(&priv->lock);
375375

drivers/net/ethernet/freescale/ucc_geth.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1879,6 +1879,8 @@ static void ucc_geth_free_tx(struct ucc_geth_private *ugeth)
18791879
u16 i, j;
18801880
u8 __iomem *bd;
18811881

1882+
netdev_reset_queue(ugeth->ndev);
1883+
18821884
ug_info = ugeth->ug_info;
18831885
uf_info = &ug_info->uf_info;
18841886

drivers/net/ethernet/marvell/skge.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,10 @@ static void skge_get_regs(struct net_device *dev, struct ethtool_regs *regs,
152152
memset(p, 0, regs->len);
153153
memcpy_fromio(p, io, B3_RAM_ADDR);
154154

155-
memcpy_fromio(p + B3_RI_WTO_R1, io + B3_RI_WTO_R1,
156-
regs->len - B3_RI_WTO_R1);
155+
if (regs->len > B3_RI_WTO_R1) {
156+
memcpy_fromio(p + B3_RI_WTO_R1, io + B3_RI_WTO_R1,
157+
regs->len - B3_RI_WTO_R1);
158+
}
157159
}
158160

159161
/* Wake on Lan only supported on Yukon chips with rev 1 or above */

drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ int mlx5e_tc_tun_create_header_ipv4(struct mlx5e_priv *priv,
256256
e->m_neigh.family = n->ops->family;
257257
memcpy(&e->m_neigh.dst_ip, n->primary_key, n->tbl->key_len);
258258
e->out_dev = out_dev;
259+
e->route_dev = route_dev;
259260

260261
/* It's important to add the neigh to the hash table before checking
261262
* the neigh validity state. So if we'll get a notification, in case the
@@ -369,6 +370,7 @@ int mlx5e_tc_tun_create_header_ipv6(struct mlx5e_priv *priv,
369370
e->m_neigh.family = n->ops->family;
370371
memcpy(&e->m_neigh.dst_ip, n->primary_key, n->tbl->key_len);
371372
e->out_dev = out_dev;
373+
e->route_dev = route_dev;
372374

373375
/* It's importent to add the neigh to the hash table before checking
374376
* the neigh validity state. So if we'll get a notification, in case the
@@ -612,16 +614,18 @@ int mlx5e_tc_tun_parse(struct net_device *filter_dev,
612614
struct mlx5_flow_spec *spec,
613615
struct tc_cls_flower_offload *f,
614616
void *headers_c,
615-
void *headers_v)
617+
void *headers_v, u8 *match_level)
616618
{
617619
int tunnel_type;
618620
int err = 0;
619621

620622
tunnel_type = mlx5e_tc_tun_get_type(filter_dev);
621623
if (tunnel_type == MLX5E_TC_TUNNEL_TYPE_VXLAN) {
624+
*match_level = MLX5_MATCH_L4;
622625
err = mlx5e_tc_tun_parse_vxlan(priv, spec, f,
623626
headers_c, headers_v);
624627
} else if (tunnel_type == MLX5E_TC_TUNNEL_TYPE_GRETAP) {
628+
*match_level = MLX5_MATCH_L3;
625629
err = mlx5e_tc_tun_parse_gretap(priv, spec, f,
626630
headers_c, headers_v);
627631
} else {

drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@ int mlx5e_tc_tun_parse(struct net_device *filter_dev,
3939
struct mlx5_flow_spec *spec,
4040
struct tc_cls_flower_offload *f,
4141
void *headers_c,
42-
void *headers_v);
42+
void *headers_v, u8 *match_level);
4343

4444
#endif //__MLX5_EN_TC_TUNNEL_H__

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,10 @@ static void mlx5e_rep_update_flows(struct mlx5e_priv *priv,
596596
if (neigh_connected && !(e->flags & MLX5_ENCAP_ENTRY_VALID)) {
597597
ether_addr_copy(e->h_dest, ha);
598598
ether_addr_copy(eth->h_dest, ha);
599+
/* Update the encap source mac, in case that we delete
600+
* the flows when encap source mac changed.
601+
*/
602+
ether_addr_copy(eth->h_source, e->route_dev->dev_addr);
599603

600604
mlx5e_tc_encap_flows_add(priv, e);
601605
}

drivers/net/ethernet/mellanox/mlx5/core/en_rep.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ struct mlx5e_encap_entry {
148148
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
149149

150150
struct net_device *out_dev;
151+
struct net_device *route_dev;
151152
int tunnel_type;
152153
int tunnel_hlen;
153154
int reformat_type;

0 commit comments

Comments
 (0)