Merge tag 'net-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-block.git] / drivers / net / ethernet / realtek / r8169_main.c
index e5ea827a21e725651f3d7bac628ee76fe250f500..7b9e04884575e06dffa94ea8bae6e4615801e0e5 100644 (file)
@@ -4337,11 +4337,11 @@ static void rtl8169_doorbell(struct rtl8169_private *tp)
 static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
                                      struct net_device *dev)
 {
-       unsigned int frags = skb_shinfo(skb)->nr_frags;
        struct rtl8169_private *tp = netdev_priv(dev);
        unsigned int entry = tp->cur_tx % NUM_TX_DESC;
        struct TxDesc *txd_first, *txd_last;
        bool stop_queue, door_bell;
+       unsigned int frags;
        u32 opts[2];
 
        if (unlikely(!rtl_tx_slots_avail(tp))) {
@@ -4364,6 +4364,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
 
        txd_first = tp->TxDescArray + entry;
 
+       frags = skb_shinfo(skb)->nr_frags;
        if (frags) {
                if (rtl8169_xmit_frags(tp, skb, opts, entry))
                        goto err_dma_1;
@@ -4657,10 +4658,8 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
                rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING);
        }
 
-       if (napi_schedule_prep(&tp->napi)) {
-               rtl_irq_disable(tp);
-               __napi_schedule(&tp->napi);
-       }
+       rtl_irq_disable(tp);
+       napi_schedule(&tp->napi);
 out:
        rtl_ack_events(tp, status);