Skip to content

Commit 10ec34f

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Fix BPF filter validation of netlink attribute accesses, from Mathias Kruase. 2) Netfilter conntrack generation seqcount not initialized properly, from Andrey Vagin. 3) Fix comparison mask computation on big-endian in nft_cmp_fast(), from Patrick McHardy. 4) Properly limit MTU over ipv6, from Eric Dumazet. 5) Fix seccomp system call argument population on 32-bit, from Daniel Borkmann. 6) skb_network_protocol() should not use hard-coded ETH_HLEN, instead skb->mac_len needs to be used. From Vlad Yasevich. 7) We have several cases of using socket based communications to implement a tunnel. For example, some tunnels are encapsulations over UDP so we use an internal kernel UDP socket to do the transmits. These tunnels should behave just like other software devices and pass the packets on down to the next layer. Most importantly we want the top-level socket (eg TCP) that created the traffic to be charged for the SKB memory. However, once you get into the IP output path, we have code that assumed that whatever was attached to skb->sk is an IP socket. To keep the top-level socket being charged for the SKB memory, whilst satisfying the needs of the IP output path, we now pass in an explicit 'sk' argument. From Eric Dumazet. 8) ping_init_sock() leaks group info, from Xiaoming Wang. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (33 commits) cxgb4: use the correct max size for firmware flash qlcnic: Fix MSI-X initialization code ip6_gre: don't allow to remove the fb_tunnel_dev ipv4: add a sock pointer to dst->output() path. ipv4: add a sock pointer to ip_queue_xmit() driver/net: cosa driver uses udelay incorrectly at86rf230: fix __at86rf230_read_subreg function at86rf230: remove check if AVDD settled net: cadence: Add architecture dependencies net: Start with correct mac_len in skb_network_protocol Revert "net: sctp: Fix a_rwnd/rwnd management to reflect real state of the receiver's buffer" cxgb4: Save the correct mac addr for hw-loopback connections in the L2T net: filter: seccomp: fix wrong decoding of BPF_S_ANC_SECCOMP_LD_W seccomp: fix populating a0-a5 syscall args in 32-bit x86 BPF qlcnic: Do not disable SR-IOV when VFs are assigned to VMs qlcnic: Fix QLogic application/driver interface for virtual NIC configuration qlcnic: Fix PVID configuration on eSwitch port. qlcnic: Fix max ring count calculation qlcnic: Fix to send INIT_NIC_FUNC as first mailbox. qlcnic: Fix panic due to uninitialzed delayed_work struct in use. ...
2 parents 55101e2 + 6f1d721 commit 10ec34f

Some content is hidden

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

63 files changed

+454
-279
lines changed

drivers/net/ethernet/broadcom/bnx2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8627,6 +8627,7 @@ bnx2_remove_one(struct pci_dev *pdev)
86278627
pci_disable_device(pdev);
86288628
}
86298629

8630+
#ifdef CONFIG_PM_SLEEP
86308631
static int
86318632
bnx2_suspend(struct device *device)
86328633
{
@@ -8665,7 +8666,6 @@ bnx2_resume(struct device *device)
86658666
return 0;
86668667
}
86678668

8668-
#ifdef CONFIG_PM_SLEEP
86698669
static SIMPLE_DEV_PM_OPS(bnx2_pm_ops, bnx2_suspend, bnx2_resume);
86708670
#define BNX2_PM_OPS (&bnx2_pm_ops)
86718671

drivers/net/ethernet/cadence/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
config NET_CADENCE
66
bool "Cadence devices"
7-
depends on HAS_IOMEM
7+
depends on HAS_IOMEM && (ARM || AVR32 || COMPILE_TEST)
88
default y
99
---help---
1010
If you have a network (Ethernet) card belonging to this class, say Y.
@@ -22,15 +22,15 @@ if NET_CADENCE
2222

2323
config ARM_AT91_ETHER
2424
tristate "AT91RM9200 Ethernet support"
25-
depends on HAS_DMA
25+
depends on HAS_DMA && (ARCH_AT91RM9200 || COMPILE_TEST)
2626
select MACB
2727
---help---
2828
If you wish to compile a kernel for the AT91RM9200 and enable
2929
ethernet support, then you should always answer Y to this.
3030

3131
config MACB
3232
tristate "Cadence MACB/GEM support"
33-
depends on HAS_DMA
33+
depends on HAS_DMA && (PLATFORM_AT32AP || ARCH_AT91 || ARCH_PICOXCELL || ARCH_ZYNQ || COMPILE_TEST)
3434
select PHYLIB
3535
---help---
3636
The Cadence MACB ethernet interface is found on many Atmel AT32 and

drivers/net/ethernet/chelsio/cxgb4/l2t.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ static int write_l2e(struct adapter *adap, struct l2t_entry *e, int sync)
154154
req->params = htons(L2T_W_PORT(e->lport) | L2T_W_NOREPLY(!sync));
155155
req->l2t_idx = htons(e->idx);
156156
req->vlan = htons(e->vlan);
157-
if (e->neigh)
157+
if (e->neigh && !(e->neigh->dev->flags & IFF_LOOPBACK))
158158
memcpy(e->dmac, e->neigh->ha, sizeof(e->dmac));
159159
memcpy(req->dst_mac, e->dmac, sizeof(req->dst_mac));
160160

@@ -394,6 +394,8 @@ struct l2t_entry *cxgb4_l2t_get(struct l2t_data *d, struct neighbour *neigh,
394394
if (e) {
395395
spin_lock(&e->lock); /* avoid race with t4_l2t_free */
396396
e->state = L2T_STATE_RESOLVING;
397+
if (neigh->dev->flags & IFF_LOOPBACK)
398+
memcpy(e->dmac, physdev->dev_addr, sizeof(e->dmac));
397399
memcpy(e->addr, addr, addr_len);
398400
e->ifindex = ifidx;
399401
e->hash = hash;

drivers/net/ethernet/chelsio/cxgb4/t4_hw.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ enum {
682682
SF_RD_ID = 0x9f, /* read ID */
683683
SF_ERASE_SECTOR = 0xd8, /* erase sector */
684684

685-
FW_MAX_SIZE = 512 * 1024,
685+
FW_MAX_SIZE = 16 * SF_SEC_SIZE,
686686
};
687687

688688
/**

drivers/net/ethernet/emulex/benet/be.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ enum vf_state {
374374
#define BE_FLAGS_NAPI_ENABLED (1 << 9)
375375
#define BE_FLAGS_QNQ_ASYNC_EVT_RCVD (1 << 11)
376376
#define BE_FLAGS_VXLAN_OFFLOADS (1 << 12)
377+
#define BE_FLAGS_SETUP_DONE (1 << 13)
377378

378379
#define BE_UC_PMAC_COUNT 30
379380
#define BE_VF_UC_PMAC_COUNT 2

drivers/net/ethernet/emulex/benet/be_main.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2033,11 +2033,13 @@ static void be_tx_compl_clean(struct be_adapter *adapter)
20332033
bool dummy_wrb;
20342034
int i, pending_txqs;
20352035

2036-
/* Wait for a max of 200ms for all the tx-completions to arrive. */
2036+
/* Stop polling for compls when HW has been silent for 10ms */
20372037
do {
20382038
pending_txqs = adapter->num_tx_qs;
20392039

20402040
for_all_tx_queues(adapter, txo, i) {
2041+
cmpl = 0;
2042+
num_wrbs = 0;
20412043
txq = &txo->q;
20422044
while ((txcp = be_tx_compl_get(&txo->cq))) {
20432045
end_idx =
@@ -2050,14 +2052,13 @@ static void be_tx_compl_clean(struct be_adapter *adapter)
20502052
if (cmpl) {
20512053
be_cq_notify(adapter, txo->cq.id, false, cmpl);
20522054
atomic_sub(num_wrbs, &txq->used);
2053-
cmpl = 0;
2054-
num_wrbs = 0;
2055+
timeo = 0;
20552056
}
20562057
if (atomic_read(&txq->used) == 0)
20572058
pending_txqs--;
20582059
}
20592060

2060-
if (pending_txqs == 0 || ++timeo > 200)
2061+
if (pending_txqs == 0 || ++timeo > 10 || be_hw_error(adapter))
20612062
break;
20622063

20632064
mdelay(1);
@@ -2725,6 +2726,12 @@ static int be_close(struct net_device *netdev)
27252726
struct be_eq_obj *eqo;
27262727
int i;
27272728

2729+
/* This protection is needed as be_close() may be called even when the
2730+
* adapter is in cleared state (after eeh perm failure)
2731+
*/
2732+
if (!(adapter->flags & BE_FLAGS_SETUP_DONE))
2733+
return 0;
2734+
27282735
be_roce_dev_close(adapter);
27292736

27302737
if (adapter->flags & BE_FLAGS_NAPI_ENABLED) {
@@ -3055,6 +3062,7 @@ static int be_clear(struct be_adapter *adapter)
30553062
be_clear_queues(adapter);
30563063

30573064
be_msix_disable(adapter);
3065+
adapter->flags &= ~BE_FLAGS_SETUP_DONE;
30583066
return 0;
30593067
}
30603068

@@ -3559,6 +3567,7 @@ static int be_setup(struct be_adapter *adapter)
35593567
adapter->phy.fc_autoneg = 1;
35603568

35613569
be_schedule_worker(adapter);
3570+
adapter->flags |= BE_FLAGS_SETUP_DONE;
35623571
return 0;
35633572
err:
35643573
be_clear(adapter);

drivers/net/ethernet/marvell/mvneta.c

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,8 @@
8989
#define MVNETA_TX_IN_PRGRS BIT(1)
9090
#define MVNETA_TX_FIFO_EMPTY BIT(8)
9191
#define MVNETA_RX_MIN_FRAME_SIZE 0x247c
92-
#define MVNETA_SERDES_CFG 0x24A0
92+
#define MVNETA_SGMII_SERDES_CFG 0x24A0
9393
#define MVNETA_SGMII_SERDES_PROTO 0x0cc7
94-
#define MVNETA_RGMII_SERDES_PROTO 0x0667
9594
#define MVNETA_TYPE_PRIO 0x24bc
9695
#define MVNETA_FORCE_UNI BIT(21)
9796
#define MVNETA_TXQ_CMD_1 0x24e4
@@ -712,6 +711,35 @@ static void mvneta_rxq_bm_disable(struct mvneta_port *pp,
712711
mvreg_write(pp, MVNETA_RXQ_CONFIG_REG(rxq->id), val);
713712
}
714713

714+
715+
716+
/* Sets the RGMII Enable bit (RGMIIEn) in port MAC control register */
717+
static void mvneta_gmac_rgmii_set(struct mvneta_port *pp, int enable)
718+
{
719+
u32 val;
720+
721+
val = mvreg_read(pp, MVNETA_GMAC_CTRL_2);
722+
723+
if (enable)
724+
val |= MVNETA_GMAC2_PORT_RGMII;
725+
else
726+
val &= ~MVNETA_GMAC2_PORT_RGMII;
727+
728+
mvreg_write(pp, MVNETA_GMAC_CTRL_2, val);
729+
}
730+
731+
/* Config SGMII port */
732+
static void mvneta_port_sgmii_config(struct mvneta_port *pp)
733+
{
734+
u32 val;
735+
736+
val = mvreg_read(pp, MVNETA_GMAC_CTRL_2);
737+
val |= MVNETA_GMAC2_PCS_ENABLE;
738+
mvreg_write(pp, MVNETA_GMAC_CTRL_2, val);
739+
740+
mvreg_write(pp, MVNETA_SGMII_SERDES_CFG, MVNETA_SGMII_SERDES_PROTO);
741+
}
742+
715743
/* Start the Ethernet port RX and TX activity */
716744
static void mvneta_port_up(struct mvneta_port *pp)
717745
{
@@ -2729,15 +2757,12 @@ static void mvneta_port_power_up(struct mvneta_port *pp, int phy_mode)
27292757
mvreg_write(pp, MVNETA_UNIT_INTR_CAUSE, 0);
27302758

27312759
if (phy_mode == PHY_INTERFACE_MODE_SGMII)
2732-
mvreg_write(pp, MVNETA_SERDES_CFG, MVNETA_SGMII_SERDES_PROTO);
2733-
else
2734-
mvreg_write(pp, MVNETA_SERDES_CFG, MVNETA_RGMII_SERDES_PROTO);
2760+
mvneta_port_sgmii_config(pp);
27352761

2736-
val = mvreg_read(pp, MVNETA_GMAC_CTRL_2);
2737-
2738-
val |= MVNETA_GMAC2_PCS_ENABLE | MVNETA_GMAC2_PORT_RGMII;
2762+
mvneta_gmac_rgmii_set(pp, 1);
27392763

27402764
/* Cancel Port Reset */
2765+
val = mvreg_read(pp, MVNETA_GMAC_CTRL_2);
27412766
val &= ~MVNETA_GMAC2_PORT_RESET;
27422767
mvreg_write(pp, MVNETA_GMAC_CTRL_2, val);
27432768

0 commit comments

Comments
 (0)