Skip to content

Commit 5c7cdf3

Browse files
tomratbertdavem330
authored andcommitted
gso: Remove arbitrary checks for unsupported GSO
In several gso_segment functions there are checks of gso_type against a seemingly arbitrary list of SKB_GSO_* flags. This seems like an attempt to identify unsupported GSO types, but since the stack is the one that set these GSO types in the first place this seems unnecessary to do. If a combination isn't valid in the first place that stack should not allow setting it. This is a code simplication especially for add new GSO types. Signed-off-by: Tom Herbert <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9483501 commit 5c7cdf3

File tree

7 files changed

+1
-102
lines changed

7 files changed

+1
-102
lines changed

net/ipv4/af_inet.c

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,24 +1205,6 @@ static struct sk_buff *inet_gso_segment(struct sk_buff *skb,
12051205
int ihl;
12061206
int id;
12071207

1208-
if (unlikely(skb_shinfo(skb)->gso_type &
1209-
~(SKB_GSO_TCPV4 |
1210-
SKB_GSO_UDP |
1211-
SKB_GSO_DODGY |
1212-
SKB_GSO_TCP_ECN |
1213-
SKB_GSO_GRE |
1214-
SKB_GSO_GRE_CSUM |
1215-
SKB_GSO_IPIP |
1216-
SKB_GSO_SIT |
1217-
SKB_GSO_TCPV6 |
1218-
SKB_GSO_UDP_TUNNEL |
1219-
SKB_GSO_UDP_TUNNEL_CSUM |
1220-
SKB_GSO_TCP_FIXEDID |
1221-
SKB_GSO_TUNNEL_REMCSUM |
1222-
SKB_GSO_PARTIAL |
1223-
0)))
1224-
goto out;
1225-
12261208
skb_reset_network_header(skb);
12271209
nhoff = skb_network_header(skb) - skb_mac_header(skb);
12281210
if (unlikely(!pskb_may_pull(skb, sizeof(*iph))))

net/ipv4/gre_offload.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,6 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb,
2626
int gre_offset, outer_hlen;
2727
bool need_csum, ufo;
2828

29-
if (unlikely(skb_shinfo(skb)->gso_type &
30-
~(SKB_GSO_TCPV4 |
31-
SKB_GSO_TCPV6 |
32-
SKB_GSO_UDP |
33-
SKB_GSO_DODGY |
34-
SKB_GSO_TCP_ECN |
35-
SKB_GSO_TCP_FIXEDID |
36-
SKB_GSO_GRE |
37-
SKB_GSO_GRE_CSUM |
38-
SKB_GSO_IPIP |
39-
SKB_GSO_SIT |
40-
SKB_GSO_PARTIAL)))
41-
goto out;
42-
4329
if (!skb->encapsulation)
4430
goto out;
4531

net/ipv4/tcp_offload.c

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -83,25 +83,6 @@ struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
8383

8484
if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) {
8585
/* Packet is from an untrusted source, reset gso_segs. */
86-
int type = skb_shinfo(skb)->gso_type;
87-
88-
if (unlikely(type &
89-
~(SKB_GSO_TCPV4 |
90-
SKB_GSO_DODGY |
91-
SKB_GSO_TCP_ECN |
92-
SKB_GSO_TCP_FIXEDID |
93-
SKB_GSO_TCPV6 |
94-
SKB_GSO_GRE |
95-
SKB_GSO_GRE_CSUM |
96-
SKB_GSO_IPIP |
97-
SKB_GSO_SIT |
98-
SKB_GSO_UDP_TUNNEL |
99-
SKB_GSO_UDP_TUNNEL_CSUM |
100-
SKB_GSO_TUNNEL_REMCSUM |
101-
0) ||
102-
!(type & (SKB_GSO_TCPV4 |
103-
SKB_GSO_TCPV6))))
104-
goto out;
10586

10687
skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss);
10788

net/ipv4/udp_offload.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -209,16 +209,6 @@ static struct sk_buff *udp4_ufo_fragment(struct sk_buff *skb,
209209

210210
if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) {
211211
/* Packet is from an untrusted source, reset gso_segs. */
212-
int type = skb_shinfo(skb)->gso_type;
213-
214-
if (unlikely(type & ~(SKB_GSO_UDP | SKB_GSO_DODGY |
215-
SKB_GSO_UDP_TUNNEL |
216-
SKB_GSO_UDP_TUNNEL_CSUM |
217-
SKB_GSO_TUNNEL_REMCSUM |
218-
SKB_GSO_IPIP |
219-
SKB_GSO_GRE | SKB_GSO_GRE_CSUM) ||
220-
!(type & (SKB_GSO_UDP))))
221-
goto out;
222212

223213
skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss);
224214

net/ipv6/ip6_offload.c

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -69,24 +69,6 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb,
6969
bool encap, udpfrag;
7070
int nhoff;
7171

72-
if (unlikely(skb_shinfo(skb)->gso_type &
73-
~(SKB_GSO_TCPV4 |
74-
SKB_GSO_UDP |
75-
SKB_GSO_DODGY |
76-
SKB_GSO_TCP_ECN |
77-
SKB_GSO_TCP_FIXEDID |
78-
SKB_GSO_TCPV6 |
79-
SKB_GSO_GRE |
80-
SKB_GSO_GRE_CSUM |
81-
SKB_GSO_IPIP |
82-
SKB_GSO_SIT |
83-
SKB_GSO_UDP_TUNNEL |
84-
SKB_GSO_UDP_TUNNEL_CSUM |
85-
SKB_GSO_TUNNEL_REMCSUM |
86-
SKB_GSO_PARTIAL |
87-
0)))
88-
goto out;
89-
9072
skb_reset_network_header(skb);
9173
nhoff = skb_network_header(skb) - skb_mac_header(skb);
9274
if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h))))

net/ipv6/udp_offload.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,6 @@ static struct sk_buff *udp6_ufo_fragment(struct sk_buff *skb,
3636

3737
if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) {
3838
/* Packet is from an untrusted source, reset gso_segs. */
39-
int type = skb_shinfo(skb)->gso_type;
40-
41-
if (unlikely(type & ~(SKB_GSO_UDP |
42-
SKB_GSO_DODGY |
43-
SKB_GSO_UDP_TUNNEL |
44-
SKB_GSO_UDP_TUNNEL_CSUM |
45-
SKB_GSO_TUNNEL_REMCSUM |
46-
SKB_GSO_GRE |
47-
SKB_GSO_GRE_CSUM |
48-
SKB_GSO_IPIP |
49-
SKB_GSO_SIT) ||
50-
!(type & (SKB_GSO_UDP))))
51-
goto out;
5239

5340
skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss);
5441

net/mpls/mpls_gso.c

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,6 @@ static struct sk_buff *mpls_gso_segment(struct sk_buff *skb,
2626
netdev_features_t mpls_features;
2727
__be16 mpls_protocol;
2828

29-
if (unlikely(skb_shinfo(skb)->gso_type &
30-
~(SKB_GSO_TCPV4 |
31-
SKB_GSO_TCPV6 |
32-
SKB_GSO_UDP |
33-
SKB_GSO_DODGY |
34-
SKB_GSO_TCP_FIXEDID |
35-
SKB_GSO_TCP_ECN)))
36-
goto out;
37-
3829
/* Setup inner SKB. */
3930
mpls_protocol = skb->protocol;
4031
skb->protocol = skb->inner_protocol;
@@ -57,7 +48,7 @@ static struct sk_buff *mpls_gso_segment(struct sk_buff *skb,
5748
* skb_mac_gso_segment(), an indirect caller of this function.
5849
*/
5950
__skb_pull(skb, skb->data - skb_mac_header(skb));
60-
out:
51+
6152
return segs;
6253
}
6354

0 commit comments

Comments
 (0)