--- a/include/linux/if_packet.h
+++ b/include/linux/if_packet.h
-@@ -31,6 +31,8 @@ struct sockaddr_ll
+@@ -31,6 +31,8 @@
/* These ones are invisible by user level */
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
#define PACKET_FASTROUTE 6 /* Fastrouted frame */
/* Packet socket options */
-@@ -48,6 +50,7 @@ struct sockaddr_ll
+@@ -48,6 +50,7 @@
#define PACKET_RESERVE 12
#define PACKET_TX_RING 13
#define PACKET_LOSS 14
{
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -204,6 +204,7 @@ struct packet_sock {
+@@ -204,6 +204,7 @@
unsigned int tp_reserve;
unsigned int tp_loss:1;
#endif
};
struct packet_skb_cb {
-@@ -342,6 +343,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -342,6 +343,7 @@
{
struct sock *sk;
struct sockaddr_pkt *spkt;
/*
* When we registered the protocol we saved the socket in the data
-@@ -349,6 +351,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -349,6 +351,7 @@
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -361,7 +364,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -361,7 +364,7 @@
* so that this procedure is noop.
*/
goto out;
if (dev_net(dev) != sock_net(sk))
-@@ -545,12 +548,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -545,12 +548,12 @@
int skb_len = skb->len;
unsigned int snaplen, res;
if (dev_net(dev) != sock_net(sk))
goto drop;
-@@ -667,12 +670,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -667,12 +670,12 @@
struct timeval tv;
struct timespec ts;
if (dev_net(dev) != sock_net(sk))
goto drop;
-@@ -1381,6 +1384,7 @@ static int packet_create(struct net *net
+@@ -1390,6 +1393,7 @@
spin_lock_init(&po->bind_lock);
mutex_init(&po->pg_vec_lock);
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -1728,6 +1732,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -1737,6 +1741,16 @@
ret = packet_mc_drop(sk, &mreq);
return ret;
}
#ifdef CONFIG_PACKET_MMAP
case PACKET_RX_RING:
-@@ -1873,6 +1887,13 @@ static int packet_getsockopt(struct sock
+@@ -1882,6 +1896,13 @@
data = &val;
break;