Merge v5.14-rc3 into usb-next
[linux-2.6-microblaze.git] / net / socket.c
index 4f2c6d2..0b2dad3 100644 (file)
 #include <linux/sockios.h>
 #include <net/busy_poll.h>
 #include <linux/errqueue.h>
+#include <linux/ptp_clock_kernel.h>
 
 #ifdef CONFIG_NET_RX_BUSY_POLL
 unsigned int sysctl_net_busy_read __read_mostly;
@@ -165,6 +166,54 @@ static const struct file_operations socket_file_ops = {
        .show_fdinfo =  sock_show_fdinfo,
 };
 
+static const char * const pf_family_names[] = {
+       [PF_UNSPEC]     = "PF_UNSPEC",
+       [PF_UNIX]       = "PF_UNIX/PF_LOCAL",
+       [PF_INET]       = "PF_INET",
+       [PF_AX25]       = "PF_AX25",
+       [PF_IPX]        = "PF_IPX",
+       [PF_APPLETALK]  = "PF_APPLETALK",
+       [PF_NETROM]     = "PF_NETROM",
+       [PF_BRIDGE]     = "PF_BRIDGE",
+       [PF_ATMPVC]     = "PF_ATMPVC",
+       [PF_X25]        = "PF_X25",
+       [PF_INET6]      = "PF_INET6",
+       [PF_ROSE]       = "PF_ROSE",
+       [PF_DECnet]     = "PF_DECnet",
+       [PF_NETBEUI]    = "PF_NETBEUI",
+       [PF_SECURITY]   = "PF_SECURITY",
+       [PF_KEY]        = "PF_KEY",
+       [PF_NETLINK]    = "PF_NETLINK/PF_ROUTE",
+       [PF_PACKET]     = "PF_PACKET",
+       [PF_ASH]        = "PF_ASH",
+       [PF_ECONET]     = "PF_ECONET",
+       [PF_ATMSVC]     = "PF_ATMSVC",
+       [PF_RDS]        = "PF_RDS",
+       [PF_SNA]        = "PF_SNA",
+       [PF_IRDA]       = "PF_IRDA",
+       [PF_PPPOX]      = "PF_PPPOX",
+       [PF_WANPIPE]    = "PF_WANPIPE",
+       [PF_LLC]        = "PF_LLC",
+       [PF_IB]         = "PF_IB",
+       [PF_MPLS]       = "PF_MPLS",
+       [PF_CAN]        = "PF_CAN",
+       [PF_TIPC]       = "PF_TIPC",
+       [PF_BLUETOOTH]  = "PF_BLUETOOTH",
+       [PF_IUCV]       = "PF_IUCV",
+       [PF_RXRPC]      = "PF_RXRPC",
+       [PF_ISDN]       = "PF_ISDN",
+       [PF_PHONET]     = "PF_PHONET",
+       [PF_IEEE802154] = "PF_IEEE802154",
+       [PF_CAIF]       = "PF_CAIF",
+       [PF_ALG]        = "PF_ALG",
+       [PF_NFC]        = "PF_NFC",
+       [PF_VSOCK]      = "PF_VSOCK",
+       [PF_KCM]        = "PF_KCM",
+       [PF_QIPCRTR]    = "PF_QIPCRTR",
+       [PF_SMC]        = "PF_SMC",
+       [PF_XDP]        = "PF_XDP",
+};
+
 /*
  *     The protocol list. Each protocol is registered in here.
  */
@@ -825,12 +874,18 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
                empty = 0;
        if (shhwtstamps &&
            (sk->sk_tsflags & SOF_TIMESTAMPING_RAW_HARDWARE) &&
-           !skb_is_swtx_tstamp(skb, false_tstamp) &&
-           ktime_to_timespec64_cond(shhwtstamps->hwtstamp, tss.ts + 2)) {
-               empty = 0;
-               if ((sk->sk_tsflags & SOF_TIMESTAMPING_OPT_PKTINFO) &&
-                   !skb_is_err_queue(skb))
-                       put_ts_pktinfo(msg, skb);
+           !skb_is_swtx_tstamp(skb, false_tstamp)) {
+               if (sk->sk_tsflags & SOF_TIMESTAMPING_BIND_PHC)
+                       ptp_convert_timestamp(shhwtstamps, sk->sk_bind_phc);
+
+               if (ktime_to_timespec64_cond(shhwtstamps->hwtstamp,
+                                            tss.ts + 2)) {
+                       empty = 0;
+
+                       if ((sk->sk_tsflags & SOF_TIMESTAMPING_OPT_PKTINFO) &&
+                           !skb_is_err_queue(skb))
+                               put_ts_pktinfo(msg, skb);
+               }
        }
        if (!empty) {
                if (sock_flag(sk, SOCK_TSTAMP_NEW))
@@ -2975,7 +3030,7 @@ int sock_register(const struct net_proto_family *ops)
        }
        spin_unlock(&net_family_lock);
 
-       pr_info("NET: Registered protocol family %d\n", ops->family);
+       pr_info("NET: Registered %s protocol family\n", pf_family_names[ops->family]);
        return err;
 }
 EXPORT_SYMBOL(sock_register);
@@ -3003,7 +3058,7 @@ void sock_unregister(int family)
 
        synchronize_rcu();
 
-       pr_info("NET: Unregistered protocol family %d\n", family);
+       pr_info("NET: Unregistered %s protocol family\n", pf_family_names[family]);
 }
 EXPORT_SYMBOL(sock_unregister);