|
@@ -686,7 +686,17 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
|
|
|
/*
|
|
|
* Initialize extra TX headroom required.
|
|
|
*/
|
|
|
- rt2x00dev->hw->extra_tx_headroom = rt2x00dev->ops->extra_tx_headroom;
|
|
|
+ rt2x00dev->hw->extra_tx_headroom =
|
|
|
+ max_t(unsigned int, IEEE80211_TX_STATUS_HEADROOM,
|
|
|
+ rt2x00dev->ops->extra_tx_headroom);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Take TX headroom required for alignment into account.
|
|
|
+ */
|
|
|
+ if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags))
|
|
|
+ rt2x00dev->hw->extra_tx_headroom += RT2X00_L2PAD_SIZE;
|
|
|
+ else if (test_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags))
|
|
|
+ rt2x00dev->hw->extra_tx_headroom += RT2X00_ALIGN_SIZE;
|
|
|
|
|
|
/*
|
|
|
* Register HW.
|