Revision tags: v4.10.17, v4.10.16, v4.10.15, v4.10.14, v4.10.13, v4.10.12, v4.10.11, v4.10.10, v4.10.9, v4.10.8, v4.10.7, v4.10.6, v4.10.5, v4.10.4, v4.10.3, v4.10.2, v4.10.1, v4.10 |
|
#
b45d8b50 |
| 13-Feb-2017 |
Tariq Toukan <tariqt@mellanox.com> |
net/mlx5e: Reorganize struct mlx5e_rq
Bring fast-path fields together, and combine RX WQE mutual exclusive fields into a union.
Page-reuse and XDP are mutually exclusive and cannot be used at the s
net/mlx5e: Reorganize struct mlx5e_rq
Bring fast-path fields together, and combine RX WQE mutual exclusive fields into a union.
Page-reuse and XDP are mutually exclusive and cannot be used at the same time. Use a union to combine their footprints.
Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
0556ce72 |
| 16-Aug-2017 |
Eran Ben Elisha <eranbe@mellanox.com> |
net/mlx5e: Fix dangling page pointer on DMA mapping error
Function mlx5e_dealloc_rx_wqe is using page pointer value as an indication to valid DMA mapping. In case that the mapping failed, we release
net/mlx5e: Fix dangling page pointer on DMA mapping error
Function mlx5e_dealloc_rx_wqe is using page pointer value as an indication to valid DMA mapping. In case that the mapping failed, we released the page but kept the dangling pointer. Store the page pointer only after the DMA mapping passed to avoid invalid page DMA unmap.
Fixes: bc77b240b3c5 ("net/mlx5e: Add fragmented memory support for RX multi packet WQE") Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
1afdb771 |
| 11-Jul-2017 |
Or Gerlitz <ogerlitz@mellanox.com> |
net/mlx5e: Place constants on the right side of comparisons
To fix these checkpatch complaints:
WARNING: Comparisons should place the constant on the right side of the test
Signed-off-by: Or Gerli
net/mlx5e: Place constants on the right side of comparisons
To fix these checkpatch complaints:
WARNING: Comparisons should place the constant on the right side of the test
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
e80541ec |
| 05-Jun-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5: Add CONFIG_MLX5_ESWITCH Kconfig
Allow to selectively build the driver with or without sriov eswitch, VF representors and TC offloads.
Also remove the need of two ndo ops structures (sriov
net/mlx5: Add CONFIG_MLX5_ESWITCH Kconfig
Allow to selectively build the driver with or without sriov eswitch, VF representors and TC offloads.
Also remove the need of two ndo ops structures (sriov & basic) and keep only one unified ndo ops, compile out VF SRIOV ndos when not needed (MLX5_ESWITCH=n), and for VF netdev calling those ndos will result in returning -EPERM.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Cc: Jes Sorensen <jsorensen@fb.com> Cc: kernel-team@fb.com
show more ...
|
#
899a59d3 |
| 19-Jun-2017 |
Ilan Tayari <ilant@mellanox.com> |
net/mlx5e: IPSec, Add Innova IPSec offload RX data path
In RX data path, the hardware prepends a special metadata ethertype which indicates that the packet underwent decryption, and the result of th
net/mlx5e: IPSec, Add Innova IPSec offload RX data path
In RX data path, the hardware prepends a special metadata ethertype which indicates that the packet underwent decryption, and the result of the authentication check.
Communicate this to the stack in skb->sp.
Make wqe_size large enough to account for the injected metadata.
Support only Linked-list RQ type.
IPSec offload RX packets may have useful CHECKSUM_COMPLETE information, which the stack may not be able to use yet.
Signed-off-by: Ilan Tayari <ilant@mellanox.com> Signed-off-by: Yossi Kuperman <yossiku@mellanox.com> Signed-off-by: Yevgeny Kliteynik <kliteyn@mellanox.com> Signed-off-by: Boris Pismenny <borisp@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
4b673793 |
| 19-Jun-2017 |
Ilan Tayari <ilant@mellanox.com> |
net/mlx5: Make get_cqe routine not ethernet-specific
Move mlx5e_get_cqe routine to wq.h and rename it to mlx5_cqwq_get_cqe.
This allows it to be used by other CQ users outside of the ethernet drive
net/mlx5: Make get_cqe routine not ethernet-specific
Move mlx5e_get_cqe routine to wq.h and rename it to mlx5_cqwq_get_cqe.
This allows it to be used by other CQ users outside of the ethernet driver code.
A later patch in this patchset will make use of it from FPGA code for the FPGA high-speed connection.
Signed-off-by: Ilan Tayari <ilant@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
accd5883 |
| 29-Jan-2017 |
Tariq Toukan <tariqt@mellanox.com> |
net/mlx5e: Introduce RX Page-Reuse
Introduce a Page-Reuse mechanism in non-Striding RQ RX datapath.
A WQE (RX descriptor) buffer is a page, that in most cases was fully wasted on a packet that is m
net/mlx5e: Introduce RX Page-Reuse
Introduce a Page-Reuse mechanism in non-Striding RQ RX datapath.
A WQE (RX descriptor) buffer is a page, that in most cases was fully wasted on a packet that is much smaller, requiring a new page for the next round.
In this patch, we implement a page-reuse mechanism, that resembles a `SW Striding RQ`. We allow the WQE to reuse its allocated page as much as it could, until the page is fully consumed. In each round, the WQE is capable of receiving packet of maximal size (MTU). Yet, upon the reception of a packet, the WQE knows the actual packet size, and consumes the exact amount of memory needed to build a linear SKB. Then, it updates the buffer pointer within the page accordingly, for the next round.
Feature is mutually exclusive with XDP (packet-per-page) and LRO (session size is a power of two, needs unused page).
Performance tests: iperf tcp tests show huge gain:
-------------------------------------------- num streams | BW before | BW after | ratio | 1 | 22.2 | 30.9 | 1.39x | 8 | 64.2 | 93.6 | 1.46x | 64 | 56.7 | 91.4 | 1.61x | --------------------------------------------
Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
78aedd32 |
| 18-Jan-2017 |
Tariq Toukan <tariqt@mellanox.com> |
net/mlx5e: Build SKB with exact frag_size
Build the SKB over the receive packet instead of the whole page. Getting the SKB's linear data and shared_info closer improves locality. In addition, this o
net/mlx5e: Build SKB with exact frag_size
Build the SKB over the receive packet instead of the whole page. Getting the SKB's linear data and shared_info closer improves locality. In addition, this opens up the possibility to make use of other parts of the page in the downstream page-reuse patch.
Fixes: 1bfecfca565c ("net/mlx5e: Build RX SKB on demand") Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
3844b07e |
| 01-Jun-2017 |
Feras Daoud <ferasda@mellanox.com> |
net/mlx5e: IPoIB, Add PTP support to IPoIB device driver
Enable PTP for IPoIB rdma_netdev and add the ability to get the time stamping parameters using ethtool.
Signed-off-by: Feras Daoud <ferasda@
net/mlx5e: IPoIB, Add PTP support to IPoIB device driver
Enable PTP for IPoIB rdma_netdev and add the ability to get the time stamping parameters using ethtool.
Signed-off-by: Feras Daoud <ferasda@mellanox.com> Signed-off-by: Eitan Rabin <rabin@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
c139dbfd |
| 18-May-2017 |
Erez Shitrit <erezsh@mellanox.com> |
net/mlx5e: Use hard_mtu as part of the mlx5e_priv struct
The mtu extra space that kept for the HW is specific for each link type, and it is different in mlx5e and mlx5i modules. Now it is kept in th
net/mlx5e: Use hard_mtu as part of the mlx5e_priv struct
The mtu extra space that kept for the HW is specific for each link type, and it is different in mlx5e and mlx5i modules. Now it is kept in the priv structures, set by the mlx5e/mlx5i driver accordingly.
Signed-off-by: Erez Shitrit <erezsh@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
4301ba7b |
| 18-Jun-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: IPoIB, Move to a separate directory
IPoIB netdevice driver was only introduced in previous kernel release and it is growing in terms of features and LOC, move it to a separate directory.
net/mlx5e: IPoIB, Move to a separate directory
IPoIB netdevice driver was only introduced in previous kernel release and it is growing in terms of features and LOC, move it to a separate directory.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
b57fe691 |
| 27-Apr-2017 |
Erez Shitrit <erezsh@mellanox.com> |
net/mlx5e: IPoIB, handle RX packet correctly
IPoIB packet contains the pseudo header area, we need to pull it prior to reset_mac_header in order to let the GRO work well.
In more details: GRO check
net/mlx5e: IPoIB, handle RX packet correctly
IPoIB packet contains the pseudo header area, we need to pull it prior to reset_mac_header in order to let the GRO work well.
In more details: GRO checks the mac address of the new coming packet, it does that by comparing the hard_header_len size of the current packet to the previous one in that session, the comparison is over hard_header_len size. Now, the driver prepares that area in the skb by allocating area from the reserved part and resetting the correct mac header to it.
Fixes: 9d6bd752c63c ("net/mlx5e: IPoIB, RX handler") Signed-off-by: Erez Shitrit <erezsh@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
ad78af9b |
| 15-Feb-2017 |
Tariq Toukan <tariqt@mellanox.com> |
net/mlx5e: Use prefetchw when a write is to follow
"prefetchw()" prefetches the cacheline for write. Use it for skb->data, as soon we'll be copying the packet header there.
Performance: Single-stre
net/mlx5e: Use prefetchw when a write is to follow
"prefetchw()" prefetches the cacheline for write. Use it for skb->data, as soon we'll be copying the packet header there.
Performance: Single-stream packet-rate tested with pktgen. Packets are dropped in tc level to zoom into driver data-path. Larger gain is expected for smaller packets, as less time is spent on handling SKB fragments, making the path shorter and the improvement more significant.
--------------------------------------------- packet size | before | after | gain | 64B | 4,113,306 | 4,778,720 | 16% | 1024B | 3,633,819 | 3,950,593 | 8.7% |
Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Cc: kernel-team@fb.com Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
1d447a39 |
| 24-Apr-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Extendable vport representor netdev private data
Make representor netdev private data extendable by adding new struct "mlx5e_rep_priv" and use it as the rep netdev private data struct ins
net/mlx5e: Extendable vport representor netdev private data
Make representor netdev private data extendable by adding new struct "mlx5e_rep_priv" and use it as the rep netdev private data struct instead of directly pointing to mlx5_eswitch_rep.
Added new en_rep.h header file to contain all representor related definitions and prototypes, and moved all representor specific logic into en_rep.c.
Needed for downstream patches to extend representor functionality to support neighbour update.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
show more ...
|
#
8bf3198a |
| 21-Apr-2017 |
Stephen Hemminger <stephen@networkplumber.org> |
mlx5: fix warning about missing prototype
Fix sparse warning about missing prototypes. The rx/tx code path defines functions with prototypes in ipoib.h.
Signed-off-by: Stephen Hemminger <sthemmin@m
mlx5: fix warning about missing prototype
Fix sparse warning about missing prototypes. The rx/tx code path defines functions with prototypes in ipoib.h.
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
show more ...
|
#
9d6bd752 |
| 12-Apr-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: IPoIB, RX handler
Implement IPoIB RX SKB handler.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Erez Shitrit <erezsh@mellanox.com> Signed-off-by: David S. Miller <dave
net/mlx5e: IPoIB, RX handler
Implement IPoIB RX SKB handler.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Erez Shitrit <erezsh@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
be7e87f9 |
| 12-Feb-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Fail safe cqe compressing/moderation mode setting
Use the new fail-safe channels switch mechanism to set new CQE compressing and CQE moderation mode settings.
We also move RX CQE compres
net/mlx5e: Fail safe cqe compressing/moderation mode setting
Use the new fail-safe channels switch mechanism to set new CQE compressing and CQE moderation mode settings.
We also move RX CQE compression modify function out of en_rx file to a more appropriate place.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
show more ...
|
#
6a9764ef |
| 21-Dec-2016 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Isolate open_channels from priv->params
In order to have a clean separation between channels resources creation flows and current active mlx5e netdev parameters, make sure each resource c
net/mlx5e: Isolate open_channels from priv->params
In order to have a clean separation between channels resources creation flows and current active mlx5e netdev parameters, make sure each resource creation function do not access priv->params, and only works with on a new fresh set of parameters.
For this we add "new" mlx5e_params field to mlx5e_channels structure and use it down the road to mlx5e_open_{cq,rq,sq} and so on.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
show more ...
|
#
31391048 |
| 24-Mar-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Different SQ types
Different SQ types (tx, xdp, ico) are growing apart, we separate them and remove unwanted parts in each one of them, to simplify data path and utilize data cache.
Remo
net/mlx5e: Different SQ types
Different SQ types (tx, xdp, ico) are growing apart, we separate them and remove unwanted parts in each one of them, to simplify data path and utilize data cache.
Remove DB union from SQ structures since it is not needed anymore as we now have different SQ data type for each SQ.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
864b2d71 |
| 24-Mar-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Generalize tx helper functions for different SQ types
In the next patches we will introduce different SQ types, for that we here generalize some TX helper functions to work with more basi
net/mlx5e: Generalize tx helper functions for different SQ types
In the next patches we will introduce different SQ types, for that we here generalize some TX helper functions to work with more basic SQ parameters, in order to re-use them for the different SQ types.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
2239185c |
| 24-Mar-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Optimize XDP frame xmit
XDP SQ has a fixed size WQE (MLX5E_XDP_TX_WQEBBS = 1) and only posts one kind of WQE (MLX5_OPCODE_SEND),
Also we initialize SQ descriptors static fields once on o
net/mlx5e: Optimize XDP frame xmit
XDP SQ has a fixed size WQE (MLX5E_XDP_TX_WQEBBS = 1) and only posts one kind of WQE (MLX5_OPCODE_SEND),
Also we initialize SQ descriptors static fields once on open_xdpsq, rather than every time on critical path.
Optimize the code in light of those facts and add a prefetch of the TX descriptor first thing in the xdp xmit function.
Performance improvement: System: Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
Test case Before Now improvement --------------------------------------------------------------- XDP TX (1 core) 13Mpps 13.7Mpps 5%
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
31871f87 |
| 24-Mar-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Move XDP SQ instance into RQ
To save many rq->channel->sq dereferences in fast-path. And rename it to xdpsq.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan
net/mlx5e: Move XDP SQ instance into RQ
To save many rq->channel->sq dereferences in fast-path. And rename it to xdpsq.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
1c4bf940 |
| 24-Mar-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Move XDP completion functions to rx file
XDP code belongs to RX path, move mlx5e_poll_xdp_tx_cq and mlx5e_free_xdp_tx_descs to en_rx.c.
Rename them to mlx5e_poll_xdpsq_cq and mlx5e_free_
net/mlx5e: Move XDP completion functions to rx file
XDP code belongs to RX path, move mlx5e_poll_xdp_tx_cq and mlx5e_free_xdp_tx_descs to en_rx.c.
Rename them to mlx5e_poll_xdpsq_cq and mlx5e_free_xdpsq_descs.
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
6982ab60 |
| 24-Mar-2017 |
Saeed Mahameed <saeedm@mellanox.com> |
net/mlx5e: Xmit, no write combining
mlx5e netdev Blue Flame (write combining) support demands a lot of overhead for a little latency gain for some special cases, this overhead is hurting the common
net/mlx5e: Xmit, no write combining
mlx5e netdev Blue Flame (write combining) support demands a lot of overhead for a little latency gain for some special cases, this overhead is hurting the common case.
Here we remove xmit Blue Flame support by creating all bfregs with no write combining for all SQs, and we remove a lot of BF logic and conditions from xmit data path.
Simplify mlx5e_tx_notify_hw (doorbell function) by removing BF related code and by removing one memory barrier needed for WC mapped SQ doorbell buffers, which no longer exist.
Performance improvement: System: Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
Test case Before Now improvement --------------------------------------------------------------- TX packets (24 threads) 50Mpps 54Mpps 8%
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
8ab7e2ae |
| 21-Mar-2017 |
Gal Pressman <galp@mellanox.com> |
net/mlx5e: Count LRO packets correctly
RX packets statistics ('rx_packets' counter) used to count LRO packets as one, even though it contains multiple segments. This patch will increment the counter
net/mlx5e: Count LRO packets correctly
RX packets statistics ('rx_packets' counter) used to count LRO packets as one, even though it contains multiple segments. This patch will increment the counter by the number of segments, and align the driver with the behavior of other drivers in the stack.
Note that no information is lost in this patch due to 'rx_lro_packets' counter existence.
Before, ethtool showed: $ ethtool -S ens6 | egrep "rx_packets|rx_lro_packets" rx_packets: 435277 rx_lro_packets: 35847 rx_packets_phy: 1935066
Now, we will see the more logical statistics: $ ethtool -S ens6 | egrep "rx_packets|rx_lro_packets" rx_packets: 1935066 rx_lro_packets: 35847 rx_packets_phy: 1935066
Fixes: e586b3b0baee ("net/mlx5: Ethernet Datapath files") Signed-off-by: Gal Pressman <galp@mellanox.com> Cc: kernel-team@fb.com Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|