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 = &gtp->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 = &gtp->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 = &gtp->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(&gtp->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, &gtp->tid_hash[i], hlist_tid)
gtp               714 drivers/net/gtp.c 	list_del_rcu(&gtp->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(&gtp->addr_hash[i]);
gtp               783 drivers/net/gtp.c 		INIT_HLIST_HEAD(&gtp->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, &gtp->addr_hash[hash_ms]);
gtp              1009 drivers/net/gtp.c 	hlist_add_head_rcu(&pctx->hlist_tid, &gtp->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, &gtp->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);