diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/Makefile | 1 | ||||
-rw-r--r-- | net/core/dev.c | 48 | ||||
-rw-r--r-- | net/core/dst.c | 1 | ||||
-rw-r--r-- | net/core/neighbour.c | 21 | ||||
-rw-r--r-- | net/core/net-sysfs.c | 36 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 13 | ||||
-rw-r--r-- | net/core/skb_dma_map.c | 66 | ||||
-rw-r--r-- | net/core/sock.c | 9 |
8 files changed, 176 insertions, 19 deletions
diff --git a/net/core/Makefile b/net/core/Makefile index b1332f6d0042..26a37cb31923 100644 --- a/net/core/Makefile +++ b/net/core/Makefile | |||
@@ -6,6 +6,7 @@ obj-y := sock.o request_sock.o skbuff.o iovec.o datagram.o stream.o scm.o \ | |||
6 | gen_stats.o gen_estimator.o net_namespace.o | 6 | gen_stats.o gen_estimator.o net_namespace.o |
7 | 7 | ||
8 | obj-$(CONFIG_SYSCTL) += sysctl_net_core.o | 8 | obj-$(CONFIG_SYSCTL) += sysctl_net_core.o |
9 | obj-$(CONFIG_HAS_DMA) += skb_dma_map.o | ||
9 | 10 | ||
10 | obj-y += dev.o ethtool.o dev_mcast.o dst.o netevent.o \ | 11 | obj-y += dev.o ethtool.o dev_mcast.o dst.o netevent.o \ |
11 | neighbour.o rtnetlink.o utils.o link_watch.o filter.o | 12 | neighbour.o rtnetlink.o utils.o link_watch.o filter.o |
diff --git a/net/core/dev.c b/net/core/dev.c index 60c51f765887..a90737fe2472 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -954,6 +954,37 @@ rollback: | |||
954 | } | 954 | } |
955 | 955 | ||
956 | /** | 956 | /** |
957 | * dev_set_alias - change ifalias of a device | ||
958 | * @dev: device | ||
959 | * @alias: name up to IFALIASZ | ||
960 | * | ||
961 | * Set ifalias for a device, | ||
962 | */ | ||
963 | int dev_set_alias(struct net_device *dev, const char *alias, size_t len) | ||
964 | { | ||
965 | ASSERT_RTNL(); | ||
966 | |||
967 | if (len >= IFALIASZ) | ||
968 | return -EINVAL; | ||
969 | |||
970 | if (!len) { | ||
971 | if (dev->ifalias) { | ||
972 | kfree(dev->ifalias); | ||
973 | dev->ifalias = NULL; | ||
974 | } | ||
975 | return 0; | ||
976 | } | ||
977 | |||
978 | dev->ifalias = krealloc(dev->ifalias, len+1, GFP_KERNEL); | ||
979 | if (!dev->ifalias) | ||
980 | return -ENOMEM; | ||
981 | |||
982 | strlcpy(dev->ifalias, alias, len+1); | ||
983 | return len; | ||
984 | } | ||
985 | |||
986 | |||
987 | /** | ||
957 | * netdev_features_change - device changes features | 988 | * netdev_features_change - device changes features |
958 | * @dev: device to cause notification | 989 | * @dev: device to cause notification |
959 | * | 990 | * |
@@ -1675,13 +1706,13 @@ static u16 simple_tx_hash(struct net_device *dev, struct sk_buff *skb) | |||
1675 | } | 1706 | } |
1676 | 1707 | ||
1677 | switch (skb->protocol) { | 1708 | switch (skb->protocol) { |
1678 | case __constant_htons(ETH_P_IP): | 1709 | case htons(ETH_P_IP): |
1679 | ip_proto = ip_hdr(skb)->protocol; | 1710 | ip_proto = ip_hdr(skb)->protocol; |
1680 | addr1 = ip_hdr(skb)->saddr; | 1711 | addr1 = ip_hdr(skb)->saddr; |
1681 | addr2 = ip_hdr(skb)->daddr; | 1712 | addr2 = ip_hdr(skb)->daddr; |
1682 | ihl = ip_hdr(skb)->ihl; | 1713 | ihl = ip_hdr(skb)->ihl; |
1683 | break; | 1714 | break; |
1684 | case __constant_htons(ETH_P_IPV6): | 1715 | case htons(ETH_P_IPV6): |
1685 | ip_proto = ipv6_hdr(skb)->nexthdr; | 1716 | ip_proto = ipv6_hdr(skb)->nexthdr; |
1686 | addr1 = ipv6_hdr(skb)->saddr.s6_addr32[3]; | 1717 | addr1 = ipv6_hdr(skb)->saddr.s6_addr32[3]; |
1687 | addr2 = ipv6_hdr(skb)->daddr.s6_addr32[3]; | 1718 | addr2 = ipv6_hdr(skb)->daddr.s6_addr32[3]; |
@@ -1991,8 +2022,13 @@ static void net_tx_action(struct softirq_action *h) | |||
1991 | spin_unlock(root_lock); | 2022 | spin_unlock(root_lock); |
1992 | } else { | 2023 | } else { |
1993 | if (!test_bit(__QDISC_STATE_DEACTIVATED, | 2024 | if (!test_bit(__QDISC_STATE_DEACTIVATED, |
1994 | &q->state)) | 2025 | &q->state)) { |
1995 | __netif_reschedule(q); | 2026 | __netif_reschedule(q); |
2027 | } else { | ||
2028 | smp_mb__before_clear_bit(); | ||
2029 | clear_bit(__QDISC_STATE_SCHED, | ||
2030 | &q->state); | ||
2031 | } | ||
1996 | } | 2032 | } |
1997 | } | 2033 | } |
1998 | } | 2034 | } |
@@ -4663,6 +4699,12 @@ int netdev_compute_features(unsigned long all, unsigned long one) | |||
4663 | one |= NETIF_F_GSO_SOFTWARE; | 4699 | one |= NETIF_F_GSO_SOFTWARE; |
4664 | one |= NETIF_F_GSO; | 4700 | one |= NETIF_F_GSO; |
4665 | 4701 | ||
4702 | /* | ||
4703 | * If even one device supports a GSO protocol with software fallback, | ||
4704 | * enable it for all. | ||
4705 | */ | ||
4706 | all |= one & NETIF_F_GSO_SOFTWARE; | ||
4707 | |||
4666 | /* If even one device supports robust GSO, enable it for all. */ | 4708 | /* If even one device supports robust GSO, enable it for all. */ |
4667 | if (one & NETIF_F_GSO_ROBUST) | 4709 | if (one & NETIF_F_GSO_ROBUST) |
4668 | all |= NETIF_F_GSO_ROBUST; | 4710 | all |= NETIF_F_GSO_ROBUST; |
diff --git a/net/core/dst.c b/net/core/dst.c index fe03266130b6..09c1530f4681 100644 --- a/net/core/dst.c +++ b/net/core/dst.c | |||
@@ -203,6 +203,7 @@ void __dst_free(struct dst_entry * dst) | |||
203 | if (dst_garbage.timer_inc > DST_GC_INC) { | 203 | if (dst_garbage.timer_inc > DST_GC_INC) { |
204 | dst_garbage.timer_inc = DST_GC_INC; | 204 | dst_garbage.timer_inc = DST_GC_INC; |
205 | dst_garbage.timer_expires = DST_GC_MIN; | 205 | dst_garbage.timer_expires = DST_GC_MIN; |
206 | cancel_delayed_work(&dst_gc_work); | ||
206 | schedule_delayed_work(&dst_gc_work, dst_garbage.timer_expires); | 207 | schedule_delayed_work(&dst_gc_work, dst_garbage.timer_expires); |
207 | } | 208 | } |
208 | spin_unlock_bh(&dst_garbage.lock); | 209 | spin_unlock_bh(&dst_garbage.lock); |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 9d92e41826e7..1dc728b38589 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -927,8 +927,7 @@ int __neigh_event_send(struct neighbour *neigh, struct sk_buff *skb) | |||
927 | if (skb_queue_len(&neigh->arp_queue) >= | 927 | if (skb_queue_len(&neigh->arp_queue) >= |
928 | neigh->parms->queue_len) { | 928 | neigh->parms->queue_len) { |
929 | struct sk_buff *buff; | 929 | struct sk_buff *buff; |
930 | buff = neigh->arp_queue.next; | 930 | buff = __skb_dequeue(&neigh->arp_queue); |
931 | __skb_unlink(buff, &neigh->arp_queue); | ||
932 | kfree_skb(buff); | 931 | kfree_skb(buff); |
933 | NEIGH_CACHE_STAT_INC(neigh->tbl, unres_discards); | 932 | NEIGH_CACHE_STAT_INC(neigh->tbl, unres_discards); |
934 | } | 933 | } |
@@ -1259,24 +1258,20 @@ static void neigh_proxy_process(unsigned long arg) | |||
1259 | struct neigh_table *tbl = (struct neigh_table *)arg; | 1258 | struct neigh_table *tbl = (struct neigh_table *)arg; |
1260 | long sched_next = 0; | 1259 | long sched_next = 0; |
1261 | unsigned long now = jiffies; | 1260 | unsigned long now = jiffies; |
1262 | struct sk_buff *skb; | 1261 | struct sk_buff *skb, *n; |
1263 | 1262 | ||
1264 | spin_lock(&tbl->proxy_queue.lock); | 1263 | spin_lock(&tbl->proxy_queue.lock); |
1265 | 1264 | ||
1266 | skb = tbl->proxy_queue.next; | 1265 | skb_queue_walk_safe(&tbl->proxy_queue, skb, n) { |
1267 | 1266 | long tdif = NEIGH_CB(skb)->sched_next - now; | |
1268 | while (skb != (struct sk_buff *)&tbl->proxy_queue) { | ||
1269 | struct sk_buff *back = skb; | ||
1270 | long tdif = NEIGH_CB(back)->sched_next - now; | ||
1271 | 1267 | ||
1272 | skb = skb->next; | ||
1273 | if (tdif <= 0) { | 1268 | if (tdif <= 0) { |
1274 | struct net_device *dev = back->dev; | 1269 | struct net_device *dev = skb->dev; |
1275 | __skb_unlink(back, &tbl->proxy_queue); | 1270 | __skb_unlink(skb, &tbl->proxy_queue); |
1276 | if (tbl->proxy_redo && netif_running(dev)) | 1271 | if (tbl->proxy_redo && netif_running(dev)) |
1277 | tbl->proxy_redo(back); | 1272 | tbl->proxy_redo(skb); |
1278 | else | 1273 | else |
1279 | kfree_skb(back); | 1274 | kfree_skb(skb); |
1280 | 1275 | ||
1281 | dev_put(dev); | 1276 | dev_put(dev); |
1282 | } else if (!sched_next || tdif < sched_next) | 1277 | } else if (!sched_next || tdif < sched_next) |
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index c1f4e0d428c0..92d6b9467314 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
@@ -209,9 +209,44 @@ static ssize_t store_tx_queue_len(struct device *dev, | |||
209 | return netdev_store(dev, attr, buf, len, change_tx_queue_len); | 209 | return netdev_store(dev, attr, buf, len, change_tx_queue_len); |
210 | } | 210 | } |
211 | 211 | ||
212 | static ssize_t store_ifalias(struct device *dev, struct device_attribute *attr, | ||
213 | const char *buf, size_t len) | ||
214 | { | ||
215 | struct net_device *netdev = to_net_dev(dev); | ||
216 | size_t count = len; | ||
217 | ssize_t ret; | ||
218 | |||
219 | if (!capable(CAP_NET_ADMIN)) | ||
220 | return -EPERM; | ||
221 | |||
222 | /* ignore trailing newline */ | ||
223 | if (len > 0 && buf[len - 1] == '\n') | ||
224 | --count; | ||
225 | |||
226 | rtnl_lock(); | ||
227 | ret = dev_set_alias(netdev, buf, count); | ||
228 | rtnl_unlock(); | ||
229 | |||
230 | return ret < 0 ? ret : len; | ||
231 | } | ||
232 | |||
233 | static ssize_t show_ifalias(struct device *dev, | ||
234 | struct device_attribute *attr, char *buf) | ||
235 | { | ||
236 | const struct net_device *netdev = to_net_dev(dev); | ||
237 | ssize_t ret = 0; | ||
238 | |||
239 | rtnl_lock(); | ||
240 | if (netdev->ifalias) | ||
241 | ret = sprintf(buf, "%s\n", netdev->ifalias); | ||
242 | rtnl_unlock(); | ||
243 | return ret; | ||
244 | } | ||
245 | |||
212 | static struct device_attribute net_class_attributes[] = { | 246 | static struct device_attribute net_class_attributes[] = { |
213 | __ATTR(addr_len, S_IRUGO, show_addr_len, NULL), | 247 | __ATTR(addr_len, S_IRUGO, show_addr_len, NULL), |
214 | __ATTR(dev_id, S_IRUGO, show_dev_id, NULL), | 248 | __ATTR(dev_id, S_IRUGO, show_dev_id, NULL), |
249 | __ATTR(ifalias, S_IRUGO | S_IWUSR, show_ifalias, store_ifalias), | ||
215 | __ATTR(iflink, S_IRUGO, show_iflink, NULL), | 250 | __ATTR(iflink, S_IRUGO, show_iflink, NULL), |
216 | __ATTR(ifindex, S_IRUGO, show_ifindex, NULL), | 251 | __ATTR(ifindex, S_IRUGO, show_ifindex, NULL), |
217 | __ATTR(features, S_IRUGO, show_features, NULL), | 252 | __ATTR(features, S_IRUGO, show_features, NULL), |
@@ -418,6 +453,7 @@ static void netdev_release(struct device *d) | |||
418 | 453 | ||
419 | BUG_ON(dev->reg_state != NETREG_RELEASED); | 454 | BUG_ON(dev->reg_state != NETREG_RELEASED); |
420 | 455 | ||
456 | kfree(dev->ifalias); | ||
421 | kfree((char *)dev - dev->padded); | 457 | kfree((char *)dev - dev->padded); |
422 | } | 458 | } |
423 | 459 | ||
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 71edb8b36341..8862498fd4a6 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -586,6 +586,7 @@ static inline size_t if_nlmsg_size(const struct net_device *dev) | |||
586 | { | 586 | { |
587 | return NLMSG_ALIGN(sizeof(struct ifinfomsg)) | 587 | return NLMSG_ALIGN(sizeof(struct ifinfomsg)) |
588 | + nla_total_size(IFNAMSIZ) /* IFLA_IFNAME */ | 588 | + nla_total_size(IFNAMSIZ) /* IFLA_IFNAME */ |
589 | + nla_total_size(IFALIASZ) /* IFLA_IFALIAS */ | ||
589 | + nla_total_size(IFNAMSIZ) /* IFLA_QDISC */ | 590 | + nla_total_size(IFNAMSIZ) /* IFLA_QDISC */ |
590 | + nla_total_size(sizeof(struct rtnl_link_ifmap)) | 591 | + nla_total_size(sizeof(struct rtnl_link_ifmap)) |
591 | + nla_total_size(sizeof(struct rtnl_link_stats)) | 592 | + nla_total_size(sizeof(struct rtnl_link_stats)) |
@@ -640,6 +641,9 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, | |||
640 | if (txq->qdisc_sleeping) | 641 | if (txq->qdisc_sleeping) |
641 | NLA_PUT_STRING(skb, IFLA_QDISC, txq->qdisc_sleeping->ops->id); | 642 | NLA_PUT_STRING(skb, IFLA_QDISC, txq->qdisc_sleeping->ops->id); |
642 | 643 | ||
644 | if (dev->ifalias) | ||
645 | NLA_PUT_STRING(skb, IFLA_IFALIAS, dev->ifalias); | ||
646 | |||
643 | if (1) { | 647 | if (1) { |
644 | struct rtnl_link_ifmap map = { | 648 | struct rtnl_link_ifmap map = { |
645 | .mem_start = dev->mem_start, | 649 | .mem_start = dev->mem_start, |
@@ -713,6 +717,7 @@ const struct nla_policy ifla_policy[IFLA_MAX+1] = { | |||
713 | [IFLA_LINKMODE] = { .type = NLA_U8 }, | 717 | [IFLA_LINKMODE] = { .type = NLA_U8 }, |
714 | [IFLA_LINKINFO] = { .type = NLA_NESTED }, | 718 | [IFLA_LINKINFO] = { .type = NLA_NESTED }, |
715 | [IFLA_NET_NS_PID] = { .type = NLA_U32 }, | 719 | [IFLA_NET_NS_PID] = { .type = NLA_U32 }, |
720 | [IFLA_IFALIAS] = { .type = NLA_STRING, .len = IFALIASZ-1 }, | ||
716 | }; | 721 | }; |
717 | 722 | ||
718 | static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = { | 723 | static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = { |
@@ -853,6 +858,14 @@ static int do_setlink(struct net_device *dev, struct ifinfomsg *ifm, | |||
853 | modified = 1; | 858 | modified = 1; |
854 | } | 859 | } |
855 | 860 | ||
861 | if (tb[IFLA_IFALIAS]) { | ||
862 | err = dev_set_alias(dev, nla_data(tb[IFLA_IFALIAS]), | ||
863 | nla_len(tb[IFLA_IFALIAS])); | ||
864 | if (err < 0) | ||
865 | goto errout; | ||
866 | modified = 1; | ||
867 | } | ||
868 | |||
856 | if (tb[IFLA_BROADCAST]) { | 869 | if (tb[IFLA_BROADCAST]) { |
857 | nla_memcpy(dev->broadcast, tb[IFLA_BROADCAST], dev->addr_len); | 870 | nla_memcpy(dev->broadcast, tb[IFLA_BROADCAST], dev->addr_len); |
858 | send_addr_notify = 1; | 871 | send_addr_notify = 1; |
diff --git a/net/core/skb_dma_map.c b/net/core/skb_dma_map.c new file mode 100644 index 000000000000..1f49afcd8e86 --- /dev/null +++ b/net/core/skb_dma_map.c | |||
@@ -0,0 +1,66 @@ | |||
1 | /* skb_dma_map.c: DMA mapping helpers for socket buffers. | ||
2 | * | ||
3 | * Copyright (C) David S. Miller <davem@davemloft.net> | ||
4 | */ | ||
5 | |||
6 | #include <linux/kernel.h> | ||
7 | #include <linux/module.h> | ||
8 | #include <linux/dma-mapping.h> | ||
9 | #include <linux/skbuff.h> | ||
10 | |||
11 | int skb_dma_map(struct device *dev, struct sk_buff *skb, | ||
12 | enum dma_data_direction dir) | ||
13 | { | ||
14 | struct skb_shared_info *sp = skb_shinfo(skb); | ||
15 | dma_addr_t map; | ||
16 | int i; | ||
17 | |||
18 | map = dma_map_single(dev, skb->data, | ||
19 | skb_headlen(skb), dir); | ||
20 | if (dma_mapping_error(dev, map)) | ||
21 | goto out_err; | ||
22 | |||
23 | sp->dma_maps[0] = map; | ||
24 | for (i = 0; i < sp->nr_frags; i++) { | ||
25 | skb_frag_t *fp = &sp->frags[i]; | ||
26 | |||
27 | map = dma_map_page(dev, fp->page, fp->page_offset, | ||
28 | fp->size, dir); | ||
29 | if (dma_mapping_error(dev, map)) | ||
30 | goto unwind; | ||
31 | sp->dma_maps[i + 1] = map; | ||
32 | } | ||
33 | sp->num_dma_maps = i + 1; | ||
34 | |||
35 | return 0; | ||
36 | |||
37 | unwind: | ||
38 | while (i-- >= 0) { | ||
39 | skb_frag_t *fp = &sp->frags[i]; | ||
40 | |||
41 | dma_unmap_page(dev, sp->dma_maps[i + 1], | ||
42 | fp->size, dir); | ||
43 | } | ||
44 | dma_unmap_single(dev, sp->dma_maps[0], | ||
45 | skb_headlen(skb), dir); | ||
46 | out_err: | ||
47 | return -ENOMEM; | ||
48 | } | ||
49 | EXPORT_SYMBOL(skb_dma_map); | ||
50 | |||
51 | void skb_dma_unmap(struct device *dev, struct sk_buff *skb, | ||
52 | enum dma_data_direction dir) | ||
53 | { | ||
54 | struct skb_shared_info *sp = skb_shinfo(skb); | ||
55 | int i; | ||
56 | |||
57 | dma_unmap_single(dev, sp->dma_maps[0], | ||
58 | skb_headlen(skb), dir); | ||
59 | for (i = 0; i < sp->nr_frags; i++) { | ||
60 | skb_frag_t *fp = &sp->frags[i]; | ||
61 | |||
62 | dma_unmap_page(dev, sp->dma_maps[i + 1], | ||
63 | fp->size, dir); | ||
64 | } | ||
65 | } | ||
66 | EXPORT_SYMBOL(skb_dma_unmap); | ||
diff --git a/net/core/sock.c b/net/core/sock.c index 91f8bbc93526..2d358dd8a03e 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -154,7 +154,8 @@ static const char *af_family_key_strings[AF_MAX+1] = { | |||
154 | "sk_lock-AF_PPPOX" , "sk_lock-AF_WANPIPE" , "sk_lock-AF_LLC" , | 154 | "sk_lock-AF_PPPOX" , "sk_lock-AF_WANPIPE" , "sk_lock-AF_LLC" , |
155 | "sk_lock-27" , "sk_lock-28" , "sk_lock-AF_CAN" , | 155 | "sk_lock-27" , "sk_lock-28" , "sk_lock-AF_CAN" , |
156 | "sk_lock-AF_TIPC" , "sk_lock-AF_BLUETOOTH", "sk_lock-IUCV" , | 156 | "sk_lock-AF_TIPC" , "sk_lock-AF_BLUETOOTH", "sk_lock-IUCV" , |
157 | "sk_lock-AF_RXRPC" , "sk_lock-AF_MAX" | 157 | "sk_lock-AF_RXRPC" , "sk_lock-AF_ISDN" , "sk_lock-AF_PHONET" , |
158 | "sk_lock-AF_MAX" | ||
158 | }; | 159 | }; |
159 | static const char *af_family_slock_key_strings[AF_MAX+1] = { | 160 | static const char *af_family_slock_key_strings[AF_MAX+1] = { |
160 | "slock-AF_UNSPEC", "slock-AF_UNIX" , "slock-AF_INET" , | 161 | "slock-AF_UNSPEC", "slock-AF_UNIX" , "slock-AF_INET" , |
@@ -168,7 +169,8 @@ static const char *af_family_slock_key_strings[AF_MAX+1] = { | |||
168 | "slock-AF_PPPOX" , "slock-AF_WANPIPE" , "slock-AF_LLC" , | 169 | "slock-AF_PPPOX" , "slock-AF_WANPIPE" , "slock-AF_LLC" , |
169 | "slock-27" , "slock-28" , "slock-AF_CAN" , | 170 | "slock-27" , "slock-28" , "slock-AF_CAN" , |
170 | "slock-AF_TIPC" , "slock-AF_BLUETOOTH", "slock-AF_IUCV" , | 171 | "slock-AF_TIPC" , "slock-AF_BLUETOOTH", "slock-AF_IUCV" , |
171 | "slock-AF_RXRPC" , "slock-AF_MAX" | 172 | "slock-AF_RXRPC" , "slock-AF_ISDN" , "slock-AF_PHONET" , |
173 | "slock-AF_MAX" | ||
172 | }; | 174 | }; |
173 | static const char *af_family_clock_key_strings[AF_MAX+1] = { | 175 | static const char *af_family_clock_key_strings[AF_MAX+1] = { |
174 | "clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" , | 176 | "clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" , |
@@ -182,7 +184,8 @@ static const char *af_family_clock_key_strings[AF_MAX+1] = { | |||
182 | "clock-AF_PPPOX" , "clock-AF_WANPIPE" , "clock-AF_LLC" , | 184 | "clock-AF_PPPOX" , "clock-AF_WANPIPE" , "clock-AF_LLC" , |
183 | "clock-27" , "clock-28" , "clock-AF_CAN" , | 185 | "clock-27" , "clock-28" , "clock-AF_CAN" , |
184 | "clock-AF_TIPC" , "clock-AF_BLUETOOTH", "clock-AF_IUCV" , | 186 | "clock-AF_TIPC" , "clock-AF_BLUETOOTH", "clock-AF_IUCV" , |
185 | "clock-AF_RXRPC" , "clock-AF_MAX" | 187 | "clock-AF_RXRPC" , "clock-AF_ISDN" , "clock-AF_PHONET" , |
188 | "clock-AF_MAX" | ||
186 | }; | 189 | }; |
187 | #endif | 190 | #endif |
188 | 191 | ||