From: David S. Miller Date: Thu, 30 Jun 2016 09:03:36 +0000 (-0400) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ee58b57100ca953da7320c285315a95db2f7053d;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git Merge git://git./linux/kernel/git/davem/net Several cases of overlapping changes, except the packet scheduler conflicts which deal with the addition of the free list parameter to qdisc_enqueue(). Signed-off-by: David S. Miller --- ee58b57100ca953da7320c285315a95db2f7053d diff --cc drivers/net/ethernet/broadcom/bgmac.c index e6e74ca86e60,a6333d38ecc0..b045dc072c40 --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c @@@ -1320,9 -1311,10 +1321,10 @@@ static int bgmac_open(struct net_devic } napi_enable(&bgmac->napi); - phy_start(bgmac->phy_dev); + phy_start(net_dev->phydev); - netif_carrier_on(net_dev); + netif_start_queue(net_dev); + return 0; } diff --cc drivers/net/phy/fixed_phy.c index b376ada83598,9ec7f7353434..c649c101bbab --- a/drivers/net/phy/fixed_phy.c +++ b/drivers/net/phy/fixed_phy.c @@@ -23,9 -23,9 +23,10 @@@ #include #include #include +#include + #include -#define MII_REGS_NUM 29 +#include "swphy.h" struct fixed_mdio_bus { struct mii_bus *mii_bus; diff --cc drivers/net/usb/r8152.c index 11178f9dc838,4e257b8d8f3e..24d367280ecf --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@@ -2680,7 -2694,10 +2696,8 @@@ static void r8153_first_init(struct r81 ocp_data &= ~RCR_ACPT_ALL; ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data); - r8153_hw_phy_cfg(tp); - rtl8152_nic_reset(tp); + rtl_reset_bmu(tp); ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); ocp_data &= ~NOW_IS_OOB; diff --cc net/rds/tcp_connect.c index ba9ec67f4e41,f6e95d60db54..96c2c4d17909 --- a/net/rds/tcp_connect.c +++ b/net/rds/tcp_connect.c @@@ -55,20 -54,19 +55,20 @@@ void rds_tcp_state_change(struct sock * rdsdebug("sock %p state_change to %d\n", tc->t_sock, sk->sk_state); - switch(sk->sk_state) { - /* ignore connecting sockets as they make progress */ - case TCP_SYN_SENT: - case TCP_SYN_RECV: - break; - case TCP_ESTABLISHED: - rds_connect_path_complete(&conn->c_path[0], - RDS_CONN_CONNECTING); - break; - case TCP_CLOSE_WAIT: - case TCP_CLOSE: - rds_conn_drop(conn); - default: - break; + switch (sk->sk_state) { + /* ignore connecting sockets as they make progress */ + case TCP_SYN_SENT: + case TCP_SYN_RECV: + break; + case TCP_ESTABLISHED: - rds_connect_path_complete(conn, RDS_CONN_CONNECTING); ++ rds_connect_path_complete(&conn->c_path[0], ++ RDS_CONN_CONNECTING); + break; + case TCP_CLOSE_WAIT: + case TCP_CLOSE: + rds_conn_drop(conn); + default: + break; } out: read_unlock_bh(&sk->sk_callback_lock); diff --cc net/rds/tcp_listen.c index 22d9bb15f731,245542ca4718..f9cc945a77b3 --- a/net/rds/tcp_listen.c +++ b/net/rds/tcp_listen.c @@@ -137,10 -136,9 +137,10 @@@ int rds_tcp_accept_one(struct socket *s goto rst_nsk; } else { rds_tcp_reset_callbacks(new_sock, conn); - conn->c_outgoing = 0; + conn->c_path[0].cp_outgoing = 0; /* rds_connect_path_complete() marks RDS_CONN_UP */ - rds_connect_path_complete(conn, RDS_CONN_RESETTING); + rds_connect_path_complete(&conn->c_path[0], - RDS_CONN_DISCONNECTING); ++ RDS_CONN_RESETTING); } } else { rds_tcp_set_callbacks(new_sock, conn); diff --cc net/sched/sch_fifo.c index 6ea0db427f91,2e4bd2c0a50c..baeed6a78d28 --- a/net/sched/sch_fifo.c +++ b/net/sched/sch_fifo.c @@@ -34,17 -32,19 +34,20 @@@ static int pfifo_enqueue(struct sk_buf if (likely(skb_queue_len(&sch->q) < sch->limit)) return qdisc_enqueue_tail(skb, sch); - return qdisc_reshape_fail(skb, sch); + return qdisc_drop(skb, sch, to_free); } -static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc *sch) +static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc *sch, + struct sk_buff **to_free) { + unsigned int prev_backlog; + if (likely(skb_queue_len(&sch->q) < sch->limit)) return qdisc_enqueue_tail(skb, sch); + prev_backlog = sch->qstats.backlog; /* queue full, remove one skb to fulfill the limit */ - __qdisc_queue_drop_head(sch, &sch->q); + __qdisc_queue_drop_head(sch, &sch->q, to_free); qdisc_qstats_drop(sch); qdisc_enqueue_tail(skb, sch); diff --cc net/sched/sch_netem.c index 6eac3d880048,178f1630a036..aaaf02175338 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@@ -621,17 -650,14 +621,17 @@@ deliver #endif if (q->qdisc) { + unsigned int pkt_len = qdisc_pkt_len(skb); - int err = qdisc_enqueue(skb, q->qdisc); + struct sk_buff *to_free = NULL; + int err; + err = qdisc_enqueue(skb, q->qdisc, &to_free); + kfree_skb_list(to_free); - if (unlikely(err != NET_XMIT_SUCCESS)) { - if (net_xmit_drop_count(err)) { - qdisc_qstats_drop(sch); - qdisc_tree_reduce_backlog(sch, 1, - qdisc_pkt_len(skb)); - } + if (err != NET_XMIT_SUCCESS && + net_xmit_drop_count(err)) { + qdisc_qstats_drop(sch); + qdisc_tree_reduce_backlog(sch, 1, + pkt_len); } goto tfifo_dequeue; } diff --cc tools/virtio/ringtest/Makefile index 50e086c6a7b6,6173adae9f08..877a8a4721b6 --- a/tools/virtio/ringtest/Makefile +++ b/tools/virtio/ringtest/Makefile @@@ -1,6 -1,6 +1,6 @@@ all: - all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder ptr_ring -all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder noring ++all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder ptr_ring noring CFLAGS += -Wall CFLAGS += -pthread -O2 -ggdb @@@ -16,13 -15,13 +16,15 @@@ ring: ring.o main. virtio_ring_0_9: virtio_ring_0_9.o main.o virtio_ring_poll: virtio_ring_poll.o main.o virtio_ring_inorder: virtio_ring_inorder.o main.o +ptr_ring: ptr_ring.o main.o + noring: noring.o main.o clean: -rm main.o -rm ring.o ring -rm virtio_ring_0_9.o virtio_ring_0_9 -rm virtio_ring_poll.o virtio_ring_poll -rm virtio_ring_inorder.o virtio_ring_inorder + -rm ptr_ring.o ptr_ring + -rm noring.o noring .PHONY: all clean