diff options
author | Nick Child <nnac123@linux.ibm.com> | 2022-09-29 00:43:48 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-09-30 14:40:22 +0300 |
commit | d6832ca48d8af0ec3d02d93c17027304c429c087 (patch) | |
tree | cce05cf8fc21f67dc0ce79c123d4bbc6d43ebf99 /drivers/mux/Makefile | |
parent | ea9b9a985d58d8e2abd91e8d7514b14398fe414f (diff) | |
download | linux-d6832ca48d8af0ec3d02d93c17027304c429c087.tar.xz |
ibmveth: Copy tx skbs into a premapped buffer
Rather than DMA mapping and unmapping every outgoing skb, copy the skb
into a buffer that was mapped during the drivers open function. Copying
the skb and its frags have proven to be more time efficient than
mapping and unmapping. As an effect, performance increases by 3-5
Gbits/s.
Allocate and DMA map one continuous 64KB buffer at `ndo_open`. This
buffer is maintained until `ibmveth_close` is called. This buffer is
large enough to hold the largest possible linnear skb. During
`ndo_start_xmit`, copy the skb and all of it's frags into the continuous
buffer. By manually linnearizing all the socket buffers, time is saved
during memcpy as well as more efficient handling in FW.
As a result, we no longer need to worry about the firmware limitation
of handling a max of 6 frags. So, we only need to maintain 1 descriptor
instead of 6 and can hardcode 0 for the other 5 descriptors during
h_send_logical_lan.
Since, DMA allocation/mapping issues can no longer arise in xmit
functions, we can further reduce code size by removing the need for a
bounce buffer on DMA errors.
Signed-off-by: Nick Child <nnac123@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/mux/Makefile')
0 files changed, 0 insertions, 0 deletions