From f1c4c566c787ba3617ec0c634c36e82f2a5560a9 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 5 Feb 2009 15:08:11 -0800 Subject: [PATCH] --- yaml --- r: 130990 b: refs/heads/master c: 12402b5b7a2aa7ebed246db4570a5eb905fe79ea h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/cxgb3/sge.c | 3 +-- trunk/drivers/net/gianfar.c | 3 +++ trunk/drivers/net/gianfar.h | 2 +- trunk/net/ipv4/udp.c | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 05556d87995c..6852fe1241d6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c4e061ace75513aee227090486cc46dec7810c00 +refs/heads/master: 12402b5b7a2aa7ebed246db4570a5eb905fe79ea diff --git a/trunk/drivers/net/cxgb3/sge.c b/trunk/drivers/net/cxgb3/sge.c index 379a1324db4e..d31791f60292 100644 --- a/trunk/drivers/net/cxgb3/sge.c +++ b/trunk/drivers/net/cxgb3/sge.c @@ -2276,8 +2276,7 @@ static int process_responses(struct adapter *adap, struct sge_qset *qs, } else if ((len = ntohl(r->len_cq)) != 0) { struct sge_fl *fl; - if (eth) - lro = qs->lro_enabled && is_eth_tcp(rss_hi); + lro &= eth && is_eth_tcp(rss_hi); fl = (len & F_RSPD_FLQ) ? &qs->fl[1] : &qs->fl[0]; if (fl->use_pages) { diff --git a/trunk/drivers/net/gianfar.c b/trunk/drivers/net/gianfar.c index 3f7eab42aef1..acae2d8cd688 100644 --- a/trunk/drivers/net/gianfar.c +++ b/trunk/drivers/net/gianfar.c @@ -351,6 +351,9 @@ static int gfar_probe(struct of_device *ofdev, /* Reset MAC layer */ gfar_write(&priv->regs->maccfg1, MACCFG1_SOFT_RESET); + /* We need to delay at least 3 TX clocks */ + udelay(2); + tempval = (MACCFG1_TX_FLOW | MACCFG1_RX_FLOW); gfar_write(&priv->regs->maccfg1, tempval); diff --git a/trunk/drivers/net/gianfar.h b/trunk/drivers/net/gianfar.h index b1a83344acc7..eaa86897f5c3 100644 --- a/trunk/drivers/net/gianfar.h +++ b/trunk/drivers/net/gianfar.h @@ -312,7 +312,7 @@ extern const char gfar_driver_version[]; #define ATTRELI_EI(x) (x) #define BD_LFLAG(flags) ((flags) << 16) -#define BD_LENGTH_MASK 0x00ff +#define BD_LENGTH_MASK 0x0000ffff /* TxBD status field bits */ #define TXBD_READY 0x8000 diff --git a/trunk/net/ipv4/udp.c b/trunk/net/ipv4/udp.c index 1ab180bad72a..cc3a0a06c004 100644 --- a/trunk/net/ipv4/udp.c +++ b/trunk/net/ipv4/udp.c @@ -1231,7 +1231,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, int proto) { struct sock *sk; - struct udphdr *uh = udp_hdr(skb); + struct udphdr *uh; unsigned short ulen; struct rtable *rt = (struct rtable*)skb->dst; __be32 saddr = ip_hdr(skb)->saddr; @@ -1244,6 +1244,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, if (!pskb_may_pull(skb, sizeof(struct udphdr))) goto drop; /* No space for header. */ + uh = udp_hdr(skb); ulen = ntohs(uh->len); if (ulen > skb->len) goto short_packet;