gtp 105 drivers/net/gtp.c static struct pdp_ctx *gtp0_pdp_find(struct gtp_dev *gtp, u64 tid) gtp 110 drivers/net/gtp.c head = >p->tid_hash[gtp0_hashfn(tid) % gtp->hash_size]; gtp 121 drivers/net/gtp.c static struct pdp_ctx *gtp1_pdp_find(struct gtp_dev *gtp, u32 tid) gtp 126 drivers/net/gtp.c head = >p->tid_hash[gtp1u_hashfn(tid) % gtp->hash_size]; gtp 137 drivers/net/gtp.c static struct pdp_ctx *ipv4_pdp_find(struct gtp_dev *gtp, __be32 ms_addr) gtp 142 drivers/net/gtp.c head = >p->addr_hash[ipv4_hashfn(ms_addr) % gtp->hash_size]; gtp 218 drivers/net/gtp.c static int gtp0_udp_encap_recv(struct gtp_dev *gtp, struct sk_buff *skb) gtp 236 drivers/net/gtp.c pctx = gtp0_pdp_find(gtp, be64_to_cpu(gtp0->tid)); gtp 238 drivers/net/gtp.c netdev_dbg(gtp->dev, "No PDP ctx to decap skb=%p\n", skb); gtp 242 drivers/net/gtp.c return gtp_rx(pctx, skb, hdrlen, gtp->role); gtp 245 drivers/net/gtp.c static int gtp1u_udp_encap_recv(struct gtp_dev *gtp, struct sk_buff *skb) gtp 278 drivers/net/gtp.c pctx = gtp1_pdp_find(gtp, ntohl(gtp1->tid)); gtp 280 drivers/net/gtp.c netdev_dbg(gtp->dev, "No PDP ctx to decap skb=%p\n", skb); gtp 284 drivers/net/gtp.c return gtp_rx(pctx, skb, hdrlen, gtp->role); gtp 289 drivers/net/gtp.c struct gtp_dev *gtp; gtp 292 drivers/net/gtp.c gtp = sk->sk_user_data; gtp 293 drivers/net/gtp.c if (gtp) { gtp 294 drivers/net/gtp.c if (gtp->sk0 == sk) gtp 295 drivers/net/gtp.c gtp->sk0 = NULL; gtp 297 drivers/net/gtp.c gtp->sk1u = NULL; gtp 320 drivers/net/gtp.c static void gtp_encap_disable(struct gtp_dev *gtp) gtp 322 drivers/net/gtp.c gtp_encap_disable_sock(gtp->sk0); gtp 323 drivers/net/gtp.c gtp_encap_disable_sock(gtp->sk1u); gtp 331 drivers/net/gtp.c struct gtp_dev *gtp; gtp 334 drivers/net/gtp.c gtp = rcu_dereference_sk_user_data(sk); gtp 335 drivers/net/gtp.c if (!gtp) gtp 338 drivers/net/gtp.c netdev_dbg(gtp->dev, "encap_recv sk=%p\n", sk); gtp 342 drivers/net/gtp.c netdev_dbg(gtp->dev, "received GTP0 packet\n"); gtp 343 drivers/net/gtp.c ret = gtp0_udp_encap_recv(gtp, skb); gtp 346 drivers/net/gtp.c netdev_dbg(gtp->dev, "received GTP1U packet\n"); gtp 347 drivers/net/gtp.c ret = gtp1u_udp_encap_recv(gtp, skb); gtp 355 drivers/net/gtp.c netdev_dbg(gtp->dev, "pass up to the process\n"); gtp 360 drivers/net/gtp.c netdev_dbg(gtp->dev, "GTP packet has been dropped\n"); gtp 371 drivers/net/gtp.c struct gtp_dev *gtp = netdev_priv(dev); gtp 373 drivers/net/gtp.c gtp->dev = dev; gtp 384 drivers/net/gtp.c struct gtp_dev *gtp = netdev_priv(dev); gtp 386 drivers/net/gtp.c gtp_encap_disable(gtp); gtp 485 drivers/net/gtp.c struct gtp_dev *gtp = netdev_priv(dev); gtp 497 drivers/net/gtp.c if (gtp->role == GTP_ROLE_SGSN) gtp 498 drivers/net/gtp.c pctx = ipv4_pdp_find(gtp, iph->saddr); gtp 500 drivers/net/gtp.c pctx = ipv4_pdp_find(gtp, iph->daddr); gtp 642 drivers/net/gtp.c static int gtp_hashtable_new(struct gtp_dev *gtp, int hsize); gtp 643 drivers/net/gtp.c static int gtp_encap_enable(struct gtp_dev *gtp, struct nlattr *data[]); gtp 647 drivers/net/gtp.c struct gtp_dev *gtp = netdev_priv(dev); gtp 649 drivers/net/gtp.c kfree(gtp->addr_hash); gtp 650 drivers/net/gtp.c kfree(gtp->tid_hash); gtp 657 drivers/net/gtp.c struct gtp_dev *gtp; gtp 664 drivers/net/gtp.c gtp = netdev_priv(dev); gtp 666 drivers/net/gtp.c err = gtp_encap_enable(gtp, data); gtp 678 drivers/net/gtp.c err = gtp_hashtable_new(gtp, hashsize); gtp 689 drivers/net/gtp.c list_add_rcu(>p->list, &gn->gtp_dev_list); gtp 697 drivers/net/gtp.c kfree(gtp->addr_hash); gtp 698 drivers/net/gtp.c kfree(gtp->tid_hash); gtp 700 drivers/net/gtp.c gtp_encap_disable(gtp); gtp 706 drivers/net/gtp.c struct gtp_dev *gtp = netdev_priv(dev); gtp 710 drivers/net/gtp.c for (i = 0; i < gtp->hash_size; i++) gtp 711 drivers/net/gtp.c hlist_for_each_entry_rcu(pctx, >p->tid_hash[i], hlist_tid) gtp 714 drivers/net/gtp.c list_del_rcu(>p->list); gtp 741 drivers/net/gtp.c struct gtp_dev *gtp = netdev_priv(dev); gtp 743 drivers/net/gtp.c if (nla_put_u32(skb, IFLA_GTP_PDP_HASHSIZE, gtp->hash_size)) gtp 765 drivers/net/gtp.c static int gtp_hashtable_new(struct gtp_dev *gtp, int hsize) gtp 769 drivers/net/gtp.c gtp->addr_hash = kmalloc_array(hsize, sizeof(struct hlist_head), gtp 771 drivers/net/gtp.c if (gtp->addr_hash == NULL) gtp 774 drivers/net/gtp.c gtp->tid_hash = kmalloc_array(hsize, sizeof(struct hlist_head), gtp 776 drivers/net/gtp.c if (gtp->tid_hash == NULL) gtp 779 drivers/net/gtp.c gtp->hash_size = hsize; gtp 782 drivers/net/gtp.c INIT_HLIST_HEAD(>p->addr_hash[i]); gtp 783 drivers/net/gtp.c INIT_HLIST_HEAD(>p->tid_hash[i]); gtp 787 drivers/net/gtp.c kfree(gtp->addr_hash); gtp 792 drivers/net/gtp.c struct gtp_dev *gtp) gtp 824 drivers/net/gtp.c tuncfg.sk_user_data = gtp; gtp 838 drivers/net/gtp.c static int gtp_encap_enable(struct gtp_dev *gtp, struct nlattr *data[]) gtp 847 drivers/net/gtp.c sk0 = gtp_encap_enable_socket(fd0, UDP_ENCAP_GTP0, gtp); gtp 855 drivers/net/gtp.c sk1u = gtp_encap_enable_socket(fd1, UDP_ENCAP_GTP1U, gtp); gtp 874 drivers/net/gtp.c gtp->sk0 = sk0; gtp 875 drivers/net/gtp.c gtp->sk1u = sk1u; gtp 876 drivers/net/gtp.c gtp->role = role; gtp 883 drivers/net/gtp.c struct gtp_dev *gtp = NULL; gtp 901 drivers/net/gtp.c gtp = netdev_priv(dev); gtp 904 drivers/net/gtp.c return gtp; gtp 934 drivers/net/gtp.c static int gtp_pdp_add(struct gtp_dev *gtp, struct sock *sk, gtp 938 drivers/net/gtp.c struct net_device *dev = gtp->dev; gtp 945 drivers/net/gtp.c hash_ms = ipv4_hashfn(ms_addr) % gtp->hash_size; gtp 948 drivers/net/gtp.c pctx = ipv4_pdp_find(gtp, ms_addr); gtp 952 drivers/net/gtp.c pctx_tid = gtp0_pdp_find(gtp, gtp 955 drivers/net/gtp.c pctx_tid = gtp1_pdp_find(gtp, gtp 990 drivers/net/gtp.c pctx->dev = gtp->dev; gtp 1001 drivers/net/gtp.c hash_tid = gtp0_hashfn(pctx->u.v0.tid) % gtp->hash_size; gtp 1004 drivers/net/gtp.c hash_tid = gtp1u_hashfn(pctx->u.v1.i_tei) % gtp->hash_size; gtp 1008 drivers/net/gtp.c hlist_add_head_rcu(&pctx->hlist_addr, >p->addr_hash[hash_ms]); gtp 1009 drivers/net/gtp.c hlist_add_head_rcu(&pctx->hlist_tid, >p->tid_hash[hash_tid]); gtp 1045 drivers/net/gtp.c struct gtp_dev *gtp; gtp 1076 drivers/net/gtp.c gtp = gtp_find_dev(sock_net(skb->sk), info->attrs); gtp 1077 drivers/net/gtp.c if (!gtp) { gtp 1083 drivers/net/gtp.c sk = gtp->sk0; gtp 1085 drivers/net/gtp.c sk = gtp->sk1u; gtp 1094 drivers/net/gtp.c err = gtp_pdp_add(gtp, sk, info); gtp 1105 drivers/net/gtp.c struct gtp_dev *gtp; gtp 1107 drivers/net/gtp.c gtp = gtp_find_dev(net, nla); gtp 1108 drivers/net/gtp.c if (!gtp) gtp 1114 drivers/net/gtp.c return ipv4_pdp_find(gtp, ip); gtp 1119 drivers/net/gtp.c return gtp0_pdp_find(gtp, nla_get_u64(nla[GTPA_TID])); gtp 1121 drivers/net/gtp.c return gtp1_pdp_find(gtp, nla_get_u32(nla[GTPA_I_TEI])); gtp 1251 drivers/net/gtp.c struct gtp_dev *last_gtp = (struct gtp_dev *)cb->args[2], *gtp; gtp 1263 drivers/net/gtp.c list_for_each_entry_rcu(gtp, &gn->gtp_dev_list, list) { gtp 1264 drivers/net/gtp.c if (last_gtp && last_gtp != gtp) gtp 1269 drivers/net/gtp.c for (i = bucket; i < gtp->hash_size; i++) { gtp 1271 drivers/net/gtp.c hlist_for_each_entry_rcu(pctx, >p->tid_hash[i], gtp 1281 drivers/net/gtp.c cb->args[2] = (unsigned long)gtp; gtp 1353 drivers/net/gtp.c struct gtp_dev *gtp; gtp 1357 drivers/net/gtp.c list_for_each_entry(gtp, &gn->gtp_dev_list, list) gtp 1358 drivers/net/gtp.c gtp_dellink(gtp->dev, &list);