diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt61pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index edddbf35bbab..15191d6581b1 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -1764,7 +1764,8 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) | |||
1764 | "TX status report missed for entry %d\n", | 1764 | "TX status report missed for entry %d\n", |
1765 | entry_done->entry_idx); | 1765 | entry_done->entry_idx); |
1766 | 1766 | ||
1767 | txdesc.status = TX_FAIL_OTHER; | 1767 | txdesc.flags = 0; |
1768 | __set_bit(TXDONE_UNKNOWN, &txdesc.flags); | ||
1768 | txdesc.retry = 0; | 1769 | txdesc.retry = 0; |
1769 | 1770 | ||
1770 | rt2x00pci_txdone(rt2x00dev, entry_done, &txdesc); | 1771 | rt2x00pci_txdone(rt2x00dev, entry_done, &txdesc); |
@@ -1774,7 +1775,17 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) | |||
1774 | /* | 1775 | /* |
1775 | * Obtain the status about this packet. | 1776 | * Obtain the status about this packet. |
1776 | */ | 1777 | */ |
1777 | txdesc.status = rt2x00_get_field32(reg, STA_CSR4_TX_RESULT); | 1778 | txdesc.flags = 0; |
1779 | switch (rt2x00_get_field32(reg, STA_CSR4_TX_RESULT)) { | ||
1780 | case 0: /* Success, maybe with retry */ | ||
1781 | __set_bit(TXDONE_SUCCESS, &txdesc.flags); | ||
1782 | break; | ||
1783 | case 6: /* Failure, excessive retries */ | ||
1784 | __set_bit(TXDONE_EXCESSIVE_RETRY, &txdesc.flags); | ||
1785 | /* Don't break, this is a failed frame! */ | ||
1786 | default: /* Failure */ | ||
1787 | __set_bit(TXDONE_FAILURE, &txdesc.flags); | ||
1788 | } | ||
1778 | txdesc.retry = rt2x00_get_field32(reg, STA_CSR4_RETRY_COUNT); | 1789 | txdesc.retry = rt2x00_get_field32(reg, STA_CSR4_RETRY_COUNT); |
1779 | 1790 | ||
1780 | rt2x00pci_txdone(rt2x00dev, entry, &txdesc); | 1791 | rt2x00pci_txdone(rt2x00dev, entry, &txdesc); |