Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (46 commits) cnic: Fix NETDEV_UP event processing. uvesafb/connector: Disallow unpliviged users to send netlink packets pohmelfs/connector: Disallow unpliviged users to configure pohmelfs dst/connector: Disallow unpliviged users to configure dst dm/connector: Only process connector packages from privileged processes connector: Removed the destruct_data callback since it is always kfree_skb() connector/dm: Fixed a compilation warning connector: Provide the sender's credentials to the callback connector: Keep the skb in cn_callback_data e1000e/igb/ixgbe: Don't report an error if devices don't support AER net: Fix wrong sizeof net: splice() from tcp to pipe should take into account O_NONBLOCK net: Use sk_mark for routing lookup in more places sky2: irqname based on pci address skge: use unique IRQ name IPv4 TCP fails to send window scale option when window scale is zero net/ipv4/tcp.c: fix min() type mismatch warning Kconfig: STRIP: Remove stale bits of STRIP help text NET: mkiss: Fix typo tg3: Remove prev_vlan_tag from struct tx_ring_info ...
This commit is contained in:
@@ -2105,15 +2105,17 @@ static void pktgen_setup_inject(struct pktgen_dev *pkt_dev)
|
||||
static void spin(struct pktgen_dev *pkt_dev, ktime_t spin_until)
|
||||
{
|
||||
ktime_t start_time, end_time;
|
||||
s32 remaining;
|
||||
s64 remaining;
|
||||
struct hrtimer_sleeper t;
|
||||
|
||||
hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
||||
hrtimer_set_expires(&t.timer, spin_until);
|
||||
|
||||
remaining = ktime_to_us(hrtimer_expires_remaining(&t.timer));
|
||||
if (remaining <= 0)
|
||||
if (remaining <= 0) {
|
||||
pkt_dev->next_tx = ktime_add_ns(spin_until, pkt_dev->delay);
|
||||
return;
|
||||
}
|
||||
|
||||
start_time = ktime_now();
|
||||
if (remaining < 100)
|
||||
|
@@ -1119,6 +1119,7 @@ int inet_sk_rebuild_header(struct sock *sk)
|
||||
{
|
||||
struct flowi fl = {
|
||||
.oif = sk->sk_bound_dev_if,
|
||||
.mark = sk->sk_mark,
|
||||
.nl_u = {
|
||||
.ip4_u = {
|
||||
.daddr = daddr,
|
||||
|
@@ -335,6 +335,7 @@ int ip_queue_xmit(struct sk_buff *skb, int ipfragok)
|
||||
|
||||
{
|
||||
struct flowi fl = { .oif = sk->sk_bound_dev_if,
|
||||
.mark = sk->sk_mark,
|
||||
.nl_u = { .ip4_u =
|
||||
{ .daddr = daddr,
|
||||
.saddr = inet->saddr,
|
||||
|
@@ -580,7 +580,7 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
|
||||
|
||||
lock_sock(sk);
|
||||
|
||||
timeo = sock_rcvtimeo(sk, flags & SPLICE_F_NONBLOCK);
|
||||
timeo = sock_rcvtimeo(sk, sock->file->f_flags & O_NONBLOCK);
|
||||
while (tss.len) {
|
||||
ret = __tcp_splice_read(sk, &tss);
|
||||
if (ret < 0)
|
||||
@@ -2047,7 +2047,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
|
||||
return -EINVAL;
|
||||
|
||||
val = strncpy_from_user(name, optval,
|
||||
min(TCP_CA_NAME_MAX-1, optlen));
|
||||
min_t(long, TCP_CA_NAME_MAX-1, optlen));
|
||||
if (val < 0)
|
||||
return -EFAULT;
|
||||
name[val] = 0;
|
||||
|
@@ -361,6 +361,7 @@ static inline int tcp_urg_mode(const struct tcp_sock *tp)
|
||||
#define OPTION_SACK_ADVERTISE (1 << 0)
|
||||
#define OPTION_TS (1 << 1)
|
||||
#define OPTION_MD5 (1 << 2)
|
||||
#define OPTION_WSCALE (1 << 3)
|
||||
|
||||
struct tcp_out_options {
|
||||
u8 options; /* bit field of OPTION_* */
|
||||
@@ -427,7 +428,7 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
|
||||
TCPOLEN_SACK_PERM);
|
||||
}
|
||||
|
||||
if (unlikely(opts->ws)) {
|
||||
if (unlikely(OPTION_WSCALE & opts->options)) {
|
||||
*ptr++ = htonl((TCPOPT_NOP << 24) |
|
||||
(TCPOPT_WINDOW << 16) |
|
||||
(TCPOLEN_WINDOW << 8) |
|
||||
@@ -494,8 +495,8 @@ static unsigned tcp_syn_options(struct sock *sk, struct sk_buff *skb,
|
||||
}
|
||||
if (likely(sysctl_tcp_window_scaling)) {
|
||||
opts->ws = tp->rx_opt.rcv_wscale;
|
||||
if (likely(opts->ws))
|
||||
size += TCPOLEN_WSCALE_ALIGNED;
|
||||
opts->options |= OPTION_WSCALE;
|
||||
size += TCPOLEN_WSCALE_ALIGNED;
|
||||
}
|
||||
if (likely(sysctl_tcp_sack)) {
|
||||
opts->options |= OPTION_SACK_ADVERTISE;
|
||||
@@ -537,8 +538,8 @@ static unsigned tcp_synack_options(struct sock *sk,
|
||||
|
||||
if (likely(ireq->wscale_ok)) {
|
||||
opts->ws = ireq->rcv_wscale;
|
||||
if (likely(opts->ws))
|
||||
size += TCPOLEN_WSCALE_ALIGNED;
|
||||
opts->options |= OPTION_WSCALE;
|
||||
size += TCPOLEN_WSCALE_ALIGNED;
|
||||
}
|
||||
if (likely(doing_ts)) {
|
||||
opts->options |= OPTION_TS;
|
||||
|
@@ -696,6 +696,7 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
|
||||
if (rt == NULL) {
|
||||
struct flowi fl = { .oif = ipc.oif,
|
||||
.mark = sk->sk_mark,
|
||||
.nl_u = { .ip4_u =
|
||||
{ .daddr = faddr,
|
||||
.saddr = saddr,
|
||||
|
@@ -367,7 +367,10 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
|
||||
u32 staflags;
|
||||
|
||||
if (unlikely(!sta || ieee80211_is_probe_resp(hdr->frame_control)))
|
||||
if (unlikely(!sta || ieee80211_is_probe_resp(hdr->frame_control)
|
||||
|| ieee80211_is_auth(hdr->frame_control)
|
||||
|| ieee80211_is_assoc_resp(hdr->frame_control)
|
||||
|| ieee80211_is_reassoc_resp(hdr->frame_control)))
|
||||
return TX_CONTINUE;
|
||||
|
||||
staflags = get_sta_flags(sta);
|
||||
|
Reference in New Issue
Block a user