| From d4d8458ad87c63f5c932b4a27d2f3439ac67aa7a Mon Sep 17 00:00:00 2001 |
| From: Dmitry Bogdanov <dbogdanov@marvell.com> |
| Date: Wed, 8 Jul 2020 17:17:10 +0300 |
| Subject: [PATCH] net: atlantic: fix ip dst and ipv6 address filters |
| |
| commit a42e6aee7f47a8a68d09923c720fc8f605a04207 upstream. |
| |
| This patch fixes ip dst and ipv6 address filters. |
| There were 2 mistakes in the code, which led to the issue: |
| * invalid register was used for ipv4 dst address; |
| * incorrect write order of dwords for ipv6 addresses. |
| |
| Fixes: 23e7a718a49b ("net: aquantia: add rx-flow filter definitions") |
| Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com> |
| Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com> |
| Signed-off-by: Alexander Lobakin <alobakin@marvell.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c |
| index bf6673aab7a4..06838a38a246 100644 |
| --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c |
| +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c |
| @@ -1581,7 +1581,7 @@ void hw_atl_rpfl3l4_ipv6_src_addr_set(struct aq_hw_s *aq_hw, u8 location, |
| for (i = 0; i < 4; ++i) |
| aq_hw_write_reg(aq_hw, |
| HW_ATL_RPF_L3_SRCA_ADR(location + i), |
| - ipv6_src[i]); |
| + ipv6_src[3 - i]); |
| } |
| |
| void hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s *aq_hw, u8 location, |
| @@ -1592,7 +1592,7 @@ void hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s *aq_hw, u8 location, |
| for (i = 0; i < 4; ++i) |
| aq_hw_write_reg(aq_hw, |
| HW_ATL_RPF_L3_DSTA_ADR(location + i), |
| - ipv6_dest[i]); |
| + ipv6_dest[3 - i]); |
| } |
| |
| u32 hw_atl_sem_ram_get(struct aq_hw_s *self) |
| diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h |
| index 436e98980012..6fec1da7c409 100644 |
| --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h |
| +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h |
| @@ -2546,7 +2546,7 @@ |
| */ |
| |
| /* Register address for bitfield pif_rpf_l3_da0_i[31:0] */ |
| -#define HW_ATL_RPF_L3_DSTA_ADR(location) (0x000053B0 + (location) * 0x4) |
| +#define HW_ATL_RPF_L3_DSTA_ADR(location) (0x000053D0 + (location) * 0x4) |
| /* Bitmask for bitfield l3_da0[1F:0] */ |
| #define HW_ATL_RPF_L3_DSTA_MSK 0xFFFFFFFFu |
| /* Inverted bitmask for bitfield l3_da0[1F:0] */ |
| -- |
| 2.27.0 |
| |