Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Tue, 24 May 2022 04:19:17 +0000 (21:19 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 24 May 2022 04:19:17 +0000 (21:19 -0700)
drivers/net/ethernet/cadence/macb_main.c
  5cebb40bc955 ("net: macb: Fix PTP one step sync support")
  138badbc21a0 ("net: macb: use NAPI for TX completion path")
https://lore.kernel.org/all/20220523111021.31489367@canb.auug.org.au/

net/smc/af_smc.c
  75c1edf23b95 ("net/smc: postpone sk_refcnt increment in connect()")
  3aba103006bc ("net/smc: align the connect behaviour with TCP")
https://lore.kernel.org/all/20220524114408.4bf1af38@canb.auug.org.au/

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
12 files changed:
1  2 
Documentation/admin-guide/sysctl/net.rst
drivers/net/bonding/bond_main.c
drivers/net/ethernet/cadence/macb_main.c
drivers/net/ethernet/freescale/fec_main.c
drivers/net/hyperv/netvsc_drv.c
include/trace/events/rxrpc.h
net/bluetooth/hci_conn.c
net/bluetooth/hci_event.c
net/rxrpc/ar-internal.h
net/rxrpc/call_event.c
net/rxrpc/input.c
net/smc/af_smc.c

Simple merge
@@@ -1119,20 -1123,57 +1120,50 @@@ static void macb_tx_error_task(struct w
        macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
  
        spin_unlock_irqrestore(&bp->lock, flags);
 +      napi_enable(&queue->napi_tx);
  }
  
 -static void macb_tx_interrupt(struct macb_queue *queue)
+ static bool ptp_one_step_sync(struct sk_buff *skb)
+ {
+       struct ptp_header *hdr;
+       unsigned int ptp_class;
+       u8 msgtype;
+       /* No need to parse packet if PTP TS is not involved */
+       if (likely(!(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)))
+               goto not_oss;
+       /* Identify and return whether PTP one step sync is being processed */
+       ptp_class = ptp_classify_raw(skb);
+       if (ptp_class == PTP_CLASS_NONE)
+               goto not_oss;
+       hdr = ptp_parse_header(skb, ptp_class);
+       if (!hdr)
+               goto not_oss;
+       if (hdr->flag_field[0] & PTP_FLAG_TWOSTEP)
+               goto not_oss;
+       msgtype = ptp_get_msgtype(hdr, ptp_class);
+       if (msgtype == PTP_MSGTYPE_SYNC)
+               return true;
+ not_oss:
+       return false;
+ }
 +static int macb_tx_complete(struct macb_queue *queue, int budget)
  {
 -      unsigned int tail;
 -      unsigned int head;
 -      u32 status;
        struct macb *bp = queue->bp;
        u16 queue_index = queue - bp->queues;
 +      unsigned int tail;
 +      unsigned int head;
 +      int packets = 0;
  
 -      status = macb_readl(bp, TSR);
 -      macb_writel(bp, TSR, status);
 -
 -      if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
 -              queue_writel(queue, ISR, MACB_BIT(TCOMP));
 -
 -      netdev_vdbg(bp->dev, "macb_tx_interrupt status = 0x%03lx\n",
 -                  (unsigned long)status);
 -
 +      spin_lock(&queue->tx_ptr_lock);
        head = queue->tx_head;
 -      for (tail = queue->tx_tail; tail != head; tail++) {
 +      for (tail = queue->tx_tail; tail != head && packets < budget; tail++) {
                struct macb_tx_skb      *tx_skb;
                struct sk_buff          *skb;
                struct macb_dma_desc    *desc;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1584,11 -1564,9 +1584,11 @@@ static int smc_connect(struct socket *s
        if (rc && rc != -EINPROGRESS)
                goto out;
  
-       sock_hold(&smc->sk); /* sock put in passive closing */
 -      if (smc->use_fallback)
 +      if (smc->use_fallback) {
 +              sock->state = rc ? SS_CONNECTING : SS_CONNECTED;
                goto out;
 +      }
+       sock_hold(&smc->sk); /* sock put in passive closing */
        if (flags & O_NONBLOCK) {
                if (queue_work(smc_hs_wq, &smc->connect_work))
                        smc->connect_nonblock = 1;