|
@@ -150,6 +150,7 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
|
|
|
const struct carl9170fw_otus_desc *otus_desc;
|
|
|
const struct carl9170fw_chk_desc *chk_desc;
|
|
|
const struct carl9170fw_last_desc *last_desc;
|
|
|
+ const struct carl9170fw_txsq_desc *txsq_desc;
|
|
|
|
|
|
last_desc = carl9170_fw_find_desc(ar, LAST_MAGIC,
|
|
|
sizeof(*last_desc), CARL9170FW_LAST_DESC_CUR_VER);
|
|
@@ -299,6 +300,17 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ txsq_desc = carl9170_fw_find_desc(ar, TXSQ_MAGIC,
|
|
|
+ sizeof(*txsq_desc), CARL9170FW_TXSQ_DESC_CUR_VER);
|
|
|
+
|
|
|
+ if (txsq_desc) {
|
|
|
+ ar->fw.tx_seq_table = le32_to_cpu(txsq_desc->seq_table_addr);
|
|
|
+ if (!valid_cpu_addr(ar->fw.tx_seq_table))
|
|
|
+ return -EINVAL;
|
|
|
+ } else {
|
|
|
+ ar->fw.tx_seq_table = 0;
|
|
|
+ }
|
|
|
+
|
|
|
#undef SUPPORTED
|
|
|
return 0;
|
|
|
}
|