temp_bd.flags = flags;
        *txbd = temp_bd;
 
+       tx_ring->tx_swbd[i].is_eof = true;
        tx_ring->tx_swbd[i].skb = skb;
 
        enetc_bdr_idx_inc(tx_ring, &i);
        do_tstamp = false;
 
        while (bds_to_clean && tx_frm_cnt < ENETC_DEFAULT_TX_WORK) {
-               bool is_eof = !!tx_swbd->skb;
-
                if (unlikely(tx_swbd->check_wb)) {
                        struct enetc_ndev_priv *priv = netdev_priv(ndev);
                        union enetc_tx_bd *txbd;
                if (likely(tx_swbd->dma))
                        enetc_unmap_tx_buff(tx_ring, tx_swbd);
 
-               if (is_eof) {
+               if (tx_swbd->skb) {
                        if (unlikely(do_tstamp)) {
                                enetc_tstamp_tx(tx_swbd->skb, tstamp);
                                do_tstamp = false;
                }
 
                /* BD iteration loop end */
-               if (is_eof) {
+               if (tx_swbd->is_eof) {
                        tx_frm_cnt++;
                        /* re-arm interrupt source */
                        enetc_wr_reg_hot(tx_ring->idr, BIT(tx_ring->index) |