Changeset 822aa5de in rtems-libbsd


Ignore:
Timestamp:
Mar 30, 2015, 9:51:36 AM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, afaeccc05a556f6aa25ba044a7e49d6aa634a59e, freebsd-9.3, master
Children:
a681853
Parents:
dd1feda
git-author:
Sebastian Huber <sebastian.huber@…> (03/30/15 09:51:36)
git-committer:
Sebastian Huber <sebastian.huber@…> (04/01/15 07:15:30)
Message:

if_dwc: Simplify tx desc setup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/dev/dwc/if_dwc.c

    rdd1feda r822aa5de  
    243243    uint32_t len)
    244244{
    245         uint32_t flags;
    246         uint32_t nidx;
    247 
    248         nidx = next_txidx(sc, idx);
    249 
    250         /* Addr/len 0 means we're clearing the descriptor after xmit done. */
    251         if (paddr == 0 || len == 0) {
    252                 flags = 0;
    253                 --sc->txcount;
    254         } else {
    255                 flags = DDESC_TDES0_TXCHAIN | DDESC_TDES0_TXFIRST
    256                     | DDESC_TDES0_TXLAST | DDESC_TDES0_TXINT;
    257                 ++sc->txcount;
    258         }
     245        ++sc->txcount;
    259246
    260247        sc->txdesc_ring[idx].addr = (uint32_t)(paddr);
    261         sc->txdesc_ring[idx].tdes0 = flags;
    262248        sc->txdesc_ring[idx].tdes1 = len;
    263 
    264         if (paddr && len) {
    265                 wmb();
    266                 sc->txdesc_ring[idx].tdes0 |= DDESC_TDES0_OWN;
    267                 wmb();
    268         }
    269 
    270         return (nidx);
     249        wmb();
     250
     251        sc->txdesc_ring[idx].tdes0 = DDESC_TDES0_TXCHAIN | DDESC_TDES0_TXFIRST
     252            | DDESC_TDES0_TXLAST | DDESC_TDES0_TXINT | DDESC_TDES0_OWN;
     253        wmb();
     254
     255        return (next_txidx(sc, idx));
    271256}
    272257
     
    818803                m_freem(bmap->mbuf);
    819804                bmap->mbuf = NULL;
    820                 dwc_setup_txdesc(sc, sc->tx_idx_tail, 0, 0);
     805                --sc->txcount;
    821806                sc->tx_idx_tail = next_txidx(sc, sc->tx_idx_tail);
    822807        }
     
    982967
    983968        for (idx = 0; idx < TX_DESC_COUNT; idx++) {
     969                sc->txdesc_ring[idx].addr = 0;
    984970                sc->txdesc_ring[idx].tdes0 = DDESC_TDES0_TXCHAIN;
    985971                sc->txdesc_ring[idx].tdes1 = 0;
     
    10231009                }
    10241010#endif /* __rtems__ */
    1025                 dwc_setup_txdesc(sc, idx, 0, 0);
    10261011        }
    10271012
     
    11871172        sc->mii_clk = MII_CLK_VAL;
    11881173        sc->rx_idx = 0;
    1189 
    1190         sc->txcount = TX_DESC_COUNT;
     1174        sc->txcount = 0;
    11911175
    11921176        if (bus_alloc_resources(dev, dwc_spec, sc->res)) {
Note: See TracChangeset for help on using the changeset viewer.