carl9170 firmware: fix [-Wpacked-not-aligned] warnings
[carl9170fw.git] / carlfw / include / dma.h
index 07d06d607f9bc2fea7429fede6e6799ac94fdd50..8141b1c5ad4344cc3c919bc217096e9514a283a8 100644 (file)
@@ -19,8 +19,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifndef __CARL9170FW_DMA_H
@@ -51,11 +50,7 @@ struct dma_desc {
 
 #define AR9170_TERMINATOR_NUMBER_INT   1
 
-#ifdef CONFIG_CARL9170FW_CAB_QUEUE
 #define AR9170_TERMINATOR_NUMBER_CAB   CARL9170_INTF_NUM
-#else
-#define AR9170_TERMINATOR_NUMBER_CAB   0
-#endif /* CONFIG_CARL9170FW_CAB_QUEUE */
 
 #define AR9170_TERMINATOR_NUMBER (AR9170_TERMINATOR_NUMBER_B + \
                                  AR9170_TERMINATOR_NUMBER_INT + \
@@ -75,6 +70,16 @@ struct carl9170_tx_ba_superframe {
        struct ar9170_tx_ba_frame f;
 } __packed;
 
+struct ar9170_tx_null_frame {
+       struct ar9170_tx_hwdesc hdr;
+       struct ieee80211_hdr null;
+} __packed __aligned(4);
+
+struct carl9170_tx_null_superframe {
+       struct carl9170_tx_superdesc s;
+       struct ar9170_tx_null_frame f;
+} __packed __aligned(4);
+
 #define CARL9170_BA_BUFFER_LEN (__roundup(sizeof(struct carl9170_tx_ba_superframe), 16))
 #define CARL9170_RSP_BUFFER_LEN        AR9170_BLOCK_SIZE
 
@@ -87,6 +92,10 @@ struct carl9170_sram_reserved {
        union {
                uint32_t buf[CARL9170_MAX_CMD_LEN / sizeof(uint32_t)];
                struct carl9170_cmd cmd;
+
+#ifdef CONFIG_CARL9170FW_WOL
+               struct carl9170_tx_null_superframe null;
+#endif /* CONFIG_CARL9170FW_WOL */
        } cmd;
 
        union {
@@ -123,6 +132,7 @@ struct carl9170_sram_reserved {
  *                             | BA buffer (128 bytes)
  *                             +--
  *                             | CMD buffer (128 bytes)
+ *                             | - used as NULLFRAME buffer (128 bytes) for WOL
  *                             +--
  *                             | RSP buffer (320 bytes)
  *                             +--
@@ -268,7 +278,7 @@ static inline __inline struct dma_desc *dma_dequeue_not_bits(struct dma_queue *q
             desc = (queue)->head)
 
 #define __for_each_desc_continue(desc, queue)                          \
-       for (;desc != (queue)->terminator;                              \
+       for (; desc != (queue)->terminator;                             \
             desc = (desc)->lastAddr->nextAddr)
 
 #define __for_each_desc(desc, queue)                                   \
@@ -328,6 +338,7 @@ static inline void __check_desc(void)
        BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, cmd.buf) & (BLOCK_ALIGNMENT - 1));
        BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, rsp.buf) & (BLOCK_ALIGNMENT - 1));
        BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, bcn.buf) & (BLOCK_ALIGNMENT - 1));
+       BUILD_BUG_ON(sizeof(struct carl9170_tx_null_superframe) > CARL9170_MAX_CMD_LEN);
 }
 
 #endif /* __CARL9170FW_DMA_H */