diff options
author | Stefan Sørensen <stefan.sorensen@spectralink.com> | 2014-06-27 05:59:09 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-07 19:57:09 -0400 |
commit | b9c701edc7ff6ddd522497b0194b0bc3ec1b51a9 (patch) | |
tree | eb4ba9bffe93c7b1ef94a9ad357bb180a4be4acd /net/core | |
parent | 239960d66425785affb92d745e3b29e3e9b51745 (diff) |
net: Simplify ptp class checks
Replace two switch statements enumerating all valid ptp classes with an if
statement matching for not PTP_CLASS_NONE.
Signed-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/timestamping.c | 57 |
1 files changed, 20 insertions, 37 deletions
diff --git a/net/core/timestamping.c b/net/core/timestamping.c index 6521dfd8b7c8..a8770391ea5b 100644 --- a/net/core/timestamping.c +++ b/net/core/timestamping.c | |||
@@ -43,31 +43,22 @@ void skb_clone_tx_timestamp(struct sk_buff *skb) | |||
43 | return; | 43 | return; |
44 | 44 | ||
45 | type = classify(skb); | 45 | type = classify(skb); |
46 | if (type == PTP_CLASS_NONE) | ||
47 | return; | ||
48 | |||
49 | phydev = skb->dev->phydev; | ||
50 | if (likely(phydev->drv->txtstamp)) { | ||
51 | if (!atomic_inc_not_zero(&sk->sk_refcnt)) | ||
52 | return; | ||
46 | 53 | ||
47 | switch (type) { | 54 | clone = skb_clone(skb, GFP_ATOMIC); |
48 | case PTP_CLASS_V1_IPV4: | 55 | if (!clone) { |
49 | case PTP_CLASS_V1_IPV6: | 56 | sock_put(sk); |
50 | case PTP_CLASS_V2_IPV4: | 57 | return; |
51 | case PTP_CLASS_V2_IPV6: | ||
52 | case PTP_CLASS_V2_L2: | ||
53 | case PTP_CLASS_V2_VLAN: | ||
54 | phydev = skb->dev->phydev; | ||
55 | if (likely(phydev->drv->txtstamp)) { | ||
56 | if (!atomic_inc_not_zero(&sk->sk_refcnt)) | ||
57 | return; | ||
58 | |||
59 | clone = skb_clone(skb, GFP_ATOMIC); | ||
60 | if (!clone) { | ||
61 | sock_put(sk); | ||
62 | return; | ||
63 | } | ||
64 | |||
65 | clone->sk = sk; | ||
66 | phydev->drv->txtstamp(phydev, clone, type); | ||
67 | } | 58 | } |
68 | break; | 59 | |
69 | default: | 60 | clone->sk = sk; |
70 | break; | 61 | phydev->drv->txtstamp(phydev, clone, type); |
71 | } | 62 | } |
72 | } | 63 | } |
73 | EXPORT_SYMBOL_GPL(skb_clone_tx_timestamp); | 64 | EXPORT_SYMBOL_GPL(skb_clone_tx_timestamp); |
@@ -114,20 +105,12 @@ bool skb_defer_rx_timestamp(struct sk_buff *skb) | |||
114 | 105 | ||
115 | __skb_pull(skb, ETH_HLEN); | 106 | __skb_pull(skb, ETH_HLEN); |
116 | 107 | ||
117 | switch (type) { | 108 | if (type == PTP_CLASS_NONE) |
118 | case PTP_CLASS_V1_IPV4: | 109 | return false; |
119 | case PTP_CLASS_V1_IPV6: | 110 | |
120 | case PTP_CLASS_V2_IPV4: | 111 | phydev = skb->dev->phydev; |
121 | case PTP_CLASS_V2_IPV6: | 112 | if (likely(phydev->drv->rxtstamp)) |
122 | case PTP_CLASS_V2_L2: | 113 | return phydev->drv->rxtstamp(phydev, skb, type); |
123 | case PTP_CLASS_V2_VLAN: | ||
124 | phydev = skb->dev->phydev; | ||
125 | if (likely(phydev->drv->rxtstamp)) | ||
126 | return phydev->drv->rxtstamp(phydev, skb, type); | ||
127 | break; | ||
128 | default: | ||
129 | break; | ||
130 | } | ||
131 | 114 | ||
132 | return false; | 115 | return false; |
133 | } | 116 | } |