|
@@ -3164,11 +3164,20 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
* Initialize all hw fields.
|
|
|
*/
|
|
|
rt2x00dev->hw->flags =
|
|
|
- IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
|
|
|
IEEE80211_HW_SIGNAL_DBM |
|
|
|
IEEE80211_HW_SUPPORTS_PS |
|
|
|
IEEE80211_HW_PS_NULLFUNC_STACK |
|
|
|
IEEE80211_HW_AMPDU_AGGREGATION;
|
|
|
+ /*
|
|
|
+ * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING for USB devices
|
|
|
+ * unless we are capable of sending the buffered frames out after the
|
|
|
+ * DTIM transmission using rt2x00lib_beacondone. This will send out
|
|
|
+ * multicast and broadcast traffic immediately instead of buffering it
|
|
|
+ * infinitly and thus dropping it after some time.
|
|
|
+ */
|
|
|
+ if (!rt2x00_is_usb(rt2x00dev))
|
|
|
+ rt2x00dev->hw->flags |=
|
|
|
+ IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING;
|
|
|
|
|
|
SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev);
|
|
|
SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
|