CC: [email protected] CC: [email protected] TO: Herbert Xu <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 251a1524293d0a90c4d5060f65f42a3016280049 commit: be769db2f95861cc8c7c8fedcc71a8c39b803b10 net: Get rid of consume_skb when tracing is off date: 12 months ago :::::: branch date: 4 hours ago :::::: commit date: 12 months ago config: ia64-randconfig-m031-20210804 (attached as .config) compiler: ia64-linux-gcc (GCC) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:2158 hfcmulti_tx() error: dereferencing freed memory '*sp' Old smatch warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:2162 hfcmulti_tx() error: dereferencing freed memory '*sp' drivers/isdn/hardware/mISDN/hfcmulti.c:4411 setup_pci() warn: argument 2 to %#lx specifier is cast from pointer drivers/isdn/hardware/mISDN/hfcmulti.c:4434 setup_pci() warn: argument 3 to %#lx specifier is cast from pointer drivers/isdn/hardware/mISDN/hfcmulti.c:4462 setup_pci() warn: argument 3 to %#lx specifier is cast from pointer drivers/isdn/hardware/mISDN/hfcmulti.c:4504 setup_pci() warn: 'hc->plx_membase' not released on lines: 4419. vim +2158 drivers/isdn/hardware/mISDN/hfcmulti.c af69fb3a8ffa37 Karsten Keil 2008-07-27 1925 af69fb3a8ffa37 Karsten Keil 2008-07-27 1926 af69fb3a8ffa37 Karsten Keil 2008-07-27 1927 /* af69fb3a8ffa37 Karsten Keil 2008-07-27 1928 * fill fifo as much as possible af69fb3a8ffa37 Karsten Keil 2008-07-27 1929 */ af69fb3a8ffa37 Karsten Keil 2008-07-27 1930 af69fb3a8ffa37 Karsten Keil 2008-07-27 1931 static void af69fb3a8ffa37 Karsten Keil 2008-07-27 1932 hfcmulti_tx(struct hfc_multi *hc, int ch) af69fb3a8ffa37 Karsten Keil 2008-07-27 1933 { af69fb3a8ffa37 Karsten Keil 2008-07-27 1934 int i, ii, temp, len = 0; af69fb3a8ffa37 Karsten Keil 2008-07-27 1935 int Zspace, z1, z2; /* must be int for calculation */ af69fb3a8ffa37 Karsten Keil 2008-07-27 1936 int Fspace, f1, f2; af69fb3a8ffa37 Karsten Keil 2008-07-27 1937 u_char *d; af69fb3a8ffa37 Karsten Keil 2008-07-27 1938 int *txpending, slot_tx; af69fb3a8ffa37 Karsten Keil 2008-07-27 1939 struct bchannel *bch; af69fb3a8ffa37 Karsten Keil 2008-07-27 1940 struct dchannel *dch; af69fb3a8ffa37 Karsten Keil 2008-07-27 1941 struct sk_buff **sp = NULL; af69fb3a8ffa37 Karsten Keil 2008-07-27 1942 int *idxp; af69fb3a8ffa37 Karsten Keil 2008-07-27 1943 af69fb3a8ffa37 Karsten Keil 2008-07-27 1944 bch = hc->chan[ch].bch; af69fb3a8ffa37 Karsten Keil 2008-07-27 1945 dch = hc->chan[ch].dch; af69fb3a8ffa37 Karsten Keil 2008-07-27 1946 if ((!dch) && (!bch)) af69fb3a8ffa37 Karsten Keil 2008-07-27 1947 return; af69fb3a8ffa37 Karsten Keil 2008-07-27 1948 af69fb3a8ffa37 Karsten Keil 2008-07-27 1949 txpending = &hc->chan[ch].txpending; af69fb3a8ffa37 Karsten Keil 2008-07-27 1950 slot_tx = hc->chan[ch].slot_tx; af69fb3a8ffa37 Karsten Keil 2008-07-27 1951 if (dch) { af69fb3a8ffa37 Karsten Keil 2008-07-27 1952 if (!test_bit(FLG_ACTIVE, &dch->Flags)) af69fb3a8ffa37 Karsten Keil 2008-07-27 1953 return; af69fb3a8ffa37 Karsten Keil 2008-07-27 1954 sp = &dch->tx_skb; af69fb3a8ffa37 Karsten Keil 2008-07-27 1955 idxp = &dch->tx_idx; af69fb3a8ffa37 Karsten Keil 2008-07-27 1956 } else { af69fb3a8ffa37 Karsten Keil 2008-07-27 1957 if (!test_bit(FLG_ACTIVE, &bch->Flags)) af69fb3a8ffa37 Karsten Keil 2008-07-27 1958 return; af69fb3a8ffa37 Karsten Keil 2008-07-27 1959 sp = &bch->tx_skb; af69fb3a8ffa37 Karsten Keil 2008-07-27 1960 idxp = &bch->tx_idx; af69fb3a8ffa37 Karsten Keil 2008-07-27 1961 } af69fb3a8ffa37 Karsten Keil 2008-07-27 1962 if (*sp) af69fb3a8ffa37 Karsten Keil 2008-07-27 1963 len = (*sp)->len; af69fb3a8ffa37 Karsten Keil 2008-07-27 1964 af69fb3a8ffa37 Karsten Keil 2008-07-27 1965 if ((!len) && *txpending != 1) af69fb3a8ffa37 Karsten Keil 2008-07-27 1966 return; /* no data */ af69fb3a8ffa37 Karsten Keil 2008-07-27 1967 af69fb3a8ffa37 Karsten Keil 2008-07-27 1968 if (test_bit(HFC_CHIP_B410P, &hc->chip) && af69fb3a8ffa37 Karsten Keil 2008-07-27 1969 (hc->chan[ch].protocol == ISDN_P_B_RAW) && af69fb3a8ffa37 Karsten Keil 2008-07-27 1970 (hc->chan[ch].slot_rx < 0) && af69fb3a8ffa37 Karsten Keil 2008-07-27 1971 (hc->chan[ch].slot_tx < 0)) af69fb3a8ffa37 Karsten Keil 2008-07-27 1972 HFC_outb_nodebug(hc, R_FIFO, 0x20 | (ch << 1)); af69fb3a8ffa37 Karsten Keil 2008-07-27 1973 else af69fb3a8ffa37 Karsten Keil 2008-07-27 1974 HFC_outb_nodebug(hc, R_FIFO, ch << 1); af69fb3a8ffa37 Karsten Keil 2008-07-27 1975 HFC_wait_nodebug(hc); af69fb3a8ffa37 Karsten Keil 2008-07-27 1976 af69fb3a8ffa37 Karsten Keil 2008-07-27 1977 if (*txpending == 2) { af69fb3a8ffa37 Karsten Keil 2008-07-27 1978 /* reset fifo */ af69fb3a8ffa37 Karsten Keil 2008-07-27 1979 HFC_outb_nodebug(hc, R_INC_RES_FIFO, V_RES_F); af69fb3a8ffa37 Karsten Keil 2008-07-27 1980 HFC_wait_nodebug(hc); af69fb3a8ffa37 Karsten Keil 2008-07-27 1981 HFC_outb(hc, A_SUBCH_CFG, 0); af69fb3a8ffa37 Karsten Keil 2008-07-27 1982 *txpending = 1; af69fb3a8ffa37 Karsten Keil 2008-07-27 1983 } af69fb3a8ffa37 Karsten Keil 2008-07-27 1984 next_frame: af69fb3a8ffa37 Karsten Keil 2008-07-27 1985 if (dch || test_bit(FLG_HDLC, &bch->Flags)) { af69fb3a8ffa37 Karsten Keil 2008-07-27 1986 f1 = HFC_inb_nodebug(hc, A_F1); af69fb3a8ffa37 Karsten Keil 2008-07-27 1987 f2 = HFC_inb_nodebug(hc, A_F2); af69fb3a8ffa37 Karsten Keil 2008-07-27 1988 while (f2 != (temp = HFC_inb_nodebug(hc, A_F2))) { af69fb3a8ffa37 Karsten Keil 2008-07-27 1989 if (debug & DEBUG_HFCMULTI_FIFO) af69fb3a8ffa37 Karsten Keil 2008-07-27 1990 printk(KERN_DEBUG af69fb3a8ffa37 Karsten Keil 2008-07-27 1991 "%s(card %d): reread f2 because %d!=%d\n", af69fb3a8ffa37 Karsten Keil 2008-07-27 1992 __func__, hc->id + 1, temp, f2); af69fb3a8ffa37 Karsten Keil 2008-07-27 1993 f2 = temp; /* repeat until F2 is equal */ af69fb3a8ffa37 Karsten Keil 2008-07-27 1994 } af69fb3a8ffa37 Karsten Keil 2008-07-27 1995 Fspace = f2 - f1 - 1; af69fb3a8ffa37 Karsten Keil 2008-07-27 1996 if (Fspace < 0) af69fb3a8ffa37 Karsten Keil 2008-07-27 1997 Fspace += hc->Flen; af69fb3a8ffa37 Karsten Keil 2008-07-27 1998 /* af69fb3a8ffa37 Karsten Keil 2008-07-27 1999 * Old FIFO handling doesn't give us the current Z2 read af69fb3a8ffa37 Karsten Keil 2008-07-27 2000 * pointer, so we cannot send the next frame before the fifo af69fb3a8ffa37 Karsten Keil 2008-07-27 2001 * is empty. It makes no difference except for a slightly af69fb3a8ffa37 Karsten Keil 2008-07-27 2002 * lower performance. af69fb3a8ffa37 Karsten Keil 2008-07-27 2003 */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2004 if (test_bit(HFC_CHIP_REVISION0, &hc->chip)) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2005 if (f1 != f2) af69fb3a8ffa37 Karsten Keil 2008-07-27 2006 Fspace = 0; af69fb3a8ffa37 Karsten Keil 2008-07-27 2007 else af69fb3a8ffa37 Karsten Keil 2008-07-27 2008 Fspace = 1; af69fb3a8ffa37 Karsten Keil 2008-07-27 2009 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2010 /* one frame only for ST D-channels, to allow resending */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2011 if (hc->ctype != HFC_TYPE_E1 && dch) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2012 if (f1 != f2) af69fb3a8ffa37 Karsten Keil 2008-07-27 2013 Fspace = 0; af69fb3a8ffa37 Karsten Keil 2008-07-27 2014 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2015 /* F-counter full condition */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2016 if (Fspace == 0) af69fb3a8ffa37 Karsten Keil 2008-07-27 2017 return; af69fb3a8ffa37 Karsten Keil 2008-07-27 2018 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2019 z1 = HFC_inw_nodebug(hc, A_Z1) - hc->Zmin; af69fb3a8ffa37 Karsten Keil 2008-07-27 2020 z2 = HFC_inw_nodebug(hc, A_Z2) - hc->Zmin; af69fb3a8ffa37 Karsten Keil 2008-07-27 2021 while (z2 != (temp = (HFC_inw_nodebug(hc, A_Z2) - hc->Zmin))) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2022 if (debug & DEBUG_HFCMULTI_FIFO) af69fb3a8ffa37 Karsten Keil 2008-07-27 2023 printk(KERN_DEBUG "%s(card %d): reread z2 because " af69fb3a8ffa37 Karsten Keil 2008-07-27 2024 "%d!=%d\n", __func__, hc->id + 1, temp, z2); af69fb3a8ffa37 Karsten Keil 2008-07-27 2025 z2 = temp; /* repeat unti Z2 is equal */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2026 } 7cfa153dd709f1 Andreas Eversberg 2009-05-22 2027 hc->chan[ch].Zfill = z1 - z2; 7cfa153dd709f1 Andreas Eversberg 2009-05-22 2028 if (hc->chan[ch].Zfill < 0) 7cfa153dd709f1 Andreas Eversberg 2009-05-22 2029 hc->chan[ch].Zfill += hc->Zlen; af69fb3a8ffa37 Karsten Keil 2008-07-27 2030 Zspace = z2 - z1; af69fb3a8ffa37 Karsten Keil 2008-07-27 2031 if (Zspace <= 0) af69fb3a8ffa37 Karsten Keil 2008-07-27 2032 Zspace += hc->Zlen; af69fb3a8ffa37 Karsten Keil 2008-07-27 2033 Zspace -= 4; /* keep not too full, so pointers will not overrun */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2034 /* fill transparent data only to maxinum transparent load (minus 4) */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2035 if (bch && test_bit(FLG_TRANSPARENT, &bch->Flags)) af69fb3a8ffa37 Karsten Keil 2008-07-27 2036 Zspace = Zspace - hc->Zlen + hc->max_trans; af69fb3a8ffa37 Karsten Keil 2008-07-27 2037 if (Zspace <= 0) /* no space of 4 bytes */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2038 return; af69fb3a8ffa37 Karsten Keil 2008-07-27 2039 af69fb3a8ffa37 Karsten Keil 2008-07-27 2040 /* if no data */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2041 if (!len) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2042 if (z1 == z2) { /* empty */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2043 /* if done with FIFO audio data during PCM connection */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2044 if (bch && (!test_bit(FLG_HDLC, &bch->Flags)) && af69fb3a8ffa37 Karsten Keil 2008-07-27 2045 *txpending && slot_tx >= 0) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2046 if (debug & DEBUG_HFCMULTI_MODE) af69fb3a8ffa37 Karsten Keil 2008-07-27 2047 printk(KERN_DEBUG af69fb3a8ffa37 Karsten Keil 2008-07-27 2048 "%s: reconnecting PCM due to no " af69fb3a8ffa37 Karsten Keil 2008-07-27 2049 "more FIFO data: channel %d " af69fb3a8ffa37 Karsten Keil 2008-07-27 2050 "slot_tx %d\n", af69fb3a8ffa37 Karsten Keil 2008-07-27 2051 __func__, ch, slot_tx); af69fb3a8ffa37 Karsten Keil 2008-07-27 2052 /* connect slot */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2053 if (hc->ctype == HFC_TYPE_XHFC) db9bb63a1b5b65 Karsten Keil 2009-05-22 2054 HFC_outb(hc, A_CON_HDLC, 0xc0 db9bb63a1b5b65 Karsten Keil 2009-05-22 2055 | 0x07 << 2 | V_HDLC_TRP | V_IFF); db9bb63a1b5b65 Karsten Keil 2009-05-22 2056 /* Enable FIFO, no interrupt */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2057 else af69fb3a8ffa37 Karsten Keil 2008-07-27 2058 HFC_outb(hc, A_CON_HDLC, 0xc0 | 0x00 | af69fb3a8ffa37 Karsten Keil 2008-07-27 2059 V_HDLC_TRP | V_IFF); af69fb3a8ffa37 Karsten Keil 2008-07-27 2060 HFC_outb_nodebug(hc, R_FIFO, ch << 1 | 1); af69fb3a8ffa37 Karsten Keil 2008-07-27 2061 HFC_wait_nodebug(hc); db9bb63a1b5b65 Karsten Keil 2009-05-22 2062 if (hc->ctype == HFC_TYPE_XHFC) db9bb63a1b5b65 Karsten Keil 2009-05-22 2063 HFC_outb(hc, A_CON_HDLC, 0xc0 db9bb63a1b5b65 Karsten Keil 2009-05-22 2064 | 0x07 << 2 | V_HDLC_TRP | V_IFF); db9bb63a1b5b65 Karsten Keil 2009-05-22 2065 /* Enable FIFO, no interrupt */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2066 else af69fb3a8ffa37 Karsten Keil 2008-07-27 2067 HFC_outb(hc, A_CON_HDLC, 0xc0 | 0x00 | af69fb3a8ffa37 Karsten Keil 2008-07-27 2068 V_HDLC_TRP | V_IFF); af69fb3a8ffa37 Karsten Keil 2008-07-27 2069 HFC_outb_nodebug(hc, R_FIFO, ch << 1); af69fb3a8ffa37 Karsten Keil 2008-07-27 2070 HFC_wait_nodebug(hc); af69fb3a8ffa37 Karsten Keil 2008-07-27 2071 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2072 *txpending = 0; af69fb3a8ffa37 Karsten Keil 2008-07-27 2073 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2074 return; /* no data */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2075 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2076 8dd2f36f317569 Andreas Eversberg 2008-08-02 2077 /* "fill fifo if empty" feature */ 8dd2f36f317569 Andreas Eversberg 2008-08-02 2078 if (bch && test_bit(FLG_FILLEMPTY, &bch->Flags) 8dd2f36f317569 Andreas Eversberg 2008-08-02 2079 && !test_bit(FLG_HDLC, &bch->Flags) && z2 == z1) { 8dd2f36f317569 Andreas Eversberg 2008-08-02 2080 if (debug & DEBUG_HFCMULTI_FILL) 8dd2f36f317569 Andreas Eversberg 2008-08-02 2081 printk(KERN_DEBUG "%s: buffer empty, so we have " 8dd2f36f317569 Andreas Eversberg 2008-08-02 2082 "underrun\n", __func__); 8dd2f36f317569 Andreas Eversberg 2008-08-02 2083 /* fill buffer, to prevent future underrun */ 8dd2f36f317569 Andreas Eversberg 2008-08-02 2084 hc->write_fifo(hc, hc->silence_data, poll >> 1); 8dd2f36f317569 Andreas Eversberg 2008-08-02 2085 Zspace -= (poll >> 1); 8dd2f36f317569 Andreas Eversberg 2008-08-02 2086 } 8dd2f36f317569 Andreas Eversberg 2008-08-02 2087 af69fb3a8ffa37 Karsten Keil 2008-07-27 2088 /* if audio data and connected slot */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2089 if (bch && (!test_bit(FLG_HDLC, &bch->Flags)) && (!*txpending) af69fb3a8ffa37 Karsten Keil 2008-07-27 2090 && slot_tx >= 0) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2091 if (debug & DEBUG_HFCMULTI_MODE) af69fb3a8ffa37 Karsten Keil 2008-07-27 2092 printk(KERN_DEBUG "%s: disconnecting PCM due to " af69fb3a8ffa37 Karsten Keil 2008-07-27 2093 "FIFO data: channel %d slot_tx %d\n", af69fb3a8ffa37 Karsten Keil 2008-07-27 2094 __func__, ch, slot_tx); af69fb3a8ffa37 Karsten Keil 2008-07-27 2095 /* disconnect slot */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2096 if (hc->ctype == HFC_TYPE_XHFC) db9bb63a1b5b65 Karsten Keil 2009-05-22 2097 HFC_outb(hc, A_CON_HDLC, 0x80 db9bb63a1b5b65 Karsten Keil 2009-05-22 2098 | 0x07 << 2 | V_HDLC_TRP | V_IFF); db9bb63a1b5b65 Karsten Keil 2009-05-22 2099 /* Enable FIFO, no interrupt */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2100 else db9bb63a1b5b65 Karsten Keil 2009-05-22 2101 HFC_outb(hc, A_CON_HDLC, 0x80 | 0x00 | db9bb63a1b5b65 Karsten Keil 2009-05-22 2102 V_HDLC_TRP | V_IFF); af69fb3a8ffa37 Karsten Keil 2008-07-27 2103 HFC_outb_nodebug(hc, R_FIFO, ch << 1 | 1); af69fb3a8ffa37 Karsten Keil 2008-07-27 2104 HFC_wait_nodebug(hc); db9bb63a1b5b65 Karsten Keil 2009-05-22 2105 if (hc->ctype == HFC_TYPE_XHFC) db9bb63a1b5b65 Karsten Keil 2009-05-22 2106 HFC_outb(hc, A_CON_HDLC, 0x80 db9bb63a1b5b65 Karsten Keil 2009-05-22 2107 | 0x07 << 2 | V_HDLC_TRP | V_IFF); db9bb63a1b5b65 Karsten Keil 2009-05-22 2108 /* Enable FIFO, no interrupt */ db9bb63a1b5b65 Karsten Keil 2009-05-22 2109 else db9bb63a1b5b65 Karsten Keil 2009-05-22 2110 HFC_outb(hc, A_CON_HDLC, 0x80 | 0x00 | db9bb63a1b5b65 Karsten Keil 2009-05-22 2111 V_HDLC_TRP | V_IFF); af69fb3a8ffa37 Karsten Keil 2008-07-27 2112 HFC_outb_nodebug(hc, R_FIFO, ch << 1); af69fb3a8ffa37 Karsten Keil 2008-07-27 2113 HFC_wait_nodebug(hc); af69fb3a8ffa37 Karsten Keil 2008-07-27 2114 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2115 *txpending = 1; af69fb3a8ffa37 Karsten Keil 2008-07-27 2116 af69fb3a8ffa37 Karsten Keil 2008-07-27 2117 /* show activity */ 864fd636b196e7 Andreas Eversberg 2012-04-24 2118 if (dch) 864fd636b196e7 Andreas Eversberg 2012-04-24 2119 hc->activity_tx |= 1 << hc->chan[ch].port; af69fb3a8ffa37 Karsten Keil 2008-07-27 2120 af69fb3a8ffa37 Karsten Keil 2008-07-27 2121 /* fill fifo to what we have left */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2122 ii = len; af69fb3a8ffa37 Karsten Keil 2008-07-27 2123 if (dch || test_bit(FLG_HDLC, &bch->Flags)) af69fb3a8ffa37 Karsten Keil 2008-07-27 2124 temp = 1; af69fb3a8ffa37 Karsten Keil 2008-07-27 2125 else af69fb3a8ffa37 Karsten Keil 2008-07-27 2126 temp = 0; af69fb3a8ffa37 Karsten Keil 2008-07-27 2127 i = *idxp; af69fb3a8ffa37 Karsten Keil 2008-07-27 2128 d = (*sp)->data + i; af69fb3a8ffa37 Karsten Keil 2008-07-27 2129 if (ii - i > Zspace) af69fb3a8ffa37 Karsten Keil 2008-07-27 2130 ii = Zspace + i; af69fb3a8ffa37 Karsten Keil 2008-07-27 2131 if (debug & DEBUG_HFCMULTI_FIFO) af69fb3a8ffa37 Karsten Keil 2008-07-27 2132 printk(KERN_DEBUG "%s(card %d): fifo(%d) has %d bytes space " af69fb3a8ffa37 Karsten Keil 2008-07-27 2133 "left (z1=%04x, z2=%04x) sending %d of %d bytes %s\n", af69fb3a8ffa37 Karsten Keil 2008-07-27 2134 __func__, hc->id + 1, ch, Zspace, z1, z2, ii-i, len-i, af69fb3a8ffa37 Karsten Keil 2008-07-27 2135 temp ? "HDLC" : "TRANS"); af69fb3a8ffa37 Karsten Keil 2008-07-27 2136 af69fb3a8ffa37 Karsten Keil 2008-07-27 2137 /* Have to prep the audio data */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2138 hc->write_fifo(hc, d, ii - i); 7cfa153dd709f1 Andreas Eversberg 2009-05-22 2139 hc->chan[ch].Zfill += ii - i; af69fb3a8ffa37 Karsten Keil 2008-07-27 2140 *idxp = ii; af69fb3a8ffa37 Karsten Keil 2008-07-27 2141 af69fb3a8ffa37 Karsten Keil 2008-07-27 2142 /* if not all data has been written */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2143 if (ii != len) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2144 /* NOTE: fifo is started by the calling function */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2145 return; af69fb3a8ffa37 Karsten Keil 2008-07-27 2146 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2147 af69fb3a8ffa37 Karsten Keil 2008-07-27 2148 /* if all data has been written, terminate frame */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2149 if (dch || test_bit(FLG_HDLC, &bch->Flags)) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2150 /* increment f-counter */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2151 HFC_outb_nodebug(hc, R_INC_RES_FIFO, V_INC_F); af69fb3a8ffa37 Karsten Keil 2008-07-27 2152 HFC_wait_nodebug(hc); af69fb3a8ffa37 Karsten Keil 2008-07-27 2153 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2154 af69fb3a8ffa37 Karsten Keil 2008-07-27 2155 dev_kfree_skb(*sp); 8bfddfbe210086 Karsten Keil 2012-05-15 2156 /* check for next frame */ 8bfddfbe210086 Karsten Keil 2012-05-15 2157 if (bch && get_next_bframe(bch)) { af69fb3a8ffa37 Karsten Keil 2008-07-27 @2158 len = (*sp)->len; af69fb3a8ffa37 Karsten Keil 2008-07-27 2159 goto next_frame; af69fb3a8ffa37 Karsten Keil 2008-07-27 2160 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2161 if (dch && get_next_dframe(dch)) { af69fb3a8ffa37 Karsten Keil 2008-07-27 2162 len = (*sp)->len; af69fb3a8ffa37 Karsten Keil 2008-07-27 2163 goto next_frame; af69fb3a8ffa37 Karsten Keil 2008-07-27 2164 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2165 af69fb3a8ffa37 Karsten Keil 2008-07-27 2166 /* af69fb3a8ffa37 Karsten Keil 2008-07-27 2167 * now we have no more data, so in case of transparent, af69fb3a8ffa37 Karsten Keil 2008-07-27 2168 * we set the last byte in fifo to 'silence' in case we will get af69fb3a8ffa37 Karsten Keil 2008-07-27 2169 * no more data at all. this prevents sending an undefined value. af69fb3a8ffa37 Karsten Keil 2008-07-27 2170 */ af69fb3a8ffa37 Karsten Keil 2008-07-27 2171 if (bch && test_bit(FLG_TRANSPARENT, &bch->Flags)) 8dd2f36f317569 Andreas Eversberg 2008-08-02 2172 HFC_outb_nodebug(hc, A_FIFO_DATA0_NOINC, hc->silence); af69fb3a8ffa37 Karsten Keil 2008-07-27 2173 } af69fb3a8ffa37 Karsten Keil 2008-07-27 2174 :::::: The code at line 2158 was first introduced by commit :::::: af69fb3a8ffa37e986db00ed93099dc44babeef4 Add mISDN HFC multiport driver :::::: TO: Karsten Keil <[email protected]> :::::: CC: Karsten Keil <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
