Changeset 64f6163 in rtems-libbsd


Ignore:
Timestamp:
Sep 7, 2015, 6:34:34 AM (4 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11
Children:
14ec0920
Parents:
da08198
git-author:
Sebastian Huber <sebastian.huber@…> (09/07/15 06:34:34)
git-committer:
Sebastian Huber <sebastian.huber@…> (09/11/15 09:52:52)
Message:

if_dwc: Fix a possible interrupt starvation

Location:
freebsd/sys/dev/dwc
Files:
2 edited

Legend:

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

    rda08198 r64f6163  
    10151015
    10161016        reg = READ4(sc, DMA_STATUS);
    1017         if (reg & DMA_STATUS_NIS) {
    1018                 if (reg & DMA_STATUS_RI)
    1019                         dwc_rxfinish_locked(sc);
    1020 
    1021                 if (reg & DMA_STATUS_TI)
    1022                         dwc_txfinish_locked(sc);
    1023         }
    1024 
    1025         if (reg & DMA_STATUS_AIS) {
    1026                 if (reg & DMA_STATUS_FBI) {
    1027                         /* Fatal bus error */
    1028                         device_printf(sc->dev,
    1029                             "Ethernet DMA error, restarting controller.\n");
    1030                         dwc_stop_locked(sc);
    1031                         dwc_init_locked(sc);
    1032                 }
    1033         }
    1034 
    10351017        WRITE4(sc, DMA_STATUS, reg & DMA_STATUS_INTR_MASK);
     1018
     1019        if (reg & (DMA_STATUS_RI | DMA_STATUS_RU))
     1020                dwc_rxfinish_locked(sc);
     1021
     1022        if (reg & DMA_STATUS_TI)
     1023                dwc_txfinish_locked(sc);
     1024
     1025        if (reg & DMA_STATUS_FBI) {
     1026                /* Fatal bus error */
     1027                device_printf(sc->dev,
     1028                    "Ethernet DMA error, restarting controller.\n");
     1029                dwc_stop_locked(sc);
     1030                dwc_init_locked(sc);
     1031        }
     1032
    10361033        DWC_UNLOCK(sc);
    10371034}
  • freebsd/sys/dev/dwc/if_dwc.h

    rda08198 r64f6163  
    221221#define  DMA_STATUS_AIS         (1 << 15)
    222222#define  DMA_STATUS_FBI         (1 << 13)
     223#define  DMA_STATUS_RU          (1 << 7)
    223224#define  DMA_STATUS_RI          (1 << 6)
    224225#define  DMA_STATUS_TI          (1 << 0)
Note: See TracChangeset for help on using the changeset viewer.