Commit 8c7698d5 authored by Saeed Mahameed's avatar Saeed Mahameed

net/mlx5e: Rx, checksum handling refactoring

Move vlan checksum fixup flow into mlx5e_skb_padding_csum(), which is
supposed to fixup SKB checksum if needed. And rename
mlx5e_skb_padding_csum() to mlx5e_skb_csum_fixup().
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent b431302e
...@@ -859,13 +859,24 @@ tail_padding_csum(struct sk_buff *skb, int offset, ...@@ -859,13 +859,24 @@ tail_padding_csum(struct sk_buff *skb, int offset,
} }
static void static void
mlx5e_skb_padding_csum(struct sk_buff *skb, int network_depth, __be16 proto, mlx5e_skb_csum_fixup(struct sk_buff *skb, int network_depth, __be16 proto,
struct mlx5e_rq_stats *stats) struct mlx5e_rq_stats *stats)
{ {
struct ipv6hdr *ip6; struct ipv6hdr *ip6;
struct iphdr *ip4; struct iphdr *ip4;
int pkt_len; int pkt_len;
/* Fixup vlan headers, if any */
if (network_depth > ETH_HLEN)
/* CQE csum is calculated from the IP header and does
* not cover VLAN headers (if present). This will add
* the checksum manually.
*/
skb->csum = csum_partial(skb->data + ETH_HLEN,
network_depth - ETH_HLEN,
skb->csum);
/* Fixup tail padding, if any */
switch (proto) { switch (proto) {
case htons(ETH_P_IP): case htons(ETH_P_IP):
ip4 = (struct iphdr *)(skb->data + network_depth); ip4 = (struct iphdr *)(skb->data + network_depth);
...@@ -931,16 +942,7 @@ static inline void mlx5e_handle_csum(struct net_device *netdev, ...@@ -931,16 +942,7 @@ static inline void mlx5e_handle_csum(struct net_device *netdev,
return; /* CQE csum covers all received bytes */ return; /* CQE csum covers all received bytes */
/* csum might need some fixups ...*/ /* csum might need some fixups ...*/
if (network_depth > ETH_HLEN) mlx5e_skb_csum_fixup(skb, network_depth, proto, stats);
/* CQE csum is calculated from the IP header and does
* not cover VLAN headers (if present). This will add
* the checksum manually.
*/
skb->csum = csum_partial(skb->data + ETH_HLEN,
network_depth - ETH_HLEN,
skb->csum);
mlx5e_skb_padding_csum(skb, network_depth, proto, stats);
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment