* [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver.
@ 2017-03-23 11:19 Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 1/5] net:ethernet:aquantia: Remove adapter re-opening when MTU changed Pavel Belous
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Pavel Belous @ 2017-03-23 11:19 UTC (permalink / raw)
To: David S . Miller; +Cc: netdev, Simon Edelhaus, David Arcari, Pavel Belous
From: Pavel Belous <pavel.belous@aquantia.com>
The following patchset containg several fixes for aQuantia AQtion driver
for net tree: A couple fixes for IPv6 and other fixes.
v1->v2: Fix compilation error (using HW_ATL_A0_TXD_CTL_CMD_IPV6 instead
HW_ATL_B0_TXD_CTL_CMD_IPV6).
v2->v3: Added "Fixes" tags.
Pavel Belous (5):
net:ethernet:aquantia: Remove adapter re-opening when MTU changed.
net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6.
net:ethernet:aquantia: Missing spinlock initialization.
net:ethernet:aquantia: Fix for LSO with IPv6.
net:ethernet:aquantia: Reset is_gso flag when EOP reached.
drivers/net/ethernet/aquantia/atlantic/aq_main.c | 5 -----
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 23 ++++++++++++++++++----
drivers/net/ethernet/aquantia/atlantic/aq_ring.c | 1 +
drivers/net/ethernet/aquantia/atlantic/aq_ring.h | 3 ++-
.../ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c | 4 ++++
.../ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c | 4 ++++
6 files changed, 30 insertions(+), 10 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 net 1/5] net:ethernet:aquantia: Remove adapter re-opening when MTU changed.
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
@ 2017-03-23 11:19 ` Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 2/5] net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6 Pavel Belous
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Pavel Belous @ 2017-03-23 11:19 UTC (permalink / raw)
To: David S . Miller; +Cc: netdev, Simon Edelhaus, David Arcari, Pavel Belous
From: Pavel Belous <pavel.belous@aquantia.com>
Closing/opening the adapter is not needed at all.
The new MTU settings take effect immediately.
Fixes: 97bde5c4f909 ("net: ethernet: aquantia: Support for NIC-specific code")
Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
---
drivers/net/ethernet/aquantia/atlantic/aq_main.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_main.c b/drivers/net/ethernet/aquantia/atlantic/aq_main.c
index d05fbfd..5d6c40d 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_main.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_main.c
@@ -100,11 +100,6 @@ static int aq_ndev_change_mtu(struct net_device *ndev, int new_mtu)
goto err_exit;
ndev->mtu = new_mtu;
- if (netif_running(ndev)) {
- aq_ndev_close(ndev);
- aq_ndev_open(ndev);
- }
-
err_exit:
return err;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 net 2/5] net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6.
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 1/5] net:ethernet:aquantia: Remove adapter re-opening when MTU changed Pavel Belous
@ 2017-03-23 11:19 ` Pavel Belous
2017-03-23 12:13 ` David Arcari
2017-03-23 11:19 ` [PATCH v3 net 3/5] net:ethernet:aquantia: Missing spinlock initialization Pavel Belous
` (3 subsequent siblings)
5 siblings, 1 reply; 8+ messages in thread
From: Pavel Belous @ 2017-03-23 11:19 UTC (permalink / raw)
To: David S . Miller; +Cc: netdev, Simon Edelhaus, David Arcari, Pavel Belous
From: Pavel Belous <pavel.belous@aquantia.com>
In order for the checksum offloads to work correctly we need to set the
packet type bit (TCP/UDP) in the TX context buffer.
Fixes: 97bde5c4f909 ("net: ethernet: aquantia: Support for NIC-specific code")
Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
---
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
index ee78444..db2b51d 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
@@ -510,10 +510,22 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
if (skb->ip_summed == CHECKSUM_PARTIAL) {
dx_buff->is_ip_cso = (htons(ETH_P_IP) == skb->protocol) ?
1U : 0U;
- dx_buff->is_tcp_cso =
- (ip_hdr(skb)->protocol == IPPROTO_TCP) ? 1U : 0U;
- dx_buff->is_udp_cso =
- (ip_hdr(skb)->protocol == IPPROTO_UDP) ? 1U : 0U;
+
+ if (ip_hdr(skb)->version == 4) {
+ dx_buff->is_tcp_cso =
+ (ip_hdr(skb)->protocol == IPPROTO_TCP) ?
+ 1U : 0U;
+ dx_buff->is_udp_cso =
+ (ip_hdr(skb)->protocol == IPPROTO_UDP) ?
+ 1U : 0U;
+ } else if (ip_hdr(skb)->version == 6) {
+ dx_buff->is_tcp_cso =
+ (ipv6_hdr(skb)->nexthdr == NEXTHDR_TCP) ?
+ 1U : 0U;
+ dx_buff->is_udp_cso =
+ (ipv6_hdr(skb)->nexthdr == NEXTHDR_UDP) ?
+ 1U : 0U;
+ }
}
for (; nr_frags--; ++frag_count) {
--
2.7.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 net 3/5] net:ethernet:aquantia: Missing spinlock initialization.
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 1/5] net:ethernet:aquantia: Remove adapter re-opening when MTU changed Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 2/5] net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6 Pavel Belous
@ 2017-03-23 11:19 ` Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 4/5] net:ethernet:aquantia: Fix for LSO with IPv6 Pavel Belous
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Pavel Belous @ 2017-03-23 11:19 UTC (permalink / raw)
To: David S . Miller; +Cc: netdev, Simon Edelhaus, David Arcari, Pavel Belous
From: Pavel Belous <pavel.belous@aquantia.com>
Fix for missing initialization aq_ring header.lock spinlock.
Fixes: 018423e90bee ("net: ethernet: aquantia: Add ring support code")
Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
---
drivers/net/ethernet/aquantia/atlantic/aq_ring.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c
index 0358e607..3a8a4aa 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c
@@ -101,6 +101,7 @@ int aq_ring_init(struct aq_ring_s *self)
self->hw_head = 0;
self->sw_head = 0;
self->sw_tail = 0;
+ spin_lock_init(&self->header.lock);
return 0;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 net 4/5] net:ethernet:aquantia: Fix for LSO with IPv6.
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
` (2 preceding siblings ...)
2017-03-23 11:19 ` [PATCH v3 net 3/5] net:ethernet:aquantia: Missing spinlock initialization Pavel Belous
@ 2017-03-23 11:19 ` Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 5/5] net:ethernet:aquantia: Reset is_gso flag when EOP reached Pavel Belous
2017-03-24 19:33 ` [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver David Miller
5 siblings, 0 replies; 8+ messages in thread
From: Pavel Belous @ 2017-03-23 11:19 UTC (permalink / raw)
To: David S . Miller; +Cc: netdev, Simon Edelhaus, David Arcari, Pavel Belous
From: Pavel Belous <pavel.belous@aquantia.com>
Fix Context Command bit: L3 type = "0" for IPv4, "1" for IPv6.
Fixes: bab6de8fd180 ("net: ethernet: aquantia:
Atlantic A0 and B0 specific functions.")
Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
---
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 3 +++
drivers/net/ethernet/aquantia/atlantic/aq_ring.h | 3 ++-
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c | 3 +++
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c | 3 +++
4 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
index db2b51d..cdb0299 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
@@ -487,6 +487,9 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
dx_buff->mss = skb_shinfo(skb)->gso_size;
dx_buff->is_txc = 1U;
+ dx_buff->is_ipv6 =
+ (ip_hdr(skb)->version == 6) ? 1U : 0U;
+
dx = aq_ring_next_dx(ring, dx);
dx_buff = &ring->buff_ring[dx];
++ret;
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ring.h b/drivers/net/ethernet/aquantia/atlantic/aq_ring.h
index 2572546..eecd6d1 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.h
@@ -58,7 +58,8 @@ struct __packed aq_ring_buff_s {
u8 len_l2;
u8 len_l3;
u8 len_l4;
- u8 rsvd2;
+ u8 is_ipv6:1;
+ u8 rsvd2:7;
u32 len_pkt;
};
};
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
index a2b746a..a536875 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
@@ -433,6 +433,9 @@ static int hw_atl_a0_hw_ring_tx_xmit(struct aq_hw_s *self,
buff->len_l3 +
buff->len_l2);
is_gso = true;
+
+ if (buff->is_ipv6)
+ txd->ctl |= HW_ATL_A0_TXD_CTL_CMD_IPV6;
} else {
buff_pa_len = buff->len;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
index cab2931..69488c9 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
@@ -471,6 +471,9 @@ static int hw_atl_b0_hw_ring_tx_xmit(struct aq_hw_s *self,
buff->len_l3 +
buff->len_l2);
is_gso = true;
+
+ if (buff->is_ipv6)
+ txd->ctl |= HW_ATL_B0_TXD_CTL_CMD_IPV6;
} else {
buff_pa_len = buff->len;
--
2.7.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 net 5/5] net:ethernet:aquantia: Reset is_gso flag when EOP reached.
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
` (3 preceding siblings ...)
2017-03-23 11:19 ` [PATCH v3 net 4/5] net:ethernet:aquantia: Fix for LSO with IPv6 Pavel Belous
@ 2017-03-23 11:19 ` Pavel Belous
2017-03-24 19:33 ` [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver David Miller
5 siblings, 0 replies; 8+ messages in thread
From: Pavel Belous @ 2017-03-23 11:19 UTC (permalink / raw)
To: David S . Miller; +Cc: netdev, Simon Edelhaus, David Arcari, Pavel Belous
From: Pavel Belous <pavel.belous@aquantia.com>
We need to reset is_gso flag when EOP reached (entire LSO packet processed).
Fixes: bab6de8fd180 ("net: ethernet: aquantia:
Atlantic A0 and B0 specific functions.")
Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
---
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c | 1 +
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
index a536875..4ee15ff 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
@@ -461,6 +461,7 @@ static int hw_atl_a0_hw_ring_tx_xmit(struct aq_hw_s *self,
if (unlikely(buff->is_eop)) {
txd->ctl |= HW_ATL_A0_TXD_CTL_EOP;
txd->ctl |= HW_ATL_A0_TXD_CTL_CMD_WB;
+ is_gso = false;
}
}
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
index 69488c9..4215070 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
@@ -499,6 +499,7 @@ static int hw_atl_b0_hw_ring_tx_xmit(struct aq_hw_s *self,
if (unlikely(buff->is_eop)) {
txd->ctl |= HW_ATL_B0_TXD_CTL_EOP;
txd->ctl |= HW_ATL_B0_TXD_CTL_CMD_WB;
+ is_gso = false;
}
}
--
2.7.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 net 2/5] net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6.
2017-03-23 11:19 ` [PATCH v3 net 2/5] net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6 Pavel Belous
@ 2017-03-23 12:13 ` David Arcari
0 siblings, 0 replies; 8+ messages in thread
From: David Arcari @ 2017-03-23 12:13 UTC (permalink / raw)
To: Pavel Belous, David S . Miller; +Cc: netdev, Simon Edelhaus
On 03/23/2017 07:19 AM, Pavel Belous wrote:
> From: Pavel Belous <pavel.belous@aquantia.com>
>
> In order for the checksum offloads to work correctly we need to set the
> packet type bit (TCP/UDP) in the TX context buffer.
>
> Fixes: 97bde5c4f909 ("net: ethernet: aquantia: Support for NIC-specific code")
>
> Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
> ---
> drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
> index ee78444..db2b51d 100644
> --- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
> +++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
> @@ -510,10 +510,22 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
> if (skb->ip_summed == CHECKSUM_PARTIAL) {
> dx_buff->is_ip_cso = (htons(ETH_P_IP) == skb->protocol) ?
> 1U : 0U;
> - dx_buff->is_tcp_cso =
> - (ip_hdr(skb)->protocol == IPPROTO_TCP) ? 1U : 0U;
> - dx_buff->is_udp_cso =
> - (ip_hdr(skb)->protocol == IPPROTO_UDP) ? 1U : 0U;
> +
> + if (ip_hdr(skb)->version == 4) {
> + dx_buff->is_tcp_cso =
> + (ip_hdr(skb)->protocol == IPPROTO_TCP) ?
> + 1U : 0U;
> + dx_buff->is_udp_cso =
> + (ip_hdr(skb)->protocol == IPPROTO_UDP) ?
> + 1U : 0U;
> + } else if (ip_hdr(skb)->version == 6) {
> + dx_buff->is_tcp_cso =
> + (ipv6_hdr(skb)->nexthdr == NEXTHDR_TCP) ?
> + 1U : 0U;
> + dx_buff->is_udp_cso =
> + (ipv6_hdr(skb)->nexthdr == NEXTHDR_UDP) ?
> + 1U : 0U;
> + }
> }
>
> for (; nr_frags--; ++frag_count) {
>
Fixes tcp/ipv6
Tested-by: David Arcari <darcari@redhat.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver.
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
` (4 preceding siblings ...)
2017-03-23 11:19 ` [PATCH v3 net 5/5] net:ethernet:aquantia: Reset is_gso flag when EOP reached Pavel Belous
@ 2017-03-24 19:33 ` David Miller
5 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2017-03-24 19:33 UTC (permalink / raw)
To: Pavel.Belous; +Cc: netdev, Simon.Edelhaus, darcari
From: Pavel Belous <Pavel.Belous@aquantia.com>
Date: Thu, 23 Mar 2017 14:19:40 +0300
> From: Pavel Belous <pavel.belous@aquantia.com>
>
> The following patchset containg several fixes for aQuantia AQtion driver
> for net tree: A couple fixes for IPv6 and other fixes.
>
> v1->v2: Fix compilation error (using HW_ATL_A0_TXD_CTL_CMD_IPV6 instead
> HW_ATL_B0_TXD_CTL_CMD_IPV6).
> v2->v3: Added "Fixes" tags.
Series applied, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-03-24 19:33 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-23 11:19 [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 1/5] net:ethernet:aquantia: Remove adapter re-opening when MTU changed Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 2/5] net:ethernet:aquantia: Fix packet type detection (TCP/UDP) for IPv6 Pavel Belous
2017-03-23 12:13 ` David Arcari
2017-03-23 11:19 ` [PATCH v3 net 3/5] net:ethernet:aquantia: Missing spinlock initialization Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 4/5] net:ethernet:aquantia: Fix for LSO with IPv6 Pavel Belous
2017-03-23 11:19 ` [PATCH v3 net 5/5] net:ethernet:aquantia: Reset is_gso flag when EOP reached Pavel Belous
2017-03-24 19:33 ` [PATCH v3 net 0/5] net:ethernet:aquantia: Misc fixes for atlantic driver David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).