Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb3f1e7b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [LAPB]: Fix windowsize check
  [TCP]: Fixes IW > 2 cases when TCP is application limited
  [PKT_SCHED] RED: Fix overflow in calculation of queue average
  [LLX]: SOCK_DGRAM interface fixes
  [PKT_SCHED]: Return ENOENT if qdisc module is unavailable
  [BRIDGE]: netlink status fix
parents 3e3183ba 558e10a5
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -212,7 +212,7 @@ static inline unsigned long red_calc_qavg_from_idle_time(struct red_parms *p)
		 * Seems, it is the best solution to
		 * Seems, it is the best solution to
		 * problem of too coarse exponent tabulation.
		 * problem of too coarse exponent tabulation.
		 */
		 */
		us_idle = (p->qavg * us_idle) >> p->Scell_log;
		us_idle = (p->qavg * (u64)us_idle) >> p->Scell_log;


		if (us_idle < (p->qavg >> 1))
		if (us_idle < (p->qavg >> 1))
			return p->qavg - us_idle;
			return p->qavg - us_idle;
+1 −1
Original line number Original line Diff line number Diff line
@@ -85,7 +85,7 @@ void br_ifinfo_notify(int event, struct net_bridge_port *port)
		goto err_out;
		goto err_out;


	err = br_fill_ifinfo(skb, port, current->pid, 0, event, 0);
	err = br_fill_ifinfo(skb, port, current->pid, 0, event, 0);
	if (err)
	if (err < 0)
		goto err_kfree;
		goto err_kfree;


	NETLINK_CB(skb).dst_group = RTNLGRP_LINK;
	NETLINK_CB(skb).dst_group = RTNLGRP_LINK;
+2 −1
Original line number Original line Diff line number Diff line
@@ -3541,7 +3541,8 @@ void tcp_cwnd_application_limited(struct sock *sk)
	if (inet_csk(sk)->icsk_ca_state == TCP_CA_Open &&
	if (inet_csk(sk)->icsk_ca_state == TCP_CA_Open &&
	    sk->sk_socket && !test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
	    sk->sk_socket && !test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
		/* Limited by application or receiver window. */
		/* Limited by application or receiver window. */
		u32 win_used = max(tp->snd_cwnd_used, 2U);
		u32 init_win = tcp_init_cwnd(tp, __sk_dst_get(sk));
		u32 win_used = max(tp->snd_cwnd_used, init_win);
		if (win_used < tp->snd_cwnd) {
		if (win_used < tp->snd_cwnd) {
			tp->snd_ssthresh = tcp_current_ssthresh(sk);
			tp->snd_ssthresh = tcp_current_ssthresh(sk);
			tp->snd_cwnd = (tp->snd_cwnd + win_used) >> 1;
			tp->snd_cwnd = (tp->snd_cwnd + win_used) >> 1;
+7 −5
Original line number Original line Diff line number Diff line
@@ -238,11 +238,13 @@ int lapb_setparms(struct net_device *dev, struct lapb_parms_struct *parms)
		goto out_put;
		goto out_put;


	if (lapb->state == LAPB_STATE_0) {
	if (lapb->state == LAPB_STATE_0) {
		if (((parms->mode & LAPB_EXTENDED) &&
		if (parms->mode & LAPB_EXTENDED) {
		     (parms->window < 1 || parms->window > 127)) ||
			if (parms->window < 1 || parms->window > 127)
		    (parms->window < 1 || parms->window > 7))
				goto out_put;
				goto out_put;

		} else {
			if (parms->window < 1 || parms->window > 7)
				goto out_put;
		}
		lapb->mode    = parms->mode;
		lapb->mode    = parms->mode;
		lapb->window  = parms->window;
		lapb->window  = parms->window;
	}
	}
+8 −12
Original line number Original line Diff line number Diff line
@@ -784,24 +784,20 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
		copied += used;
		copied += used;
		len -= used;
		len -= used;


		if (used + offset < skb->len)
			continue;

		if (!(flags & MSG_PEEK)) {
		if (!(flags & MSG_PEEK)) {
			sk_eat_skb(sk, skb, 0);
			sk_eat_skb(sk, skb, 0);
			*seq = 0;
			*seq = 0;
		}
		}
	} while (len > 0);


	/* 
		/* For non stream protcols we get one packet per recvmsg call */
	 * According to UNIX98, msg_name/msg_namelen are ignored
		if (sk->sk_type != SOCK_STREAM)
	 * on connected socket. -ANK
	 * But... af_llc still doesn't have separate sets of methods for
	 * SOCK_DGRAM and SOCK_STREAM :-( So we have to do this test, will
	 * eventually fix this tho :-) -acme
	 */
	if (sk->sk_type == SOCK_DGRAM)
			goto copy_uaddr;
			goto copy_uaddr;

		/* Partial read */
		if (used + offset < skb->len)
			continue;
	} while (len > 0);

out:
out:
	release_sock(sk);
	release_sock(sk);
	return copied;
	return copied;
Loading