linux-hardened/drivers/net/ethernet/mellanox/mlx5/core
Hadar Hen Zion f6dfb4c3f2 net/mlx5e: Update neighbour 'used' state using HW flow rules counters
When IP tunnel encapsulation rules are offloaded, the kernel can't see
the traffic of the offloaded flow. The neighbour for the IP tunnel
destination of the offloaded flow can mistakenly become STALE and
deleted by the kernel since its 'used' value wasn't changed.

To make sure that a neighbour which is used by the HW won't become
STALE, we proactively update the neighbour 'used' value every
DELAY_PROBE_TIME period, when packets were matched and counted by the HW
for one of the tunnel encap flows related to this neighbour.

The periodic task that updates the used neighbours is scheduled when a
tunnel encap rule is successfully offloaded into HW and keeps re-scheduling
itself as long as the representor's neighbours list isn't empty.

Add, remove, lookup and status change operations done over the
representor's neighbours list or the neighbour hash entry encaps list
are all serialized by RTNL lock.

Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
2017-04-30 16:03:14 +03:00
..
alloc.c net/mlx5e: use %pad format string for dma_addr_t 2016-12-08 21:30:54 -05:00
cmd.c net/mlx5: Introduce alloc/dealloc modify header context commands 2017-03-28 15:34:05 +03:00
cq.c IB/mlx5: Support 4k UAR for libmlx5 2017-01-09 20:25:09 +02:00
debugfs.c {net,IB}/mlx5: QP/XRCD commands via mlx5 ifc 2016-08-17 17:45:57 +03:00
dev.c {net,IB}/mlx5: Refactor page fault handling 2017-01-02 15:51:20 -05:00
en.h net/mlx5e: Extendable vport representor netdev private data 2017-04-30 16:02:48 +03:00
en_arfs.c net/mlx5: Refactor create flow table method to accept underlay QP 2017-04-17 11:08:29 -04:00
en_clock.c net/mlx5e: Fail safe cqe compressing/moderation mode setting 2017-03-27 15:08:22 +03:00
en_common.c net/mlx5e: Refactor refresh TIRs 2017-03-27 15:08:16 +03:00
en_dcbnl.c net/mlx5e: remove IEEE/CEE mode check when setting DCBX mode 2017-03-10 10:03:26 -08:00
en_ethtool.c net/mlx5e: Show board id in ethtool driver information 2017-04-07 01:21:26 +03:00
en_fs.c net/mlx5e: IPoIB, RSS flow steering tables 2017-04-17 11:08:30 -04:00
en_fs_ethtool.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-26 22:39:08 -04:00
en_main.c net/mlx5e: Extendable vport representor netdev private data 2017-04-30 16:02:48 +03:00
en_rep.c net/mlx5e: Update neighbour 'used' state using HW flow rules counters 2017-04-30 16:03:14 +03:00
en_rep.h net/mlx5e: Update neighbour 'used' state using HW flow rules counters 2017-04-30 16:03:14 +03:00
en_rx.c net/mlx5e: Extendable vport representor netdev private data 2017-04-30 16:02:48 +03:00
en_rx_am.c net/mlx5e: CQ and RQ don't need priv pointer 2017-03-27 15:08:18 +03:00
en_selftest.c net/mlx5e: Refactor refresh TIRs 2017-03-27 15:08:16 +03:00
en_stats.h net/mlx5e: Expose PCIe statistics to ethtool 2017-01-19 23:20:02 +02:00
en_tc.c net/mlx5e: Update neighbour 'used' state using HW flow rules counters 2017-04-30 16:03:14 +03:00
en_tc.h net/mlx5e: Update neighbour 'used' state using HW flow rules counters 2017-04-30 16:03:14 +03:00
en_tx.c mlx5: fix warning about missing prototype 2017-04-22 20:26:42 +03:00
en_txrx.c net/mlx5e: CQ and RQ don't need priv pointer 2017-03-27 15:08:18 +03:00
eq.c net/mlx5: Add MTPPS and MTPPSE registers infrastructure 2017-01-19 23:19:53 +02:00
eswitch.c net/mlx5: E-Switch, Add control for encapsulation 2017-04-22 20:26:40 +03:00
eswitch.h net/mlx5e: Add support to neighbour update flow 2017-04-30 16:03:13 +03:00
eswitch_offloads.c net/mlx5: Remove encap entry pointer from the eswitch flow attributes 2017-04-30 16:03:06 +03:00
fs_cmd.c net/mlx5: Refactor create flow table method to accept underlay QP 2017-04-17 11:08:29 -04:00
fs_cmd.h net/mlx5: Add creation flags when adding new flow table 2016-11-09 13:41:56 -05:00
fs_core.c net/mlx5: Enable flow-steering for IB link 2017-04-17 11:08:29 -04:00
fs_core.h net/mlx5e: Update neighbour 'used' state using HW flow rules counters 2017-04-30 16:03:14 +03:00
fs_counters.c net/mlx5e: Update neighbour 'used' state using HW flow rules counters 2017-04-30 16:03:14 +03:00
fw.c net/mlx5: Enable flow-steering for IB link 2017-04-17 11:08:29 -04:00
health.c net/mlx5: Fix version printout in case of health issue 2017-01-19 23:19:52 +02:00
ipoib.c mlx5: hide unused functions 2017-04-22 20:26:41 +03:00
ipoib.h net/mlx5e: IPoIB, RX handler 2017-04-17 11:08:32 -04:00
Kconfig net/mlx5e: IPoIB, Add netdevice profile skeleton 2017-04-17 11:08:30 -04:00
lag.c net/mlx5: Avoid dereferencing uninitialized pointer 2017-03-28 18:07:15 -07:00
mad.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-26 22:39:08 -04:00
Makefile net/mlx5e: IPoIB, Add netdevice profile skeleton 2017-04-17 11:08:30 -04:00
mcg.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
mlx5_core.h net/mlx5: Introduce alloc/dealloc modify header context commands 2017-03-28 15:34:05 +03:00
mr.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
pagealloc.c net/mlx5: Avoid passing dma address 0 to firmware 2016-10-29 12:00:39 -04:00
pd.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
port.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-02 16:54:00 -05:00
qp.c {net,IB}/mlx5: Refactor page fault handling 2017-01-02 15:51:20 -05:00
rl.c net/mlx5: Introduce TSAR manipulation firmware commands 2016-10-30 15:43:12 +02:00
sriov.c net/mlx5: Align sriov/eswitch modules with the new load/unload flow. 2016-09-10 21:21:50 -07:00
srq.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
transobj.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
uar.c net/mlx5: Fix UAR memory leak 2017-04-22 21:52:37 +03:00
vport.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-02 16:54:00 -05:00
vxlan.c net/mlx5: Unify and improve command interface 2016-08-17 17:45:58 +03:00
vxlan.h
wq.c net/mlx5e: Implement Fragmented Work Queue (WQ) 2016-12-02 10:47:01 -05:00
wq.h net/mlx5e: Implement Fragmented Work Queue (WQ) 2016-12-02 10:47:01 -05:00