diff options
-rw-r--r-- | drivers/net/ixgbe/ixgbe_fcoe.c | 2 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 6 | ||||
-rw-r--r-- | net/mac80211/agg-tx.c | 8 |
4 files changed, 15 insertions, 5 deletions
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/ixgbe/ixgbe_fcoe.c index fa9f24e23683..28cf104e36cc 100644 --- a/drivers/net/ixgbe/ixgbe_fcoe.c +++ b/drivers/net/ixgbe/ixgbe_fcoe.c | |||
@@ -336,7 +336,7 @@ int ixgbe_fcoe_ddp(struct ixgbe_adapter *adapter, | |||
336 | /* return 0 to bypass going to ULD for DDPed data */ | 336 | /* return 0 to bypass going to ULD for DDPed data */ |
337 | if (fcstat == IXGBE_RXDADV_STAT_FCSTAT_DDP) | 337 | if (fcstat == IXGBE_RXDADV_STAT_FCSTAT_DDP) |
338 | rc = 0; | 338 | rc = 0; |
339 | else | 339 | else if (ddp->len) |
340 | rc = ddp->len; | 340 | rc = ddp->len; |
341 | } | 341 | } |
342 | 342 | ||
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 71df9ed9b534..8a8518dd6948 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -494,12 +494,12 @@ static void ixgbe_receive_skb(struct ixgbe_q_vector *q_vector, | |||
494 | 494 | ||
495 | skb_record_rx_queue(skb, ring->queue_index); | 495 | skb_record_rx_queue(skb, ring->queue_index); |
496 | if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL)) { | 496 | if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL)) { |
497 | if (adapter->vlgrp && is_vlan && (tag != 0)) | 497 | if (adapter->vlgrp && is_vlan && (tag & VLAN_VID_MASK)) |
498 | vlan_gro_receive(napi, adapter->vlgrp, tag, skb); | 498 | vlan_gro_receive(napi, adapter->vlgrp, tag, skb); |
499 | else | 499 | else |
500 | napi_gro_receive(napi, skb); | 500 | napi_gro_receive(napi, skb); |
501 | } else { | 501 | } else { |
502 | if (adapter->vlgrp && is_vlan && (tag != 0)) | 502 | if (adapter->vlgrp && is_vlan && (tag & VLAN_VID_MASK)) |
503 | vlan_hwaccel_rx(skb, adapter->vlgrp, tag); | 503 | vlan_hwaccel_rx(skb, adapter->vlgrp, tag); |
504 | else | 504 | else |
505 | netif_rx(skb); | 505 | netif_rx(skb); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 5bc100db28d4..99e89596cef6 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -851,13 +851,15 @@ struct rt2x00_dev { | |||
851 | static inline void rt2x00_rf_read(struct rt2x00_dev *rt2x00dev, | 851 | static inline void rt2x00_rf_read(struct rt2x00_dev *rt2x00dev, |
852 | const unsigned int word, u32 *data) | 852 | const unsigned int word, u32 *data) |
853 | { | 853 | { |
854 | *data = rt2x00dev->rf[word]; | 854 | BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32)); |
855 | *data = rt2x00dev->rf[word - 1]; | ||
855 | } | 856 | } |
856 | 857 | ||
857 | static inline void rt2x00_rf_write(struct rt2x00_dev *rt2x00dev, | 858 | static inline void rt2x00_rf_write(struct rt2x00_dev *rt2x00dev, |
858 | const unsigned int word, u32 data) | 859 | const unsigned int word, u32 data) |
859 | { | 860 | { |
860 | rt2x00dev->rf[word] = data; | 861 | BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32)); |
862 | rt2x00dev->rf[word - 1] = data; | ||
861 | } | 863 | } |
862 | 864 | ||
863 | /* | 865 | /* |
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index 1958c7c42cd9..bd765f30dba2 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c | |||
@@ -381,6 +381,14 @@ static void ieee80211_agg_splice_packets(struct ieee80211_local *local, | |||
381 | &local->hw, queue, | 381 | &local->hw, queue, |
382 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION); | 382 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION); |
383 | 383 | ||
384 | if (!(sta->ampdu_mlme.tid_state_tx[tid] & HT_ADDBA_REQUESTED_MSK)) | ||
385 | return; | ||
386 | |||
387 | if (WARN(!sta->ampdu_mlme.tid_tx[tid], | ||
388 | "TID %d gone but expected when splicing aggregates from" | ||
389 | "the pending queue\n", tid)) | ||
390 | return; | ||
391 | |||
384 | if (!skb_queue_empty(&sta->ampdu_mlme.tid_tx[tid]->pending)) { | 392 | if (!skb_queue_empty(&sta->ampdu_mlme.tid_tx[tid]->pending)) { |
385 | spin_lock_irqsave(&local->queue_stop_reason_lock, flags); | 393 | spin_lock_irqsave(&local->queue_stop_reason_lock, flags); |
386 | /* copy over remaining packets */ | 394 | /* copy over remaining packets */ |