Commit 4de44542 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files


Merge in late fixes in preparation for the net-next PR.

Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 9954464d 108f9405
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -252,6 +252,12 @@ static int iavf_ptp_gettimex64(struct ptp_clock_info *info,
	return iavf_read_phc_indirect(adapter, ts, sts);
}

static int iavf_ptp_settime64(struct ptp_clock_info *info,
			      const struct timespec64 *ts)
{
	return -EOPNOTSUPP;
}

/**
 * iavf_ptp_cache_phc_time - Cache PHC time for performing timestamp extension
 * @adapter: private adapter structure
@@ -320,6 +326,7 @@ static int iavf_ptp_register_clock(struct iavf_adapter *adapter)
		 KBUILD_MODNAME, dev_name(dev));
	ptp_info->owner = THIS_MODULE;
	ptp_info->gettimex64 = iavf_ptp_gettimex64;
	ptp_info->settime64 = iavf_ptp_settime64;
	ptp_info->do_aux_work = iavf_ptp_do_aux_work;

	clock = ptp_clock_register(ptp_info, dev);
+1 −1
Original line number Diff line number Diff line
@@ -369,7 +369,7 @@ int aqr_firmware_load(struct phy_device *phydev)
		 * assume that, and load a new image.
		 */
		ret = aqr_firmware_load_nvmem(phydev);
		if (!ret)
		if (ret == -EPROBE_DEFER || !ret)
			return ret;

		ret = aqr_firmware_load_fs(phydev);
+15 −3
Original line number Diff line number Diff line
@@ -2349,7 +2349,7 @@ void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
	int addr_family;
	__u8 tos, ttl;
	int ifindex;
	int err;
	int err = 0;
	u32 flags = vxlan->cfg.flags;
	bool use_cache;
	bool udp_sum = false;
@@ -2454,12 +2454,18 @@ void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,

	rcu_read_lock();
	if (addr_family == AF_INET) {
		struct vxlan_sock *sock4 = rcu_dereference(vxlan->vn4_sock);
		struct vxlan_sock *sock4;
		u16 ipcb_flags = 0;
		struct rtable *rt;
		__be16 df = 0;
		__be32 saddr;

		sock4 = rcu_dereference(vxlan->vn4_sock);
		if (unlikely(!sock4)) {
			reason = SKB_DROP_REASON_DEV_READY;
			goto tx_error;
		}

		if (!ifindex)
			ifindex = sock4->sock->sk->sk_bound_dev_if;

@@ -2534,10 +2540,16 @@ void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
				    ipcb_flags);
#if IS_ENABLED(CONFIG_IPV6)
	} else {
		struct vxlan_sock *sock6 = rcu_dereference(vxlan->vn6_sock);
		struct vxlan_sock *sock6;
		struct in6_addr saddr;
		u16 ip6cb_flags = 0;

		sock6 = rcu_dereference(vxlan->vn6_sock);
		if (unlikely(!sock6)) {
			reason = SKB_DROP_REASON_DEV_READY;
			goto tx_error;
		}

		if (!ifindex)
			ifindex = sock6->sock->sk->sk_bound_dev_if;

+1 −1
Original line number Diff line number Diff line
@@ -554,6 +554,7 @@ int __netpoll_setup(struct netpoll *np, struct net_device *ndev)
	int err;

	skb_queue_head_init(&np->skb_pool);
	INIT_WORK(&np->refill_wq, refill_skbs_work_handler);

	if (ndev->priv_flags & IFF_DISABLE_NETPOLL) {
		np_err(np, "%s doesn't support polling, aborting\n",
@@ -591,7 +592,6 @@ int __netpoll_setup(struct netpoll *np, struct net_device *ndev)

	/* fill up the skb queue */
	refill_skbs(np);
	INIT_WORK(&np->refill_wq, refill_skbs_work_handler);

	/* last thing to do is link it to the net device structure */
	rcu_assign_pointer(ndev->npinfo, npinfo);
+32 −26
Original line number Diff line number Diff line
@@ -1591,7 +1591,6 @@ static unsigned int cake_drop(struct Qdisc *sch, struct sk_buff **to_free)

	qdisc_drop_reason(skb, sch, to_free, SKB_DROP_REASON_QDISC_OVERLIMIT);
	sch->q.qlen--;
	qdisc_tree_reduce_backlog(sch, 1, len);

	cake_heapify(q, 0);

@@ -1737,14 +1736,14 @@ static void cake_reconfigure(struct Qdisc *sch);
static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
			struct sk_buff **to_free)
{
	u32 idx, tin, prev_qlen, prev_backlog, drop_id;
	struct cake_sched_data *q = qdisc_priv(sch);
	int len = qdisc_pkt_len(skb);
	int ret;
	int len = qdisc_pkt_len(skb), ret;
	struct sk_buff *ack = NULL;
	ktime_t now = ktime_get();
	struct cake_tin_data *b;
	struct cake_flow *flow;
	u32 idx, tin;
	bool same_flow = false;

	/* choose flow to insert into */
	idx = cake_classify(sch, &b, skb, q->flow_mode, &ret);
@@ -1818,6 +1817,8 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
		consume_skb(skb);
	} else {
		/* not splitting */
		int ack_pkt_len = 0;

		cobalt_set_enqueue_time(skb, now);
		get_cobalt_cb(skb)->adjusted_len = cake_overhead(q, skb);
		flow_queue_add(flow, skb);
@@ -1828,13 +1829,13 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
		if (ack) {
			b->ack_drops++;
			sch->qstats.drops++;
			b->bytes += qdisc_pkt_len(ack);
			len -= qdisc_pkt_len(ack);
			ack_pkt_len = qdisc_pkt_len(ack);
			b->bytes += ack_pkt_len;
			q->buffer_used += skb->truesize - ack->truesize;
			if (q->rate_flags & CAKE_FLAG_INGRESS)
				cake_advance_shaper(q, b, ack, now, true);

			qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(ack));
			qdisc_tree_reduce_backlog(sch, 1, ack_pkt_len);
			consume_skb(ack);
		} else {
			sch->q.qlen++;
@@ -1843,11 +1844,11 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,

		/* stats */
		b->packets++;
		b->bytes	    += len;
		b->backlogs[idx]    += len;
		b->tin_backlog      += len;
		sch->qstats.backlog += len;
		q->avg_window_bytes += len;
		b->bytes	    += len - ack_pkt_len;
		b->backlogs[idx]    += len - ack_pkt_len;
		b->tin_backlog      += len - ack_pkt_len;
		sch->qstats.backlog += len - ack_pkt_len;
		q->avg_window_bytes += len - ack_pkt_len;
	}

	if (q->overflow_timeout)
@@ -1922,24 +1923,29 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
	if (q->buffer_used > q->buffer_max_used)
		q->buffer_max_used = q->buffer_used;

	if (q->buffer_used > q->buffer_limit) {
		bool same_flow = false;
		u32 dropped = 0;
		u32 drop_id;
	if (q->buffer_used <= q->buffer_limit)
		return NET_XMIT_SUCCESS;

	prev_qlen = sch->q.qlen;
	prev_backlog = sch->qstats.backlog;

	while (q->buffer_used > q->buffer_limit) {
			dropped++;
		drop_id = cake_drop(sch, to_free);

		if ((drop_id >> 16) == tin &&
		    (drop_id & 0xFFFF) == idx)
			same_flow = true;
	}
		b->drop_overlimit += dropped;

		if (same_flow)
	prev_qlen -= sch->q.qlen;
	prev_backlog -= sch->qstats.backlog;
	b->drop_overlimit += prev_qlen;

	if (same_flow) {
		qdisc_tree_reduce_backlog(sch, prev_qlen - 1,
					  prev_backlog - len);
		return NET_XMIT_CN;
	}
	qdisc_tree_reduce_backlog(sch, prev_qlen, prev_backlog);
	return NET_XMIT_SUCCESS;
}

Loading