wl1271_warning("chip id 0x%x (1271 PG10) support is obsolete",
                               wl->chip.id);
 
-               /* clear the alignment quirk, since we don't support it */
-               wl->quirks &= ~WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN;
-
                wl->quirks |= WLCORE_QUIRK_LEGACY_NVS;
                wl->sr_fw_name = WL127X_FW_NAME_SINGLE;
                wl->mr_fw_name = WL127X_FW_NAME_MULTI;
                wl1271_debug(DEBUG_BOOT, "chip id 0x%x (1271 PG20)",
                             wl->chip.id);
 
-               /* clear the alignment quirk, since we don't support it */
-               wl->quirks &= ~WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN;
-
                wl->quirks |= WLCORE_QUIRK_LEGACY_NVS;
                wl->plt_fw_name = WL127X_PLT_FW_NAME;
                wl->sr_fw_name = WL127X_FW_NAME_SINGLE;
                wl->plt_fw_name = WL128X_PLT_FW_NAME;
                wl->sr_fw_name = WL128X_FW_NAME_SINGLE;
                wl->mr_fw_name = WL128X_FW_NAME_MULTI;
+
+               /* wl128x requires TX blocksize alignment */
+               wl->quirks |= WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN;
+
                break;
        case CHIP_ID_1283_PG10:
        default:
 
                /* wl18xx uses the same firmware for PLT */
                wl->plt_fw_name = WL18XX_FW_NAME;
                wl->quirks |= WLCORE_QUIRK_NO_ELP |
-                             WLCORE_QUIRK_FWLOG_NOT_IMPLEMENTED |
-                             WLCORE_QUIRK_RX_BLOCKSIZE_ALIGN;
+                       WLCORE_QUIRK_FWLOG_NOT_IMPLEMENTED |
+                       WLCORE_QUIRK_RX_BLOCKSIZE_ALIGN |
+                       WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN;
 
                /* PG 1.0 has some problems with MCS_13, so disable it */
                wl->ht_cap.mcs.rx_mask[1] &= ~BIT(5);
 
         * simplify the code and since the performance impact is
         * negligible, we use the same block size for all different
         * chip types.
+        *
+        * Check if the bus supports blocksize alignment and, if it
+        * doesn't, make sure we don't have the quirk.
         */
-       if (wl1271_set_block_size(wl))
-               wl->quirks |= WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN;
+       if (!wl1271_set_block_size(wl))
+               wl->quirks &= ~WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN;
 
        /* TODO: make sure the lower driver has set things up correctly */