Commit cc12dac2 authored by Ben Hutchings's avatar Ben Hutchings Committed by Jeff Garzik

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: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent ecbd95c1
...@@ -130,7 +130,6 @@ struct efx_special_buffer { ...@@ -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 { ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment