mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
sfc: Reduce the size of struct efx_tx_buffer
Remove unmap_addr since it can be calculated from dma_addr, len and unmap_len. This saves 4-16 bytes. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
ecbd95c17c
commit
cc12dac2e5
@ -130,7 +130,6 @@ struct efx_special_buffer {
|
|||||||
* This field is zero when the queue slot is empty.
|
* This field is zero when the queue slot is empty.
|
||||||
* @continuation: True if this fragment is not the end of a packet.
|
* @continuation: True if this fragment is not the end of a packet.
|
||||||
* @unmap_single: True if pci_unmap_single should be used.
|
* @unmap_single: True if pci_unmap_single should be used.
|
||||||
* @unmap_addr: DMA address to unmap
|
|
||||||
* @unmap_len: Length of this fragment to unmap
|
* @unmap_len: Length of this fragment to unmap
|
||||||
*/
|
*/
|
||||||
struct efx_tx_buffer {
|
struct efx_tx_buffer {
|
||||||
@ -140,7 +139,6 @@ struct efx_tx_buffer {
|
|||||||
unsigned short len;
|
unsigned short len;
|
||||||
unsigned char continuation;
|
unsigned char continuation;
|
||||||
unsigned char unmap_single;
|
unsigned char unmap_single;
|
||||||
dma_addr_t unmap_addr;
|
|
||||||
unsigned short unmap_len;
|
unsigned short unmap_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -64,12 +64,14 @@ static inline void efx_dequeue_buffer(struct efx_tx_queue *tx_queue,
|
|||||||
{
|
{
|
||||||
if (buffer->unmap_len) {
|
if (buffer->unmap_len) {
|
||||||
struct pci_dev *pci_dev = tx_queue->efx->pci_dev;
|
struct pci_dev *pci_dev = tx_queue->efx->pci_dev;
|
||||||
|
dma_addr_t unmap_addr = (buffer->dma_addr + buffer->len -
|
||||||
|
buffer->unmap_len);
|
||||||
if (buffer->unmap_single)
|
if (buffer->unmap_single)
|
||||||
pci_unmap_single(pci_dev, buffer->unmap_addr,
|
pci_unmap_single(pci_dev, unmap_addr, buffer->unmap_len,
|
||||||
buffer->unmap_len, PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
else
|
else
|
||||||
pci_unmap_page(pci_dev, buffer->unmap_addr,
|
pci_unmap_page(pci_dev, unmap_addr, buffer->unmap_len,
|
||||||
buffer->unmap_len, PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
buffer->unmap_len = 0;
|
buffer->unmap_len = 0;
|
||||||
buffer->unmap_single = 0;
|
buffer->unmap_single = 0;
|
||||||
}
|
}
|
||||||
@ -233,7 +235,6 @@ static inline int efx_enqueue_skb(struct efx_tx_queue *tx_queue,
|
|||||||
} while (len);
|
} while (len);
|
||||||
|
|
||||||
/* Transfer ownership of the unmapping to the final buffer */
|
/* Transfer ownership of the unmapping to the final buffer */
|
||||||
buffer->unmap_addr = unmap_addr;
|
|
||||||
buffer->unmap_single = unmap_single;
|
buffer->unmap_single = unmap_single;
|
||||||
buffer->unmap_len = unmap_len;
|
buffer->unmap_len = unmap_len;
|
||||||
unmap_len = 0;
|
unmap_len = 0;
|
||||||
@ -805,6 +806,7 @@ static inline void efx_tso_put_header(struct efx_tx_queue *tx_queue,
|
|||||||
static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
||||||
{
|
{
|
||||||
struct efx_tx_buffer *buffer;
|
struct efx_tx_buffer *buffer;
|
||||||
|
dma_addr_t unmap_addr;
|
||||||
|
|
||||||
/* Work backwards until we hit the original insert pointer value */
|
/* Work backwards until we hit the original insert pointer value */
|
||||||
while (tx_queue->insert_count != tx_queue->write_count) {
|
while (tx_queue->insert_count != tx_queue->write_count) {
|
||||||
@ -816,15 +818,15 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
|||||||
buffer->len = 0;
|
buffer->len = 0;
|
||||||
buffer->continuation = 1;
|
buffer->continuation = 1;
|
||||||
if (buffer->unmap_len) {
|
if (buffer->unmap_len) {
|
||||||
|
unmap_addr = (buffer->dma_addr + buffer->len -
|
||||||
|
buffer->unmap_len);
|
||||||
if (buffer->unmap_single)
|
if (buffer->unmap_single)
|
||||||
pci_unmap_single(tx_queue->efx->pci_dev,
|
pci_unmap_single(tx_queue->efx->pci_dev,
|
||||||
buffer->unmap_addr,
|
unmap_addr, buffer->unmap_len,
|
||||||
buffer->unmap_len,
|
|
||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
else
|
else
|
||||||
pci_unmap_page(tx_queue->efx->pci_dev,
|
pci_unmap_page(tx_queue->efx->pci_dev,
|
||||||
buffer->unmap_addr,
|
unmap_addr, buffer->unmap_len,
|
||||||
buffer->unmap_len,
|
|
||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
buffer->unmap_len = 0;
|
buffer->unmap_len = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user