rt2x00: Move common txdone handling to rt2x00lib_txdone.
Now that the write_tx_data functions are merged, also merge the relevant parts of the txdone handling into common code, rather than {usb,pci} specific code. Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
78eea11b0e
commit
e513a0b6f1
@@ -1229,7 +1229,7 @@ static void rt2400pci_txdone(struct rt2x00_dev *rt2x00dev,
|
|||||||
}
|
}
|
||||||
txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT);
|
txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT);
|
||||||
|
|
||||||
rt2x00pci_txdone(entry, &txdesc);
|
rt2x00lib_txdone(entry, &txdesc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1365,7 +1365,7 @@ static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev,
|
|||||||
}
|
}
|
||||||
txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT);
|
txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT);
|
||||||
|
|
||||||
rt2x00pci_txdone(entry, &txdesc);
|
rt2x00lib_txdone(entry, &txdesc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -905,7 +905,7 @@ static void rt2800pci_txdone(struct rt2x00_dev *rt2x00dev)
|
|||||||
if (txdesc.retry)
|
if (txdesc.retry)
|
||||||
__set_bit(TXDONE_FALLBACK, &txdesc.flags);
|
__set_bit(TXDONE_FALLBACK, &txdesc.flags);
|
||||||
|
|
||||||
rt2x00pci_txdone(entry, &txdesc);
|
rt2x00lib_txdone(entry, &txdesc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -210,6 +210,21 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
bool success;
|
bool success;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Unmap the skb.
|
||||||
|
*/
|
||||||
|
rt2x00queue_unmap_skb(rt2x00dev, entry->skb);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Remove the extra tx headroom from the skb.
|
||||||
|
*/
|
||||||
|
skb_pull(entry->skb, rt2x00dev->ops->extra_tx_headroom);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Signal that the TX descriptor is no longer in the skb.
|
||||||
|
*/
|
||||||
|
skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove L2 padding which was added during
|
* Remove L2 padding which was added during
|
||||||
*/
|
*/
|
||||||
|
@@ -60,37 +60,6 @@ int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rt2x00pci_regbusy_read);
|
EXPORT_SYMBOL_GPL(rt2x00pci_regbusy_read);
|
||||||
|
|
||||||
/*
|
|
||||||
* TX/RX data handlers.
|
|
||||||
*/
|
|
||||||
void rt2x00pci_txdone(struct queue_entry *entry,
|
|
||||||
struct txdone_entry_desc *txdesc)
|
|
||||||
{
|
|
||||||
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
|
||||||
struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Unmap the skb.
|
|
||||||
*/
|
|
||||||
rt2x00queue_unmap_skb(rt2x00dev, entry->skb);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove the extra tx headroom from the skb.
|
|
||||||
*/
|
|
||||||
skb_pull(entry->skb, rt2x00dev->ops->extra_tx_headroom);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Signal that the TX descriptor is no longer in the skb.
|
|
||||||
*/
|
|
||||||
skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pass on to rt2x00lib.
|
|
||||||
*/
|
|
||||||
rt2x00lib_txdone(entry, txdesc);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(rt2x00pci_txdone);
|
|
||||||
|
|
||||||
void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev)
|
void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev)
|
||||||
{
|
{
|
||||||
struct data_queue *queue = rt2x00dev->rx;
|
struct data_queue *queue = rt2x00dev->rx;
|
||||||
|
@@ -98,14 +98,6 @@ struct queue_entry_priv_pci {
|
|||||||
dma_addr_t desc_dma;
|
dma_addr_t desc_dma;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* rt2x00pci_txdone - Handle TX done events.
|
|
||||||
* @entry: The queue entry for which a TX done event was received.
|
|
||||||
* @txdesc: The TX done descriptor for the entry.
|
|
||||||
*/
|
|
||||||
void rt2x00pci_txdone(struct queue_entry *entry,
|
|
||||||
struct txdone_entry_desc *txdesc);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rt2x00pci_rxdone - Handle RX done events
|
* rt2x00pci_rxdone - Handle RX done events
|
||||||
* @rt2x00dev: Device pointer, see &struct rt2x00_dev.
|
* @rt2x00dev: Device pointer, see &struct rt2x00_dev.
|
||||||
|
@@ -171,23 +171,12 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb)
|
|||||||
{
|
{
|
||||||
struct queue_entry *entry = (struct queue_entry *)urb->context;
|
struct queue_entry *entry = (struct queue_entry *)urb->context;
|
||||||
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||||
struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
|
|
||||||
struct txdone_entry_desc txdesc;
|
struct txdone_entry_desc txdesc;
|
||||||
|
|
||||||
if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) ||
|
if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) ||
|
||||||
!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
|
!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove the descriptor from the front of the skb.
|
|
||||||
*/
|
|
||||||
skb_pull(entry->skb, entry->queue->desc_size);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Signal that the TX descriptor is no longer in the skb.
|
|
||||||
*/
|
|
||||||
skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Obtain the status about this packet.
|
* Obtain the status about this packet.
|
||||||
* Note that when the status is 0 it does not mean the
|
* Note that when the status is 0 it does not mean the
|
||||||
|
@@ -2108,7 +2108,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
|
|||||||
__set_bit(TXDONE_UNKNOWN, &txdesc.flags);
|
__set_bit(TXDONE_UNKNOWN, &txdesc.flags);
|
||||||
txdesc.retry = 0;
|
txdesc.retry = 0;
|
||||||
|
|
||||||
rt2x00pci_txdone(entry_done, &txdesc);
|
rt2x00lib_txdone(entry_done, &txdesc);
|
||||||
entry_done = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
|
entry_done = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2135,7 +2135,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
|
|||||||
if (txdesc.retry)
|
if (txdesc.retry)
|
||||||
__set_bit(TXDONE_FALLBACK, &txdesc.flags);
|
__set_bit(TXDONE_FALLBACK, &txdesc.flags);
|
||||||
|
|
||||||
rt2x00pci_txdone(entry, &txdesc);
|
rt2x00lib_txdone(entry, &txdesc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user