diff --git a/[refs] b/[refs] index 003556e49260..866e5acb6ca6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a8d694c651356ec89452e15b0189c061fb7e1cf1 +refs/heads/master: b4068a80492022848c11123bf485aff5c902c583 diff --git a/trunk/drivers/net/virtio_net.c b/trunk/drivers/net/virtio_net.c index 63ef2a8905fb..43f6523c40be 100644 --- a/trunk/drivers/net/virtio_net.c +++ b/trunk/drivers/net/virtio_net.c @@ -24,7 +24,6 @@ #include #include #include -#include static int napi_weight = 128; module_param(napi_weight, int, 0444); @@ -34,7 +33,7 @@ module_param(csum, bool, 0444); module_param(gso, bool, 0444); /* FIXME: MTU in config. */ -#define MAX_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN) +#define MAX_PACKET_LEN (ETH_HLEN+ETH_DATA_LEN) #define GOOD_COPY_LEN 128 struct virtnet_info diff --git a/trunk/drivers/net/wireless/p54/p54usb.c b/trunk/drivers/net/wireless/p54/p54usb.c index 4487cc5c928b..5de2ebfb28c7 100644 --- a/trunk/drivers/net/wireless/p54/p54usb.c +++ b/trunk/drivers/net/wireless/p54/p54usb.c @@ -229,6 +229,8 @@ static void p54u_tx_3887(struct ieee80211_hw *dev, struct sk_buff *skb) usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), skb->data, skb->len, FREE_AFTER_TX(skb) ? p54u_tx_cb : p54u_tx_dummy_cb, skb); + addr_urb->transfer_flags |= URB_ZERO_PACKET; + data_urb->transfer_flags |= URB_ZERO_PACKET; usb_anchor_urb(addr_urb, &priv->submitted); err = usb_submit_urb(addr_urb, GFP_ATOMIC); @@ -237,7 +239,7 @@ static void p54u_tx_3887(struct ieee80211_hw *dev, struct sk_buff *skb) goto out; } - usb_anchor_urb(addr_urb, &priv->submitted); + usb_anchor_urb(data_urb, &priv->submitted); err = usb_submit_urb(data_urb, GFP_ATOMIC); if (err) usb_unanchor_urb(data_urb); @@ -332,12 +334,13 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb) * free what's inside the transfer_buffer after the callback routine * has completed. */ - int_urb->transfer_flags |= URB_FREE_BUFFER; + int_urb->transfer_flags |= URB_FREE_BUFFER | URB_ZERO_PACKET; usb_fill_bulk_urb(data_urb, priv->udev, usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), hdr, skb->len + sizeof(*hdr), FREE_AFTER_TX(skb) ? p54u_tx_cb : p54u_tx_dummy_cb, skb); + data_urb->transfer_flags |= URB_ZERO_PACKET; usb_anchor_urb(int_urb, &priv->submitted); err = usb_submit_urb(int_urb, GFP_ATOMIC); diff --git a/trunk/drivers/s390/net/lcs.c b/trunk/drivers/s390/net/lcs.c index 49c3bfa1afd7..acca6678cb2b 100644 --- a/trunk/drivers/s390/net/lcs.c +++ b/trunk/drivers/s390/net/lcs.c @@ -70,9 +70,7 @@ static char debug_buffer[255]; static void lcs_tasklet(unsigned long); static void lcs_start_kernel_thread(struct work_struct *); static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); -#ifdef CONFIG_IP_MULTICAST static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); -#endif /* CONFIG_IP_MULTICAST */ static int lcs_recovery(void *ptr); /** @@ -1287,8 +1285,6 @@ lcs_register_mc_addresses(void *data) lcs_clear_thread_running_bit(card, LCS_SET_MC_THREAD); return 0; } -#endif /* CONFIG_IP_MULTICAST */ - /** * function called by net device to * handle multicast address relevant things @@ -1296,7 +1292,6 @@ lcs_register_mc_addresses(void *data) static void lcs_set_multicast_list(struct net_device *dev) { -#ifdef CONFIG_IP_MULTICAST struct lcs_card *card; LCS_DBF_TEXT(4, trace, "setmulti"); @@ -1304,9 +1299,10 @@ lcs_set_multicast_list(struct net_device *dev) if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) schedule_work(&card->kernel_thread_starter); -#endif /* CONFIG_IP_MULTICAST */ } +#endif /* CONFIG_IP_MULTICAST */ + static long lcs_check_irb_error(struct ccw_device *cdev, struct irb *irb) { diff --git a/trunk/include/net/sctp/checksum.h b/trunk/include/net/sctp/checksum.h index 2fec3c366e81..b799fb21519a 100644 --- a/trunk/include/net/sctp/checksum.h +++ b/trunk/include/net/sctp/checksum.h @@ -79,5 +79,5 @@ static inline __be32 sctp_update_cksum(__u8 *buffer, __u16 length, __be32 crc32) static inline __be32 sctp_end_cksum(__be32 crc32) { - return (__force __be32)~cpu_to_le32((__force u32)crc32); + return ~crc32; } diff --git a/trunk/net/key/af_key.c b/trunk/net/key/af_key.c index 7dcbde3ea7d9..f8bd8df5e257 100644 --- a/trunk/net/key/af_key.c +++ b/trunk/net/key/af_key.c @@ -1285,7 +1285,6 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net, ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1]; natt->encap_dport = n_port->sadb_x_nat_t_port_port; } - memset(&natt->encap_oa, 0, sizeof(natt->encap_oa)); } err = xfrm_init_state(x); diff --git a/trunk/net/sctp/input.c b/trunk/net/sctp/input.c index 2e4a8646dbc3..bf612d954d41 100644 --- a/trunk/net/sctp/input.c +++ b/trunk/net/sctp/input.c @@ -249,19 +249,6 @@ int sctp_rcv(struct sk_buff *skb) */ sctp_bh_lock_sock(sk); - if (sk != rcvr->sk) { - /* Our cached sk is different from the rcvr->sk. This is - * because migrate()/accept() may have moved the association - * to a new socket and released all the sockets. So now we - * are holding a lock on the old socket while the user may - * be doing something with the new socket. Switch our veiw - * of the current sk. - */ - sctp_bh_unlock_sock(sk); - sk = rcvr->sk; - sctp_bh_lock_sock(sk); - } - if (sock_owned_by_user(sk)) { SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG); sctp_add_backlog(sk, skb); diff --git a/trunk/net/sctp/output.c b/trunk/net/sctp/output.c index 73639355157e..c3f417f7ec6e 100644 --- a/trunk/net/sctp/output.c +++ b/trunk/net/sctp/output.c @@ -324,16 +324,14 @@ sctp_xmit_t sctp_packet_append_chunk(struct sctp_packet *packet, switch (chunk->chunk_hdr->type) { case SCTP_CID_DATA: retval = sctp_packet_append_data(packet, chunk); - if (SCTP_XMIT_OK != retval) - goto finish; /* Disallow SACK bundling after DATA. */ packet->has_sack = 1; /* Disallow AUTH bundling after DATA */ packet->has_auth = 1; /* Let it be knows that packet has DATA in it */ packet->has_data = 1; - /* timestamp the chunk for rtx purposes */ - chunk->sent_at = jiffies; + if (SCTP_XMIT_OK != retval) + goto finish; break; case SCTP_CID_COOKIE_ECHO: packet->has_cookie_echo = 1; @@ -472,6 +470,7 @@ int sctp_packet_transmit(struct sctp_packet *packet) } else chunk->resent = 1; + chunk->sent_at = jiffies; has_data = 1; } diff --git a/trunk/net/sctp/outqueue.c b/trunk/net/sctp/outqueue.c index bc411c896216..247ebc95c1e5 100644 --- a/trunk/net/sctp/outqueue.c +++ b/trunk/net/sctp/outqueue.c @@ -929,6 +929,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) } /* Finally, transmit new packets. */ + start_timer = 0; while ((chunk = sctp_outq_dequeue_data(q)) != NULL) { /* RFC 2960 6.5 Every DATA chunk MUST carry a valid * stream identifier. @@ -1027,7 +1028,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) list_add_tail(&chunk->transmitted_list, &transport->transmitted); - sctp_transport_reset_timers(transport, 0); + sctp_transport_reset_timers(transport, start_timer-1); q->empty = 0;