Searched refs:sc (Results 1 - 200 of 350) sorted by relevance

12

/linux-4.1.27/drivers/net/wan/lmc/
H A Dlmc_media.c157 lmc_dummy_set_1 (lmc_softc_t * const sc, int a) lmc_dummy_set_1() argument
162 lmc_dummy_set2_1 (lmc_softc_t * const sc, lmc_ctl_t * a) lmc_dummy_set2_1() argument
171 lmc_hssi_init (lmc_softc_t * const sc) lmc_hssi_init() argument
173 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200; lmc_hssi_init()
175 lmc_gpio_mkoutput (sc, LMC_GEP_HSSI_CLOCK); lmc_hssi_init()
179 lmc_hssi_default (lmc_softc_t * const sc) lmc_hssi_default() argument
181 sc->lmc_miireg16 = LMC_MII16_LED_ALL; lmc_hssi_default()
183 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); lmc_hssi_default()
184 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); lmc_hssi_default()
185 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); lmc_hssi_default()
193 lmc_hssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) lmc_hssi_set_status() argument
197 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); lmc_hssi_set_status()
198 lmc_set_protocol (sc, NULL); lmc_hssi_set_status()
206 if (ctl->clock_source && !sc->ictl.clock_source) lmc_hssi_set_status()
208 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); lmc_hssi_set_status()
209 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; lmc_hssi_set_status()
211 else if (!ctl->clock_source && sc->ictl.clock_source) lmc_hssi_set_status()
213 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; lmc_hssi_set_status()
214 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); lmc_hssi_set_status()
217 lmc_set_protocol (sc, ctl); lmc_hssi_set_status()
224 lmc_hssi_set_clock (lmc_softc_t * const sc, int ie) lmc_hssi_set_clock() argument
227 old = sc->ictl.clock_source; lmc_hssi_set_clock()
230 sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK; lmc_hssi_set_clock()
231 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); lmc_hssi_set_clock()
232 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; lmc_hssi_set_clock()
238 sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK); lmc_hssi_set_clock()
239 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); lmc_hssi_set_clock()
240 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; lmc_hssi_set_clock()
251 lmc_hssi_get_link_status (lmc_softc_t * const sc) lmc_hssi_get_link_status() argument
257 return lmc_ssi_get_link_status(sc); lmc_hssi_get_link_status()
261 lmc_hssi_set_link_status (lmc_softc_t * const sc, int state) lmc_hssi_set_link_status() argument
264 sc->lmc_miireg16 |= LMC_MII16_HSSI_TA; lmc_hssi_set_link_status()
266 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA; lmc_hssi_set_link_status()
268 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_hssi_set_link_status()
275 lmc_hssi_set_crc_length (lmc_softc_t * const sc, int state) lmc_hssi_set_crc_length() argument
280 sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC; lmc_hssi_set_crc_length()
281 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; lmc_hssi_set_crc_length()
286 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC; lmc_hssi_set_crc_length()
287 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; lmc_hssi_set_crc_length()
290 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_hssi_set_crc_length()
294 lmc_hssi_watchdog (lmc_softc_t * const sc) lmc_hssi_watchdog() argument
307 lmc_ds3_set_100ft (lmc_softc_t * const sc, int ie) lmc_ds3_set_100ft() argument
311 sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO; lmc_ds3_set_100ft()
312 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT; lmc_ds3_set_100ft()
316 sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO; lmc_ds3_set_100ft()
317 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT; lmc_ds3_set_100ft()
319 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_ds3_set_100ft()
323 lmc_ds3_default (lmc_softc_t * const sc) lmc_ds3_default() argument
325 sc->lmc_miireg16 = LMC_MII16_LED_ALL; lmc_ds3_default()
327 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); lmc_ds3_default()
328 sc->lmc_media->set_cable_length (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); lmc_ds3_default()
329 sc->lmc_media->set_scrambler (sc, LMC_CTL_OFF); lmc_ds3_default()
330 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); lmc_ds3_default()
338 lmc_ds3_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) lmc_ds3_set_status() argument
342 sc->lmc_media->set_cable_length (sc, sc->ictl.cable_length); lmc_ds3_set_status()
343 sc->lmc_media->set_scrambler (sc, sc->ictl.scrambler_onoff); lmc_ds3_set_status()
344 lmc_set_protocol (sc, NULL); lmc_ds3_set_status()
352 if (ctl->cable_length && !sc->ictl.cable_length) lmc_ds3_set_status()
353 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_GT_100FT); lmc_ds3_set_status()
354 else if (!ctl->cable_length && sc->ictl.cable_length) lmc_ds3_set_status()
355 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); lmc_ds3_set_status()
360 if (ctl->scrambler_onoff && !sc->ictl.scrambler_onoff) lmc_ds3_set_status()
361 lmc_ds3_set_scram (sc, LMC_CTL_ON); lmc_ds3_set_status()
362 else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff) lmc_ds3_set_status()
363 lmc_ds3_set_scram (sc, LMC_CTL_OFF); lmc_ds3_set_status()
365 lmc_set_protocol (sc, ctl); lmc_ds3_set_status()
369 lmc_ds3_init (lmc_softc_t * const sc) lmc_ds3_init() argument
373 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5245; lmc_ds3_init()
378 lmc_mii_writereg (sc, 0, 17, i); lmc_ds3_init()
379 lmc_mii_writereg (sc, 0, 18, 0); lmc_ds3_init()
383 lmc_mii_writereg (sc, 0, 17, 1); lmc_ds3_init()
384 lmc_mii_writereg (sc, 0, 18, 0x25); /* ser, xtx */ lmc_ds3_init()
386 lmc_mii_writereg (sc, 0, 17, 5); lmc_ds3_init()
387 lmc_mii_writereg (sc, 0, 18, 0x80); /* emode */ lmc_ds3_init()
389 lmc_mii_writereg (sc, 0, 17, 14); lmc_ds3_init()
390 lmc_mii_writereg (sc, 0, 18, 0x30); /* rcgen, tcgen */ lmc_ds3_init()
395 lmc_mii_writereg (sc, 0, 17, i); lmc_ds3_init()
396 lmc_mii_readreg (sc, 0, 18); lmc_ds3_init()
404 lmc_ds3_set_scram (lmc_softc_t * const sc, int ie) lmc_ds3_set_scram() argument
408 sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM; lmc_ds3_set_scram()
409 sc->ictl.scrambler_onoff = LMC_CTL_ON; lmc_ds3_set_scram()
413 sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM; lmc_ds3_set_scram()
414 sc->ictl.scrambler_onoff = LMC_CTL_OFF; lmc_ds3_set_scram()
416 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_ds3_set_scram()
424 lmc_ds3_get_link_status (lmc_softc_t * const sc) lmc_ds3_get_link_status() argument
429 lmc_mii_writereg (sc, 0, 17, 7); lmc_ds3_get_link_status()
430 link_status = lmc_mii_readreg (sc, 0, 18); lmc_ds3_get_link_status()
442 lmc_led_on(sc, LMC_DS3_LED2); lmc_ds3_get_link_status()
447 if(sc->last_led_err[3] != 1){ lmc_ds3_get_link_status()
449 lmc_mii_writereg (sc, 0, 17, 01); /* Turn on Xbit error as our cisco does */ lmc_ds3_get_link_status()
450 r1 = lmc_mii_readreg (sc, 0, 18); lmc_ds3_get_link_status()
452 lmc_mii_writereg(sc, 0, 18, r1); lmc_ds3_get_link_status()
453 printk(KERN_WARNING "%s: Red Alarm - Loss of Signal or Loss of Framing\n", sc->name); lmc_ds3_get_link_status()
455 lmc_led_on(sc, LMC_DS3_LED3); /* turn on red LED */ lmc_ds3_get_link_status()
456 sc->last_led_err[3] = 1; lmc_ds3_get_link_status()
459 lmc_led_off(sc, LMC_DS3_LED3); /* turn on red LED */ lmc_ds3_get_link_status()
460 if(sc->last_led_err[3] == 1){ lmc_ds3_get_link_status()
462 lmc_mii_writereg (sc, 0, 17, 01); /* Turn off Xbit error */ lmc_ds3_get_link_status()
463 r1 = lmc_mii_readreg (sc, 0, 18); lmc_ds3_get_link_status()
465 lmc_mii_writereg(sc, 0, 18, r1); lmc_ds3_get_link_status()
467 sc->last_led_err[3] = 0; lmc_ds3_get_link_status()
470 lmc_mii_writereg(sc, 0, 17, 0x10); lmc_ds3_get_link_status()
471 link_status_11 = lmc_mii_readreg(sc, 0, 18); lmc_ds3_get_link_status()
475 if(sc->last_led_err[0] != 1){ lmc_ds3_get_link_status()
476 printk(KERN_WARNING "%s: AIS Alarm or XBit Error\n", sc->name); lmc_ds3_get_link_status()
477 printk(KERN_WARNING "%s: Remote end has loss of signal or framing\n", sc->name); lmc_ds3_get_link_status()
479 lmc_led_on(sc, LMC_DS3_LED0); lmc_ds3_get_link_status()
480 sc->last_led_err[0] = 1; lmc_ds3_get_link_status()
483 lmc_led_off(sc, LMC_DS3_LED0); lmc_ds3_get_link_status()
484 sc->last_led_err[0] = 0; lmc_ds3_get_link_status()
487 lmc_mii_writereg (sc, 0, 17, 9); lmc_ds3_get_link_status()
488 link_status = lmc_mii_readreg (sc, 0, 18); lmc_ds3_get_link_status()
492 if(sc->last_led_err[1] != 1){ lmc_ds3_get_link_status()
493 printk(KERN_WARNING "%s: Blue Alarm - Receiving all 1's\n", sc->name); lmc_ds3_get_link_status()
495 lmc_led_on(sc, LMC_DS3_LED1); lmc_ds3_get_link_status()
496 sc->last_led_err[1] = 1; lmc_ds3_get_link_status()
499 lmc_led_off(sc, LMC_DS3_LED1); lmc_ds3_get_link_status()
500 sc->last_led_err[1] = 0; lmc_ds3_get_link_status()
510 lmc_ds3_set_crc_length (lmc_softc_t * const sc, int state) lmc_ds3_set_crc_length() argument
515 sc->lmc_miireg16 |= LMC_MII16_DS3_CRC; lmc_ds3_set_crc_length()
516 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; lmc_ds3_set_crc_length()
521 sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC; lmc_ds3_set_crc_length()
522 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; lmc_ds3_set_crc_length()
525 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_ds3_set_crc_length()
529 lmc_ds3_watchdog (lmc_softc_t * const sc) lmc_ds3_watchdog() argument
539 static void lmc_ssi_init(lmc_softc_t * const sc) lmc_ssi_init() argument
544 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1000; lmc_ssi_init()
546 mii17 = lmc_mii_readreg(sc, 0, 17); lmc_ssi_init()
549 sc->ictl.cable_type = cable; lmc_ssi_init()
551 lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK); lmc_ssi_init()
555 lmc_ssi_default (lmc_softc_t * const sc) lmc_ssi_default() argument
557 sc->lmc_miireg16 = LMC_MII16_LED_ALL; lmc_ssi_default()
562 lmc_gpio_mkoutput (sc, LMC_GEP_SSI_TXCLOCK); lmc_ssi_default()
564 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); lmc_ssi_default()
565 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); lmc_ssi_default()
566 sc->lmc_media->set_speed (sc, NULL); lmc_ssi_default()
567 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); lmc_ssi_default()
575 lmc_ssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) lmc_ssi_set_status() argument
579 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); lmc_ssi_set_status()
580 sc->lmc_media->set_speed (sc, &sc->ictl); lmc_ssi_set_status()
581 lmc_set_protocol (sc, NULL); lmc_ssi_set_status()
590 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) lmc_ssi_set_status()
592 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); lmc_ssi_set_status()
593 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; lmc_ssi_set_status()
596 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) lmc_ssi_set_status()
598 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); lmc_ssi_set_status()
599 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; lmc_ssi_set_status()
602 if (ctl->clock_rate != sc->ictl.clock_rate) lmc_ssi_set_status()
603 sc->lmc_media->set_speed (sc, ctl); lmc_ssi_set_status()
605 lmc_set_protocol (sc, ctl); lmc_ssi_set_status()
612 lmc_ssi_set_clock (lmc_softc_t * const sc, int ie) lmc_ssi_set_clock() argument
618 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); lmc_ssi_set_clock()
619 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); lmc_ssi_set_clock()
620 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; lmc_ssi_set_clock()
626 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; lmc_ssi_set_clock()
627 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); lmc_ssi_set_clock()
628 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; lmc_ssi_set_clock()
635 lmc_ssi_set_speed (lmc_softc_t * const sc, lmc_ctl_t * ctl) lmc_ssi_set_speed() argument
637 lmc_ctl_t *ictl = &sc->ictl; lmc_ssi_set_speed()
657 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); lmc_ssi_set_speed()
669 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); lmc_ssi_set_speed()
677 lmc_ssi_get_link_status (lmc_softc_t * const sc) lmc_ssi_get_link_status() argument
704 link_status = lmc_mii_readreg (sc, 0, 16); lmc_ssi_get_link_status()
707 ticks = LMC_CSR_READ (sc, csr_gp_timer); lmc_ssi_get_link_status()
710 lmc_led_on (sc, LMC_MII16_LED0); lmc_ssi_get_link_status()
713 if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT) { lmc_ssi_get_link_status()
714 lmc_led_off(sc, LMC_MII16_LED3); lmc_ssi_get_link_status()
718 if (sc->last_led_err[3] != 1) { lmc_ssi_get_link_status()
719 sc->extra_stats.tx_lossOfClockCnt++; lmc_ssi_get_link_status()
720 printk(KERN_WARNING "%s: Lost Clock, Link Down\n", sc->name); lmc_ssi_get_link_status()
722 sc->last_led_err[3] = 1; lmc_ssi_get_link_status()
723 lmc_led_on (sc, LMC_MII16_LED3); /* turn ON red LED */ lmc_ssi_get_link_status()
726 if(sc->last_led_err[3] == 1) lmc_ssi_get_link_status()
727 printk(KERN_WARNING "%s: Clock Returned\n", sc->name); lmc_ssi_get_link_status()
728 sc->last_led_err[3] = 0; lmc_ssi_get_link_status()
729 lmc_led_off (sc, LMC_MII16_LED3); /* turn OFF red LED */ lmc_ssi_get_link_status()
745 if(sc->last_led_err[1] != 1) lmc_ssi_get_link_status()
746 printk(KERN_WARNING "%s: DSR not asserted\n", sc->name); lmc_ssi_get_link_status()
747 sc->last_led_err[1] = 1; lmc_ssi_get_link_status()
748 lmc_led_off(sc, LMC_MII16_LED1); lmc_ssi_get_link_status()
751 if(sc->last_led_err[1] != 0) lmc_ssi_get_link_status()
752 printk(KERN_WARNING "%s: DSR now asserted\n", sc->name); lmc_ssi_get_link_status()
753 sc->last_led_err[1] = 0; lmc_ssi_get_link_status()
754 lmc_led_on(sc, LMC_MII16_LED1); lmc_ssi_get_link_status()
758 lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */ lmc_ssi_get_link_status()
765 lmc_ssi_set_link_status (lmc_softc_t * const sc, int state) lmc_ssi_set_link_status() argument
769 sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); lmc_ssi_set_link_status()
774 sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); lmc_ssi_set_link_status()
778 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_ssi_set_link_status()
786 lmc_ssi_set_crc_length (lmc_softc_t * const sc, int state) lmc_ssi_set_crc_length() argument
791 sc->lmc_miireg16 |= LMC_MII16_SSI_CRC; lmc_ssi_set_crc_length()
792 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; lmc_ssi_set_crc_length()
793 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; lmc_ssi_set_crc_length()
799 sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC; lmc_ssi_set_crc_length()
800 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; lmc_ssi_set_crc_length()
801 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; lmc_ssi_set_crc_length()
804 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_ssi_set_crc_length()
811 write_av9110_bit (lmc_softc_t * sc, int c) write_av9110_bit() argument
816 sc->lmc_gpio &= ~(LMC_GEP_CLK); write_av9110_bit()
818 sc->lmc_gpio |= LMC_GEP_DATA; write_av9110_bit()
820 sc->lmc_gpio &= ~(LMC_GEP_DATA); write_av9110_bit()
821 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); write_av9110_bit()
826 sc->lmc_gpio |= LMC_GEP_CLK; write_av9110_bit()
827 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); write_av9110_bit()
832 sc->lmc_gpio &= ~(LMC_GEP_CLK); write_av9110_bit()
833 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); write_av9110_bit()
836 static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r) write_av9110() argument
842 LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r); write_av9110()
845 sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR; write_av9110()
846 sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK); write_av9110()
847 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); write_av9110()
853 lmc_gpio_mkoutput (sc, (LMC_GEP_DATA | LMC_GEP_CLK write_av9110()
856 sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR); write_av9110()
857 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); write_av9110()
863 write_av9110_bit (sc, n >> i); write_av9110()
865 write_av9110_bit (sc, m >> i); write_av9110()
867 write_av9110_bit (sc, v >> i); write_av9110()
869 write_av9110_bit (sc, x >> i); write_av9110()
871 write_av9110_bit (sc, r >> i); write_av9110()
873 write_av9110_bit (sc, 0x17 >> i); write_av9110()
878 lmc_gpio_mkinput (sc, write_av9110()
883 static void lmc_ssi_watchdog(lmc_softc_t * const sc) lmc_ssi_watchdog() argument
885 u16 mii17 = lmc_mii_readreg(sc, 0, 17); lmc_ssi_watchdog()
887 lmc_led_off(sc, LMC_MII16_LED2); lmc_ssi_watchdog()
889 lmc_led_on(sc, LMC_MII16_LED2); lmc_ssi_watchdog()
900 lmc_t1_write (lmc_softc_t * const sc, int a, int d) lmc_t1_write() argument
902 lmc_mii_writereg (sc, 0, 17, a); lmc_t1_write()
903 lmc_mii_writereg (sc, 0, 18, d); lmc_t1_write()
908 lmc_t1_read (lmc_softc_t * const sc, int a)
910 lmc_mii_writereg (sc, 0, 17, a);
911 return lmc_mii_readreg (sc, 0, 18);
917 lmc_t1_init (lmc_softc_t * const sc) lmc_t1_init() argument
922 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1200; lmc_t1_init()
923 mii16 = lmc_mii_readreg (sc, 0, 16); lmc_t1_init()
927 lmc_mii_writereg (sc, 0, 16, mii16 | LMC_MII16_T1_RST); lmc_t1_init()
928 lmc_mii_writereg (sc, 0, 16, mii16); lmc_t1_init()
930 /* set T1 or E1 line. Uses sc->lmcmii16 reg in function so update it */ lmc_t1_init()
931 sc->lmc_miireg16 = mii16; lmc_t1_init()
932 lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1); lmc_t1_init()
933 mii16 = sc->lmc_miireg16; lmc_t1_init()
935 lmc_t1_write (sc, 0x01, 0x1B); /* CR0 - primary control */ lmc_t1_init()
936 lmc_t1_write (sc, 0x02, 0x42); /* JAT_CR - jitter atten config */ lmc_t1_init()
937 lmc_t1_write (sc, 0x14, 0x00); /* LOOP - loopback config */ lmc_t1_init()
938 lmc_t1_write (sc, 0x15, 0x00); /* DL3_TS - external data link timeslot */ lmc_t1_init()
939 lmc_t1_write (sc, 0x18, 0xFF); /* PIO - programmable I/O */ lmc_t1_init()
940 lmc_t1_write (sc, 0x19, 0x30); /* POE - programmable OE */ lmc_t1_init()
941 lmc_t1_write (sc, 0x1A, 0x0F); /* CMUX - clock input mux */ lmc_t1_init()
942 lmc_t1_write (sc, 0x20, 0x41); /* LIU_CR - RX LIU config */ lmc_t1_init()
943 lmc_t1_write (sc, 0x22, 0x76); /* RLIU_CR - RX LIU config */ lmc_t1_init()
944 lmc_t1_write (sc, 0x40, 0x03); /* RCR0 - RX config */ lmc_t1_init()
945 lmc_t1_write (sc, 0x45, 0x00); /* RALM - RX alarm config */ lmc_t1_init()
946 lmc_t1_write (sc, 0x46, 0x05); /* LATCH - RX alarm/err/cntr latch */ lmc_t1_init()
947 lmc_t1_write (sc, 0x68, 0x40); /* TLIU_CR - TX LIU config */ lmc_t1_init()
948 lmc_t1_write (sc, 0x70, 0x0D); /* TCR0 - TX framer config */ lmc_t1_init()
949 lmc_t1_write (sc, 0x71, 0x05); /* TCR1 - TX config */ lmc_t1_init()
950 lmc_t1_write (sc, 0x72, 0x0B); /* TFRM - TX frame format */ lmc_t1_init()
951 lmc_t1_write (sc, 0x73, 0x00); /* TERROR - TX error insert */ lmc_t1_init()
952 lmc_t1_write (sc, 0x74, 0x00); /* TMAN - TX manual Sa/FEBE config */ lmc_t1_init()
953 lmc_t1_write (sc, 0x75, 0x00); /* TALM - TX alarm signal config */ lmc_t1_init()
954 lmc_t1_write (sc, 0x76, 0x00); /* TPATT - TX test pattern config */ lmc_t1_init()
955 lmc_t1_write (sc, 0x77, 0x00); /* TLB - TX inband loopback config */ lmc_t1_init()
956 lmc_t1_write (sc, 0x90, 0x05); /* CLAD_CR - clock rate adapter config */ lmc_t1_init()
957 lmc_t1_write (sc, 0x91, 0x05); /* CSEL - clad freq sel */ lmc_t1_init()
958 lmc_t1_write (sc, 0xA6, 0x00); /* DL1_CTL - DL1 control */ lmc_t1_init()
959 lmc_t1_write (sc, 0xB1, 0x00); /* DL2_CTL - DL2 control */ lmc_t1_init()
960 lmc_t1_write (sc, 0xD0, 0x47); /* SBI_CR - sys bus iface config */ lmc_t1_init()
961 lmc_t1_write (sc, 0xD1, 0x70); /* RSB_CR - RX sys bus config */ lmc_t1_init()
962 lmc_t1_write (sc, 0xD4, 0x30); /* TSB_CR - TX sys bus config */ lmc_t1_init()
965 lmc_t1_write (sc, 0x0E0 + i, 0x00); /* SBCn - sys bus per-channel ctl */ lmc_t1_init()
966 lmc_t1_write (sc, 0x100 + i, 0x00); /* TPCn - TX per-channel ctl */ lmc_t1_init()
967 lmc_t1_write (sc, 0x180 + i, 0x00); /* RPCn - RX per-channel ctl */ lmc_t1_init()
971 lmc_t1_write (sc, 0x0E0 + i, 0x0D); /* SBCn - sys bus per-channel ctl */ lmc_t1_init()
975 lmc_mii_writereg (sc, 0, 16, mii16); lmc_t1_init()
976 sc->lmc_miireg16 = mii16; lmc_t1_init()
980 lmc_t1_default (lmc_softc_t * const sc) lmc_t1_default() argument
982 sc->lmc_miireg16 = LMC_MII16_LED_ALL; lmc_t1_default()
983 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); lmc_t1_default()
984 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); lmc_t1_default()
985 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); lmc_t1_default()
987 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; lmc_t1_default()
992 lmc_t1_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) lmc_t1_set_status() argument
996 sc->lmc_media->set_circuit_type (sc, sc->ictl.circuit_type); lmc_t1_set_status()
997 lmc_set_protocol (sc, NULL); lmc_t1_set_status()
1004 && sc->ictl.circuit_type == lmc_t1_set_status()
1005 LMC_CTL_CIRCUIT_TYPE_E1) sc->lmc_media->set_circuit_type (sc, lmc_t1_set_status()
1008 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1) lmc_t1_set_status()
1009 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); lmc_t1_set_status()
1010 lmc_set_protocol (sc, ctl); lmc_t1_set_status()
1016 lmc_t1_get_link_status (lmc_softc_t * const sc) lmc_t1_get_link_status() argument
1030 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in"); lmc_t1_get_link_status()
1031 lmc_led_on(sc, LMC_DS3_LED2); lmc_t1_get_link_status()
1033 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM1_STATUS); lmc_t1_get_link_status()
1034 link_status = lmc_mii_readreg (sc, 0, 18); lmc_t1_get_link_status()
1039 if(sc->last_led_err[1] != 1){ lmc_t1_get_link_status()
1040 printk(KERN_WARNING "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n", sc->name); lmc_t1_get_link_status()
1042 lmc_led_on(sc, LMC_DS3_LED1); lmc_t1_get_link_status()
1043 sc->last_led_err[1] = 1; lmc_t1_get_link_status()
1046 if(sc->last_led_err[1] != 0){ lmc_t1_get_link_status()
1047 printk(KERN_WARNING "%s: End AIS/Blue Alarm\n", sc->name); lmc_t1_get_link_status()
1049 lmc_led_off (sc, LMC_DS3_LED1); lmc_t1_get_link_status()
1050 sc->last_led_err[1] = 0; lmc_t1_get_link_status()
1065 if(sc->last_led_err[0] != 1){ lmc_t1_get_link_status()
1066 printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n", sc->name); lmc_t1_get_link_status()
1068 lmc_led_on(sc, LMC_DS3_LED0); lmc_t1_get_link_status()
1069 sc->last_led_err[0] = 1; lmc_t1_get_link_status()
1072 if(sc->last_led_err[0] != 0){ lmc_t1_get_link_status()
1073 printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n", sc->name); lmc_t1_get_link_status()
1075 lmc_led_off(sc, LMC_DS3_LED0); lmc_t1_get_link_status()
1076 sc->last_led_err[0] = 0; lmc_t1_get_link_status()
1085 if(sc->last_led_err[3] != 1){ lmc_t1_get_link_status()
1086 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Framing\n", sc->name); lmc_t1_get_link_status()
1088 lmc_led_on(sc, LMC_DS3_LED3); lmc_t1_get_link_status()
1089 sc->last_led_err[3] = 1; lmc_t1_get_link_status()
1093 if(sc->last_led_err[3] != 0){ lmc_t1_get_link_status()
1094 printk(KERN_WARNING "%s: End Red Alarm (LOF)\n", sc->name); lmc_t1_get_link_status()
1097 lmc_led_off(sc, LMC_DS3_LED3); lmc_t1_get_link_status()
1098 sc->last_led_err[3] = 0; lmc_t1_get_link_status()
1103 if(sc->last_led_err[2] != 1){ lmc_t1_get_link_status()
1104 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Signal\n", sc->name); lmc_t1_get_link_status()
1106 lmc_led_on(sc, LMC_DS3_LED3); lmc_t1_get_link_status()
1107 sc->last_led_err[2] = 1; lmc_t1_get_link_status()
1111 if(sc->last_led_err[2] != 0){ lmc_t1_get_link_status()
1112 printk(KERN_WARNING "%s: End Red Alarm (LOS)\n", sc->name); lmc_t1_get_link_status()
1115 lmc_led_off(sc, LMC_DS3_LED3); lmc_t1_get_link_status()
1116 sc->last_led_err[2] = 0; lmc_t1_get_link_status()
1119 sc->lmc_xinfo.t1_alarm1_status = link_status; lmc_t1_get_link_status()
1121 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM2_STATUS); lmc_t1_get_link_status()
1122 sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg (sc, 0, 18); lmc_t1_get_link_status()
1125 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out"); lmc_t1_get_link_status()
1134 lmc_t1_set_circuit_type (lmc_softc_t * const sc, int ie) lmc_t1_set_circuit_type() argument
1137 sc->lmc_miireg16 |= LMC_MII16_T1_Z; lmc_t1_set_circuit_type()
1138 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1; lmc_t1_set_circuit_type()
1139 printk(KERN_INFO "%s: In T1 Mode\n", sc->name); lmc_t1_set_circuit_type()
1142 sc->lmc_miireg16 &= ~LMC_MII16_T1_Z; lmc_t1_set_circuit_type()
1143 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1; lmc_t1_set_circuit_type()
1144 printk(KERN_INFO "%s: In E1 Mode\n", sc->name); lmc_t1_set_circuit_type()
1147 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_t1_set_circuit_type()
1154 lmc_t1_set_crc_length (lmc_softc_t * const sc, int state) lmc_t1_set_crc_length() argument
1159 sc->lmc_miireg16 |= LMC_MII16_T1_CRC; lmc_t1_set_crc_length()
1160 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; lmc_t1_set_crc_length()
1161 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; lmc_t1_set_crc_length()
1166 /* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC; lmc_t1_set_crc_length()
1167 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; lmc_t1_set_crc_length()
1168 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; lmc_t1_set_crc_length()
1172 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); lmc_t1_set_crc_length()
1179 lmc_t1_set_clock (lmc_softc_t * const sc, int ie) lmc_t1_set_clock() argument
1185 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); lmc_t1_set_clock()
1186 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); lmc_t1_set_clock()
1187 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; lmc_t1_set_clock()
1193 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; lmc_t1_set_clock()
1194 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); lmc_t1_set_clock()
1195 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; lmc_t1_set_clock()
1202 lmc_t1_watchdog (lmc_softc_t * const sc) lmc_t1_watchdog() argument
1207 lmc_set_protocol (lmc_softc_t * const sc, lmc_ctl_t * ctl) lmc_set_protocol() argument
1210 sc->ictl.keepalive_onoff = LMC_CTL_ON; lmc_set_protocol()
H A Dlmc_proto.h6 void lmc_proto_attach(lmc_softc_t *sc);
7 int lmc_proto_ioctl(lmc_softc_t *sc, struct ifreq *ifr, int cmd);
8 int lmc_proto_open(lmc_softc_t *sc);
9 void lmc_proto_close(lmc_softc_t *sc);
10 __be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb);
11 void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb);
H A Dlmc_main.c98 static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, size_t csr_size);
103 static void lmc_reset(lmc_softc_t * const sc);
104 static void lmc_dec_reset(lmc_softc_t * const sc);
113 lmc_softc_t *sc = dev_to_sc(dev); lmc_ioctl() local
132 if (copy_to_user(ifr->ifr_data, &sc->ictl, sizeof(lmc_ctl_t))) lmc_ioctl()
154 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
155 sc->lmc_media->set_status (sc, &ctl); lmc_ioctl()
157 if(ctl.crc_length != sc->ictl.crc_length) { lmc_ioctl()
158 sc->lmc_media->set_crc_length(sc, ctl.crc_length); lmc_ioctl()
159 if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16) lmc_ioctl()
160 sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE; lmc_ioctl()
162 sc->TxDescriptControlInit &= ~LMC_TDES_ADD_CRC_DISABLE; lmc_ioctl()
164 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
171 u16 old_type = sc->if_type; lmc_ioctl()
191 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
192 lmc_proto_close(sc); lmc_ioctl()
194 sc->if_type = new_type; lmc_ioctl()
195 lmc_proto_attach(sc); lmc_ioctl()
196 ret = lmc_proto_open(sc); lmc_ioctl()
197 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
202 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
203 sc->lmc_xinfo.Magic0 = 0xBEEFCAFE; lmc_ioctl()
205 sc->lmc_xinfo.PciCardType = sc->lmc_cardtype; lmc_ioctl()
206 sc->lmc_xinfo.PciSlotNumber = 0; lmc_ioctl()
207 sc->lmc_xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION; lmc_ioctl()
208 sc->lmc_xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION; lmc_ioctl()
209 sc->lmc_xinfo.DriverSubVersion = DRIVER_SUB_VERSION; lmc_ioctl()
210 sc->lmc_xinfo.XilinxRevisionNumber = lmc_ioctl()
211 lmc_mii_readreg (sc, 0, 3) & 0xf; lmc_ioctl()
212 sc->lmc_xinfo.MaxFrameSize = LMC_PKT_BUF_SZ; lmc_ioctl()
213 sc->lmc_xinfo.link_status = sc->lmc_media->get_link_status (sc); lmc_ioctl()
214 sc->lmc_xinfo.mii_reg16 = lmc_mii_readreg (sc, 0, 16); lmc_ioctl()
215 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
217 sc->lmc_xinfo.Magic1 = 0xDEADBEEF; lmc_ioctl()
219 if (copy_to_user(ifr->ifr_data, &sc->lmc_xinfo, lmc_ioctl()
228 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
229 if (sc->lmc_cardtype == LMC_CARDTYPE_T1) { lmc_ioctl()
230 lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB); lmc_ioctl()
231 sc->extra_stats.framingBitErrorCount += lmc_ioctl()
232 lmc_mii_readreg(sc, 0, 18) & 0xff; lmc_ioctl()
233 lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_MSB); lmc_ioctl()
234 sc->extra_stats.framingBitErrorCount += lmc_ioctl()
235 (lmc_mii_readreg(sc, 0, 18) & 0xff) << 8; lmc_ioctl()
236 lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_LSB); lmc_ioctl()
237 sc->extra_stats.lineCodeViolationCount += lmc_ioctl()
238 lmc_mii_readreg(sc, 0, 18) & 0xff; lmc_ioctl()
239 lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_MSB); lmc_ioctl()
240 sc->extra_stats.lineCodeViolationCount += lmc_ioctl()
241 (lmc_mii_readreg(sc, 0, 18) & 0xff) << 8; lmc_ioctl()
242 lmc_mii_writereg(sc, 0, 17, T1FRAMER_AERR); lmc_ioctl()
243 regVal = lmc_mii_readreg(sc, 0, 18) & 0xff; lmc_ioctl()
245 sc->extra_stats.lossOfFrameCount += lmc_ioctl()
247 sc->extra_stats.changeOfFrameAlignmentCount += lmc_ioctl()
249 sc->extra_stats.severelyErroredFrameCount += lmc_ioctl()
252 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
253 if (copy_to_user(ifr->ifr_data, &sc->lmc_device->stats, lmc_ioctl()
254 sizeof(sc->lmc_device->stats)) || lmc_ioctl()
255 copy_to_user(ifr->ifr_data + sizeof(sc->lmc_device->stats), lmc_ioctl()
256 &sc->extra_stats, sizeof(sc->extra_stats))) lmc_ioctl()
268 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
269 memset(&sc->lmc_device->stats, 0, sizeof(sc->lmc_device->stats)); lmc_ioctl()
270 memset(&sc->extra_stats, 0, sizeof(sc->extra_stats)); lmc_ioctl()
271 sc->extra_stats.check = STATCHECK; lmc_ioctl()
272 sc->extra_stats.version_size = (DRIVER_VERSION << 16) + lmc_ioctl()
273 sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats); lmc_ioctl()
274 sc->extra_stats.lmc_cardtype = sc->lmc_cardtype; lmc_ioctl()
275 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
294 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
295 sc->lmc_media->set_circuit_type(sc, ctl.circuit_type); lmc_ioctl()
296 sc->ictl.circuit_type = ctl.circuit_type; lmc_ioctl()
297 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
308 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
310 printk (" REG16 before reset +%04x\n", lmc_mii_readreg (sc, 0, 16)); lmc_ioctl()
312 printk (" REG16 after reset +%04x\n", lmc_mii_readreg (sc, 0, 16)); lmc_ioctl()
314 LMC_EVENT_LOG(LMC_EVENT_FORCEDRESET, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16)); lmc_ioctl()
315 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
335 if (sc->lmc_cardtype != LMC_CARDTYPE_T1){ lmc_ioctl()
362 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
363 mii = lmc_mii_readreg (sc, 0, 16); lmc_ioctl()
368 lmc_gpio_mkinput(sc, 0xff); lmc_ioctl()
373 lmc_gpio_mkoutput(sc, LMC_GEP_RESET); lmc_ioctl()
381 sc->lmc_gpio &= ~LMC_GEP_RESET; lmc_ioctl()
382 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
390 sc->lmc_gpio |= LMC_GEP_RESET; lmc_ioctl()
391 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
397 lmc_gpio_mkinput(sc, 0xff); lmc_ioctl()
400 sc->lmc_media->set_link_status (sc, 1); lmc_ioctl()
401 sc->lmc_media->set_status (sc, NULL); lmc_ioctl()
402 // lmc_softreset(sc); lmc_ioctl()
407 lmc_led_on(sc, LMC_DS3_LED0); lmc_ioctl()
409 lmc_led_off(sc, LMC_DS3_LED0); lmc_ioctl()
410 lmc_led_on(sc, LMC_DS3_LED1); lmc_ioctl()
412 lmc_led_off(sc, LMC_DS3_LED1); lmc_ioctl()
413 lmc_led_on(sc, LMC_DS3_LED3); lmc_ioctl()
415 lmc_led_off(sc, LMC_DS3_LED3); lmc_ioctl()
416 lmc_led_on(sc, LMC_DS3_LED2); lmc_ioctl()
418 lmc_led_off(sc, LMC_DS3_LED2); lmc_ioctl()
421 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
434 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
435 mii = lmc_mii_readreg (sc, 0, 16); lmc_ioctl()
440 lmc_gpio_mkinput(sc, 0xff); lmc_ioctl()
445 lmc_gpio_mkoutput(sc, LMC_GEP_DP | LMC_GEP_RESET); lmc_ioctl()
453 sc->lmc_gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP); lmc_ioctl()
454 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
462 sc->lmc_gpio |= LMC_GEP_DP | LMC_GEP_RESET; lmc_ioctl()
463 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
468 while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 && lmc_ioctl()
476 lmc_gpio_mkinput(sc, 0xff); lmc_ioctl()
477 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
512 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_ioctl()
513 lmc_gpio_mkinput(sc, 0xff); lmc_ioctl()
526 sc->lmc_gpio = 0x00; lmc_ioctl()
527 sc->lmc_gpio &= ~LMC_GEP_DP; lmc_ioctl()
528 sc->lmc_gpio &= ~LMC_GEP_RESET; lmc_ioctl()
529 sc->lmc_gpio |= LMC_GEP_MODE; lmc_ioctl()
530 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
532 lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP | LMC_GEP_RESET); lmc_ioctl()
547 lmc_gpio_mkinput(sc, LMC_GEP_DP | LMC_GEP_RESET); lmc_ioctl()
552 sc->lmc_gpio = 0x00; lmc_ioctl()
553 sc->lmc_gpio |= LMC_GEP_MODE; lmc_ioctl()
554 sc->lmc_gpio |= LMC_GEP_DATA; lmc_ioctl()
555 sc->lmc_gpio |= LMC_GEP_CLK; lmc_ioctl()
556 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
558 lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK | LMC_GEP_MODE ); lmc_ioctl()
563 while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 && lmc_ioctl()
572 sc->lmc_gpio &= ~LMC_GEP_DATA; /* Data is 0 */ lmc_ioctl()
575 sc->lmc_gpio |= LMC_GEP_DATA; /* Data is 1 */ lmc_ioctl()
579 sc->lmc_gpio |= LMC_GEP_DATA; /* Assume it's 1 */ lmc_ioctl()
581 sc->lmc_gpio &= ~LMC_GEP_CLK; /* Clock to zero */ lmc_ioctl()
582 sc->lmc_gpio |= LMC_GEP_MODE; lmc_ioctl()
583 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
586 sc->lmc_gpio |= LMC_GEP_CLK; /* Put the clack back to one */ lmc_ioctl()
587 sc->lmc_gpio |= LMC_GEP_MODE; lmc_ioctl()
588 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_ioctl()
591 if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0){ lmc_ioctl()
594 else if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_DP) == 0){ lmc_ioctl()
601 lmc_gpio_mkinput(sc, 0xff); lmc_ioctl()
603 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET; lmc_ioctl()
604 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); lmc_ioctl()
606 sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET; lmc_ioctl()
607 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); lmc_ioctl()
608 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_ioctl()
622 sc->lmc_txfull = 0; lmc_ioctl()
628 ret = lmc_proto_ioctl (sc, ifr, cmd); lmc_ioctl()
642 lmc_softc_t *sc = dev_to_sc(dev); lmc_watchdog() local
649 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_watchdog()
651 if(sc->check != 0xBEAFCAFE){ lmc_watchdog()
653 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_watchdog()
662 LMC_CSR_WRITE (sc, csr_15, 0x00000011); lmc_watchdog()
663 sc->lmc_cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN; lmc_watchdog()
664 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); lmc_watchdog()
666 if (sc->lmc_ok == 0) lmc_watchdog()
669 LMC_EVENT_LOG(LMC_EVENT_WATCHDOG, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16)); lmc_watchdog()
674 if (sc->lmc_taint_tx == sc->lastlmc_taint_tx && lmc_watchdog()
675 sc->lmc_device->stats.tx_packets > sc->lasttx_packets && lmc_watchdog()
676 sc->tx_TimeoutInd == 0) lmc_watchdog()
680 sc->tx_TimeoutInd = 1; lmc_watchdog()
682 else if (sc->lmc_taint_tx == sc->lastlmc_taint_tx && lmc_watchdog()
683 sc->lmc_device->stats.tx_packets > sc->lasttx_packets && lmc_watchdog()
684 sc->tx_TimeoutInd) lmc_watchdog()
687 LMC_EVENT_LOG(LMC_EVENT_XMTINTTMO, LMC_CSR_READ (sc, csr_status), 0); lmc_watchdog()
689 sc->tx_TimeoutDisplay = 1; lmc_watchdog()
690 sc->extra_stats.tx_TimeoutCnt++; lmc_watchdog()
697 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); lmc_watchdog()
705 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg (sc, 0, 16), lmc_mii_readreg (sc, 0, 17)); lmc_watchdog()
708 sc->tx_TimeoutInd = 0; lmc_watchdog()
709 sc->lastlmc_taint_tx = sc->lmc_taint_tx; lmc_watchdog()
710 sc->lasttx_packets = sc->lmc_device->stats.tx_packets; lmc_watchdog()
712 sc->tx_TimeoutInd = 0; lmc_watchdog()
713 sc->lastlmc_taint_tx = sc->lmc_taint_tx; lmc_watchdog()
714 sc->lasttx_packets = sc->lmc_device->stats.tx_packets; lmc_watchdog()
720 link_status = sc->lmc_media->get_link_status (sc); lmc_watchdog()
726 if ((link_status == 0) && (sc->last_link_status != 0)) { lmc_watchdog()
728 sc->last_link_status = 0; lmc_watchdog()
729 /* lmc_reset (sc); Why reset??? The link can go down ok */ lmc_watchdog()
739 if (link_status != 0 && sc->last_link_status == 0) { lmc_watchdog()
741 sc->last_link_status = 1; lmc_watchdog()
742 /* lmc_reset (sc); Again why reset??? */ lmc_watchdog()
748 sc->lmc_media->watchdog(sc); lmc_watchdog()
754 LMC_CSR_WRITE(sc, csr_rxpoll, 0); lmc_watchdog()
760 if(sc->failed_ring == 1){ lmc_watchdog()
765 sc->failed_ring = 0; lmc_watchdog()
766 lmc_softreset(sc); lmc_watchdog()
768 if(sc->failed_recv_alloc == 1){ lmc_watchdog()
774 sc->failed_recv_alloc = 0; lmc_watchdog()
775 lmc_softreset(sc); lmc_watchdog()
784 ticks = LMC_CSR_READ (sc, csr_gp_timer); lmc_watchdog()
785 LMC_CSR_WRITE (sc, csr_gp_timer, 0xffffffffUL); lmc_watchdog()
786 sc->ictl.ticks = 0x0000ffff - (ticks & 0x0000ffff); lmc_watchdog()
791 sc->timer.expires = jiffies + (HZ); lmc_watchdog()
792 add_timer (&sc->timer); lmc_watchdog()
794 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_watchdog()
820 lmc_softc_t *sc; lmc_init_one() local
844 sc = kzalloc(sizeof(lmc_softc_t), GFP_KERNEL); lmc_init_one()
845 if (!sc) { lmc_init_one()
850 dev = alloc_hdlcdev(sc); lmc_init_one()
864 sc->lmc_device = dev; lmc_init_one()
865 sc->name = dev->name; lmc_init_one()
866 sc->if_type = LMC_PPP; lmc_init_one()
867 sc->check = 0xBEAFCAFE; lmc_init_one()
875 * Must have a valid sc and dev structure lmc_init_one()
877 lmc_proto_attach(sc); lmc_init_one()
881 spin_lock_init(&sc->lmc_lock); lmc_init_one()
894 sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN; lmc_init_one()
895 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; lmc_init_one()
909 sc->lmc_cardtype = LMC_CARDTYPE_HSSI; lmc_init_one()
910 sc->lmc_media = &lmc_hssi_media; lmc_init_one()
914 sc->lmc_cardtype = LMC_CARDTYPE_DS3; lmc_init_one()
915 sc->lmc_media = &lmc_ds3_media; lmc_init_one()
919 sc->lmc_cardtype = LMC_CARDTYPE_SSI; lmc_init_one()
920 sc->lmc_media = &lmc_ssi_media; lmc_init_one()
924 sc->lmc_cardtype = LMC_CARDTYPE_T1; lmc_init_one()
925 sc->lmc_media = &lmc_t1_media; lmc_init_one()
932 lmc_initcsrs (sc, dev->base_addr, 8); lmc_init_one()
934 lmc_gpio_mkinput (sc, 0xff); lmc_init_one()
935 sc->lmc_gpio = 0; /* drive no signals yet */ lmc_init_one()
937 sc->lmc_media->defaults (sc); lmc_init_one()
939 sc->lmc_media->set_link_status (sc, LMC_LINK_UP); lmc_init_one()
944 AdapModelNum = (lmc_mii_readreg (sc, 0, 3) & 0x3f0) >> 4; lmc_init_one()
961 LMC_CSR_WRITE (sc, csr_gp_timer, 0xFFFFFFFFUL); lmc_init_one()
963 sc->board_idx = cards_found++; lmc_init_one()
964 sc->extra_stats.check = STATCHECK; lmc_init_one()
965 sc->extra_stats.version_size = (DRIVER_VERSION << 16) + lmc_init_one()
966 sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats); lmc_init_one()
967 sc->extra_stats.lmc_cardtype = sc->lmc_cardtype; lmc_init_one()
969 sc->lmc_ok = 0; lmc_init_one()
970 sc->last_link_status = 0; lmc_init_one()
976 kfree(sc); lmc_init_one()
1005 lmc_softc_t *sc = dev_to_sc(dev); lmc_open() local
1010 lmc_led_on(sc, LMC_DS3_LED0); lmc_open()
1012 lmc_dec_reset(sc); lmc_open()
1013 lmc_reset(sc); lmc_open()
1015 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0); lmc_open()
1016 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16), lmc_open()
1017 lmc_mii_readreg(sc, 0, 17)); lmc_open()
1019 if (sc->lmc_ok){ lmc_open()
1024 lmc_softreset (sc); lmc_open()
1032 sc->got_irq = 1; lmc_open()
1035 sc->lmc_miireg16 |= LMC_MII16_LED_ALL; lmc_open()
1036 sc->lmc_media->set_link_status (sc, LMC_LINK_UP); lmc_open()
1041 sc->lmc_media->set_status (sc, NULL); lmc_open()
1045 sc->TxDescriptControlInit = ( lmc_open()
1053 if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16) { lmc_open()
1055 sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE; lmc_open()
1057 sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length); lmc_open()
1062 if ((err = lmc_proto_open(sc)) != 0) lmc_open()
1066 sc->extra_stats.tx_tbusy0++; lmc_open()
1071 sc->lmc_intrmask = 0; lmc_open()
1073 sc->lmc_intrmask |= (TULIP_STS_NORMALINTR lmc_open()
1083 LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask); lmc_open()
1085 sc->lmc_cmdmode |= TULIP_CMD_TXRUN; lmc_open()
1086 sc->lmc_cmdmode |= TULIP_CMD_RXRUN; lmc_open()
1087 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); lmc_open()
1089 sc->lmc_ok = 1; /* Run watchdog */ lmc_open()
1095 sc->last_link_status = 1; lmc_open()
1101 init_timer (&sc->timer); lmc_open()
1102 sc->timer.expires = jiffies + HZ; lmc_open()
1103 sc->timer.data = (unsigned long) dev; lmc_open()
1104 sc->timer.function = lmc_watchdog; lmc_open()
1105 add_timer (&sc->timer); lmc_open()
1118 lmc_softc_t *sc = dev_to_sc(dev); lmc_running_reset() local
1124 LMC_CSR_WRITE (sc, csr_intr, 0x00000000); lmc_running_reset()
1126 lmc_dec_reset (sc); lmc_running_reset()
1127 lmc_reset (sc); lmc_running_reset()
1128 lmc_softreset (sc); lmc_running_reset()
1129 /* sc->lmc_miireg16 |= LMC_MII16_LED_ALL; */ lmc_running_reset()
1130 sc->lmc_media->set_link_status (sc, 1); lmc_running_reset()
1131 sc->lmc_media->set_status (sc, NULL); lmc_running_reset()
1135 sc->lmc_txfull = 0; lmc_running_reset()
1136 sc->extra_stats.tx_tbusy0++; lmc_running_reset()
1138 sc->lmc_intrmask = TULIP_DEFAULT_INTR_MASK; lmc_running_reset()
1139 LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask); lmc_running_reset()
1141 sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN); lmc_running_reset()
1142 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); lmc_running_reset()
1155 lmc_softc_t *sc = dev_to_sc(dev); lmc_close() local
1159 sc->lmc_ok = 0; lmc_close()
1160 sc->lmc_media->set_link_status (sc, 0); lmc_close()
1161 del_timer (&sc->timer); lmc_close()
1162 lmc_proto_close(sc); lmc_close()
1174 lmc_softc_t *sc = dev_to_sc(dev); lmc_ifdown() local
1183 sc->extra_stats.tx_tbusy1++; lmc_ifdown()
1187 LMC_CSR_WRITE (sc, csr_intr, 0x00000000); lmc_ifdown()
1190 csr6 = LMC_CSR_READ (sc, csr_command); lmc_ifdown()
1193 LMC_CSR_WRITE (sc, csr_command, csr6); lmc_ifdown()
1195 sc->lmc_device->stats.rx_missed_errors += lmc_ifdown()
1196 LMC_CSR_READ(sc, csr_missed_frames) & 0xffff; lmc_ifdown()
1199 if(sc->got_irq == 1){ lmc_ifdown()
1201 sc->got_irq = 0; lmc_ifdown()
1207 struct sk_buff *skb = sc->lmc_rxq[i]; lmc_ifdown()
1208 sc->lmc_rxq[i] = NULL; lmc_ifdown()
1209 sc->lmc_rxring[i].status = 0; lmc_ifdown()
1210 sc->lmc_rxring[i].length = 0; lmc_ifdown()
1211 sc->lmc_rxring[i].buffer1 = 0xDEADBEEF; lmc_ifdown()
1214 sc->lmc_rxq[i] = NULL; lmc_ifdown()
1219 if (sc->lmc_txq[i] != NULL) lmc_ifdown()
1220 dev_kfree_skb(sc->lmc_txq[i]); lmc_ifdown()
1221 sc->lmc_txq[i] = NULL; lmc_ifdown()
1224 lmc_led_off (sc, LMC_MII16_LED_ALL); lmc_ifdown()
1227 sc->extra_stats.tx_tbusy0++; lmc_ifdown()
1240 lmc_softc_t *sc = dev_to_sc(dev); lmc_interrupt() local
1251 spin_lock(&sc->lmc_lock); lmc_interrupt()
1256 csr = LMC_CSR_READ (sc, csr_status); lmc_interrupt()
1261 if ( ! (csr & sc->lmc_intrmask)) { lmc_interrupt()
1268 while (csr & sc->lmc_intrmask) { lmc_interrupt()
1274 LMC_CSR_WRITE (sc, csr_status, csr); lmc_interrupt()
1303 sc->extra_stats.tx_NoCompleteCnt = 0; lmc_interrupt()
1305 badtx = sc->lmc_taint_tx; lmc_interrupt()
1308 while ((badtx < sc->lmc_next_tx)) { lmc_interrupt()
1309 stat = sc->lmc_txring[i].status; lmc_interrupt()
1312 sc->lmc_txring[i].length); lmc_interrupt()
1324 if (sc->lmc_txq[i] == NULL) lmc_interrupt()
1331 sc->lmc_device->stats.tx_errors++; lmc_interrupt()
1333 sc->lmc_device->stats.tx_aborted_errors++; lmc_interrupt()
1335 sc->lmc_device->stats.tx_carrier_errors++; lmc_interrupt()
1337 sc->lmc_device->stats.tx_window_errors++; lmc_interrupt()
1339 sc->lmc_device->stats.tx_fifo_errors++; lmc_interrupt()
1341 sc->lmc_device->stats.tx_bytes += sc->lmc_txring[i].length & 0x7ff; lmc_interrupt()
1343 sc->lmc_device->stats.tx_packets++; lmc_interrupt()
1346 // dev_kfree_skb(sc->lmc_txq[i]); lmc_interrupt()
1347 dev_kfree_skb_irq(sc->lmc_txq[i]); lmc_interrupt()
1348 sc->lmc_txq[i] = NULL; lmc_interrupt()
1354 if (sc->lmc_next_tx - badtx > LMC_TXDESCS) lmc_interrupt()
1360 sc->lmc_txfull = 0; lmc_interrupt()
1362 sc->extra_stats.tx_tbusy0++; lmc_interrupt()
1366 sc->extra_stats.dirtyTx = badtx; lmc_interrupt()
1367 sc->extra_stats.lmc_next_tx = sc->lmc_next_tx; lmc_interrupt()
1368 sc->extra_stats.lmc_txfull = sc->lmc_txfull; lmc_interrupt()
1370 sc->lmc_taint_tx = badtx; lmc_interrupt()
1394 lmc_dec_reset (sc); lmc_interrupt()
1395 lmc_reset (sc); lmc_interrupt()
1396 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); lmc_interrupt()
1398 lmc_mii_readreg (sc, 0, 16), lmc_interrupt()
1399 lmc_mii_readreg (sc, 0, 17)); lmc_interrupt()
1411 csr = LMC_CSR_READ (sc, csr_status); lmc_interrupt()
1417 spin_unlock(&sc->lmc_lock); lmc_interrupt()
1426 lmc_softc_t *sc = dev_to_sc(dev); lmc_start_xmit() local
1433 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_start_xmit()
1437 entry = sc->lmc_next_tx % LMC_TXDESCS; lmc_start_xmit()
1439 sc->lmc_txq[entry] = skb; lmc_start_xmit()
1440 sc->lmc_txring[entry].buffer1 = virt_to_bus (skb->data); lmc_start_xmit()
1446 if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS / 2) lmc_start_xmit()
1452 else if (sc->lmc_next_tx - sc->lmc_taint_tx == LMC_TXDESCS / 2) lmc_start_xmit()
1458 else if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS - 1) lmc_start_xmit()
1468 sc->lmc_txfull = 1; lmc_start_xmit()
1474 if (sc->lmc_next_tx - sc->lmc_taint_tx >= LMC_TXDESCS - 1) lmc_start_xmit()
1476 sc->lmc_txfull = 1; lmc_start_xmit()
1478 sc->extra_stats.tx_tbusy1++; lmc_start_xmit()
1488 flag = sc->lmc_txring[entry].length = (skb->len) | flag | lmc_start_xmit()
1489 sc->TxDescriptControlInit; lmc_start_xmit()
1495 sc->extra_stats.tx_NoCompleteCnt++; lmc_start_xmit()
1496 sc->lmc_next_tx++; lmc_start_xmit()
1500 sc->lmc_txring[entry].status = 0x80000000; lmc_start_xmit()
1503 LMC_CSR_WRITE (sc, csr_txpoll, 0); lmc_start_xmit()
1505 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_start_xmit()
1514 lmc_softc_t *sc = dev_to_sc(dev); lmc_rx() local
1526 lmc_led_on(sc, LMC_DS3_LED3); lmc_rx()
1530 i = sc->lmc_next_rx % LMC_RXDESCS; lmc_rx()
1531 next_rx = sc->lmc_next_rx; lmc_rx()
1533 while (((stat = sc->lmc_rxring[i].status) & LMC_RDES_OWN_BIT) != DESC_OWNED_BY_DC21X4) lmc_rx()
1540 sc->lmc_device->stats.rx_length_errors++; lmc_rx()
1546 sc->lmc_device->stats.rx_errors++; lmc_rx()
1547 sc->lmc_device->stats.rx_frame_errors++; lmc_rx()
1553 sc->lmc_device->stats.rx_errors++; lmc_rx()
1554 sc->lmc_device->stats.rx_crc_errors++; lmc_rx()
1559 sc->lmc_device->stats.rx_length_errors++; lmc_rx()
1564 if (len < sc->lmc_crcSize + 2) { lmc_rx()
1565 sc->lmc_device->stats.rx_length_errors++; lmc_rx()
1566 sc->extra_stats.rx_SmallPktCnt++; lmc_rx()
1575 len -= sc->lmc_crcSize; lmc_rx()
1577 skb = sc->lmc_rxq[i]; lmc_rx()
1587 sc->lmc_rxq[i] = nsb; lmc_rx()
1589 sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb)); lmc_rx()
1591 sc->failed_recv_alloc = 1; lmc_rx()
1595 sc->lmc_device->stats.rx_packets++; lmc_rx()
1596 sc->lmc_device->stats.rx_bytes += len; lmc_rx()
1613 sc->lmc_rxq[i] = NULL; lmc_rx()
1614 sc->lmc_rxring[i].buffer1 = 0x0; lmc_rx()
1617 skb->protocol = lmc_proto_type(sc, skb); lmc_rx()
1621 lmc_proto_netif(sc, skb); lmc_rx()
1628 sc->lmc_rxq[i] = nsb; lmc_rx()
1630 sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb)); lmc_rx()
1642 sc->extra_stats.rx_BuffAllocErr++; lmc_rx()
1644 sc->failed_recv_alloc = 1; lmc_rx()
1655 nsb->protocol = lmc_proto_type(sc, nsb); lmc_rx()
1659 lmc_proto_netif(sc, nsb); lmc_rx()
1664 sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4; lmc_rx()
1666 sc->lmc_next_rx++; lmc_rx()
1667 i = sc->lmc_next_rx % LMC_RXDESCS; lmc_rx()
1677 sc->extra_stats.rx_BadPktSurgeCnt++; lmc_rx()
1679 sc->extra_stats.rx_BadPktSurgeCnt); lmc_rx()
1683 if (rxIntLoopCnt > sc->extra_stats.rxIntLoopCnt) lmc_rx()
1684 sc->extra_stats.rxIntLoopCnt = rxIntLoopCnt; /* debug -baz */ lmc_rx()
1691 if ((sc->lmc_rxring[i].status & LMC_RDES_OWN_BIT) lmc_rx()
1702 lmc_led_off(sc, LMC_DS3_LED3); lmc_rx()
1713 lmc_softc_t *sc = dev_to_sc(dev); lmc_get_stats() local
1718 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_get_stats()
1720 sc->lmc_device->stats.rx_missed_errors += LMC_CSR_READ(sc, csr_missed_frames) & 0xffff; lmc_get_stats()
1722 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_get_stats()
1726 return &sc->lmc_device->stats; lmc_get_stats()
1738 unsigned lmc_mii_readreg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno) /*fold00*/ lmc_mii_readreg() argument
1744 lmc_trace(sc->lmc_device, "lmc_mii_readreg in"); lmc_mii_readreg()
1746 LMC_MII_SYNC (sc); lmc_mii_readreg()
1748 lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync"); lmc_mii_readreg()
1754 LMC_CSR_WRITE (sc, csr_9, dataval); lmc_mii_readreg()
1757 LMC_CSR_WRITE (sc, csr_9, dataval | 0x10000); lmc_mii_readreg()
1762 lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1"); lmc_mii_readreg()
1766 LMC_CSR_WRITE (sc, csr_9, 0x40000); lmc_mii_readreg()
1769 retval = (retval << 1) | ((LMC_CSR_READ (sc, csr_9) & 0x80000) ? 1 : 0); lmc_mii_readreg()
1770 LMC_CSR_WRITE (sc, csr_9, 0x40000 | 0x10000); lmc_mii_readreg()
1775 lmc_trace(sc->lmc_device, "lmc_mii_readreg out"); lmc_mii_readreg()
1780 void lmc_mii_writereg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno, unsigned data) /*fold00*/ lmc_mii_writereg() argument
1785 lmc_trace(sc->lmc_device, "lmc_mii_writereg in"); lmc_mii_writereg()
1787 LMC_MII_SYNC (sc); lmc_mii_writereg()
1799 LMC_CSR_WRITE (sc, csr_9, datav); lmc_mii_writereg()
1802 LMC_CSR_WRITE (sc, csr_9, (datav | 0x10000)); lmc_mii_writereg()
1811 LMC_CSR_WRITE (sc, csr_9, 0x40000); lmc_mii_writereg()
1814 LMC_CSR_WRITE (sc, csr_9, 0x50000); lmc_mii_writereg()
1820 lmc_trace(sc->lmc_device, "lmc_mii_writereg out"); lmc_mii_writereg()
1823 static void lmc_softreset (lmc_softc_t * const sc) /*fold00*/ lmc_softreset() argument
1827 lmc_trace(sc->lmc_device, "lmc_softreset in"); lmc_softreset()
1830 sc->lmc_txfull = 0; lmc_softreset()
1831 sc->lmc_next_rx = 0; lmc_softreset()
1832 sc->lmc_next_tx = 0; lmc_softreset()
1833 sc->lmc_taint_rx = 0; lmc_softreset()
1834 sc->lmc_taint_tx = 0; lmc_softreset()
1846 if (sc->lmc_rxq[i] == NULL) lmc_softreset()
1850 printk(KERN_WARNING "%s: Failed to allocate receiver ring, will try again\n", sc->name); lmc_softreset()
1851 sc->failed_ring = 1; lmc_softreset()
1855 sc->lmc_rxq[i] = skb; lmc_softreset()
1860 skb = sc->lmc_rxq[i]; lmc_softreset()
1863 skb->dev = sc->lmc_device; lmc_softreset()
1866 sc->lmc_rxring[i].status = 0x80000000; lmc_softreset()
1869 sc->lmc_rxring[i].length = skb_tailroom(skb); lmc_softreset()
1874 sc->lmc_rxring[i].buffer1 = virt_to_bus (skb->data); lmc_softreset()
1877 sc->lmc_rxring[i].buffer2 = virt_to_bus (&sc->lmc_rxring[i + 1]); lmc_softreset()
1885 sc->lmc_rxring[i - 1].length |= 0x02000000; /* Set end of buffers flag */ lmc_softreset()
1886 sc->lmc_rxring[i - 1].buffer2 = virt_to_bus(&sc->lmc_rxring[0]); /* Point back to the start */ lmc_softreset()
1888 LMC_CSR_WRITE (sc, csr_rxlist, virt_to_bus (sc->lmc_rxring)); /* write base address */ lmc_softreset()
1893 if (sc->lmc_txq[i] != NULL){ /* have buffer */ lmc_softreset()
1894 dev_kfree_skb(sc->lmc_txq[i]); /* free it */ lmc_softreset()
1895 sc->lmc_device->stats.tx_dropped++; /* We just dropped a packet */ lmc_softreset()
1897 sc->lmc_txq[i] = NULL; lmc_softreset()
1898 sc->lmc_txring[i].status = 0x00000000; lmc_softreset()
1899 sc->lmc_txring[i].buffer2 = virt_to_bus (&sc->lmc_txring[i + 1]); lmc_softreset()
1901 sc->lmc_txring[i - 1].buffer2 = virt_to_bus (&sc->lmc_txring[0]); lmc_softreset()
1902 LMC_CSR_WRITE (sc, csr_txlist, virt_to_bus (sc->lmc_txring)); lmc_softreset()
1904 lmc_trace(sc->lmc_device, "lmc_softreset out"); lmc_softreset()
1907 void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits) /*fold00*/ lmc_gpio_mkinput() argument
1909 lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in"); lmc_gpio_mkinput()
1910 sc->lmc_gpio_io &= ~bits; lmc_gpio_mkinput()
1911 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io)); lmc_gpio_mkinput()
1912 lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out"); lmc_gpio_mkinput()
1915 void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits) /*fold00*/ lmc_gpio_mkoutput() argument
1917 lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in"); lmc_gpio_mkoutput()
1918 sc->lmc_gpio_io |= bits; lmc_gpio_mkoutput()
1919 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io)); lmc_gpio_mkoutput()
1920 lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out"); lmc_gpio_mkoutput()
1923 void lmc_led_on(lmc_softc_t * const sc, u32 led) /*fold00*/ lmc_led_on() argument
1925 lmc_trace(sc->lmc_device, "lmc_led_on in"); lmc_led_on()
1926 if((~sc->lmc_miireg16) & led){ /* Already on! */ lmc_led_on()
1927 lmc_trace(sc->lmc_device, "lmc_led_on aon out"); lmc_led_on()
1931 sc->lmc_miireg16 &= ~led; lmc_led_on()
1932 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); lmc_led_on()
1933 lmc_trace(sc->lmc_device, "lmc_led_on out"); lmc_led_on()
1936 void lmc_led_off(lmc_softc_t * const sc, u32 led) /*fold00*/ lmc_led_off() argument
1938 lmc_trace(sc->lmc_device, "lmc_led_off in"); lmc_led_off()
1939 if(sc->lmc_miireg16 & led){ /* Already set don't do anything */ lmc_led_off()
1940 lmc_trace(sc->lmc_device, "lmc_led_off aoff out"); lmc_led_off()
1944 sc->lmc_miireg16 |= led; lmc_led_off()
1945 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); lmc_led_off()
1946 lmc_trace(sc->lmc_device, "lmc_led_off out"); lmc_led_off()
1949 static void lmc_reset(lmc_softc_t * const sc) /*fold00*/ lmc_reset() argument
1951 lmc_trace(sc->lmc_device, "lmc_reset in"); lmc_reset()
1952 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET; lmc_reset()
1953 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); lmc_reset()
1955 sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET; lmc_reset()
1956 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); lmc_reset()
1961 lmc_gpio_mkoutput(sc, LMC_GEP_RESET); lmc_reset()
1968 sc->lmc_gpio &= ~(LMC_GEP_RESET); lmc_reset()
1969 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); lmc_reset()
1979 lmc_gpio_mkinput(sc, LMC_GEP_RESET); lmc_reset()
1984 sc->lmc_media->init(sc); lmc_reset()
1986 sc->extra_stats.resetCount++; lmc_reset()
1987 lmc_trace(sc->lmc_device, "lmc_reset out"); lmc_reset()
1990 static void lmc_dec_reset(lmc_softc_t * const sc) /*fold00*/ lmc_dec_reset() argument
1993 lmc_trace(sc->lmc_device, "lmc_dec_reset in"); lmc_dec_reset()
1998 sc->lmc_intrmask = 0; lmc_dec_reset()
1999 LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask); lmc_dec_reset()
2007 LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET); lmc_dec_reset()
2010 sc->lmc_busmode = LMC_CSR_READ(sc, csr_busmode); lmc_dec_reset()
2011 sc->lmc_busmode = 0x00100000; lmc_dec_reset()
2012 sc->lmc_busmode &= ~TULIP_BUSMODE_SWRESET; lmc_dec_reset()
2013 LMC_CSR_WRITE(sc, csr_busmode, sc->lmc_busmode); lmc_dec_reset()
2015 sc->lmc_cmdmode = LMC_CSR_READ(sc, csr_command); lmc_dec_reset()
2027 sc->lmc_cmdmode |= ( TULIP_CMD_PROMISCUOUS lmc_dec_reset()
2035 sc->lmc_cmdmode &= ~( TULIP_CMD_OPERMODE lmc_dec_reset()
2041 LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode); lmc_dec_reset()
2046 val = LMC_CSR_READ(sc, csr_sia_general); lmc_dec_reset()
2048 LMC_CSR_WRITE(sc, csr_sia_general, val); lmc_dec_reset()
2050 lmc_trace(sc->lmc_device, "lmc_dec_reset out"); lmc_dec_reset()
2053 static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, /*fold00*/ lmc_initcsrs() argument
2056 lmc_trace(sc->lmc_device, "lmc_initcsrs in"); lmc_initcsrs()
2057 sc->lmc_csrs.csr_busmode = csr_base + 0 * csr_size; lmc_initcsrs()
2058 sc->lmc_csrs.csr_txpoll = csr_base + 1 * csr_size; lmc_initcsrs()
2059 sc->lmc_csrs.csr_rxpoll = csr_base + 2 * csr_size; lmc_initcsrs()
2060 sc->lmc_csrs.csr_rxlist = csr_base + 3 * csr_size; lmc_initcsrs()
2061 sc->lmc_csrs.csr_txlist = csr_base + 4 * csr_size; lmc_initcsrs()
2062 sc->lmc_csrs.csr_status = csr_base + 5 * csr_size; lmc_initcsrs()
2063 sc->lmc_csrs.csr_command = csr_base + 6 * csr_size; lmc_initcsrs()
2064 sc->lmc_csrs.csr_intr = csr_base + 7 * csr_size; lmc_initcsrs()
2065 sc->lmc_csrs.csr_missed_frames = csr_base + 8 * csr_size; lmc_initcsrs()
2066 sc->lmc_csrs.csr_9 = csr_base + 9 * csr_size; lmc_initcsrs()
2067 sc->lmc_csrs.csr_10 = csr_base + 10 * csr_size; lmc_initcsrs()
2068 sc->lmc_csrs.csr_11 = csr_base + 11 * csr_size; lmc_initcsrs()
2069 sc->lmc_csrs.csr_12 = csr_base + 12 * csr_size; lmc_initcsrs()
2070 sc->lmc_csrs.csr_13 = csr_base + 13 * csr_size; lmc_initcsrs()
2071 sc->lmc_csrs.csr_14 = csr_base + 14 * csr_size; lmc_initcsrs()
2072 sc->lmc_csrs.csr_15 = csr_base + 15 * csr_size; lmc_initcsrs()
2073 lmc_trace(sc->lmc_device, "lmc_initcsrs out"); lmc_initcsrs()
2078 lmc_softc_t *sc = dev_to_sc(dev); lmc_driver_timeout() local
2084 spin_lock_irqsave(&sc->lmc_lock, flags); lmc_driver_timeout()
2088 sc->extra_stats.tx_tbusy_calls++; lmc_driver_timeout()
2100 LMC_CSR_READ (sc, csr_status), lmc_driver_timeout()
2101 sc->extra_stats.tx_ProcTimeout); lmc_driver_timeout()
2105 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); lmc_driver_timeout()
2107 lmc_mii_readreg (sc, 0, 16), lmc_driver_timeout()
2108 lmc_mii_readreg (sc, 0, 17)); lmc_driver_timeout()
2111 csr6 = LMC_CSR_READ (sc, csr_command); lmc_driver_timeout()
2112 LMC_CSR_WRITE (sc, csr_command, csr6 | 0x0002); lmc_driver_timeout()
2113 LMC_CSR_WRITE (sc, csr_command, csr6 | 0x2002); lmc_driver_timeout()
2116 LMC_CSR_WRITE (sc, csr_txpoll, 0); lmc_driver_timeout()
2118 sc->lmc_device->stats.tx_errors++; lmc_driver_timeout()
2119 sc->extra_stats.tx_ProcTimeout++; /* -baz */ lmc_driver_timeout()
2125 spin_unlock_irqrestore(&sc->lmc_lock, flags); lmc_driver_timeout()
H A Dlmc_proto.c50 void lmc_proto_attach(lmc_softc_t *sc) /*FOLD00*/ lmc_proto_attach() argument
52 lmc_trace(sc->lmc_device, "lmc_proto_attach in"); lmc_proto_attach()
53 if (sc->if_type == LMC_NET) { lmc_proto_attach()
54 struct net_device *dev = sc->lmc_device; lmc_proto_attach()
62 lmc_trace(sc->lmc_device, "lmc_proto_attach out"); lmc_proto_attach()
65 int lmc_proto_ioctl(lmc_softc_t *sc, struct ifreq *ifr, int cmd) lmc_proto_ioctl() argument
67 lmc_trace(sc->lmc_device, "lmc_proto_ioctl"); lmc_proto_ioctl()
68 if (sc->if_type == LMC_PPP) lmc_proto_ioctl()
69 return hdlc_ioctl(sc->lmc_device, ifr, cmd); lmc_proto_ioctl()
73 int lmc_proto_open(lmc_softc_t *sc) lmc_proto_open() argument
77 lmc_trace(sc->lmc_device, "lmc_proto_open in"); lmc_proto_open()
79 if (sc->if_type == LMC_PPP) { lmc_proto_open()
80 ret = hdlc_open(sc->lmc_device); lmc_proto_open()
83 sc->name, ret); lmc_proto_open()
86 lmc_trace(sc->lmc_device, "lmc_proto_open out"); lmc_proto_open()
90 void lmc_proto_close(lmc_softc_t *sc) lmc_proto_close() argument
92 lmc_trace(sc->lmc_device, "lmc_proto_close in"); lmc_proto_close()
94 if (sc->if_type == LMC_PPP) lmc_proto_close()
95 hdlc_close(sc->lmc_device); lmc_proto_close()
97 lmc_trace(sc->lmc_device, "lmc_proto_close out"); lmc_proto_close()
100 __be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb) /*FOLD00*/ lmc_proto_type() argument
102 lmc_trace(sc->lmc_device, "lmc_proto_type in"); lmc_proto_type()
103 switch(sc->if_type){ lmc_proto_type()
105 return hdlc_type_trans(skb, sc->lmc_device); lmc_proto_type()
114 printk(KERN_WARNING "%s: No protocol set for this interface, assuming 802.2 (which is wrong!!)\n", sc->name); lmc_proto_type()
118 lmc_trace(sc->lmc_device, "lmc_proto_tye out"); lmc_proto_type()
122 void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb) /*FOLD00*/ lmc_proto_netif() argument
124 lmc_trace(sc->lmc_device, "lmc_proto_netif in"); lmc_proto_netif()
125 switch(sc->if_type){ lmc_proto_netif()
134 lmc_trace(sc->lmc_device, "lmc_proto_netif out"); lmc_proto_netif()
H A Dlmc.h10 unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned
12 void lmc_mii_writereg(lmc_softc_t * const sc, unsigned devaddr,
18 void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits);
19 void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits);
H A Dlmc_var.h33 #define LMC_PRINTF_ARGS (sc->lmc_device->name)
44 #define LMC_CSR_READ(sc, csr) \
45 inl((sc)->lmc_csrs.csr)
46 #define LMC_CSR_WRITE(sc, reg, val) \
47 outl((val), (sc)->lmc_csrs.reg)
57 #define lmc_delay() inl(sc->lmc_csrs.csr_9)
60 #define LMC_MII_SYNC(sc) do {int n=32; while( n >= 0 ) { \
61 LMC_CSR_WRITE((sc), csr_9, 0x20000); \
63 LMC_CSR_WRITE((sc), csr_9, 0x30000); \
/linux-4.1.27/drivers/net/wireless/ath/ath9k/
H A Dchannel.c23 static int ath_set_channel(struct ath_softc *sc) ath_set_channel() argument
25 struct ath_hw *ah = sc->sc_ah; ath_set_channel()
27 struct ieee80211_hw *hw = sc->hw; ath_set_channel()
29 struct cfg80211_chan_def *chandef = &sc->cur_chan->chandef; ath_set_channel()
46 ath_update_survey_stats(sc); ath_set_channel()
56 if (!sc->cur_chan->offchannel && sc->cur_survey != &sc->survey[pos]) { ath_set_channel()
57 if (sc->cur_survey) ath_set_channel()
58 sc->cur_survey->filled &= ~SURVEY_INFO_IN_USE; ath_set_channel()
60 sc->cur_survey = &sc->survey[pos]; ath_set_channel()
62 memset(sc->cur_survey, 0, sizeof(struct survey_info)); ath_set_channel()
63 sc->cur_survey->filled |= SURVEY_INFO_IN_USE; ath_set_channel()
64 } else if (!(sc->survey[pos].filled & SURVEY_INFO_IN_USE)) { ath_set_channel()
65 memset(&sc->survey[pos], 0, sizeof(struct survey_info)); ath_set_channel()
68 hchan = &sc->sc_ah->channels[pos]; ath_set_channel()
69 r = ath_reset(sc, hchan); ath_set_channel()
78 ath_update_survey_nf(sc, old_pos); ath_set_channel()
95 sc->spec_priv.spectral_mode == SPECTRAL_CHANSCAN) ath_set_channel()
96 ath9k_cmn_spectral_scan_trigger(common, &sc->spec_priv); ath_set_channel()
102 void ath_chanctx_init(struct ath_softc *sc) ath_chanctx_init() argument
105 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_init()
116 ctx = &sc->chanctx[i]; ath_chanctx_init()
126 void ath_chanctx_set_channel(struct ath_softc *sc, struct ath_chanctx *ctx, ath_chanctx_set_channel() argument
129 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_set_channel()
132 spin_lock_bh(&sc->chan_lock); ath_chanctx_set_channel()
135 cur_chan = sc->cur_chan == ctx; ath_chanctx_set_channel()
136 spin_unlock_bh(&sc->chan_lock); ath_chanctx_set_channel()
144 ath_set_channel(sc); ath_chanctx_set_channel()
153 struct ath_chanctx* ath_is_go_chanctx_present(struct ath_softc *sc) ath_is_go_chanctx_present() argument
159 spin_lock_bh(&sc->chan_lock); ath_is_go_chanctx_present()
161 ath_for_each_chanctx(sc, ctx) { ath_for_each_chanctx()
169 spin_unlock_bh(&sc->chan_lock); ath_for_each_chanctx()
175 spin_unlock_bh(&sc->chan_lock);
229 void ath_chanctx_check_active(struct ath_softc *sc, struct ath_chanctx *ctx) ath_chanctx_check_active() argument
231 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_check_active()
240 if (ctx == &sc->offchannel.chan) { ath_chanctx_check_active()
241 spin_lock_bh(&sc->chan_lock); ath_chanctx_check_active()
243 if (likely(sc->sched.channel_switch_time)) ath_chanctx_check_active()
245 usecs_to_jiffies(sc->sched.channel_switch_time); ath_chanctx_check_active()
250 spin_unlock_bh(&sc->chan_lock); ath_chanctx_check_active()
278 ath_for_each_chanctx(sc, ctx) { ath_for_each_chanctx()
284 spin_lock_bh(&sc->chan_lock);
289 spin_unlock_bh(&sc->chan_lock);
293 ictx->flush_timeout = usecs_to_jiffies(sc->sched.channel_switch_time);
296 spin_unlock_bh(&sc->chan_lock);
300 spin_unlock_bh(&sc->chan_lock);
303 ath_chanctx_event(sc, NULL,
309 ath_chanctx_get_next(struct ath_softc *sc, struct ath_chanctx *ctx) ath_chanctx_get_next() argument
311 int idx = ctx - &sc->chanctx[0]; ath_chanctx_get_next()
313 return &sc->chanctx[!idx]; ath_chanctx_get_next()
316 static void ath_chanctx_adjust_tbtt_delta(struct ath_softc *sc) ath_chanctx_adjust_tbtt_delta() argument
323 beacon_int = TU_TO_USEC(sc->cur_chan->beacon.beacon_interval); ath_chanctx_adjust_tbtt_delta()
325 cur = sc->cur_chan; ath_chanctx_adjust_tbtt_delta()
326 prev = ath_chanctx_get_next(sc, cur); ath_chanctx_adjust_tbtt_delta()
355 static void ath_chanctx_setup_timer(struct ath_softc *sc, u32 tsf_time) ath_chanctx_setup_timer() argument
357 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_setup_timer()
358 struct ath_hw *ah = sc->sc_ah; ath_chanctx_setup_timer()
360 ath9k_hw_gen_timer_start(ah, sc->p2p_ps_timer, tsf_time, 1000000); ath_chanctx_setup_timer()
363 mod_timer(&sc->sched.timer, jiffies + tsf_time); ath_chanctx_setup_timer()
369 static void ath_chanctx_handle_bmiss(struct ath_softc *sc, ath_chanctx_handle_bmiss() argument
379 if (ctx->active && sc->sched.extend_absence) { ath_chanctx_handle_bmiss()
381 sc->sched.extend_absence = false; ath_chanctx_handle_bmiss()
388 if (ctx->active && sc->sched.beacon_miss >= 2) { ath_chanctx_handle_bmiss()
390 sc->sched.extend_absence = true; ath_chanctx_handle_bmiss()
394 static void ath_chanctx_offchannel_noa(struct ath_softc *sc, ath_chanctx_offchannel_noa() argument
399 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_offchannel_noa()
403 avp->offchannel_duration = sc->sched.offchannel_duration; ath_chanctx_offchannel_noa()
420 static void ath_chanctx_set_periodic_noa(struct ath_softc *sc, ath_chanctx_set_periodic_noa() argument
426 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_set_periodic_noa()
431 if (sc->sched.extend_absence) ath_chanctx_set_periodic_noa()
433 sc->sched.channel_switch_time; ath_chanctx_set_periodic_noa()
437 sc->sched.channel_switch_time; ath_chanctx_set_periodic_noa()
440 sc->sched.extend_absence) ath_chanctx_set_periodic_noa()
453 static void ath_chanctx_set_oneshot_noa(struct ath_softc *sc, ath_chanctx_set_oneshot_noa() argument
458 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_set_oneshot_noa()
464 avp->noa_duration = duration + sc->sched.channel_switch_time; ath_chanctx_set_oneshot_noa()
474 void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif, ath_chanctx_event() argument
477 struct ath_hw *ah = sc->sc_ah; ath_chanctx_event()
488 spin_lock_bh(&sc->chan_lock); ath_chanctx_event()
491 sc->cur_chan->chandef.center_freq1, ath_chanctx_event()
493 chanctx_state_string(sc->sched.state)); ath_chanctx_event()
508 if (avp->chanctx != sc->cur_chan) { ath_chanctx_event()
514 if (sc->sched.offchannel_pending && !sc->sched.wait_switch) { ath_chanctx_event()
515 sc->sched.offchannel_pending = false; ath_chanctx_event()
516 sc->next_chan = &sc->offchannel.chan; ath_chanctx_event()
517 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON; ath_chanctx_event()
522 ctx = ath_chanctx_get_next(sc, sc->cur_chan); ath_chanctx_event()
523 if (ctx->active && sc->sched.state == ATH_CHANCTX_STATE_IDLE) { ath_chanctx_event()
524 sc->next_chan = ctx; ath_chanctx_event()
525 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON; ath_chanctx_event()
531 if (sc->sched.state == ATH_CHANCTX_STATE_WAIT_FOR_TIMER) { ath_chanctx_event()
532 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON; ath_chanctx_event()
537 if (sc->sched.mgd_prepare_tx) ath_chanctx_event()
538 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON; ath_chanctx_event()
547 sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_BEACON) { ath_chanctx_event()
555 if (sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_BEACON) ath_chanctx_event()
560 sc->sched.beacon_pending = true; ath_chanctx_event()
561 sc->sched.next_tbtt = REG_READ(ah, AR_NEXT_TBTT_TIMER); ath_chanctx_event()
563 cur_conf = &sc->cur_chan->beacon; ath_chanctx_event()
567 tsf_time = sc->sched.next_tbtt + beacon_int / 4; ath_chanctx_event()
568 sc->sched.switch_start_time = tsf_time; ath_chanctx_event()
569 sc->cur_chan->last_beacon = sc->sched.next_tbtt; ath_chanctx_event()
576 if (sc->next_chan == &sc->offchannel.chan) { ath_chanctx_event()
577 ath_chanctx_offchannel_noa(sc, ctx, avp, tsf_time); ath_chanctx_event()
581 ath_chanctx_handle_bmiss(sc, ctx, avp); ath_chanctx_event()
589 if (sc->sched.mgd_prepare_tx) { ath_chanctx_event()
590 ath_chanctx_set_oneshot_noa(sc, avp, tsf_time, ath_chanctx_event()
605 (!avp->noa_duration || sc->sched.force_noa_update)) ath_chanctx_event()
606 ath_chanctx_set_periodic_noa(sc, avp, cur_conf, ath_chanctx_event()
609 if (ctx->active && sc->sched.force_noa_update) ath_chanctx_event()
610 sc->sched.force_noa_update = false; ath_chanctx_event()
614 if (!sc->sched.beacon_pending) { ath_chanctx_event()
620 sc->sched.beacon_pending = false; ath_chanctx_event()
622 if (sc->sched.mgd_prepare_tx) { ath_chanctx_event()
623 sc->sched.mgd_prepare_tx = false; ath_chanctx_event()
624 complete(&sc->go_beacon); ath_chanctx_event()
630 if (sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_BEACON) ath_chanctx_event()
636 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_TIMER; ath_chanctx_event()
637 ath_chanctx_setup_timer(sc, sc->sched.switch_start_time); ath_chanctx_event()
640 if (sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_TIMER) ath_chanctx_event()
643 if (!sc->cur_chan->switch_after_beacon && ath_chanctx_event()
644 sc->sched.beacon_pending) ath_chanctx_event()
645 sc->sched.beacon_miss++; ath_chanctx_event()
650 sc->sched.state = ATH_CHANCTX_STATE_SWITCH; ath_chanctx_event()
651 ieee80211_queue_work(sc->hw, &sc->chanctx_work); ath_chanctx_event()
655 sc->cur_chan == &sc->offchannel.chan) ath_chanctx_event()
658 sc->sched.beacon_pending = false; ath_chanctx_event()
659 sc->sched.beacon_miss = 0; ath_chanctx_event()
661 if (sc->sched.state == ATH_CHANCTX_STATE_FORCE_ACTIVE || ath_chanctx_event()
662 !sc->sched.beacon_adjust || ath_chanctx_event()
663 !sc->cur_chan->tsf_val) ath_chanctx_event()
666 ath_chanctx_adjust_tbtt_delta(sc); ath_chanctx_event()
671 tsf_time = sc->sched.switch_start_time; ath_chanctx_event()
672 tsf_time -= (u32) sc->cur_chan->tsf_val + ath_chanctx_event()
673 ath9k_hw_get_tsf_offset(&sc->cur_chan->tsf_ts, NULL); ath_chanctx_event()
676 sc->sched.beacon_adjust = false; ath_chanctx_event()
677 ath_chanctx_setup_timer(sc, tsf_time); ath_chanctx_event()
680 if (sc->sched.state != ATH_CHANCTX_STATE_FORCE_ACTIVE || ath_chanctx_event()
681 avp->chanctx != sc->cur_chan) ath_chanctx_event()
687 sc->sched.state = ATH_CHANCTX_STATE_IDLE; ath_chanctx_event()
691 sc->sched.state == ATH_CHANCTX_STATE_FORCE_ACTIVE || ath_chanctx_event()
692 sc->cur_chan->switch_after_beacon || ath_chanctx_event()
693 sc->cur_chan == &sc->offchannel.chan) ath_chanctx_event()
699 sc->next_chan = ath_chanctx_get_next(sc, sc->cur_chan); ath_chanctx_event()
700 cur_conf = &sc->cur_chan->beacon; ath_chanctx_event()
705 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_TIMER; ath_chanctx_event()
706 sc->sched.wait_switch = false; ath_chanctx_event()
710 if (sc->sched.extend_absence) { ath_chanctx_event()
711 sc->sched.beacon_miss = 0; ath_chanctx_event()
715 tsf_time -= sc->sched.channel_switch_time; ath_chanctx_event()
716 tsf_time += ath9k_hw_gettsf32(sc->sc_ah); ath_chanctx_event()
717 sc->sched.switch_start_time = tsf_time; ath_chanctx_event()
719 ath_chanctx_setup_timer(sc, tsf_time); ath_chanctx_event()
720 sc->sched.beacon_pending = true; ath_chanctx_event()
721 sc->sched.beacon_adjust = true; ath_chanctx_event()
724 if (sc->cur_chan == &sc->offchannel.chan || ath_chanctx_event()
725 sc->cur_chan->switch_after_beacon) ath_chanctx_event()
728 sc->next_chan = ath_chanctx_get_next(sc, sc->cur_chan); ath_chanctx_event()
729 ieee80211_queue_work(sc->hw, &sc->chanctx_work); ath_chanctx_event()
732 if (sc->cur_chan->assigned) { ath_chanctx_event()
733 if (sc->next_chan && !sc->next_chan->assigned && ath_chanctx_event()
734 sc->next_chan != &sc->offchannel.chan) ath_chanctx_event()
735 sc->sched.state = ATH_CHANCTX_STATE_IDLE; ath_chanctx_event()
739 ctx = ath_chanctx_get_next(sc, sc->cur_chan); ath_chanctx_event()
740 sc->sched.state = ATH_CHANCTX_STATE_IDLE; ath_chanctx_event()
744 sc->next_chan = ctx; ath_chanctx_event()
745 ieee80211_queue_work(sc->hw, &sc->chanctx_work); ath_chanctx_event()
753 spin_unlock_bh(&sc->chan_lock); ath_chanctx_event()
756 void ath_chanctx_beacon_sent_ev(struct ath_softc *sc, ath_chanctx_beacon_sent_ev() argument
759 if (sc->sched.beacon_pending) ath_chanctx_beacon_sent_ev()
760 ath_chanctx_event(sc, NULL, ev); ath_chanctx_beacon_sent_ev()
763 void ath_chanctx_beacon_recv_ev(struct ath_softc *sc, ath_chanctx_beacon_recv_ev() argument
766 ath_chanctx_event(sc, NULL, ev); ath_chanctx_beacon_recv_ev()
769 static int ath_scan_channel_duration(struct ath_softc *sc, ath_scan_channel_duration() argument
772 struct cfg80211_scan_request *req = sc->offchannel.scan_req; ath_scan_channel_duration()
780 static void ath_chanctx_switch(struct ath_softc *sc, struct ath_chanctx *ctx, ath_chanctx_switch() argument
783 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_switch()
785 spin_lock_bh(&sc->chan_lock); ath_chanctx_switch()
788 (sc->cur_chan != ctx) && (ctx == &sc->offchannel.chan)) { ath_chanctx_switch()
792 sc->sched.offchannel_pending = true; ath_chanctx_switch()
793 sc->sched.wait_switch = true; ath_chanctx_switch()
794 sc->sched.offchannel_duration = ath_chanctx_switch()
795 jiffies_to_usecs(sc->offchannel.duration) + ath_chanctx_switch()
796 sc->sched.channel_switch_time; ath_chanctx_switch()
798 spin_unlock_bh(&sc->chan_lock); ath_chanctx_switch()
804 sc->next_chan = ctx; ath_chanctx_switch()
811 if (sc->next_chan == &sc->offchannel.chan) { ath_chanctx_switch()
812 sc->sched.offchannel_duration = ath_chanctx_switch()
813 jiffies_to_usecs(sc->offchannel.duration) + ath_chanctx_switch()
814 sc->sched.channel_switch_time; ath_chanctx_switch()
820 sc->sched.offchannel_duration); ath_chanctx_switch()
823 spin_unlock_bh(&sc->chan_lock); ath_chanctx_switch()
824 ieee80211_queue_work(sc->hw, &sc->chanctx_work); ath_chanctx_switch()
827 static void ath_chanctx_offchan_switch(struct ath_softc *sc, ath_chanctx_offchan_switch() argument
830 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_offchan_switch()
837 ath_chanctx_switch(sc, &sc->offchannel.chan, &chandef); ath_chanctx_offchan_switch()
840 static struct ath_chanctx *ath_chanctx_get_oper_chan(struct ath_softc *sc, ath_chanctx_get_oper_chan() argument
845 ath_for_each_chanctx(sc, ctx) { ath_for_each_chanctx()
855 return &sc->chanctx[0];
859 ath_scan_next_channel(struct ath_softc *sc) ath_scan_next_channel() argument
861 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_scan_next_channel()
862 struct cfg80211_scan_request *req = sc->offchannel.scan_req; ath_scan_next_channel()
865 if (sc->offchannel.scan_idx >= req->n_channels) { ath_scan_next_channel()
869 sc->offchannel.scan_idx, ath_scan_next_channel()
872 sc->offchannel.state = ATH_OFFCHANNEL_IDLE; ath_scan_next_channel()
873 ath_chanctx_switch(sc, ath_chanctx_get_oper_chan(sc, false), ath_scan_next_channel()
880 sc->offchannel.scan_idx); ath_scan_next_channel()
882 chan = req->channels[sc->offchannel.scan_idx++]; ath_scan_next_channel()
883 sc->offchannel.duration = ath_scan_channel_duration(sc, chan); ath_scan_next_channel()
884 sc->offchannel.state = ATH_OFFCHANNEL_PROBE_SEND; ath_scan_next_channel()
886 ath_chanctx_offchan_switch(sc, chan); ath_scan_next_channel()
889 void ath_offchannel_next(struct ath_softc *sc) ath_offchannel_next() argument
893 if (sc->offchannel.scan_req) { ath_offchannel_next()
894 vif = sc->offchannel.scan_vif; ath_offchannel_next()
895 sc->offchannel.chan.txpower = vif->bss_conf.txpower; ath_offchannel_next()
896 ath_scan_next_channel(sc); ath_offchannel_next()
897 } else if (sc->offchannel.roc_vif) { ath_offchannel_next()
898 vif = sc->offchannel.roc_vif; ath_offchannel_next()
899 sc->offchannel.chan.txpower = vif->bss_conf.txpower; ath_offchannel_next()
900 sc->offchannel.duration = ath_offchannel_next()
901 msecs_to_jiffies(sc->offchannel.roc_duration); ath_offchannel_next()
902 sc->offchannel.state = ATH_OFFCHANNEL_ROC_START; ath_offchannel_next()
903 ath_chanctx_offchan_switch(sc, sc->offchannel.roc_chan); ath_offchannel_next()
905 spin_lock_bh(&sc->chan_lock); ath_offchannel_next()
906 sc->sched.offchannel_pending = false; ath_offchannel_next()
907 sc->sched.wait_switch = false; ath_offchannel_next()
908 spin_unlock_bh(&sc->chan_lock); ath_offchannel_next()
910 ath_chanctx_switch(sc, ath_chanctx_get_oper_chan(sc, false), ath_offchannel_next()
912 sc->offchannel.state = ATH_OFFCHANNEL_IDLE; ath_offchannel_next()
913 if (sc->ps_idle) ath_offchannel_next()
914 ath_cancel_work(sc); ath_offchannel_next()
918 void ath_roc_complete(struct ath_softc *sc, bool abort) ath_roc_complete() argument
920 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_roc_complete()
927 sc->offchannel.roc_vif = NULL; ath_roc_complete()
928 sc->offchannel.roc_chan = NULL; ath_roc_complete()
929 ieee80211_remain_on_channel_expired(sc->hw); ath_roc_complete()
930 ath_offchannel_next(sc); ath_roc_complete()
931 ath9k_ps_restore(sc); ath_roc_complete()
934 void ath_scan_complete(struct ath_softc *sc, bool abort) ath_scan_complete() argument
936 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_scan_complete()
943 sc->offchannel.scan_req = NULL; ath_scan_complete()
944 sc->offchannel.scan_vif = NULL; ath_scan_complete()
945 sc->offchannel.state = ATH_OFFCHANNEL_IDLE; ath_scan_complete()
946 ieee80211_scan_completed(sc->hw, abort); ath_scan_complete()
948 spin_lock_bh(&sc->chan_lock); ath_scan_complete()
950 sc->sched.force_noa_update = true; ath_scan_complete()
951 spin_unlock_bh(&sc->chan_lock); ath_scan_complete()
952 ath_offchannel_next(sc); ath_scan_complete()
953 ath9k_ps_restore(sc); ath_scan_complete()
956 static void ath_scan_send_probe(struct ath_softc *sc, ath_scan_send_probe() argument
959 struct cfg80211_scan_request *req = sc->offchannel.scan_req; ath_scan_send_probe()
960 struct ieee80211_vif *vif = sc->offchannel.scan_vif; ath_scan_send_probe()
964 int band = sc->offchannel.chan.chandef.chan->band; ath_scan_send_probe()
966 skb = ieee80211_probereq_get(sc->hw, vif->addr, ath_scan_send_probe()
980 if (!ieee80211_tx_prepare_skb(sc->hw, vif, skb, band, NULL)) ath_scan_send_probe()
983 txctl.txq = sc->tx.txq_map[IEEE80211_AC_VO]; ath_scan_send_probe()
985 if (ath_tx_start(sc->hw, skb, &txctl)) ath_scan_send_probe()
991 ieee80211_free_txskb(sc->hw, skb); ath_scan_send_probe()
994 static void ath_scan_channel_start(struct ath_softc *sc) ath_scan_channel_start() argument
996 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_scan_channel_start()
997 struct cfg80211_scan_request *req = sc->offchannel.scan_req; ath_scan_channel_start()
1000 if (!(sc->cur_chan->chandef.chan->flags & IEEE80211_CHAN_NO_IR) && ath_scan_channel_start()
1003 ath_scan_send_probe(sc, &req->ssids[i]); ath_scan_channel_start()
1010 sc->offchannel.state = ATH_OFFCHANNEL_PROBE_WAIT; ath_scan_channel_start()
1011 mod_timer(&sc->offchannel.timer, jiffies + sc->offchannel.duration); ath_scan_channel_start()
1016 struct ath_softc *sc = (struct ath_softc *) data; ath_chanctx_timer() local
1017 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_timer()
1022 ath_chanctx_event(sc, NULL, ATH_CHANCTX_EVENT_TSF_TIMER); ath_chanctx_timer()
1027 struct ath_softc *sc = (struct ath_softc *)data; ath_offchannel_timer() local
1029 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_offchannel_timer()
1032 __func__, offchannel_state_string(sc->offchannel.state)); ath_offchannel_timer()
1034 switch (sc->offchannel.state) { ath_offchannel_timer()
1036 if (!sc->offchannel.scan_req) ath_offchannel_timer()
1040 ctx = ath_chanctx_get_oper_chan(sc, true); ath_offchannel_timer()
1046 sc->offchannel.state = ATH_OFFCHANNEL_SUSPEND; ath_offchannel_timer()
1047 ath_chanctx_switch(sc, ctx, NULL); ath_offchannel_timer()
1048 mod_timer(&sc->offchannel.timer, jiffies + HZ / 10); ath_offchannel_timer()
1053 if (!sc->offchannel.scan_req) ath_offchannel_timer()
1056 ath_scan_next_channel(sc); ath_offchannel_timer()
1060 sc->offchannel.state = ATH_OFFCHANNEL_ROC_DONE; ath_offchannel_timer()
1061 ath_roc_complete(sc, false); ath_offchannel_timer()
1069 ath_chanctx_send_vif_ps_frame(struct ath_softc *sc, struct ath_vif *avp, ath_chanctx_send_vif_ps_frame() argument
1077 int band = sc->cur_chan->chandef.chan->band; ath_chanctx_send_vif_ps_frame()
1084 skb = ieee80211_nullfunc_get(sc->hw, vif); ath_chanctx_send_vif_ps_frame()
1094 if (!ieee80211_tx_prepare_skb(sc->hw, vif, skb, band, &sta)) { ath_chanctx_send_vif_ps_frame()
1104 txctl.txq = sc->tx.txq_map[IEEE80211_AC_VO]; ath_chanctx_send_vif_ps_frame()
1107 if (ath_tx_start(sc->hw, skb, &txctl)) { ath_chanctx_send_vif_ps_frame()
1108 ieee80211_free_txskb(sc->hw, skb); ath_chanctx_send_vif_ps_frame()
1116 ath_chanctx_send_ps_frame(struct ath_softc *sc, bool powersave) ath_chanctx_send_ps_frame() argument
1122 list_for_each_entry(avp, &sc->cur_chan->vifs, list) { ath_chanctx_send_ps_frame()
1123 if (ath_chanctx_send_vif_ps_frame(sc, avp, powersave)) ath_chanctx_send_ps_frame()
1131 static bool ath_chanctx_defer_switch(struct ath_softc *sc) ath_chanctx_defer_switch() argument
1133 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_defer_switch()
1135 if (sc->cur_chan == &sc->offchannel.chan) ath_chanctx_defer_switch()
1138 switch (sc->sched.state) { ath_chanctx_defer_switch()
1142 if (!sc->cur_chan->switch_after_beacon) ath_chanctx_defer_switch()
1148 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON; ath_chanctx_defer_switch()
1157 static void ath_offchannel_channel_change(struct ath_softc *sc) ath_offchannel_channel_change() argument
1159 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_offchannel_channel_change()
1162 __func__, offchannel_state_string(sc->offchannel.state)); ath_offchannel_channel_change()
1164 switch (sc->offchannel.state) { ath_offchannel_channel_change()
1166 if (!sc->offchannel.scan_req) ath_offchannel_channel_change()
1169 if (sc->cur_chan->chandef.chan != ath_offchannel_channel_change()
1170 sc->offchannel.chan.chandef.chan) ath_offchannel_channel_change()
1173 ath_scan_channel_start(sc); ath_offchannel_channel_change()
1176 if (!sc->offchannel.scan_req) ath_offchannel_channel_change()
1179 ath_scan_complete(sc, false); ath_offchannel_channel_change()
1182 if (sc->cur_chan != &sc->offchannel.chan) ath_offchannel_channel_change()
1185 sc->offchannel.state = ATH_OFFCHANNEL_ROC_WAIT; ath_offchannel_channel_change()
1186 mod_timer(&sc->offchannel.timer, ath_offchannel_channel_change()
1187 jiffies + sc->offchannel.duration); ath_offchannel_channel_change()
1188 ieee80211_ready_on_channel(sc->hw); ath_offchannel_channel_change()
1197 void ath_chanctx_set_next(struct ath_softc *sc, bool force) ath_chanctx_set_next() argument
1199 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_chanctx_set_next()
1206 spin_lock_bh(&sc->chan_lock); ath_chanctx_set_next()
1207 if (!sc->next_chan) { ath_chanctx_set_next()
1208 spin_unlock_bh(&sc->chan_lock); ath_chanctx_set_next()
1212 if (!force && ath_chanctx_defer_switch(sc)) { ath_chanctx_set_next()
1213 spin_unlock_bh(&sc->chan_lock); ath_chanctx_set_next()
1220 sc->cur_chan->chandef.center_freq1, ath_chanctx_set_next()
1221 sc->next_chan->chandef.center_freq1); ath_chanctx_set_next()
1223 if (sc->cur_chan != sc->next_chan) { ath_chanctx_set_next()
1226 sc->cur_chan->chandef.center_freq1); ath_chanctx_set_next()
1227 sc->cur_chan->stopped = true; ath_chanctx_set_next()
1228 spin_unlock_bh(&sc->chan_lock); ath_chanctx_set_next()
1230 if (sc->next_chan == &sc->offchannel.chan) { ath_chanctx_set_next()
1235 ath9k_chanctx_stop_queues(sc, sc->cur_chan); ath_chanctx_set_next()
1238 __ath9k_flush(sc->hw, ~0, true, false, false); ath_chanctx_set_next()
1240 if (ath_chanctx_send_ps_frame(sc, true)) ath_chanctx_set_next()
1241 __ath9k_flush(sc->hw, BIT(IEEE80211_AC_VO), ath_chanctx_set_next()
1245 spin_lock_bh(&sc->chan_lock); ath_chanctx_set_next()
1247 if (sc->cur_chan != &sc->offchannel.chan) { ath_chanctx_set_next()
1248 getrawmonotonic(&sc->cur_chan->tsf_ts); ath_chanctx_set_next()
1249 sc->cur_chan->tsf_val = ath9k_hw_gettsf64(sc->sc_ah); ath_chanctx_set_next()
1252 old_ctx = sc->cur_chan; ath_chanctx_set_next()
1253 sc->cur_chan = sc->next_chan; ath_chanctx_set_next()
1254 sc->cur_chan->stopped = false; ath_chanctx_set_next()
1255 sc->next_chan = NULL; ath_chanctx_set_next()
1257 if (!sc->sched.offchannel_pending) ath_chanctx_set_next()
1258 sc->sched.offchannel_duration = 0; ath_chanctx_set_next()
1260 if (sc->sched.state != ATH_CHANCTX_STATE_FORCE_ACTIVE) ath_chanctx_set_next()
1261 sc->sched.state = ATH_CHANCTX_STATE_IDLE; ath_chanctx_set_next()
1263 spin_unlock_bh(&sc->chan_lock); ath_chanctx_set_next()
1265 if (sc->sc_ah->chip_fullsleep || ath_chanctx_set_next()
1266 memcmp(&sc->cur_chandef, &sc->cur_chan->chandef, ath_chanctx_set_next()
1267 sizeof(sc->cur_chandef))) { ath_chanctx_set_next()
1270 __func__, sc->cur_chan->chandef.center_freq1); ath_chanctx_set_next()
1271 ath_set_channel(sc); ath_chanctx_set_next()
1273 sc->sched.channel_switch_time = ath_chanctx_set_next()
1283 ath9k_chanctx_wake_queues(sc, old_ctx); ath_chanctx_set_next()
1286 ath_chanctx_send_ps_frame(sc, false); ath_chanctx_set_next()
1288 ath_offchannel_channel_change(sc); ath_chanctx_set_next()
1289 ath_chanctx_event(sc, NULL, ATH_CHANCTX_EVENT_SWITCH); ath_chanctx_set_next()
1294 struct ath_softc *sc = container_of(work, struct ath_softc, ath_chanctx_work() local
1296 mutex_lock(&sc->mutex); ath_chanctx_work()
1297 ath_chanctx_set_next(sc, false); ath_chanctx_work()
1298 mutex_unlock(&sc->mutex); ath_chanctx_work()
1301 void ath9k_offchannel_init(struct ath_softc *sc) ath9k_offchannel_init() argument
1304 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_offchannel_init()
1315 ctx = &sc->offchannel.chan; ath9k_offchannel_init()
1323 sc->offchannel.chan.offchannel = true; ath9k_offchannel_init()
1326 void ath9k_init_channel_context(struct ath_softc *sc) ath9k_init_channel_context() argument
1328 INIT_WORK(&sc->chanctx_work, ath_chanctx_work); ath9k_init_channel_context()
1330 setup_timer(&sc->offchannel.timer, ath_offchannel_timer, ath9k_init_channel_context()
1331 (unsigned long)sc); ath9k_init_channel_context()
1332 setup_timer(&sc->sched.timer, ath_chanctx_timer, ath9k_init_channel_context()
1333 (unsigned long)sc); ath9k_init_channel_context()
1335 init_completion(&sc->go_beacon); ath9k_init_channel_context()
1338 void ath9k_deinit_channel_context(struct ath_softc *sc) ath9k_deinit_channel_context() argument
1340 cancel_work_sync(&sc->chanctx_work); ath9k_deinit_channel_context()
1352 void ath9k_chanctx_stop_queues(struct ath_softc *sc, struct ath_chanctx *ctx) ath9k_chanctx_stop_queues() argument
1354 struct ath_hw *ah = sc->sc_ah; ath9k_chanctx_stop_queues()
1357 if (ctx == &sc->offchannel.chan) { ath9k_chanctx_stop_queues()
1358 ieee80211_stop_queue(sc->hw, ath9k_chanctx_stop_queues()
1359 sc->hw->offchannel_tx_hw_queue); ath9k_chanctx_stop_queues()
1362 ieee80211_stop_queue(sc->hw, ath9k_chanctx_stop_queues()
1367 ieee80211_stop_queue(sc->hw, sc->hw->queues - 2); ath9k_chanctx_stop_queues()
1371 void ath9k_chanctx_wake_queues(struct ath_softc *sc, struct ath_chanctx *ctx) ath9k_chanctx_wake_queues() argument
1373 struct ath_hw *ah = sc->sc_ah; ath9k_chanctx_wake_queues()
1376 if (ctx == &sc->offchannel.chan) { ath9k_chanctx_wake_queues()
1377 ieee80211_wake_queue(sc->hw, ath9k_chanctx_wake_queues()
1378 sc->hw->offchannel_tx_hw_queue); ath9k_chanctx_wake_queues()
1381 ieee80211_wake_queue(sc->hw, ath9k_chanctx_wake_queues()
1386 ieee80211_wake_queue(sc->hw, sc->hw->queues - 2); ath9k_chanctx_wake_queues()
1393 static void ath9k_update_p2p_ps_timer(struct ath_softc *sc, struct ath_vif *avp) ath9k_update_p2p_ps_timer() argument
1395 struct ath_hw *ah = sc->sc_ah; ath9k_update_p2p_ps_timer()
1401 ath9k_hw_gen_timer_stop(ah, sc->p2p_ps_timer); ath9k_update_p2p_ps_timer()
1403 tsf = ath9k_hw_gettsf32(sc->sc_ah); ath9k_update_p2p_ps_timer()
1412 ath9k_hw_gen_timer_start(ah, sc->p2p_ps_timer, (u32) target_tsf, 1000000); ath9k_update_p2p_ps_timer()
1415 static void ath9k_update_p2p_ps(struct ath_softc *sc, struct ieee80211_vif *vif) ath9k_update_p2p_ps() argument
1420 if (!sc->p2p_ps_timer) ath9k_update_p2p_ps()
1426 sc->p2p_ps_vif = avp; ath9k_update_p2p_ps()
1427 tsf = ath9k_hw_gettsf32(sc->sc_ah); ath9k_update_p2p_ps()
1429 ath9k_update_p2p_ps_timer(sc, avp); ath9k_update_p2p_ps()
1432 static u8 ath9k_get_ctwin(struct ath_softc *sc, struct ath_vif *avp) ath9k_get_ctwin() argument
1434 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; ath9k_get_ctwin()
1456 void ath9k_beacon_add_noa(struct ath_softc *sc, struct ath_vif *avp, ath9k_beacon_add_noa() argument
1488 noa->oppps_ctwindow = ath9k_get_ctwin(sc, avp); ath9k_beacon_add_noa()
1492 u32 interval = TU_TO_USEC(sc->cur_chan->beacon.beacon_interval); ath9k_beacon_add_noa()
1513 struct ath_softc *sc = priv; ath9k_p2p_ps_timer() local
1514 struct ath_vif *avp = sc->p2p_ps_vif; ath9k_p2p_ps_timer()
1520 del_timer_sync(&sc->sched.timer); ath9k_p2p_ps_timer()
1521 ath9k_hw_gen_timer_stop(sc->sc_ah, sc->p2p_ps_timer); ath9k_p2p_ps_timer()
1522 ath_chanctx_event(sc, NULL, ATH_CHANCTX_EVENT_TSF_TIMER); ath9k_p2p_ps_timer()
1524 if (!avp || avp->chanctx != sc->cur_chan) ath9k_p2p_ps_timer()
1527 tsf = ath9k_hw_gettsf32(sc->sc_ah); ath9k_p2p_ps_timer()
1535 ath9k_update_p2p_ps_timer(sc, avp); ath9k_p2p_ps_timer()
1550 ath_tx_aggr_sleep(sta, sc, an); ath9k_p2p_ps_timer()
1552 ath_tx_aggr_wakeup(sc, an); ath9k_p2p_ps_timer()
1558 void ath9k_p2p_bss_info_changed(struct ath_softc *sc, ath9k_p2p_bss_info_changed() argument
1563 spin_lock_bh(&sc->sc_pcu_lock); ath9k_p2p_bss_info_changed()
1564 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_p2p_bss_info_changed()
1565 if (!(sc->ps_flags & PS_BEACON_SYNC)) ath9k_p2p_bss_info_changed()
1566 ath9k_update_p2p_ps(sc, vif); ath9k_p2p_bss_info_changed()
1567 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_p2p_bss_info_changed()
1568 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_p2p_bss_info_changed()
1571 void ath9k_p2p_beacon_sync(struct ath_softc *sc) ath9k_p2p_beacon_sync() argument
1573 if (sc->p2p_ps_vif) ath9k_p2p_beacon_sync()
1574 ath9k_update_p2p_ps(sc, sc->p2p_ps_vif->vif); ath9k_p2p_beacon_sync()
1577 void ath9k_p2p_remove_vif(struct ath_softc *sc, ath9k_p2p_remove_vif() argument
1582 spin_lock_bh(&sc->sc_pcu_lock); ath9k_p2p_remove_vif()
1583 if (avp == sc->p2p_ps_vif) { ath9k_p2p_remove_vif()
1584 sc->p2p_ps_vif = NULL; ath9k_p2p_remove_vif()
1585 ath9k_update_p2p_ps_timer(sc, NULL); ath9k_p2p_remove_vif()
1587 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_p2p_remove_vif()
1590 int ath9k_init_p2p(struct ath_softc *sc) ath9k_init_p2p() argument
1592 sc->p2p_ps_timer = ath_gen_timer_alloc(sc->sc_ah, ath9k_p2p_ps_timer, ath9k_init_p2p()
1593 NULL, sc, AR_FIRST_NDP_TIMER); ath9k_init_p2p()
1594 if (!sc->p2p_ps_timer) ath9k_init_p2p()
1600 void ath9k_deinit_p2p(struct ath_softc *sc) ath9k_deinit_p2p() argument
1602 if (sc->p2p_ps_timer) ath9k_deinit_p2p()
1603 ath_gen_timer_free(sc->sc_ah, sc->p2p_ps_timer); ath9k_deinit_p2p()
H A Dmain.c57 static bool ath9k_has_pending_frames(struct ath_softc *sc, struct ath_txq *txq, ath9k_has_pending_frames() argument
75 list = &sc->cur_chan->acq[txq->mac80211_qnum]; ath9k_has_pending_frames()
84 static bool ath9k_setpower(struct ath_softc *sc, enum ath9k_power_mode mode) ath9k_setpower() argument
89 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_setpower()
90 ret = ath9k_hw_setpower(sc->sc_ah, mode); ath9k_setpower()
91 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_setpower()
98 struct ath_softc *sc = (struct ath_softc *) data; ath_ps_full_sleep() local
99 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_ps_full_sleep()
106 ath9k_hw_setrxabort(sc->sc_ah, 1); ath_ps_full_sleep()
107 ath9k_hw_stopdmarecv(sc->sc_ah, &reset); ath_ps_full_sleep()
109 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_FULL_SLEEP); ath_ps_full_sleep()
112 void ath9k_ps_wakeup(struct ath_softc *sc) ath9k_ps_wakeup() argument
114 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_ps_wakeup()
118 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_ps_wakeup()
119 if (++sc->ps_usecount != 1) ath9k_ps_wakeup()
122 del_timer_sync(&sc->sleep_timer); ath9k_ps_wakeup()
123 power_mode = sc->sc_ah->power_mode; ath9k_ps_wakeup()
124 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE); ath9k_ps_wakeup()
140 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_ps_wakeup()
143 void ath9k_ps_restore(struct ath_softc *sc) ath9k_ps_restore() argument
145 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_ps_restore()
149 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_ps_restore()
150 if (--sc->ps_usecount != 0) ath9k_ps_restore()
153 if (sc->ps_idle) { ath9k_ps_restore()
154 mod_timer(&sc->sleep_timer, jiffies + HZ / 10); ath9k_ps_restore()
158 if (sc->ps_enabled && ath9k_ps_restore()
159 !(sc->ps_flags & (PS_WAIT_FOR_BEACON | ath9k_ps_restore()
165 if (ath9k_hw_btcoex_is_enabled(sc->sc_ah)) ath9k_ps_restore()
166 ath9k_btcoex_stop_gen_timer(sc); ath9k_ps_restore()
175 ath9k_hw_setpower(sc->sc_ah, mode); ath9k_ps_restore()
178 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_ps_restore()
181 static void __ath_cancel_work(struct ath_softc *sc) __ath_cancel_work() argument
183 cancel_work_sync(&sc->paprd_work); __ath_cancel_work()
184 cancel_delayed_work_sync(&sc->tx_complete_work); __ath_cancel_work()
185 cancel_delayed_work_sync(&sc->hw_pll_work); __ath_cancel_work()
188 if (ath9k_hw_mci_is_enabled(sc->sc_ah)) __ath_cancel_work()
189 cancel_work_sync(&sc->mci_work); __ath_cancel_work()
193 void ath_cancel_work(struct ath_softc *sc) ath_cancel_work() argument
195 __ath_cancel_work(sc); ath_cancel_work()
196 cancel_work_sync(&sc->hw_reset_work); ath_cancel_work()
199 void ath_restart_work(struct ath_softc *sc) ath_restart_work() argument
201 ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); ath_restart_work()
203 if (AR_SREV_9340(sc->sc_ah) || AR_SREV_9330(sc->sc_ah)) ath_restart_work()
204 ieee80211_queue_delayed_work(sc->hw, &sc->hw_pll_work, ath_restart_work()
207 ath_start_ani(sc); ath_restart_work()
210 static bool ath_prepare_reset(struct ath_softc *sc) ath_prepare_reset() argument
212 struct ath_hw *ah = sc->sc_ah; ath_prepare_reset()
215 ieee80211_stop_queues(sc->hw); ath_prepare_reset()
216 ath_stop_ani(sc); ath_prepare_reset()
220 ret &= ath_stoprecv(sc); ath_prepare_reset()
221 ret &= ath_drain_all_txq(sc); ath_prepare_reset()
223 ret &= ath_drain_all_txq(sc); ath_prepare_reset()
224 ret &= ath_stoprecv(sc); ath_prepare_reset()
230 static bool ath_complete_reset(struct ath_softc *sc, bool start) ath_complete_reset() argument
232 struct ath_hw *ah = sc->sc_ah; ath_complete_reset()
236 ath9k_calculate_summary_state(sc, sc->cur_chan); ath_complete_reset()
237 ath_startrecv(sc); ath_complete_reset()
238 ath9k_cmn_update_txpow(ah, sc->cur_chan->cur_txpower, ath_complete_reset()
239 sc->cur_chan->txpower, ath_complete_reset()
240 &sc->cur_chan->cur_txpower); ath_complete_reset()
243 if (!sc->cur_chan->offchannel && start) { ath_complete_reset()
245 if (sc->cur_chan->tsf_val) { ath_complete_reset()
248 offset = ath9k_hw_get_tsf_offset(&sc->cur_chan->tsf_ts, ath_complete_reset()
250 ath9k_hw_settsf64(ah, sc->cur_chan->tsf_val + offset); ath_complete_reset()
259 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath_complete_reset()
260 sc->ps_flags |= PS_BEACON_SYNC | PS_WAIT_FOR_BEACON; ath_complete_reset()
261 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_complete_reset()
263 ath9k_set_beacon(sc); ath_complete_reset()
266 ath_restart_work(sc); ath_complete_reset()
267 ath_txq_schedule_all(sc); ath_complete_reset()
270 sc->gtt_cnt = 0; ath_complete_reset()
274 ieee80211_wake_queues(sc->hw); ath_complete_reset()
275 ath9k_p2p_ps_timer(sc); ath_complete_reset()
280 static int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan) ath_reset_internal() argument
282 struct ath_hw *ah = sc->sc_ah; ath_reset_internal()
288 __ath_cancel_work(sc); ath_reset_internal()
290 disable_irq(sc->irq); ath_reset_internal()
291 tasklet_disable(&sc->intr_tq); ath_reset_internal()
292 tasklet_disable(&sc->bcon_tasklet); ath_reset_internal()
293 spin_lock_bh(&sc->sc_pcu_lock); ath_reset_internal()
295 if (!sc->cur_chan->offchannel) { ath_reset_internal()
297 caldata = &sc->cur_chan->caldata; ath_reset_internal()
305 if (!ath_prepare_reset(sc)) ath_reset_internal()
311 spin_lock_bh(&sc->chan_lock); ath_reset_internal()
312 sc->cur_chandef = sc->cur_chan->chandef; ath_reset_internal()
313 spin_unlock_bh(&sc->chan_lock); ath_reset_internal()
324 ath9k_queue_reset(sc, RESET_TYPE_BB_HANG); ath_reset_internal()
329 if (ath9k_hw_mci_is_enabled(sc->sc_ah) && ath_reset_internal()
330 sc->cur_chan->offchannel) ath_reset_internal()
331 ath9k_mci_set_txpower(sc, true, false); ath_reset_internal()
333 if (!ath_complete_reset(sc, true)) ath_reset_internal()
337 enable_irq(sc->irq); ath_reset_internal()
338 spin_unlock_bh(&sc->sc_pcu_lock); ath_reset_internal()
339 tasklet_enable(&sc->bcon_tasklet); ath_reset_internal()
340 tasklet_enable(&sc->intr_tq); ath_reset_internal()
345 static void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta, ath_node_attach() argument
351 an->sc = sc; ath_node_attach()
356 ath_tx_node_init(sc, an); ath_node_attach()
358 ath_dynack_node_init(sc->sc_ah, an); ath_node_attach()
361 static void ath_node_detach(struct ath_softc *sc, struct ieee80211_sta *sta) ath_node_detach() argument
364 ath_tx_node_cleanup(sc, an); ath_node_detach()
366 ath_dynack_node_deinit(sc->sc_ah, an); ath_node_detach()
371 struct ath_softc *sc = (struct ath_softc *)data; ath9k_tasklet() local
372 struct ath_hw *ah = sc->sc_ah; ath9k_tasklet()
376 u32 status = sc->intrstatus; ath9k_tasklet()
379 ath9k_ps_wakeup(sc); ath9k_tasklet()
380 spin_lock(&sc->sc_pcu_lock); ath9k_tasklet()
384 ath9k_queue_reset(sc, type); ath9k_tasklet()
404 ath9k_queue_reset(sc, type); ath9k_tasklet()
418 sc->gtt_cnt++; ath9k_tasklet()
420 if ((sc->gtt_cnt >= MAX_GTT_CNT) && !ath9k_hw_check_alive(ah)) { ath9k_tasklet()
422 ath9k_queue_reset(sc, type); ath9k_tasklet()
430 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_tasklet()
431 if ((status & ATH9K_INT_TSFOOR) && sc->ps_enabled) { ath9k_tasklet()
437 sc->ps_flags |= PS_WAIT_FOR_BEACON | PS_BEACON_SYNC; ath9k_tasklet()
439 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_tasklet()
451 ath_rx_tasklet(sc, 0, true); ath9k_tasklet()
453 ath_rx_tasklet(sc, 0, false); ath9k_tasklet()
464 sc->gtt_cnt = 0; ath9k_tasklet()
466 ath_tx_edma_tasklet(sc); ath9k_tasklet()
468 ath_tx_tasklet(sc); ath9k_tasklet()
471 wake_up(&sc->tx_wait); ath9k_tasklet()
475 ath_gen_timer_isr(sc->sc_ah); ath9k_tasklet()
477 ath9k_btcoex_handle_interrupt(sc, status); ath9k_tasklet()
482 spin_unlock(&sc->sc_pcu_lock); ath9k_tasklet()
483 ath9k_ps_restore(sc); ath9k_tasklet()
504 struct ath_softc *sc = dev; ath_isr() local
505 struct ath_hw *ah = sc->sc_ah; ath_isr()
530 ath9k_debug_sync_cause(sc, sync_cause); ath_isr()
544 sc->intrstatus = status; ath_isr()
561 tasklet_schedule(&sc->bcon_tasklet); ath_isr()
573 if (ATH_DBG_WARN_ON_ONCE(sc->ps_idle)) ath_isr()
577 ath9k_setpower(sc, ATH9K_PM_AWAKE); ath_isr()
578 spin_lock(&sc->sc_pm_lock); ath_isr()
579 ath9k_hw_setrxabort(sc->sc_ah, 0); ath_isr()
580 sc->ps_flags |= PS_WAIT_FOR_BEACON; ath_isr()
581 spin_unlock(&sc->sc_pm_lock); ath_isr()
586 ath_debug_stat_interrupt(sc, status); ath_isr()
591 tasklet_schedule(&sc->intr_tq); ath_isr()
603 int ath_reset(struct ath_softc *sc, struct ath9k_channel *hchan) ath_reset() argument
605 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_reset()
608 ath9k_hw_kill_interrupts(sc->sc_ah); ath_reset()
611 ath9k_ps_wakeup(sc); ath_reset()
612 r = ath_reset_internal(sc, hchan); ath_reset()
613 ath9k_ps_restore(sc); ath_reset()
623 void ath9k_queue_reset(struct ath_softc *sc, enum ath_reset_type type) ath9k_queue_reset() argument
625 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_queue_reset()
627 RESET_STAT_INC(sc, type); ath9k_queue_reset()
629 ath9k_hw_kill_interrupts(sc->sc_ah); ath9k_queue_reset()
631 ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ath9k_queue_reset()
636 struct ath_softc *sc = container_of(work, struct ath_softc, hw_reset_work); ath_reset_work() local
638 ath9k_ps_wakeup(sc); ath_reset_work()
639 ath_reset_internal(sc, NULL); ath_reset_work()
640 ath9k_ps_restore(sc); ath_reset_work()
649 struct ath_softc *sc = hw->priv; ath9k_start() local
650 struct ath_hw *ah = sc->sc_ah; ath9k_start()
652 struct ieee80211_channel *curchan = sc->cur_chan->chandef.chan; ath9k_start()
653 struct ath_chanctx *ctx = sc->cur_chan; ath9k_start()
661 ath9k_ps_wakeup(sc); ath9k_start()
662 mutex_lock(&sc->mutex); ath9k_start()
665 sc->cur_chandef = hw->conf.chandef; ath9k_start()
677 spin_lock_bh(&sc->sc_pcu_lock); ath9k_start()
713 ath_mci_enable(sc); ath9k_start()
716 sc->sc_ah->is_monitoring = false; ath9k_start()
718 if (!ath_complete_reset(sc, false)) ath9k_start()
732 ath9k_cmn_init_crypto(sc->sc_ah); ath9k_start()
736 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_start()
738 mutex_unlock(&sc->mutex); ath9k_start()
740 ath9k_ps_restore(sc); ath9k_start()
749 struct ath_softc *sc = hw->priv; ath9k_tx() local
750 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_tx()
755 if (sc->ps_enabled) { ath9k_tx()
769 if (unlikely(sc->sc_ah->power_mode == ATH9K_PM_NETWORK_SLEEP)) { ath9k_tx()
775 ath9k_ps_wakeup(sc); ath9k_tx()
776 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_tx()
777 if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_AUTOSLEEP)) ath9k_tx()
778 ath9k_hw_setrxabort(sc->sc_ah, 0); ath9k_tx()
782 sc->ps_flags |= PS_WAIT_FOR_PSPOLL_DATA; ath9k_tx()
785 sc->ps_flags |= PS_WAIT_FOR_TX_ACK; ath9k_tx()
792 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_tx()
793 ath9k_ps_restore(sc); ath9k_tx()
800 if (unlikely(sc->sc_ah->power_mode == ATH9K_PM_FULL_SLEEP)) { ath9k_tx()
806 txctl.txq = sc->tx.txq_map[skb_get_queue_mapping(skb)]; ath9k_tx()
824 struct ath_softc *sc = hw->priv; ath9k_stop() local
825 struct ath_hw *ah = sc->sc_ah; ath9k_stop()
829 ath9k_deinit_channel_context(sc); ath9k_stop()
831 mutex_lock(&sc->mutex); ath9k_stop()
833 ath_cancel_work(sc); ath9k_stop()
837 mutex_unlock(&sc->mutex); ath9k_stop()
842 ath9k_ps_wakeup(sc); ath9k_stop()
844 spin_lock_bh(&sc->sc_pcu_lock); ath9k_stop()
853 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_stop()
857 synchronize_irq(sc->irq); ath9k_stop()
858 tasklet_kill(&sc->intr_tq); ath9k_stop()
859 tasklet_kill(&sc->bcon_tasklet); ath9k_stop()
861 prev_idle = sc->ps_idle; ath9k_stop()
862 sc->ps_idle = true; ath9k_stop()
864 spin_lock_bh(&sc->sc_pcu_lock); ath9k_stop()
872 ath_prepare_reset(sc); ath9k_stop()
874 if (sc->rx.frag) { ath9k_stop()
875 dev_kfree_skb_any(sc->rx.frag); ath9k_stop()
876 sc->rx.frag = NULL; ath9k_stop()
881 &sc->cur_chan->chandef); ath9k_stop()
891 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_stop()
893 ath9k_ps_restore(sc); ath9k_stop()
895 sc->ps_idle = prev_idle; ath9k_stop()
897 mutex_unlock(&sc->mutex); ath9k_stop()
959 static void ath9k_update_bssid_mask(struct ath_softc *sc, ath9k_update_bssid_mask() argument
963 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_update_bssid_mask()
983 sc->hw->wiphy->perm_addr[i]); ath9k_update_bssid_mask()
987 /* Called with sc->mutex held. */ ath9k_calculate_iter_data()
988 void ath9k_calculate_iter_data(struct ath_softc *sc, ath9k_calculate_iter_data() argument
1005 ath9k_update_bssid_mask(sc, ctx, iter_data); ath9k_calculate_iter_data()
1008 static void ath9k_set_assoc_state(struct ath_softc *sc, ath9k_set_assoc_state() argument
1011 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_set_assoc_state()
1019 ath9k_hw_write_associd(sc->sc_ah); ath9k_set_assoc_state()
1023 sc->sc_ah->stats.avgbrssi = ATH_RSSI_DUMMY_MARKER; ath9k_set_assoc_state()
1025 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_set_assoc_state()
1026 sc->ps_flags |= PS_BEACON_SYNC | PS_WAIT_FOR_BEACON; ath9k_set_assoc_state()
1027 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_set_assoc_state()
1030 if (ath9k_hw_mci_is_enabled(sc->sc_ah)) ath9k_set_assoc_state()
1031 ath9k_mci_update_wlan_channels(sc, false); ath9k_set_assoc_state()
1039 static void ath9k_set_offchannel_state(struct ath_softc *sc) ath9k_set_offchannel_state() argument
1041 struct ath_hw *ah = sc->sc_ah; ath9k_set_offchannel_state()
1045 ath9k_ps_wakeup(sc); ath9k_set_offchannel_state()
1047 if (sc->offchannel.state < ATH_OFFCHANNEL_ROC_START) ath9k_set_offchannel_state()
1048 vif = sc->offchannel.scan_vif; ath9k_set_offchannel_state()
1050 vif = sc->offchannel.roc_vif; ath9k_set_offchannel_state()
1066 ath9k_hw_write_associd(sc->sc_ah); ath9k_set_offchannel_state()
1071 ath9k_ps_restore(sc); ath9k_set_offchannel_state()
1075 /* Called with sc->mutex held. */ ath9k_calculate_summary_state()
1076 void ath9k_calculate_summary_state(struct ath_softc *sc, ath9k_calculate_summary_state() argument
1079 struct ath_hw *ah = sc->sc_ah; ath9k_calculate_summary_state()
1084 ath_chanctx_check_active(sc, ctx); ath9k_calculate_summary_state()
1086 if (ctx != sc->cur_chan) ath9k_calculate_summary_state()
1090 if (ctx == &sc->offchannel.chan) ath9k_calculate_summary_state()
1091 return ath9k_set_offchannel_state(sc); ath9k_calculate_summary_state()
1094 ath9k_ps_wakeup(sc); ath9k_calculate_summary_state()
1095 ath9k_calculate_iter_data(sc, ctx, &iter_data); ath9k_calculate_summary_state()
1139 ath9k_set_assoc_state(sc, iter_data.primary_sta, ath9k_calculate_summary_state()
1146 ath9k_hw_write_associd(sc->sc_ah); ath9k_calculate_summary_state()
1147 if (ath9k_hw_mci_is_enabled(sc->sc_ah)) ath9k_calculate_summary_state()
1148 ath9k_mci_update_wlan_channels(sc, true); ath9k_calculate_summary_state()
1174 ath9k_ps_restore(sc); ath9k_calculate_summary_state()
1185 /* Called with sc->mutex held. */ ath9k_set_txpower()
1186 void ath9k_set_txpower(struct ath_softc *sc, struct ieee80211_vif *vif) ath9k_set_txpower() argument
1189 struct ath_hw *ah = sc->sc_ah; ath9k_set_txpower()
1192 ath9k_ps_wakeup(sc); ath9k_set_txpower()
1196 sc->hw, IEEE80211_IFACE_ITER_RESUME_ALL, ath9k_set_txpower()
1199 power = sc->hw->conf.power_level; ath9k_set_txpower()
1201 power = sc->hw->conf.power_level; ath9k_set_txpower()
1203 sc->cur_chan->txpower = 2 * power; ath9k_set_txpower()
1204 ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false); ath9k_set_txpower()
1205 sc->cur_chan->cur_txpower = reg->max_power_level; ath9k_set_txpower()
1206 ath9k_ps_restore(sc); ath9k_set_txpower()
1230 struct ath_softc *sc = hw->priv; ath9k_add_interface() local
1231 struct ath_hw *ah = sc->sc_ah; ath9k_add_interface()
1236 mutex_lock(&sc->mutex); ath9k_add_interface()
1239 if (sc->cur_chan->nvifs >= 1) { ath9k_add_interface()
1240 mutex_unlock(&sc->mutex); ath9k_add_interface()
1243 sc->tx99_vif = vif; ath9k_add_interface()
1247 sc->cur_chan->nvifs++; ath9k_add_interface()
1250 ath9k_beacon_assign_slot(sc, vif); ath9k_add_interface()
1254 avp->chanctx = sc->cur_chan; ath9k_add_interface()
1258 ath9k_calculate_summary_state(sc, avp->chanctx); ath9k_add_interface()
1262 ath9k_set_txpower(sc, vif); ath9k_add_interface()
1264 an->sc = sc; ath9k_add_interface()
1268 ath_tx_node_init(sc, an); ath9k_add_interface()
1270 mutex_unlock(&sc->mutex); ath9k_add_interface()
1279 struct ath_softc *sc = hw->priv; ath9k_change_interface() local
1280 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_change_interface()
1283 mutex_lock(&sc->mutex); ath9k_change_interface()
1286 mutex_unlock(&sc->mutex); ath9k_change_interface()
1293 ath9k_beacon_remove_slot(sc, vif); ath9k_change_interface()
1299 ath9k_beacon_assign_slot(sc, vif); ath9k_change_interface()
1302 ath9k_calculate_summary_state(sc, avp->chanctx); ath9k_change_interface()
1304 ath9k_set_txpower(sc, vif); ath9k_change_interface()
1306 mutex_unlock(&sc->mutex); ath9k_change_interface()
1313 struct ath_softc *sc = hw->priv; ath9k_remove_interface() local
1314 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_remove_interface()
1319 mutex_lock(&sc->mutex); ath9k_remove_interface()
1321 ath9k_p2p_remove_vif(sc, vif); ath9k_remove_interface()
1323 sc->cur_chan->nvifs--; ath9k_remove_interface()
1324 sc->tx99_vif = NULL; ath9k_remove_interface()
1329 ath9k_beacon_remove_slot(sc, vif); ath9k_remove_interface()
1331 ath_tx_node_cleanup(sc, &avp->mcast_node); ath9k_remove_interface()
1333 ath9k_calculate_summary_state(sc, avp->chanctx); ath9k_remove_interface()
1335 ath9k_set_txpower(sc, NULL); ath9k_remove_interface()
1337 mutex_unlock(&sc->mutex); ath9k_remove_interface()
1340 static void ath9k_enable_ps(struct ath_softc *sc) ath9k_enable_ps() argument
1342 struct ath_hw *ah = sc->sc_ah; ath9k_enable_ps()
1348 sc->ps_enabled = true; ath9k_enable_ps()
1359 static void ath9k_disable_ps(struct ath_softc *sc) ath9k_disable_ps() argument
1361 struct ath_hw *ah = sc->sc_ah; ath9k_disable_ps()
1367 sc->ps_enabled = false; ath9k_disable_ps()
1371 sc->ps_flags &= ~(PS_WAIT_FOR_BEACON | ath9k_disable_ps()
1385 struct ath_softc *sc = hw->priv; ath9k_config() local
1386 struct ath_hw *ah = sc->sc_ah; ath9k_config()
1389 struct ath_chanctx *ctx = sc->cur_chan; ath9k_config()
1391 ath9k_ps_wakeup(sc); ath9k_config()
1392 mutex_lock(&sc->mutex); ath9k_config()
1395 sc->ps_idle = !!(conf->flags & IEEE80211_CONF_IDLE); ath9k_config()
1396 if (sc->ps_idle) { ath9k_config()
1397 ath_cancel_work(sc); ath9k_config()
1398 ath9k_stop_btcoex(sc); ath9k_config()
1400 ath9k_start_btcoex(sc); ath9k_config()
1405 ath_chanctx_set_channel(sc, ctx, &ctx->chandef); ath9k_config()
1417 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_config()
1419 ath9k_enable_ps(sc); ath9k_config()
1421 ath9k_disable_ps(sc); ath9k_config()
1422 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_config()
1428 sc->sc_ah->is_monitoring = true; ath9k_config()
1431 sc->sc_ah->is_monitoring = false; ath9k_config()
1437 ath_chanctx_set_channel(sc, ctx, &hw->conf.chandef); ath9k_config()
1440 mutex_unlock(&sc->mutex); ath9k_config()
1441 ath9k_ps_restore(sc); ath9k_config()
1456 /* FIXME: sc->sc_full_reset ? */ ath9k_configure_filter()
1462 struct ath_softc *sc = hw->priv; ath9k_configure_filter() local
1468 spin_lock_bh(&sc->chan_lock); ath9k_configure_filter()
1469 sc->cur_chan->rxfilter = *total_flags; ath9k_configure_filter()
1470 spin_unlock_bh(&sc->chan_lock); ath9k_configure_filter()
1472 ath9k_ps_wakeup(sc); ath9k_configure_filter()
1473 rfilt = ath_calcrxfilter(sc); ath9k_configure_filter()
1474 ath9k_hw_setrxfilter(sc->sc_ah, rfilt); ath9k_configure_filter()
1475 ath9k_ps_restore(sc); ath9k_configure_filter()
1477 ath_dbg(ath9k_hw_common(sc->sc_ah), CONFIG, "Set HW RX filter: 0x%x\n", ath9k_configure_filter()
1485 struct ath_softc *sc = hw->priv; ath9k_sta_add() local
1486 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_sta_add()
1491 ath_node_attach(sc, sta, vif); ath9k_sta_add()
1506 static void ath9k_del_ps_key(struct ath_softc *sc, ath9k_del_ps_key() argument
1510 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_del_ps_key()
1526 struct ath_softc *sc = hw->priv; ath9k_sta_remove() local
1528 ath9k_del_ps_key(sc, vif, sta); ath9k_sta_remove()
1529 ath_node_detach(sc, sta); ath9k_sta_remove()
1540 struct ath_softc *sc = hw->priv; ath9k_sta_state() local
1541 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_sta_state()
1560 ath_chanctx_event(sc, vif, ath9k_sta_state()
1586 struct ath_softc *sc = hw->priv; ath9k_sta_notify() local
1592 ath_tx_aggr_sleep(sta, sc, an); ath9k_sta_notify()
1593 ath9k_sta_set_tx_filter(sc->sc_ah, an, true); ath9k_sta_notify()
1596 ath9k_sta_set_tx_filter(sc->sc_ah, an, false); ath9k_sta_notify()
1598 ath_tx_aggr_wakeup(sc, an); ath9k_sta_notify()
1607 struct ath_softc *sc = hw->priv; ath9k_conf_tx() local
1608 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_conf_tx()
1616 txq = sc->tx.txq_map[queue]; ath9k_conf_tx()
1618 ath9k_ps_wakeup(sc); ath9k_conf_tx()
1619 mutex_lock(&sc->mutex); ath9k_conf_tx()
1633 ath_update_max_aggr_framelen(sc, queue, qi.tqi_burstTime); ath9k_conf_tx()
1634 ret = ath_txq_update(sc, txq->axq_qnum, &qi); ath9k_conf_tx()
1638 mutex_unlock(&sc->mutex); ath9k_conf_tx()
1639 ath9k_ps_restore(sc); ath9k_conf_tx()
1650 struct ath_softc *sc = hw->priv; ath9k_set_key() local
1651 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_set_key()
1673 mutex_lock(&sc->mutex); ath9k_set_key()
1674 ath9k_ps_wakeup(sc); ath9k_set_key()
1682 ath9k_del_ps_key(sc, vif, sta); ath9k_set_key()
1692 if (sc->sc_ah->sw_mgmt_crypto_tx && ath9k_set_key()
1723 ath9k_ps_restore(sc); ath9k_set_key()
1724 mutex_unlock(&sc->mutex); ath9k_set_key()
1739 struct ath_softc *sc = hw->priv; ath9k_bss_info_changed() local
1740 struct ath_hw *ah = sc->sc_ah; ath9k_bss_info_changed()
1745 ath9k_ps_wakeup(sc); ath9k_bss_info_changed()
1746 mutex_lock(&sc->mutex); ath9k_bss_info_changed()
1756 ath9k_calculate_summary_state(sc, avp->chanctx); ath9k_bss_info_changed()
1762 ath9k_hw_write_associd(sc->sc_ah); ath9k_bss_info_changed()
1768 ath9k_beacon_config(sc, vif, changed); ath9k_bss_info_changed()
1770 ath9k_calculate_summary_state(sc, avp->chanctx); ath9k_bss_info_changed()
1773 if ((avp->chanctx == sc->cur_chan) && ath9k_bss_info_changed()
1785 sc->beacon.slottime = slottime; ath9k_bss_info_changed()
1786 sc->beacon.updateslot = UPDATE; ath9k_bss_info_changed()
1794 ath9k_p2p_bss_info_changed(sc, vif); ath9k_bss_info_changed()
1797 ath_check_ani(sc); ath9k_bss_info_changed()
1802 ath9k_set_txpower(sc, vif); ath9k_bss_info_changed()
1805 mutex_unlock(&sc->mutex); ath9k_bss_info_changed()
1806 ath9k_ps_restore(sc); ath9k_bss_info_changed()
1813 struct ath_softc *sc = hw->priv; ath9k_get_tsf() local
1816 mutex_lock(&sc->mutex); ath9k_get_tsf()
1817 ath9k_ps_wakeup(sc); ath9k_get_tsf()
1818 tsf = ath9k_hw_gettsf64(sc->sc_ah); ath9k_get_tsf()
1819 ath9k_ps_restore(sc); ath9k_get_tsf()
1820 mutex_unlock(&sc->mutex); ath9k_get_tsf()
1829 struct ath_softc *sc = hw->priv; ath9k_set_tsf() local
1831 mutex_lock(&sc->mutex); ath9k_set_tsf()
1832 ath9k_ps_wakeup(sc); ath9k_set_tsf()
1833 ath9k_hw_settsf64(sc->sc_ah, tsf); ath9k_set_tsf()
1834 ath9k_ps_restore(sc); ath9k_set_tsf()
1835 mutex_unlock(&sc->mutex); ath9k_set_tsf()
1840 struct ath_softc *sc = hw->priv; ath9k_reset_tsf() local
1842 mutex_lock(&sc->mutex); ath9k_reset_tsf()
1844 ath9k_ps_wakeup(sc); ath9k_reset_tsf()
1845 ath9k_hw_reset_tsf(sc->sc_ah); ath9k_reset_tsf()
1846 ath9k_ps_restore(sc); ath9k_reset_tsf()
1848 mutex_unlock(&sc->mutex); ath9k_reset_tsf()
1857 struct ath_softc *sc = hw->priv; ath9k_ampdu_action() local
1858 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_ampdu_action()
1862 mutex_lock(&sc->mutex); ath9k_ampdu_action()
1876 ath9k_ps_wakeup(sc); ath9k_ampdu_action()
1877 ret = ath_tx_aggr_start(sc, sta, tid, ssn); ath9k_ampdu_action()
1880 ath9k_ps_restore(sc); ath9k_ampdu_action()
1886 ath9k_ps_wakeup(sc); ath9k_ampdu_action()
1887 ath_tx_aggr_stop(sc, sta, tid); ath9k_ampdu_action()
1890 ath9k_ps_restore(sc); ath9k_ampdu_action()
1893 ath9k_ps_wakeup(sc); ath9k_ampdu_action()
1894 ath_tx_aggr_resume(sc, sta, tid); ath9k_ampdu_action()
1895 ath9k_ps_restore(sc); ath9k_ampdu_action()
1898 ath_err(ath9k_hw_common(sc->sc_ah), "Unknown AMPDU action\n"); ath9k_ampdu_action()
1901 mutex_unlock(&sc->mutex); ath9k_ampdu_action()
1909 struct ath_softc *sc = hw->priv; ath9k_get_survey() local
1910 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_get_survey()
1920 ath_update_survey_stats(sc); ath9k_get_survey()
1938 memcpy(survey, &sc->survey[pos], sizeof(*survey)); ath9k_get_survey()
1945 static void ath9k_enable_dynack(struct ath_softc *sc) ath9k_enable_dynack() argument
1949 struct ath_hw *ah = sc->sc_ah; ath9k_enable_dynack()
1954 rfilt = ath_calcrxfilter(sc); ath9k_enable_dynack()
1962 struct ath_softc *sc = hw->priv; ath9k_set_coverage_class() local
1963 struct ath_hw *ah = sc->sc_ah; ath9k_set_coverage_class()
1968 mutex_lock(&sc->mutex); ath9k_set_coverage_class()
1976 rfilt = ath_calcrxfilter(sc); ath9k_set_coverage_class()
1979 ath9k_ps_wakeup(sc); ath9k_set_coverage_class()
1981 ath9k_ps_restore(sc); ath9k_set_coverage_class()
1983 ath9k_enable_dynack(sc); ath9k_set_coverage_class()
1986 mutex_unlock(&sc->mutex); ath9k_set_coverage_class()
1989 static bool ath9k_has_tx_pending(struct ath_softc *sc, ath9k_has_tx_pending() argument
1995 if (!ATH_TXQ_SETUP(sc, i)) ath9k_has_tx_pending()
1998 npend = ath9k_has_pending_frames(sc, &sc->tx.txq[i], ath9k_has_tx_pending()
2010 struct ath_softc *sc = hw->priv; ath9k_flush() local
2011 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_flush()
2021 * sc->mutex lock to allow the channel scheduler ath9k_flush()
2031 mutex_lock(&sc->mutex); ath9k_flush()
2033 mutex_unlock(&sc->mutex); ath9k_flush()
2039 struct ath_softc *sc = hw->priv; __ath9k_flush() local
2040 struct ath_hw *ah = sc->sc_ah; __ath9k_flush()
2045 cancel_delayed_work_sync(&sc->tx_complete_work); __ath9k_flush()
2057 spin_lock_bh(&sc->chan_lock); __ath9k_flush()
2061 timeout = sc->cur_chan->flush_timeout; __ath9k_flush()
2062 spin_unlock_bh(&sc->chan_lock); __ath9k_flush()
2067 if (wait_event_timeout(sc->tx_wait, !ath9k_has_tx_pending(sc, sw_pending), __ath9k_flush()
2072 ath9k_ps_wakeup(sc); __ath9k_flush()
2073 spin_lock_bh(&sc->sc_pcu_lock); __ath9k_flush()
2074 drain_txq = ath_drain_all_txq(sc); __ath9k_flush()
2075 spin_unlock_bh(&sc->sc_pcu_lock); __ath9k_flush()
2078 ath_reset(sc, NULL); __ath9k_flush()
2080 ath9k_ps_restore(sc); __ath9k_flush()
2083 ieee80211_queue_delayed_work(hw, &sc->tx_complete_work, 0); __ath9k_flush()
2088 struct ath_softc *sc = hw->priv; ath9k_tx_frames_pending() local
2090 return ath9k_has_tx_pending(sc, true); ath9k_tx_frames_pending()
2095 struct ath_softc *sc = hw->priv; ath9k_tx_last_beacon() local
2096 struct ath_hw *ah = sc->sc_ah; ath9k_tx_last_beacon()
2104 vif = sc->beacon.bslot[0]; ath9k_tx_last_beacon()
2113 if (!sc->beacon.tx_processed && !edma) { ath9k_tx_last_beacon()
2114 tasklet_disable(&sc->bcon_tasklet); ath9k_tx_last_beacon()
2124 sc->beacon.tx_processed = true; ath9k_tx_last_beacon()
2125 sc->beacon.tx_last = !(ts.ts_status & ATH9K_TXERR_MASK); ath9k_tx_last_beacon()
2128 tasklet_enable(&sc->bcon_tasklet); ath9k_tx_last_beacon()
2131 return sc->beacon.tx_last; ath9k_tx_last_beacon()
2137 struct ath_softc *sc = hw->priv; ath9k_get_stats() local
2138 struct ath_hw *ah = sc->sc_ah; ath9k_get_stats()
2185 struct ath_softc *sc = hw->priv; ath9k_set_antenna() local
2186 struct ath_hw *ah = sc->sc_ah; ath9k_set_antenna()
2194 sc->ant_rx = rx_ant; ath9k_set_antenna()
2195 sc->ant_tx = tx_ant; ath9k_set_antenna()
2214 struct ath_softc *sc = hw->priv; ath9k_get_antenna() local
2216 *tx_ant = sc->ant_tx; ath9k_get_antenna()
2217 *rx_ant = sc->ant_rx; ath9k_get_antenna()
2225 struct ath_softc *sc = hw->priv; ath9k_sw_scan_start() local
2226 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_sw_scan_start()
2233 struct ath_softc *sc = hw->priv; ath9k_sw_scan_complete() local
2234 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_sw_scan_complete()
2240 static void ath9k_cancel_pending_offchannel(struct ath_softc *sc) ath9k_cancel_pending_offchannel() argument
2242 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_cancel_pending_offchannel()
2244 if (sc->offchannel.roc_vif) { ath9k_cancel_pending_offchannel()
2248 del_timer_sync(&sc->offchannel.timer); ath9k_cancel_pending_offchannel()
2249 if (sc->offchannel.state >= ATH_OFFCHANNEL_ROC_START) ath9k_cancel_pending_offchannel()
2250 ath_roc_complete(sc, true); ath9k_cancel_pending_offchannel()
2257 del_timer_sync(&sc->offchannel.timer); ath9k_cancel_pending_offchannel()
2258 ath_scan_complete(sc, true); ath9k_cancel_pending_offchannel()
2266 struct ath_softc *sc = hw->priv; ath9k_hw_scan() local
2267 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_hw_scan()
2270 mutex_lock(&sc->mutex); ath9k_hw_scan()
2272 if (WARN_ON(sc->offchannel.scan_req)) { ath9k_hw_scan()
2277 ath9k_ps_wakeup(sc); ath9k_hw_scan()
2279 sc->offchannel.scan_vif = vif; ath9k_hw_scan()
2280 sc->offchannel.scan_req = req; ath9k_hw_scan()
2281 sc->offchannel.scan_idx = 0; ath9k_hw_scan()
2286 if (sc->offchannel.state == ATH_OFFCHANNEL_IDLE) { ath9k_hw_scan()
2288 ath_offchannel_next(sc); ath9k_hw_scan()
2292 mutex_unlock(&sc->mutex); ath9k_hw_scan()
2300 struct ath_softc *sc = hw->priv; ath9k_cancel_hw_scan() local
2301 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_cancel_hw_scan()
2305 mutex_lock(&sc->mutex); ath9k_cancel_hw_scan()
2306 del_timer_sync(&sc->offchannel.timer); ath9k_cancel_hw_scan()
2307 ath_scan_complete(sc, true); ath9k_cancel_hw_scan()
2308 mutex_unlock(&sc->mutex); ath9k_cancel_hw_scan()
2316 struct ath_softc *sc = hw->priv; ath9k_remain_on_channel() local
2317 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_remain_on_channel()
2320 mutex_lock(&sc->mutex); ath9k_remain_on_channel()
2322 if (WARN_ON(sc->offchannel.roc_vif)) { ath9k_remain_on_channel()
2327 ath9k_ps_wakeup(sc); ath9k_remain_on_channel()
2328 sc->offchannel.roc_vif = vif; ath9k_remain_on_channel()
2329 sc->offchannel.roc_chan = chan; ath9k_remain_on_channel()
2330 sc->offchannel.roc_duration = duration; ath9k_remain_on_channel()
2336 if (sc->offchannel.state == ATH_OFFCHANNEL_IDLE) { ath9k_remain_on_channel()
2338 ath_offchannel_next(sc); ath9k_remain_on_channel()
2342 mutex_unlock(&sc->mutex); ath9k_remain_on_channel()
2349 struct ath_softc *sc = hw->priv; ath9k_cancel_remain_on_channel() local
2350 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_cancel_remain_on_channel()
2352 mutex_lock(&sc->mutex); ath9k_cancel_remain_on_channel()
2355 del_timer_sync(&sc->offchannel.timer); ath9k_cancel_remain_on_channel()
2357 if (sc->offchannel.roc_vif) { ath9k_cancel_remain_on_channel()
2358 if (sc->offchannel.state >= ATH_OFFCHANNEL_ROC_START) ath9k_cancel_remain_on_channel()
2359 ath_roc_complete(sc, true); ath9k_cancel_remain_on_channel()
2362 mutex_unlock(&sc->mutex); ath9k_cancel_remain_on_channel()
2370 struct ath_softc *sc = hw->priv; ath9k_add_chanctx() local
2371 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_add_chanctx()
2375 mutex_lock(&sc->mutex); ath9k_add_chanctx()
2377 ath_for_each_chanctx(sc, ctx) { ath_for_each_chanctx()
2384 pos = ctx - &sc->chanctx[0]; ath_for_each_chanctx()
2391 ath_chanctx_set_channel(sc, ctx, &conf->def); ath_for_each_chanctx()
2393 mutex_unlock(&sc->mutex); ath_for_each_chanctx()
2397 mutex_unlock(&sc->mutex);
2405 struct ath_softc *sc = hw->priv; ath9k_remove_chanctx() local
2406 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_remove_chanctx()
2409 mutex_lock(&sc->mutex); ath9k_remove_chanctx()
2417 ath_chanctx_event(sc, NULL, ATH_CHANCTX_EVENT_UNASSIGN); ath9k_remove_chanctx()
2419 mutex_unlock(&sc->mutex); ath9k_remove_chanctx()
2426 struct ath_softc *sc = hw->priv; ath9k_change_chanctx() local
2427 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_change_chanctx()
2430 mutex_lock(&sc->mutex); ath9k_change_chanctx()
2434 ath_chanctx_set_channel(sc, ctx, &conf->def); ath9k_change_chanctx()
2435 mutex_unlock(&sc->mutex); ath9k_change_chanctx()
2442 struct ath_softc *sc = hw->priv; ath9k_assign_vif_chanctx() local
2443 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_assign_vif_chanctx()
2448 ath9k_cancel_pending_offchannel(sc); ath9k_assign_vif_chanctx()
2450 mutex_lock(&sc->mutex); ath9k_assign_vif_chanctx()
2460 ath9k_calculate_summary_state(sc, ctx); ath9k_assign_vif_chanctx()
2464 mutex_unlock(&sc->mutex); ath9k_assign_vif_chanctx()
2473 struct ath_softc *sc = hw->priv; ath9k_unassign_vif_chanctx() local
2474 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_unassign_vif_chanctx()
2479 ath9k_cancel_pending_offchannel(sc); ath9k_unassign_vif_chanctx()
2481 mutex_lock(&sc->mutex); ath9k_unassign_vif_chanctx()
2491 ath9k_calculate_summary_state(sc, ctx); ath9k_unassign_vif_chanctx()
2495 mutex_unlock(&sc->mutex); ath9k_unassign_vif_chanctx()
2501 struct ath_softc *sc = hw->priv; ath9k_mgd_prepare_tx() local
2502 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_mgd_prepare_tx()
2516 mutex_lock(&sc->mutex); ath9k_mgd_prepare_tx()
2518 spin_lock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2519 if (sc->next_chan || (sc->cur_chan != avp->chanctx)) ath9k_mgd_prepare_tx()
2521 spin_unlock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2526 ath9k_cancel_pending_offchannel(sc); ath9k_mgd_prepare_tx()
2528 go_ctx = ath_is_go_chanctx_present(sc); ath9k_mgd_prepare_tx()
2535 spin_lock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2536 sc->sched.mgd_prepare_tx = true; ath9k_mgd_prepare_tx()
2539 spin_unlock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2542 init_completion(&sc->go_beacon); ath9k_mgd_prepare_tx()
2544 mutex_unlock(&sc->mutex); ath9k_mgd_prepare_tx()
2546 if (wait_for_completion_timeout(&sc->go_beacon, ath9k_mgd_prepare_tx()
2551 spin_lock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2552 sc->sched.mgd_prepare_tx = false; ath9k_mgd_prepare_tx()
2553 spin_unlock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2556 mutex_lock(&sc->mutex); ath9k_mgd_prepare_tx()
2563 spin_lock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2564 sc->next_chan = avp->chanctx; ath9k_mgd_prepare_tx()
2565 sc->sched.state = ATH_CHANCTX_STATE_FORCE_ACTIVE; ath9k_mgd_prepare_tx()
2566 spin_unlock_bh(&sc->chan_lock); ath9k_mgd_prepare_tx()
2568 ath_chanctx_set_next(sc, true); ath9k_mgd_prepare_tx()
2570 mutex_unlock(&sc->mutex); ath9k_mgd_prepare_tx()
2595 struct ath_softc *sc = hw->priv; ath9k_get_txpower() local
2598 mutex_lock(&sc->mutex); ath9k_get_txpower()
2602 *dbm = sc->cur_chan->cur_txpower; ath9k_get_txpower()
2603 mutex_unlock(&sc->mutex); ath9k_get_txpower()
H A Dtx99.c19 static void ath9k_tx99_stop(struct ath_softc *sc) ath9k_tx99_stop() argument
21 struct ath_hw *ah = sc->sc_ah; ath9k_tx99_stop()
24 ath_drain_all_txq(sc); ath9k_tx99_stop()
25 ath_startrecv(sc); ath9k_tx99_stop()
30 ieee80211_wake_queues(sc->hw); ath9k_tx99_stop()
32 kfree_skb(sc->tx99_skb); ath9k_tx99_stop()
33 sc->tx99_skb = NULL; ath9k_tx99_stop()
34 sc->tx99_state = false; ath9k_tx99_stop()
36 ath9k_hw_tx99_stop(sc->sc_ah); ath9k_tx99_stop()
40 static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc) ath9k_build_tx99_skb() argument
52 struct ieee80211_hw *hw = sc->hw; ath9k_build_tx99_skb()
53 struct ath_hw *ah = sc->sc_ah; ath9k_build_tx99_skb()
59 if (!sc->tx99_vif) ath9k_build_tx99_skb()
62 avp = (struct ath_vif *)sc->tx99_vif->drv_priv; ath9k_build_tx99_skb()
85 tx_info->band = sc->cur_chan->chandef.chan->band; ath9k_build_tx99_skb()
87 tx_info->control.vif = sc->tx99_vif; ath9k_build_tx99_skb()
100 static void ath9k_tx99_deinit(struct ath_softc *sc) ath9k_tx99_deinit() argument
102 ath_reset(sc, NULL); ath9k_tx99_deinit()
104 ath9k_ps_wakeup(sc); ath9k_tx99_deinit()
105 ath9k_tx99_stop(sc); ath9k_tx99_deinit()
106 ath9k_ps_restore(sc); ath9k_tx99_deinit()
109 static int ath9k_tx99_init(struct ath_softc *sc) ath9k_tx99_init() argument
111 struct ieee80211_hw *hw = sc->hw; ath9k_tx99_init()
112 struct ath_hw *ah = sc->sc_ah; ath9k_tx99_init()
123 sc->tx99_skb = ath9k_build_tx99_skb(sc); ath9k_tx99_init()
124 if (!sc->tx99_skb) ath9k_tx99_init()
128 txctl.txq = sc->tx.txq_map[IEEE80211_AC_VO]; ath9k_tx99_init()
130 ath_reset(sc, NULL); ath9k_tx99_init()
132 ath9k_ps_wakeup(sc); ath9k_tx99_init()
136 ath_drain_all_txq(sc); ath9k_tx99_init()
137 ath_stoprecv(sc); ath9k_tx99_init()
139 sc->tx99_state = true; ath9k_tx99_init()
143 if (sc->tx99_power == MAX_RATE_POWER + 1) ath9k_tx99_init()
144 sc->tx99_power = MAX_RATE_POWER; ath9k_tx99_init()
146 ath9k_hw_tx99_set_txpower(ah, sc->tx99_power); ath9k_tx99_init()
147 r = ath9k_tx99_send(sc, sc->tx99_skb, &txctl); ath9k_tx99_init()
154 sc->tx99_power, ath9k_tx99_init()
155 sc->tx99_power / 2); ath9k_tx99_init()
165 struct ath_softc *sc = file->private_data; read_file_tx99() local
169 len = sprintf(buf, "%d\n", sc->tx99_state); read_file_tx99()
176 struct ath_softc *sc = file->private_data; write_file_tx99() local
177 struct ath_common *common = ath9k_hw_common(sc->sc_ah); write_file_tx99()
183 if (sc->cur_chan->nvifs > 1) write_file_tx99()
193 if (start == sc->tx99_state) { write_file_tx99()
197 ath9k_tx99_deinit(sc); write_file_tx99()
201 ath9k_tx99_deinit(sc); write_file_tx99()
205 r = ath9k_tx99_init(sc); write_file_tx99()
224 struct ath_softc *sc = file->private_data; read_file_tx99_power() local
229 sc->tx99_power, read_file_tx99_power()
230 sc->tx99_power / 2); read_file_tx99_power()
239 struct ath_softc *sc = file->private_data; write_file_tx99_power() local
250 sc->tx99_power = tx_power; write_file_tx99_power()
252 ath9k_ps_wakeup(sc); write_file_tx99_power()
253 ath9k_hw_tx99_set_txpower(sc->sc_ah, sc->tx99_power); write_file_tx99_power()
254 ath9k_ps_restore(sc); write_file_tx99_power()
267 void ath9k_tx99_init_debug(struct ath_softc *sc) ath9k_tx99_init_debug() argument
269 if (!AR_SREV_9300_20_OR_LATER(sc->sc_ah)) ath9k_tx99_init_debug()
273 sc->debug.debugfs_phy, sc, ath9k_tx99_init_debug()
276 sc->debug.debugfs_phy, sc, ath9k_tx99_init_debug()
H A Dgpio.c27 struct ath_softc *sc = container_of(led_cdev, struct ath_softc, led_cdev); ath_led_brightness() local
30 if (sc->sc_ah->config.led_active_high) ath_led_brightness()
33 ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, val); ath_led_brightness()
36 void ath_deinit_leds(struct ath_softc *sc) ath_deinit_leds() argument
38 if (!sc->led_registered) ath_deinit_leds()
41 ath_led_brightness(&sc->led_cdev, LED_OFF); ath_deinit_leds()
42 led_classdev_unregister(&sc->led_cdev); ath_deinit_leds()
45 void ath_init_leds(struct ath_softc *sc) ath_init_leds() argument
49 if (AR_SREV_9100(sc->sc_ah)) ath_init_leds()
53 sc->led_cdev.default_trigger = ath_init_leds()
54 ieee80211_get_radio_led_name(sc->hw); ath_init_leds()
56 snprintf(sc->led_name, sizeof(sc->led_name), ath_init_leds()
57 "ath9k-%s", wiphy_name(sc->hw->wiphy)); ath_init_leds()
58 sc->led_cdev.name = sc->led_name; ath_init_leds()
59 sc->led_cdev.brightness_set = ath_led_brightness; ath_init_leds()
61 ret = led_classdev_register(wiphy_dev(sc->hw->wiphy), &sc->led_cdev); ath_init_leds()
65 sc->led_registered = true; ath_init_leds()
68 void ath_fill_led_pin(struct ath_softc *sc) ath_fill_led_pin() argument
70 struct ath_hw *ah = sc->sc_ah; ath_fill_led_pin()
83 else if (AR_SREV_9485(sc->sc_ah)) ath_fill_led_pin()
85 else if (AR_SREV_9300(sc->sc_ah)) ath_fill_led_pin()
87 else if (AR_SREV_9462(sc->sc_ah) || AR_SREV_9565(sc->sc_ah)) ath_fill_led_pin()
104 static bool ath_is_rfkill_set(struct ath_softc *sc) ath_is_rfkill_set() argument
106 struct ath_hw *ah = sc->sc_ah; ath_is_rfkill_set()
109 ath9k_ps_wakeup(sc); ath_is_rfkill_set()
112 ath9k_ps_restore(sc); ath_is_rfkill_set()
119 struct ath_softc *sc = hw->priv; ath9k_rfkill_poll_state() local
120 bool blocked = !!ath_is_rfkill_set(sc); ath9k_rfkill_poll_state()
125 void ath_start_rfkill_poll(struct ath_softc *sc) ath_start_rfkill_poll() argument
127 struct ath_hw *ah = sc->sc_ah; ath_start_rfkill_poll()
130 wiphy_rfkill_start_polling(sc->hw->wiphy); ath_start_rfkill_poll()
142 static void ath_detect_bt_priority(struct ath_softc *sc) ath_detect_bt_priority() argument
144 struct ath_btcoex *btcoex = &sc->btcoex; ath_detect_bt_priority()
145 struct ath_hw *ah = sc->sc_ah; ath_detect_bt_priority()
147 if (ath9k_hw_gpio_get(sc->sc_ah, ah->btcoex_hw.btpriority_gpio)) ath_detect_bt_priority()
156 ath_dbg(ath9k_hw_common(sc->sc_ah), BTCOEX, ath_detect_bt_priority()
161 ath_dbg(ath9k_hw_common(sc->sc_ah), BTCOEX, ath_detect_bt_priority()
171 static void ath_mci_ftp_adjust(struct ath_softc *sc) ath_mci_ftp_adjust() argument
173 struct ath_btcoex *btcoex = &sc->btcoex; ath_mci_ftp_adjust()
175 struct ath_hw *ah = sc->sc_ah; ath_mci_ftp_adjust()
181 (sc->rx.num_pkts < ATH_BTCOEX_STOMP_FTP_THRESH); ath_mci_ftp_adjust()
185 sc->rx.num_pkts = 0; ath_mci_ftp_adjust()
196 struct ath_softc *sc = (struct ath_softc *) data; ath_btcoex_period_timer() local
197 struct ath_hw *ah = sc->sc_ah; ath_btcoex_period_timer()
198 struct ath_btcoex *btcoex = &sc->btcoex; ath_btcoex_period_timer()
203 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath_btcoex_period_timer()
204 if (sc->sc_ah->power_mode == ATH9K_PM_NETWORK_SLEEP) { ath_btcoex_period_timer()
206 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_btcoex_period_timer()
209 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_btcoex_period_timer()
211 ath9k_ps_wakeup(sc); ath_btcoex_period_timer()
215 ath9k_mci_update_rssi(sc); ath_btcoex_period_timer()
216 ath_mci_ftp_adjust(sc); ath_btcoex_period_timer()
220 ath_detect_bt_priority(sc); ath_btcoex_period_timer()
244 ath9k_ps_restore(sc); ath_btcoex_period_timer()
257 struct ath_softc *sc = (struct ath_softc *)arg; ath_btcoex_no_stomp_timer() local
258 struct ath_hw *ah = sc->sc_ah; ath_btcoex_no_stomp_timer()
259 struct ath_btcoex *btcoex = &sc->btcoex; ath_btcoex_no_stomp_timer()
261 ath9k_ps_wakeup(sc); ath_btcoex_no_stomp_timer()
273 ath9k_ps_restore(sc); ath_btcoex_no_stomp_timer()
276 static void ath_init_btcoex_timer(struct ath_softc *sc) ath_init_btcoex_timer() argument
278 struct ath_btcoex *btcoex = &sc->btcoex; ath_init_btcoex_timer()
288 (unsigned long) sc); ath_init_btcoex_timer()
290 (unsigned long) sc); ath_init_btcoex_timer()
298 void ath9k_btcoex_timer_resume(struct ath_softc *sc) ath9k_btcoex_timer_resume() argument
300 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_btcoex_timer_resume()
301 struct ath_hw *ah = sc->sc_ah; ath9k_btcoex_timer_resume()
323 void ath9k_btcoex_timer_pause(struct ath_softc *sc) ath9k_btcoex_timer_pause() argument
325 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_btcoex_timer_pause()
326 struct ath_hw *ah = sc->sc_ah; ath9k_btcoex_timer_pause()
338 void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc) ath9k_btcoex_stop_gen_timer() argument
340 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_btcoex_stop_gen_timer()
345 u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc, u32 max_4ms_framelen) ath9k_btcoex_aggr_limit() argument
347 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_btcoex_aggr_limit()
348 struct ath_mci_profile *mci = &sc->btcoex.mci; ath9k_btcoex_aggr_limit()
351 if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI) && mci->aggr_limit) ath9k_btcoex_aggr_limit()
360 void ath9k_btcoex_handle_interrupt(struct ath_softc *sc, u32 status) ath9k_btcoex_handle_interrupt() argument
363 ath_mci_intr(sc); ath9k_btcoex_handle_interrupt()
366 void ath9k_start_btcoex(struct ath_softc *sc) ath9k_start_btcoex() argument
368 struct ath_hw *ah = sc->sc_ah; ath9k_start_btcoex()
381 ath9k_btcoex_timer_resume(sc); ath9k_start_btcoex()
384 void ath9k_stop_btcoex(struct ath_softc *sc) ath9k_stop_btcoex() argument
386 struct ath_hw *ah = sc->sc_ah; ath9k_stop_btcoex()
392 ath9k_btcoex_timer_pause(sc); ath9k_stop_btcoex()
396 ath_mci_flush_profile(&sc->btcoex.mci); ath9k_stop_btcoex()
399 void ath9k_deinit_btcoex(struct ath_softc *sc) ath9k_deinit_btcoex() argument
401 struct ath_hw *ah = sc->sc_ah; ath9k_deinit_btcoex()
404 ath_mci_cleanup(sc); ath9k_deinit_btcoex()
407 int ath9k_init_btcoex(struct ath_softc *sc) ath9k_init_btcoex() argument
410 struct ath_hw *ah = sc->sc_ah; ath9k_init_btcoex()
415 switch (ath9k_hw_get_btcoex_scheme(sc->sc_ah)) { ath9k_init_btcoex()
419 ath9k_hw_btcoex_init_2wire(sc->sc_ah); ath9k_init_btcoex()
422 ath9k_hw_btcoex_init_3wire(sc->sc_ah); ath9k_init_btcoex()
423 ath_init_btcoex_timer(sc); ath9k_init_btcoex()
424 txq = sc->tx.txq_map[IEEE80211_AC_BE]; ath9k_init_btcoex()
425 ath9k_hw_init_btcoex_hw(sc->sc_ah, txq->axq_qnum); ath9k_init_btcoex()
428 ath_init_btcoex_timer(sc); ath9k_init_btcoex()
430 sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE; ath9k_init_btcoex()
431 INIT_LIST_HEAD(&sc->btcoex.mci.info); ath9k_init_btcoex()
434 r = ath_mci_setup(sc); ath9k_init_btcoex()
447 static int ath9k_dump_mci_btcoex(struct ath_softc *sc, u8 *buf, u32 size) ath9k_dump_mci_btcoex() argument
449 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_dump_mci_btcoex()
451 struct ath_hw *ah = sc->sc_ah; ath9k_dump_mci_btcoex()
492 static int ath9k_dump_legacy_btcoex(struct ath_softc *sc, u8 *buf, u32 size) ath9k_dump_legacy_btcoex() argument
495 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_dump_legacy_btcoex()
506 int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf, u32 size) ath9k_dump_btcoex() argument
508 if (ath9k_hw_mci_is_enabled(sc->sc_ah)) ath9k_dump_btcoex()
509 return ath9k_dump_mci_btcoex(sc, buf, size); ath9k_dump_btcoex()
511 return ath9k_dump_legacy_btcoex(sc, buf, size); ath9k_dump_btcoex()
H A Ddebug.c29 void ath9k_debug_sync_cause(struct ath_softc *sc, u32 sync_cause) ath9k_debug_sync_cause() argument
32 sc->debug.stats.istats.sync_cause_all++; ath9k_debug_sync_cause()
34 sc->debug.stats.istats.sync_rtc_irq++; ath9k_debug_sync_cause()
36 sc->debug.stats.istats.sync_mac_irq++; ath9k_debug_sync_cause()
38 sc->debug.stats.istats.eeprom_illegal_access++; ath9k_debug_sync_cause()
40 sc->debug.stats.istats.apb_timeout++; ath9k_debug_sync_cause()
42 sc->debug.stats.istats.pci_mode_conflict++; ath9k_debug_sync_cause()
44 sc->debug.stats.istats.host1_fatal++; ath9k_debug_sync_cause()
46 sc->debug.stats.istats.host1_perr++; ath9k_debug_sync_cause()
48 sc->debug.stats.istats.trcv_fifo_perr++; ath9k_debug_sync_cause()
50 sc->debug.stats.istats.radm_cpl_ep++; ath9k_debug_sync_cause()
52 sc->debug.stats.istats.radm_cpl_dllp_abort++; ath9k_debug_sync_cause()
54 sc->debug.stats.istats.radm_cpl_tlp_abort++; ath9k_debug_sync_cause()
56 sc->debug.stats.istats.radm_cpl_ecrc_err++; ath9k_debug_sync_cause()
58 sc->debug.stats.istats.radm_cpl_timeout++; ath9k_debug_sync_cause()
60 sc->debug.stats.istats.local_timeout++; ath9k_debug_sync_cause()
62 sc->debug.stats.istats.pm_access++; ath9k_debug_sync_cause()
64 sc->debug.stats.istats.mac_awake++; ath9k_debug_sync_cause()
66 sc->debug.stats.istats.mac_asleep++; ath9k_debug_sync_cause()
68 sc->debug.stats.istats.mac_sleep_access++; ath9k_debug_sync_cause()
89 struct ath_softc *sc = file->private_data; read_file_debug() local
90 struct ath_common *common = ath9k_hw_common(sc->sc_ah); read_file_debug()
101 struct ath_softc *sc = file->private_data; write_file_debug() local
102 struct ath_common *common = ath9k_hw_common(sc->sc_ah); write_file_debug()
135 struct ath_softc *sc = file->private_data; read_file_ani() local
136 struct ath_common *common = ath9k_hw_common(sc->sc_ah); read_file_ani()
137 struct ath_hw *ah = sc->sc_ah; read_file_ani()
191 struct ath_softc *sc = file->private_data; write_file_ani() local
192 struct ath_common *common = ath9k_hw_common(sc->sc_ah); write_file_ani()
212 ath_stop_ani(sc); write_file_ani()
214 ath_check_ani(sc); write_file_ani()
234 struct ath_softc *sc = file->private_data; read_file_bt_ant_diversity() local
235 struct ath_common *common = ath9k_hw_common(sc->sc_ah); read_file_bt_ant_diversity()
247 struct ath_softc *sc = file->private_data; write_file_bt_ant_diversity() local
248 struct ath_common *common = ath9k_hw_common(sc->sc_ah); write_file_bt_ant_diversity()
249 struct ath9k_hw_capabilities *pCap = &sc->sc_ah->caps; write_file_bt_ant_diversity()
266 ath9k_ps_wakeup(sc); write_file_bt_ant_diversity()
267 ath9k_hw_set_bt_ant_diversity(sc->sc_ah, common->bt_ant_diversity); write_file_bt_ant_diversity()
270 ath9k_ps_restore(sc); write_file_bt_ant_diversity()
285 void ath9k_debug_stat_ant(struct ath_softc *sc, ath9k_debug_stat_ant() argument
289 struct ath_antenna_stats *as_main = &sc->debug.stats.ant_stats[ANT_MAIN]; ath9k_debug_stat_ant()
290 struct ath_antenna_stats *as_alt = &sc->debug.stats.ant_stats[ANT_ALT]; ath9k_debug_stat_ant()
303 struct ath_softc *sc = file->private_data; read_file_antenna_diversity() local
304 struct ath_hw *ah = sc->sc_ah; read_file_antenna_diversity()
306 struct ath_antenna_stats *as_main = &sc->debug.stats.ant_stats[ANT_MAIN]; read_file_antenna_diversity()
307 struct ath_antenna_stats *as_alt = &sc->debug.stats.ant_stats[ANT_ALT]; read_file_antenna_diversity()
327 ath9k_ps_wakeup(sc); read_file_antenna_diversity()
337 ath9k_ps_restore(sc); read_file_antenna_diversity()
407 struct ath_softc *sc = hw->priv; read_file_dma() local
408 struct ath_hw *ah = sc->sc_ah; read_file_dma()
413 ath9k_ps_wakeup(sc); read_file_dma()
469 ath9k_ps_restore(sc); read_file_dma()
474 void ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status) ath_debug_stat_interrupt() argument
477 sc->debug.stats.istats.total++; ath_debug_stat_interrupt()
478 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) { ath_debug_stat_interrupt()
480 sc->debug.stats.istats.rxlp++; ath_debug_stat_interrupt()
482 sc->debug.stats.istats.rxhp++; ath_debug_stat_interrupt()
484 sc->debug.stats.istats.bb_watchdog++; ath_debug_stat_interrupt()
487 sc->debug.stats.istats.rxok++; ath_debug_stat_interrupt()
490 sc->debug.stats.istats.rxeol++; ath_debug_stat_interrupt()
492 sc->debug.stats.istats.rxorn++; ath_debug_stat_interrupt()
494 sc->debug.stats.istats.txok++; ath_debug_stat_interrupt()
496 sc->debug.stats.istats.txurn++; ath_debug_stat_interrupt()
498 sc->debug.stats.istats.rxphyerr++; ath_debug_stat_interrupt()
500 sc->debug.stats.istats.rx_keycache_miss++; ath_debug_stat_interrupt()
502 sc->debug.stats.istats.swba++; ath_debug_stat_interrupt()
504 sc->debug.stats.istats.bmiss++; ath_debug_stat_interrupt()
506 sc->debug.stats.istats.bnr++; ath_debug_stat_interrupt()
508 sc->debug.stats.istats.cst++; ath_debug_stat_interrupt()
510 sc->debug.stats.istats.gtt++; ath_debug_stat_interrupt()
512 sc->debug.stats.istats.tim++; ath_debug_stat_interrupt()
514 sc->debug.stats.istats.cabend++; ath_debug_stat_interrupt()
516 sc->debug.stats.istats.dtimsync++; ath_debug_stat_interrupt()
518 sc->debug.stats.istats.dtim++; ath_debug_stat_interrupt()
520 sc->debug.stats.istats.tsfoor++; ath_debug_stat_interrupt()
522 sc->debug.stats.istats.mci++; ath_debug_stat_interrupt()
524 sc->debug.stats.istats.gen_timer++; ath_debug_stat_interrupt()
530 struct ath_softc *sc = hw->priv; read_file_interrupt() local
535 sc->debug.stats.istats.s); \ read_file_interrupt()
538 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) { read_file_interrupt()
594 struct ath_softc *sc = hw->priv; read_file_xmit() local
624 static void print_queue(struct ath_softc *sc, struct ath_txq *txq, print_queue() argument
627 ath_txq_lock(sc, txq); print_queue()
635 ath_txq_unlock(sc, txq); print_queue()
641 struct ath_softc *sc = hw->priv; read_file_queues() local
649 txq = sc->tx.txq_map[i]; read_file_queues()
651 print_queue(sc, txq, file); read_file_queues()
655 print_queue(sc, sc->beacon.cabq, file); read_file_queues()
663 struct ath_softc *sc = hw->priv; read_file_misc() local
664 struct ath_common *common = ath9k_hw_common(sc->sc_ah); read_file_misc()
673 ath_opmode_to_string(sc->sc_ah->opmode)); read_file_misc()
675 ath9k_ps_wakeup(sc); read_file_misc()
676 rxfilter = ath9k_hw_getrxfilter(sc->sc_ah); read_file_misc()
677 ath9k_ps_restore(sc); read_file_misc()
712 reg = sc->sc_ah->imask; read_file_misc()
734 ath_for_each_chanctx(sc, ctx) { ath_for_each_chanctx()
737 ath9k_calculate_iter_data(sc, ctx, &iter_data); ath_for_each_chanctx()
745 iter_data.nadhocs, sc->cur_chan->nvifs, ath_for_each_chanctx()
746 sc->nbcnvifs); ath_for_each_chanctx()
755 struct ath_softc *sc = hw->priv; read_file_reset() local
776 sc->debug.stats.reset[i]); read_file_reset()
782 void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf, ath_debug_stat_tx() argument
789 sc->debug.stats.txstats[qnum].tx_bytes_all += bf->bf_mpdu->len; ath_debug_stat_tx()
819 void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs) ath_debug_stat_rx() argument
821 ath9k_cmn_debug_stat_rx(&sc->debug.stats.rxstats, rs); ath_debug_stat_rx()
827 struct ath_softc *sc = file->private_data; read_file_regidx() local
831 len = sprintf(buf, "0x%08x\n", sc->debug.regidx); read_file_regidx()
838 struct ath_softc *sc = file->private_data; write_file_regidx() local
851 sc->debug.regidx = regidx; write_file_regidx()
866 struct ath_softc *sc = file->private_data; read_file_regval() local
867 struct ath_hw *ah = sc->sc_ah; read_file_regval()
872 ath9k_ps_wakeup(sc); read_file_regval()
873 regval = REG_READ_D(ah, sc->debug.regidx); read_file_regval()
874 ath9k_ps_restore(sc); read_file_regval()
882 struct ath_softc *sc = file->private_data; write_file_regval() local
883 struct ath_hw *ah = sc->sc_ah; write_file_regval()
896 ath9k_ps_wakeup(sc); write_file_regval()
897 REG_WRITE_D(ah, sc->debug.regidx, regval); write_file_regval()
898 ath9k_ps_restore(sc); write_file_regval()
914 struct ath_softc *sc = inode->i_private; open_file_regdump() local
920 max_reg_offset = AR_SREV_9300_20_OR_LATER(sc->sc_ah) ? 0x16bd4 : 0xb500; open_file_regdump()
927 ath9k_ps_wakeup(sc); open_file_regdump()
930 "0x%06x 0x%08x\n", i << 2, REG_READ(sc->sc_ah, i << 2)); open_file_regdump()
931 ath9k_ps_restore(sc); open_file_regdump()
949 struct ath_softc *sc = hw->priv; read_file_dump_nfcal() local
950 struct ath_hw *ah = sc->sc_ah; read_file_dump_nfcal()
951 struct ath9k_nfcal_hist *h = sc->cur_chan->caldata.nfCalHist; read_file_dump_nfcal()
992 struct ath_softc *sc = file->private_data; read_file_btcoex() local
1001 if (!sc->sc_ah->common.btcoex_enabled) { read_file_btcoex()
1007 len = ath9k_dump_btcoex(sc, buf, size); read_file_btcoex()
1027 struct ath_softc *sc = file->private_data; read_file_ackto() local
1028 struct ath_hw *ah = sc->sc_ah; read_file_ackto()
1051 struct ath_softc *sc = file->private_data; read_file_wow() local
1061 sc->force_wow ? "ENABLED" : "DISABLED"); read_file_wow()
1075 struct ath_softc *sc = file->private_data; write_file_wow() local
1091 if (!sc->force_wow) { write_file_wow()
1092 sc->force_wow = true; write_file_wow()
1093 ath9k_init_wow(sc->hw); write_file_wow()
1112 struct ath_softc *sc = file->private_data; read_file_tpc() local
1113 struct ath_hw *ah = sc->sc_ah; read_file_tpc()
1137 struct ath_softc *sc = file->private_data; write_file_tpc() local
1138 struct ath_hw *ah = sc->sc_ah; write_file_tpc()
1160 mutex_lock(&sc->mutex); write_file_tpc()
1161 ath9k_set_txpower(sc, NULL); write_file_tpc()
1162 mutex_unlock(&sc->mutex); write_file_tpc()
1235 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].elem; \
1236 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].elem; \
1237 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].elem; \
1238 data[i++] = sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].elem; \
1243 data[i++] = sc->debug.stats.rxstats.elem; \
1250 struct ath_softc *sc = hw->priv; ath9k_get_et_stats() local
1253 data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_pkts_all + ath9k_get_et_stats()
1254 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_pkts_all + ath9k_get_et_stats()
1255 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_pkts_all + ath9k_get_et_stats()
1256 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_pkts_all); ath9k_get_et_stats()
1257 data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_bytes_all + ath9k_get_et_stats()
1258 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_bytes_all + ath9k_get_et_stats()
1259 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_bytes_all + ath9k_get_et_stats()
1260 sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_bytes_all); ath9k_get_et_stats()
1297 void ath9k_deinit_debug(struct ath_softc *sc) ath9k_deinit_debug() argument
1299 ath9k_cmn_spectral_deinit_debug(&sc->spec_priv); ath9k_deinit_debug()
1305 struct ath_softc *sc = (struct ath_softc *) common->priv; ath9k_init_debug() local
1307 sc->debug.debugfs_phy = debugfs_create_dir("ath9k", ath9k_init_debug()
1308 sc->hw->wiphy->debugfsdir); ath9k_init_debug()
1309 if (!sc->debug.debugfs_phy) ath9k_init_debug()
1313 debugfs_create_file("debug", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1314 sc, &fops_debug); ath9k_init_debug()
1317 ath9k_dfs_init_debug(sc); ath9k_init_debug()
1318 ath9k_tx99_init_debug(sc); ath9k_init_debug()
1319 ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy); ath9k_init_debug()
1321 debugfs_create_devm_seqfile(sc->dev, "dma", sc->debug.debugfs_phy, ath9k_init_debug()
1323 debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy, ath9k_init_debug()
1325 debugfs_create_devm_seqfile(sc->dev, "xmit", sc->debug.debugfs_phy, ath9k_init_debug()
1327 debugfs_create_devm_seqfile(sc->dev, "queues", sc->debug.debugfs_phy, ath9k_init_debug()
1329 debugfs_create_u32("qlen_bk", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1330 &sc->tx.txq_max_pending[IEEE80211_AC_BK]); ath9k_init_debug()
1331 debugfs_create_u32("qlen_be", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1332 &sc->tx.txq_max_pending[IEEE80211_AC_BE]); ath9k_init_debug()
1333 debugfs_create_u32("qlen_vi", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1334 &sc->tx.txq_max_pending[IEEE80211_AC_VI]); ath9k_init_debug()
1335 debugfs_create_u32("qlen_vo", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1336 &sc->tx.txq_max_pending[IEEE80211_AC_VO]); ath9k_init_debug()
1337 debugfs_create_devm_seqfile(sc->dev, "misc", sc->debug.debugfs_phy, ath9k_init_debug()
1339 debugfs_create_devm_seqfile(sc->dev, "reset", sc->debug.debugfs_phy, ath9k_init_debug()
1342 ath9k_cmn_debug_recv(sc->debug.debugfs_phy, &sc->debug.stats.rxstats); ath9k_init_debug()
1343 ath9k_cmn_debug_phy_err(sc->debug.debugfs_phy, &sc->debug.stats.rxstats); ath9k_init_debug()
1345 debugfs_create_u8("rx_chainmask", S_IRUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1347 debugfs_create_u8("tx_chainmask", S_IRUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1350 sc->debug.debugfs_phy, sc, &fops_ani); ath9k_init_debug()
1351 debugfs_create_bool("paprd", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1352 &sc->sc_ah->config.enable_paprd); ath9k_init_debug()
1353 debugfs_create_file("regidx", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1354 sc, &fops_regidx); ath9k_init_debug()
1355 debugfs_create_file("regval", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1356 sc, &fops_regval); ath9k_init_debug()
1358 sc->debug.debugfs_phy, ath9k_init_debug()
1360 debugfs_create_file("regdump", S_IRUSR, sc->debug.debugfs_phy, sc, ath9k_init_debug()
1362 debugfs_create_devm_seqfile(sc->dev, "dump_nfcal", ath9k_init_debug()
1363 sc->debug.debugfs_phy, ath9k_init_debug()
1366 ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah); ath9k_init_debug()
1367 ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah); ath9k_init_debug()
1370 sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask); ath9k_init_debug()
1372 sc->debug.debugfs_phy, &sc->sc_ah->gpio_val); ath9k_init_debug()
1374 sc->debug.debugfs_phy, sc, &fops_antenna_diversity); ath9k_init_debug()
1377 sc->debug.debugfs_phy, sc, &fops_bt_ant_diversity); ath9k_init_debug()
1378 debugfs_create_file("btcoex", S_IRUSR, sc->debug.debugfs_phy, sc, ath9k_init_debug()
1384 sc->debug.debugfs_phy, sc, &fops_wow); ath9k_init_debug()
1388 debugfs_create_file("ack_to", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ath9k_init_debug()
1389 sc, &fops_ackto); ath9k_init_debug()
1392 sc->debug.debugfs_phy, sc, &fops_tpc); ath9k_init_debug()
H A Drecv.c23 static inline bool ath9k_check_auto_sleep(struct ath_softc *sc) ath9k_check_auto_sleep() argument
25 return sc->ps_enabled && ath9k_check_auto_sleep()
26 (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_AUTOSLEEP); ath9k_check_auto_sleep()
37 static void ath_rx_buf_link(struct ath_softc *sc, struct ath_rxbuf *bf, ath_rx_buf_link() argument
40 struct ath_hw *ah = sc->sc_ah; ath_rx_buf_link()
63 if (sc->rx.rxlink) ath_rx_buf_link()
64 *sc->rx.rxlink = bf->bf_daddr; ath_rx_buf_link()
68 sc->rx.rxlink = &ds->ds_link; ath_rx_buf_link()
71 static void ath_rx_buf_relink(struct ath_softc *sc, struct ath_rxbuf *bf, ath_rx_buf_relink() argument
74 if (sc->rx.buf_hold) ath_rx_buf_relink()
75 ath_rx_buf_link(sc, sc->rx.buf_hold, flush); ath_rx_buf_relink()
77 sc->rx.buf_hold = bf; ath_rx_buf_relink()
80 static void ath_setdefantenna(struct ath_softc *sc, u32 antenna) ath_setdefantenna() argument
83 ath9k_hw_setantenna(sc->sc_ah, antenna); ath_setdefantenna()
84 sc->rx.defant = antenna; ath_setdefantenna()
85 sc->rx.rxotherant = 0; ath_setdefantenna()
88 static void ath_opmode_init(struct ath_softc *sc) ath_opmode_init() argument
90 struct ath_hw *ah = sc->sc_ah; ath_opmode_init()
96 rfilt = ath_calcrxfilter(sc); ath_opmode_init()
110 static bool ath_rx_edma_buf_link(struct ath_softc *sc, ath_rx_edma_buf_link() argument
113 struct ath_hw *ah = sc->sc_ah; ath_rx_edma_buf_link()
118 rx_edma = &sc->rx.rx_edma[qtype]; ath_rx_edma_buf_link()
122 bf = list_first_entry(&sc->rx.rxbuf, struct ath_rxbuf, list); ath_rx_edma_buf_link()
128 dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, ath_rx_edma_buf_link()
138 static void ath_rx_addbuffer_edma(struct ath_softc *sc, ath_rx_addbuffer_edma() argument
141 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_rx_addbuffer_edma()
144 if (list_empty(&sc->rx.rxbuf)) { ath_rx_addbuffer_edma()
149 list_for_each_entry_safe(bf, tbf, &sc->rx.rxbuf, list) ath_rx_addbuffer_edma()
150 if (!ath_rx_edma_buf_link(sc, qtype)) ath_rx_addbuffer_edma()
155 static void ath_rx_remove_buffer(struct ath_softc *sc, ath_rx_remove_buffer() argument
162 rx_edma = &sc->rx.rx_edma[qtype]; ath_rx_remove_buffer()
167 list_add_tail(&bf->list, &sc->rx.rxbuf); ath_rx_remove_buffer()
171 static void ath_rx_edma_cleanup(struct ath_softc *sc) ath_rx_edma_cleanup() argument
173 struct ath_hw *ah = sc->sc_ah; ath_rx_edma_cleanup()
177 ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_LP); ath_rx_edma_cleanup()
178 ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_HP); ath_rx_edma_cleanup()
180 list_for_each_entry(bf, &sc->rx.rxbuf, list) { ath_rx_edma_cleanup()
182 dma_unmap_single(sc->dev, bf->bf_buf_addr, ath_rx_edma_cleanup()
198 static int ath_rx_edma_init(struct ath_softc *sc, int nbufs) ath_rx_edma_init() argument
200 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_rx_edma_init()
201 struct ath_hw *ah = sc->sc_ah; ath_rx_edma_init()
210 ath_rx_edma_init_queue(&sc->rx.rx_edma[ATH9K_RX_QUEUE_LP], ath_rx_edma_init()
212 ath_rx_edma_init_queue(&sc->rx.rx_edma[ATH9K_RX_QUEUE_HP], ath_rx_edma_init()
216 bf = devm_kzalloc(sc->dev, size, GFP_KERNEL); ath_rx_edma_init()
220 INIT_LIST_HEAD(&sc->rx.rxbuf); ath_rx_edma_init()
232 bf->bf_buf_addr = dma_map_single(sc->dev, skb->data, ath_rx_edma_init()
235 if (unlikely(dma_mapping_error(sc->dev, ath_rx_edma_init()
246 list_add_tail(&bf->list, &sc->rx.rxbuf); ath_rx_edma_init()
252 ath_rx_edma_cleanup(sc); ath_rx_edma_init()
256 static void ath_edma_start_recv(struct ath_softc *sc) ath_edma_start_recv() argument
258 ath9k_hw_rxena(sc->sc_ah); ath_edma_start_recv()
259 ath_rx_addbuffer_edma(sc, ATH9K_RX_QUEUE_HP); ath_edma_start_recv()
260 ath_rx_addbuffer_edma(sc, ATH9K_RX_QUEUE_LP); ath_edma_start_recv()
261 ath_opmode_init(sc); ath_edma_start_recv()
262 ath9k_hw_startpcureceive(sc->sc_ah, sc->cur_chan->offchannel); ath_edma_start_recv()
265 static void ath_edma_stop_recv(struct ath_softc *sc) ath_edma_stop_recv() argument
267 ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_HP); ath_edma_stop_recv()
268 ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_LP); ath_edma_stop_recv()
271 int ath_rx_init(struct ath_softc *sc, int nbufs) ath_rx_init() argument
273 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_rx_init()
278 spin_lock_init(&sc->sc_pcu_lock); ath_rx_init()
281 sc->sc_ah->caps.rx_status_len; ath_rx_init()
283 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_rx_init()
284 return ath_rx_edma_init(sc, nbufs); ath_rx_init()
291 error = ath_descdma_setup(sc, &sc->rx.rxdma, &sc->rx.rxbuf, ath_rx_init()
300 list_for_each_entry(bf, &sc->rx.rxbuf, list) { ath_rx_init()
309 bf->bf_buf_addr = dma_map_single(sc->dev, skb->data, ath_rx_init()
312 if (unlikely(dma_mapping_error(sc->dev, ath_rx_init()
323 sc->rx.rxlink = NULL; ath_rx_init()
326 ath_rx_cleanup(sc); ath_rx_init()
331 void ath_rx_cleanup(struct ath_softc *sc) ath_rx_cleanup() argument
333 struct ath_hw *ah = sc->sc_ah; ath_rx_cleanup()
338 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) { ath_rx_cleanup()
339 ath_rx_edma_cleanup(sc); ath_rx_cleanup()
343 list_for_each_entry(bf, &sc->rx.rxbuf, list) { ath_rx_cleanup()
346 dma_unmap_single(sc->dev, bf->bf_buf_addr, ath_rx_cleanup()
375 u32 ath_calcrxfilter(struct ath_softc *sc) ath_calcrxfilter() argument
377 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_calcrxfilter()
387 if (sc->hw->conf.radar_enabled) ath_calcrxfilter()
390 spin_lock_bh(&sc->chan_lock); ath_calcrxfilter()
392 if (sc->cur_chan->rxfilter & FIF_PROBE_REQ) ath_calcrxfilter()
400 if (sc->sc_ah->is_monitoring) ath_calcrxfilter()
403 if ((sc->cur_chan->rxfilter & FIF_CONTROL) || ath_calcrxfilter()
404 sc->sc_ah->dynack.enabled) ath_calcrxfilter()
407 if ((sc->sc_ah->opmode == NL80211_IFTYPE_STATION) && ath_calcrxfilter()
408 (sc->cur_chan->nvifs <= 1) && ath_calcrxfilter()
409 !(sc->cur_chan->rxfilter & FIF_BCN_PRBRESP_PROMISC)) ath_calcrxfilter()
414 if ((sc->sc_ah->opmode == NL80211_IFTYPE_AP) || ath_calcrxfilter()
415 (sc->cur_chan->rxfilter & FIF_PSPOLL)) ath_calcrxfilter()
418 if (sc->cur_chandef.width != NL80211_CHAN_WIDTH_20_NOHT) ath_calcrxfilter()
421 if (sc->cur_chan->nvifs > 1 || (sc->cur_chan->rxfilter & FIF_OTHER_BSS)) { ath_calcrxfilter()
423 if (sc->sc_ah->hw_version.macVersion <= AR_SREV_VERSION_9160) ath_calcrxfilter()
428 if (AR_SREV_9550(sc->sc_ah) || AR_SREV_9531(sc->sc_ah) || ath_calcrxfilter()
429 AR_SREV_9561(sc->sc_ah)) ath_calcrxfilter()
436 spin_unlock_bh(&sc->chan_lock); ath_calcrxfilter()
442 void ath_startrecv(struct ath_softc *sc) ath_startrecv() argument
444 struct ath_hw *ah = sc->sc_ah; ath_startrecv()
448 ath_edma_start_recv(sc); ath_startrecv()
452 if (list_empty(&sc->rx.rxbuf)) ath_startrecv()
455 sc->rx.buf_hold = NULL; ath_startrecv()
456 sc->rx.rxlink = NULL; ath_startrecv()
457 list_for_each_entry_safe(bf, tbf, &sc->rx.rxbuf, list) { ath_startrecv()
458 ath_rx_buf_link(sc, bf, false); ath_startrecv()
462 if (list_empty(&sc->rx.rxbuf)) ath_startrecv()
465 bf = list_first_entry(&sc->rx.rxbuf, struct ath_rxbuf, list); ath_startrecv()
470 ath_opmode_init(sc); ath_startrecv()
471 ath9k_hw_startpcureceive(ah, sc->cur_chan->offchannel); ath_startrecv()
474 static void ath_flushrecv(struct ath_softc *sc) ath_flushrecv() argument
476 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_flushrecv()
477 ath_rx_tasklet(sc, 1, true); ath_flushrecv()
478 ath_rx_tasklet(sc, 1, false); ath_flushrecv()
481 bool ath_stoprecv(struct ath_softc *sc) ath_stoprecv() argument
483 struct ath_hw *ah = sc->sc_ah; ath_stoprecv()
490 ath_flushrecv(sc); ath_stoprecv()
492 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_stoprecv()
493 ath_edma_stop_recv(sc); ath_stoprecv()
495 sc->rx.rxlink = NULL; ath_stoprecv()
499 ath_err(ath9k_hw_common(sc->sc_ah), ath_stoprecv()
539 static void ath_rx_ps_beacon(struct ath_softc *sc, struct sk_buff *skb) ath_rx_ps_beacon() argument
541 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_rx_ps_beacon()
547 sc->ps_flags &= ~PS_WAIT_FOR_BEACON; ath_rx_ps_beacon()
549 if (sc->ps_flags & PS_BEACON_SYNC) { ath_rx_ps_beacon()
550 sc->ps_flags &= ~PS_BEACON_SYNC; ath_rx_ps_beacon()
556 if (sc->cur_chan == &sc->offchannel.chan) ath_rx_ps_beacon()
562 !(WARN_ON_ONCE(sc->cur_chan->beacon.beacon_interval == 0))) ath_rx_ps_beacon()
563 ath9k_set_beacon(sc); ath_rx_ps_beacon()
565 ath9k_p2p_beacon_sync(sc); ath_rx_ps_beacon()
578 sc->ps_flags |= PS_WAIT_FOR_CAB | PS_WAIT_FOR_BEACON; ath_rx_ps_beacon()
582 if (sc->ps_flags & PS_WAIT_FOR_CAB) { ath_rx_ps_beacon()
588 sc->ps_flags &= ~PS_WAIT_FOR_CAB; ath_rx_ps_beacon()
593 static void ath_rx_ps(struct ath_softc *sc, struct sk_buff *skb, bool mybeacon) ath_rx_ps() argument
596 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_rx_ps()
601 if (((sc->ps_flags & PS_WAIT_FOR_BEACON) || ath9k_check_auto_sleep(sc)) ath_rx_ps()
603 ath_rx_ps_beacon(sc, skb); ath_rx_ps()
604 } else if ((sc->ps_flags & PS_WAIT_FOR_CAB) && ath_rx_ps()
613 sc->ps_flags &= ~(PS_WAIT_FOR_CAB | PS_WAIT_FOR_BEACON); ath_rx_ps()
616 } else if ((sc->ps_flags & PS_WAIT_FOR_PSPOLL_DATA) && ath_rx_ps()
619 sc->ps_flags &= ~PS_WAIT_FOR_PSPOLL_DATA; ath_rx_ps()
622 sc->ps_flags & (PS_WAIT_FOR_BEACON | ath_rx_ps()
629 static bool ath_edma_get_buffers(struct ath_softc *sc, ath_edma_get_buffers() argument
634 struct ath_rx_edma *rx_edma = &sc->rx.rx_edma[qtype]; ath_edma_get_buffers()
635 struct ath_hw *ah = sc->sc_ah; ath_edma_get_buffers()
648 dma_sync_single_for_cpu(sc->dev, bf->bf_buf_addr, ath_edma_get_buffers()
654 dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, ath_edma_get_buffers()
662 list_add_tail(&bf->list, &sc->rx.rxbuf); ath_edma_get_buffers()
663 ath_rx_edma_buf_link(sc, qtype); ath_edma_get_buffers()
671 list_add_tail(&bf->list, &sc->rx.rxbuf); ath_edma_get_buffers()
672 ath_rx_edma_buf_link(sc, qtype); ath_edma_get_buffers()
682 static struct ath_rxbuf *ath_edma_get_next_rx_buf(struct ath_softc *sc, ath_edma_get_next_rx_buf() argument
688 while (ath_edma_get_buffers(sc, qtype, rs, &bf)) { ath_edma_get_next_rx_buf()
697 static struct ath_rxbuf *ath_get_next_rx_buf(struct ath_softc *sc, ath_get_next_rx_buf() argument
700 struct ath_hw *ah = sc->sc_ah; ath_get_next_rx_buf()
706 if (list_empty(&sc->rx.rxbuf)) { ath_get_next_rx_buf()
707 sc->rx.rxlink = NULL; ath_get_next_rx_buf()
711 bf = list_first_entry(&sc->rx.rxbuf, struct ath_rxbuf, list); ath_get_next_rx_buf()
712 if (bf == sc->rx.buf_hold) ath_get_next_rx_buf()
735 if (list_is_last(&bf->list, &sc->rx.rxbuf)) { ath_get_next_rx_buf()
736 sc->rx.rxlink = NULL; ath_get_next_rx_buf()
782 dma_sync_single_for_cpu(sc->dev, bf->bf_buf_addr, ath_get_next_rx_buf()
810 static int ath9k_rx_skb_preprocess(struct ath_softc *sc, ath9k_rx_skb_preprocess() argument
816 struct ieee80211_hw *hw = sc->hw; ath9k_rx_skb_preprocess()
817 struct ath_hw *ah = sc->sc_ah; ath9k_rx_skb_preprocess()
820 bool discard_current = sc->rx.discard_next; ath9k_rx_skb_preprocess()
829 sc->rx.discard_next = false; ath9k_rx_skb_preprocess()
866 ath_debug_stat_rx(sc, rx_stats); ath9k_rx_skb_preprocess()
873 ath9k_dfs_process_phyerr(sc, hdr, rx_stats, rx_status->mactime); ath9k_rx_skb_preprocess()
874 if (ath_cmn_process_fft(&sc->spec_priv, hdr, rx_stats, rx_status->mactime)) ath9k_rx_skb_preprocess()
884 spin_lock_bh(&sc->chan_lock); ath9k_rx_skb_preprocess()
886 sc->cur_chan->rxfilter)) { ath9k_rx_skb_preprocess()
887 spin_unlock_bh(&sc->chan_lock); ath9k_rx_skb_preprocess()
890 spin_unlock_bh(&sc->chan_lock); ath9k_rx_skb_preprocess()
916 ath_chanctx_beacon_recv_ev(sc, ath9k_rx_skb_preprocess()
930 sc->rx.num_pkts++; ath9k_rx_skb_preprocess()
936 sc->rx.discard_next = rx_stats->rs_more; ath9k_rx_skb_preprocess()
950 static void ath9k_antenna_check(struct ath_softc *sc, ath9k_antenna_check() argument
953 struct ath_hw *ah = sc->sc_ah; ath9k_antenna_check()
964 if (sc->rx.defant != rs->rs_antenna) { ath9k_antenna_check()
965 if (++sc->rx.rxotherant >= 3) ath9k_antenna_check()
966 ath_setdefantenna(sc, rs->rs_antenna); ath9k_antenna_check()
968 sc->rx.rxotherant = 0; ath9k_antenna_check()
973 ath_ant_comb_scan(sc, rs); ath9k_antenna_check()
975 ath_ant_comb_scan(sc, rs); ath9k_antenna_check()
979 static void ath9k_apply_ampdu_details(struct ath_softc *sc, ath9k_apply_ampdu_details() argument
985 rxs->ampdu_reference = sc->rx.ampdu_ref; ath9k_apply_ampdu_details()
989 sc->rx.ampdu_ref++; ath9k_apply_ampdu_details()
997 int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) ath_rx_tasklet() argument
1002 struct ath_hw *ah = sc->sc_ah; ath_rx_tasklet()
1004 struct ieee80211_hw *hw = sc->hw; ath_rx_tasklet()
1030 bf = ath_edma_get_next_rx_buf(sc, &rs, qtype); ath_rx_tasklet()
1032 bf = ath_get_next_rx_buf(sc, &rs); ath_rx_tasklet()
1045 if (sc->rx.frag) ath_rx_tasklet()
1046 hdr_skb = sc->rx.frag; ath_rx_tasklet()
1053 retval = ath9k_rx_skb_preprocess(sc, hdr_skb, &rs, rxs, ath_rx_tasklet()
1064 * skb and put it at the tail of the sc->rx.rxbuf list for ath_rx_tasklet()
1072 new_buf_addr = dma_map_single(sc->dev, requeue_skb->data, ath_rx_tasklet()
1074 if (unlikely(dma_mapping_error(sc->dev, new_buf_addr))) { ath_rx_tasklet()
1080 dma_unmap_single(sc->dev, bf->bf_buf_addr, ath_rx_tasklet()
1101 if (sc->rx.frag) { ath_rx_tasklet()
1103 dev_kfree_skb_any(sc->rx.frag); ath_rx_tasklet()
1108 sc->rx.frag = skb; ath_rx_tasklet()
1112 if (sc->rx.frag) { ath_rx_tasklet()
1121 sc->rx.frag = NULL; ath_rx_tasklet()
1132 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath_rx_tasklet()
1133 if ((sc->ps_flags & (PS_WAIT_FOR_BEACON | ath_rx_tasklet()
1136 ath9k_check_auto_sleep(sc)) ath_rx_tasklet()
1137 ath_rx_ps(sc, skb, rs.is_mybeacon); ath_rx_tasklet()
1138 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_rx_tasklet()
1140 ath9k_antenna_check(sc, &rs); ath_rx_tasklet()
1141 ath9k_apply_ampdu_details(sc, &rs, rxs); ath_rx_tasklet()
1142 ath_debug_rate_stats(sc, &rs, skb); ath_rx_tasklet()
1146 ath_dynack_sample_ack_ts(sc->sc_ah, skb, rs.rs_tstamp); ath_rx_tasklet()
1151 if (sc->rx.frag) { ath_rx_tasklet()
1152 dev_kfree_skb_any(sc->rx.frag); ath_rx_tasklet()
1153 sc->rx.frag = NULL; ath_rx_tasklet()
1156 list_add_tail(&bf->list, &sc->rx.rxbuf); ath_rx_tasklet()
1159 ath_rx_buf_relink(sc, bf, flush); ath_rx_tasklet()
1163 ath_rx_edma_buf_link(sc, qtype); ath_rx_tasklet()
H A Dbeacon.c22 static void ath9k_reset_beacon_status(struct ath_softc *sc) ath9k_reset_beacon_status() argument
24 sc->beacon.tx_processed = false; ath9k_reset_beacon_status()
25 sc->beacon.tx_last = false; ath9k_reset_beacon_status()
33 static void ath9k_beaconq_config(struct ath_softc *sc) ath9k_beaconq_config() argument
35 struct ath_hw *ah = sc->sc_ah; ath9k_beaconq_config()
40 ath9k_hw_get_txq_props(ah, sc->beacon.beaconq, &qi); ath9k_beaconq_config()
42 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP || ath9k_beaconq_config()
43 sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT) { ath9k_beaconq_config()
50 txq = sc->tx.txq_map[IEEE80211_AC_BE]; ath9k_beaconq_config()
60 if (!ath9k_hw_set_txq_props(ah, sc->beacon.beaconq, &qi)) { ath9k_beaconq_config()
63 ath9k_hw_resettxqueue(ah, sc->beacon.beaconq); ath9k_beaconq_config()
72 static void ath9k_beacon_setup(struct ath_softc *sc, struct ieee80211_vif *vif, ath9k_beacon_setup() argument
76 struct ath_hw *ah = sc->sc_ah; ath9k_beacon_setup()
83 sband = &common->sbands[sc->cur_chandef.chan->band]; ath9k_beacon_setup()
103 info.qcu = sc->beacon.beaconq; ath9k_beacon_setup()
107 info.rates[0].ChSel = ath_txchainmask_reduction(sc, chainmask, rate); ath9k_beacon_setup()
115 struct ath_softc *sc = hw->priv; ath9k_beacon_generate() local
116 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_beacon_generate()
120 struct ath_txq *cabq = sc->beacon.cabq; ath9k_beacon_generate()
131 dma_unmap_single(sc->dev, bf->bf_buf_addr, ath9k_beacon_generate()
152 ath9k_beacon_add_noa(sc, avp, skb); ath9k_beacon_generate()
154 bf->bf_buf_addr = dma_map_single(sc->dev, skb->data, ath9k_beacon_generate()
156 if (unlikely(dma_mapping_error(sc->dev, bf->bf_buf_addr))) { ath9k_beacon_generate()
179 if (sc->cur_chan->nvifs > 1) { ath9k_beacon_generate()
182 ath_draintxq(sc, cabq); ath9k_beacon_generate()
186 ath9k_beacon_setup(sc, vif, bf, info->control.rates[0].idx); ath9k_beacon_generate()
194 void ath9k_beacon_assign_slot(struct ath_softc *sc, struct ieee80211_vif *vif) ath9k_beacon_assign_slot() argument
196 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_beacon_assign_slot()
200 avp->av_bcbuf = list_first_entry(&sc->beacon.bbuf, struct ath_buf, list); ath9k_beacon_assign_slot()
204 if (sc->beacon.bslot[slot] == NULL) { ath9k_beacon_assign_slot()
210 sc->beacon.bslot[avp->av_bslot] = vif; ath9k_beacon_assign_slot()
211 sc->nbcnvifs++; ath9k_beacon_assign_slot()
217 void ath9k_beacon_remove_slot(struct ath_softc *sc, struct ieee80211_vif *vif) ath9k_beacon_remove_slot() argument
219 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_beacon_remove_slot()
222 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; ath9k_beacon_remove_slot()
227 tasklet_disable(&sc->bcon_tasklet); ath9k_beacon_remove_slot()
233 dma_unmap_single(sc->dev, bf->bf_buf_addr, ath9k_beacon_remove_slot()
241 sc->beacon.bslot[avp->av_bslot] = NULL; ath9k_beacon_remove_slot()
242 sc->nbcnvifs--; ath9k_beacon_remove_slot()
243 list_add_tail(&bf->list, &sc->beacon.bbuf); ath9k_beacon_remove_slot()
245 tasklet_enable(&sc->bcon_tasklet); ath9k_beacon_remove_slot()
248 static int ath9k_beacon_choose_slot(struct ath_softc *sc) ath9k_beacon_choose_slot() argument
250 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_beacon_choose_slot()
251 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; ath9k_beacon_choose_slot()
257 if (sc->sc_ah->opmode != NL80211_IFTYPE_AP && ath9k_beacon_choose_slot()
258 sc->sc_ah->opmode != NL80211_IFTYPE_MESH_POINT) { ath9k_beacon_choose_slot()
260 ath9k_hw_gettsf64(sc->sc_ah)); ath9k_beacon_choose_slot()
265 tsf = ath9k_hw_gettsf64(sc->sc_ah); ath9k_beacon_choose_slot()
266 tsf += TU_TO_USEC(sc->sc_ah->config.sw_beacon_response_time); ath9k_beacon_choose_slot()
276 static void ath9k_set_tsfadjust(struct ath_softc *sc, struct ieee80211_vif *vif) ath9k_set_tsfadjust() argument
278 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_set_tsfadjust()
294 bool ath9k_csa_is_finished(struct ath_softc *sc, struct ieee80211_vif *vif) ath9k_csa_is_finished() argument
308 struct ath_softc *sc = data; ath9k_csa_update_vif() local
309 ath9k_csa_is_finished(sc, vif); ath9k_csa_update_vif()
312 void ath9k_csa_update(struct ath_softc *sc) ath9k_csa_update() argument
314 ieee80211_iterate_active_interfaces_atomic(sc->hw, ath9k_csa_update()
316 ath9k_csa_update_vif, sc); ath9k_csa_update()
321 struct ath_softc *sc = (struct ath_softc *)data; ath9k_beacon_tasklet() local
322 struct ath_hw *ah = sc->sc_ah; ath9k_beacon_tasklet()
342 if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0) { ath9k_beacon_tasklet()
343 sc->beacon.bmisscnt++; ath9k_beacon_tasklet()
353 if (!ath_hw_check(sc)) ath9k_beacon_tasklet()
356 if (sc->beacon.bmisscnt < BSTUCK_THRESH * sc->nbcnvifs) { ath9k_beacon_tasklet()
359 sc->beacon.bmisscnt); ath9k_beacon_tasklet()
360 ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq); ath9k_beacon_tasklet()
361 if (sc->beacon.bmisscnt > 3) ath9k_beacon_tasklet()
363 } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) { ath9k_beacon_tasklet()
365 sc->beacon.bmisscnt = 0; ath9k_beacon_tasklet()
366 ath9k_queue_reset(sc, RESET_TYPE_BEACON_STUCK); ath9k_beacon_tasklet()
372 slot = ath9k_beacon_choose_slot(sc); ath9k_beacon_tasklet()
373 vif = sc->beacon.bslot[slot]; ath9k_beacon_tasklet()
378 ath_chanctx_beacon_sent_ev(sc, ath9k_beacon_tasklet()
382 if (ath9k_csa_is_finished(sc, vif)) ath9k_beacon_tasklet()
390 ath_chanctx_event(sc, vif, ATH_CHANCTX_EVENT_BEACON_PREPARE); ath9k_beacon_tasklet()
393 bf = ath9k_beacon_generate(sc->hw, vif); ath9k_beacon_tasklet()
395 if (sc->beacon.bmisscnt != 0) { ath9k_beacon_tasklet()
397 sc->beacon.bmisscnt); ath9k_beacon_tasklet()
398 sc->beacon.bmisscnt = 0; ath9k_beacon_tasklet()
417 if (sc->beacon.updateslot == UPDATE) { ath9k_beacon_tasklet()
418 sc->beacon.updateslot = COMMIT; ath9k_beacon_tasklet()
419 sc->beacon.slotupdate = slot; ath9k_beacon_tasklet()
420 } else if (sc->beacon.updateslot == COMMIT && ath9k_beacon_tasklet()
421 sc->beacon.slotupdate == slot) { ath9k_beacon_tasklet()
422 ah->slottime = sc->beacon.slottime; ath9k_beacon_tasklet()
424 sc->beacon.updateslot = OK; ath9k_beacon_tasklet()
428 ath9k_reset_beacon_status(sc); ath9k_beacon_tasklet()
434 ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bf->bf_daddr); ath9k_beacon_tasklet()
437 ath9k_hw_txstart(ah, sc->beacon.beaconq); ath9k_beacon_tasklet()
444 static void ath9k_beacon_init(struct ath_softc *sc, u32 nexttbtt, ath9k_beacon_init() argument
447 struct ath_hw *ah = sc->sc_ah; ath9k_beacon_init()
452 ath9k_beaconq_config(sc); ath9k_beacon_init()
454 sc->beacon.bmisscnt = 0; ath9k_beacon_init()
464 static void ath9k_beacon_config_ap(struct ath_softc *sc, ath9k_beacon_config_ap() argument
467 struct ath_hw *ah = sc->sc_ah; ath9k_beacon_config_ap()
470 ath9k_beacon_init(sc, conf->nexttbtt, conf->intval, false); ath9k_beacon_config_ap()
489 static void ath9k_beacon_config_adhoc(struct ath_softc *sc, ath9k_beacon_config_adhoc() argument
492 struct ath_hw *ah = sc->sc_ah; ath9k_beacon_config_adhoc()
495 ath9k_reset_beacon_status(sc); ath9k_beacon_config_adhoc()
499 ath9k_beacon_init(sc, conf->nexttbtt, conf->intval, conf->ibss_creator); ath9k_beacon_config_adhoc()
509 static bool ath9k_allow_beacon_config(struct ath_softc *sc, ath9k_allow_beacon_config() argument
512 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_allow_beacon_config()
522 if (sc->cur_chan != avp->chanctx) ath9k_allow_beacon_config()
526 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP) { ath9k_allow_beacon_config()
534 if (sc->sc_ah->opmode == NL80211_IFTYPE_STATION) { ath9k_allow_beacon_config()
537 vif != sc->cur_chan->primary_sta) { ath9k_allow_beacon_config()
547 static void ath9k_cache_beacon_config(struct ath_softc *sc, ath9k_cache_beacon_config() argument
551 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_cache_beacon_config()
584 void ath9k_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif, ath9k_beacon_config() argument
588 struct ath_hw *ah = sc->sc_ah; ath9k_beacon_config()
601 ath9k_set_tsfadjust(sc, vif); ath9k_beacon_config()
603 if (!ath9k_allow_beacon_config(sc, vif)) ath9k_beacon_config()
607 ath9k_cache_beacon_config(sc, ctx, bss_conf); ath9k_beacon_config()
608 if (ctx != sc->cur_chan) ath9k_beacon_config()
611 ath9k_set_beacon(sc); ath9k_beacon_config()
628 ath9k_cache_beacon_config(sc, ctx, bss_conf); ath9k_beacon_config()
632 if (ctx != sc->cur_chan) ath9k_beacon_config()
647 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath9k_beacon_config()
648 sc->ps_flags |= PS_BEACON_SYNC | PS_WAIT_FOR_BEACON; ath9k_beacon_config()
649 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath9k_beacon_config()
652 ath9k_set_beacon(sc); ath9k_beacon_config()
666 void ath9k_set_beacon(struct ath_softc *sc) ath9k_set_beacon() argument
668 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_set_beacon()
669 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; ath9k_set_beacon()
671 switch (sc->sc_ah->opmode) { ath9k_set_beacon()
674 ath9k_beacon_config_ap(sc, cur_conf); ath9k_set_beacon()
677 ath9k_beacon_config_adhoc(sc, cur_conf); ath9k_set_beacon()
680 ath9k_beacon_config_sta(sc->sc_ah, cur_conf); ath9k_set_beacon()
H A Dinit.c93 static void ath9k_deinit_softc(struct ath_softc *sc);
120 struct ath_softc *sc = (struct ath_softc *) common->priv; ath9k_iowrite32() local
124 spin_lock_irqsave(&sc->sc_serial_rw, flags); ath9k_iowrite32()
125 iowrite32(val, sc->mem + reg_offset); ath9k_iowrite32()
126 spin_unlock_irqrestore(&sc->sc_serial_rw, flags); ath9k_iowrite32()
128 iowrite32(val, sc->mem + reg_offset); ath9k_iowrite32()
135 struct ath_softc *sc = (struct ath_softc *) common->priv; ath9k_ioread32() local
140 spin_lock_irqsave(&sc->sc_serial_rw, flags); ath9k_ioread32()
141 val = ioread32(sc->mem + reg_offset); ath9k_ioread32()
142 spin_unlock_irqrestore(&sc->sc_serial_rw, flags); ath9k_ioread32()
144 val = ioread32(sc->mem + reg_offset); ath9k_ioread32()
158 static unsigned int __ath9k_reg_rmw(struct ath_softc *sc, u32 reg_offset, __ath9k_reg_rmw() argument
163 val = ioread32(sc->mem + reg_offset); __ath9k_reg_rmw()
166 iowrite32(val, sc->mem + reg_offset); __ath9k_reg_rmw()
175 struct ath_softc *sc = (struct ath_softc *) common->priv; ath9k_reg_rmw() local
180 spin_lock_irqsave(&sc->sc_serial_rw, flags); ath9k_reg_rmw()
181 val = __ath9k_reg_rmw(sc, reg_offset, set, clr); ath9k_reg_rmw()
182 spin_unlock_irqrestore(&sc->sc_serial_rw, flags); ath9k_reg_rmw()
184 val = __ath9k_reg_rmw(sc, reg_offset, set, clr); ath9k_reg_rmw()
197 struct ath_softc *sc = hw->priv; ath9k_reg_notifier() local
198 struct ath_hw *ah = sc->sc_ah; ath9k_reg_notifier()
207 sc->cur_chan->txpower = 2 * ah->curchan->chan->max_power; ath9k_reg_notifier()
208 ath9k_ps_wakeup(sc); ath9k_reg_notifier()
209 ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false); ath9k_reg_notifier()
210 ath9k_cmn_update_txpow(ah, sc->cur_chan->cur_txpower, ath9k_reg_notifier()
211 sc->cur_chan->txpower, ath9k_reg_notifier()
212 &sc->cur_chan->cur_txpower); ath9k_reg_notifier()
214 if (sc->dfs_detector != NULL) ath9k_reg_notifier()
215 sc->dfs_detector->set_dfs_domain(sc->dfs_detector, ath9k_reg_notifier()
217 ath9k_ps_restore(sc); ath9k_reg_notifier()
225 int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd, ath_descdma_setup() argument
229 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_descdma_setup()
239 desc_len = sc->sc_ah->caps.tx_desc_len; ath_descdma_setup()
257 if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_4KB_SPLITTRANS)) { ath_descdma_setup()
271 dd->dd_desc = dmam_alloc_coherent(sc->dev, dd->dd_desc_len, ath_descdma_setup()
286 bf = devm_kzalloc(sc->dev, bsize, GFP_KERNEL); ath_descdma_setup()
294 if (!(sc->sc_ah->caps.hw_caps & ath_descdma_setup()
317 bf = devm_kzalloc(sc->dev, bsize, GFP_KERNEL); ath_descdma_setup()
325 if (!(sc->sc_ah->caps.hw_caps & ath_descdma_setup()
348 static int ath9k_init_queues(struct ath_softc *sc) ath9k_init_queues() argument
352 sc->beacon.beaconq = ath9k_hw_beaconq_setup(sc->sc_ah); ath9k_init_queues()
353 sc->beacon.cabq = ath_txq_setup(sc, ATH9K_TX_QUEUE_CAB, 0); ath9k_init_queues()
354 ath_cabq_update(sc); ath9k_init_queues()
356 sc->tx.uapsdq = ath_txq_setup(sc, ATH9K_TX_QUEUE_UAPSD, 0); ath9k_init_queues()
359 sc->tx.txq_map[i] = ath_txq_setup(sc, ATH9K_TX_QUEUE_DATA, i); ath9k_init_queues()
360 sc->tx.txq_map[i]->mac80211_qnum = i; ath9k_init_queues()
361 sc->tx.txq_max_pending[i] = ATH_MAX_QDEPTH; ath9k_init_queues()
366 static void ath9k_init_misc(struct ath_softc *sc) ath9k_init_misc() argument
368 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_init_misc()
371 setup_timer(&common->ani.timer, ath_ani_calibrate, (unsigned long)sc); ath9k_init_misc()
375 sc->beacon.slottime = ATH9K_SLOT_TIME_9; ath9k_init_misc()
377 for (i = 0; i < ARRAY_SIZE(sc->beacon.bslot); i++) ath9k_init_misc()
378 sc->beacon.bslot[i] = NULL; ath9k_init_misc()
380 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) ath9k_init_misc()
381 sc->ant_comb.count = ATH_ANT_DIV_COMB_INIT_COUNT; ath9k_init_misc()
383 sc->spec_priv.ah = sc->sc_ah; ath9k_init_misc()
384 sc->spec_priv.spec_config.enabled = 0; ath9k_init_misc()
385 sc->spec_priv.spec_config.short_repeat = true; ath9k_init_misc()
386 sc->spec_priv.spec_config.count = 8; ath9k_init_misc()
387 sc->spec_priv.spec_config.endless = false; ath9k_init_misc()
388 sc->spec_priv.spec_config.period = 0xFF; ath9k_init_misc()
389 sc->spec_priv.spec_config.fft_period = 0xF; ath9k_init_misc()
392 static void ath9k_init_pcoem_platform(struct ath_softc *sc) ath9k_init_pcoem_platform() argument
394 struct ath_hw *ah = sc->sc_ah; ath9k_init_pcoem_platform()
404 if (sc->driver_data & (ATH9K_PCI_CUS198 | ath9k_init_pcoem_platform()
410 sc->ant_comb.low_rssi_thresh = 20; ath9k_init_pcoem_platform()
411 sc->ant_comb.fast_div_bias = 3; ath9k_init_pcoem_platform()
414 (sc->driver_data & ATH9K_PCI_CUS198) ? ath9k_init_pcoem_platform()
418 if (sc->driver_data & ATH9K_PCI_CUS217) ath9k_init_pcoem_platform()
421 if (sc->driver_data & ATH9K_PCI_CUS252) ath9k_init_pcoem_platform()
424 if (sc->driver_data & ATH9K_PCI_AR9565_1ANT) ath9k_init_pcoem_platform()
427 if (sc->driver_data & ATH9K_PCI_AR9565_2ANT) ath9k_init_pcoem_platform()
430 if (sc->driver_data & ATH9K_PCI_KILLER) ath9k_init_pcoem_platform()
439 if (sc->driver_data & (ATH9K_PCI_AR9565_1ANT | ATH9K_PCI_AR9565_2ANT)) { ath9k_init_pcoem_platform()
440 if (!(sc->driver_data & ATH9K_PCI_BT_ANT_DIV)) ath9k_init_pcoem_platform()
444 if (sc->driver_data & ATH9K_PCI_BT_ANT_DIV) { ath9k_init_pcoem_platform()
449 if (sc->driver_data & ATH9K_PCI_D3_L1_WAR) { ath9k_init_pcoem_platform()
461 if (sc->driver_data & ATH9K_PCI_NO_PLL_PWRSAVE) { ath9k_init_pcoem_platform()
466 if (sc->driver_data & ATH9K_PCI_LED_ACT_HI) ath9k_init_pcoem_platform()
481 static int ath9k_eeprom_request(struct ath_softc *sc, const char *name) ath9k_eeprom_request() argument
484 struct ath_hw *ah = ah = sc->sc_ah; ath9k_eeprom_request()
489 ec.ah = sc->sc_ah; ath9k_eeprom_request()
491 err = request_firmware_nowait(THIS_MODULE, 1, name, sc->dev, GFP_KERNEL, ath9k_eeprom_request()
510 static void ath9k_eeprom_release(struct ath_softc *sc) ath9k_eeprom_release() argument
512 release_firmware(sc->sc_ah->eeprom_blob); ath9k_eeprom_release()
515 static int ath9k_init_soc_platform(struct ath_softc *sc) ath9k_init_soc_platform() argument
517 struct ath9k_platform_data *pdata = sc->dev->platform_data; ath9k_init_soc_platform()
518 struct ath_hw *ah = sc->sc_ah; ath9k_init_soc_platform()
525 ret = ath9k_eeprom_request(sc, pdata->eeprom_name); ath9k_init_soc_platform()
536 static int ath9k_init_softc(u16 devid, struct ath_softc *sc, ath9k_init_softc() argument
539 struct ath9k_platform_data *pdata = sc->dev->platform_data; ath9k_init_softc()
546 ah = devm_kzalloc(sc->dev, sizeof(struct ath_hw), GFP_KERNEL); ath9k_init_softc()
550 ah->dev = sc->dev; ath9k_init_softc()
551 ah->hw = sc->hw; ath9k_init_softc()
564 sc->sc_ah = ah; ath9k_init_softc()
565 sc->dfs_detector = dfs_pattern_detector_init(common, NL80211_DFS_UNSET); ath9k_init_softc()
566 sc->tx99_power = MAX_RATE_POWER + 1; ath9k_init_softc()
567 init_waitqueue_head(&sc->tx_wait); ath9k_init_softc()
568 sc->cur_chan = &sc->chanctx[0]; ath9k_init_softc()
570 sc->cur_chan->hw_queue_base = 0; ath9k_init_softc()
574 sc->sc_ah->led_pin = -1; ath9k_init_softc()
576 sc->sc_ah->gpio_mask = pdata->gpio_mask; ath9k_init_softc()
577 sc->sc_ah->gpio_val = pdata->gpio_val; ath9k_init_softc()
578 sc->sc_ah->led_pin = pdata->led_pin; ath9k_init_softc()
592 common->hw = sc->hw; ath9k_init_softc()
593 common->priv = sc; ath9k_init_softc()
601 ath9k_init_pcoem_platform(sc); ath9k_init_softc()
603 ret = ath9k_init_soc_platform(sc); ath9k_init_softc()
622 spin_lock_init(&sc->sc_serial_rw); ath9k_init_softc()
623 spin_lock_init(&sc->sc_pm_lock); ath9k_init_softc()
624 spin_lock_init(&sc->chan_lock); ath9k_init_softc()
625 mutex_init(&sc->mutex); ath9k_init_softc()
626 tasklet_init(&sc->intr_tq, ath9k_tasklet, (unsigned long)sc); ath9k_init_softc()
627 tasklet_init(&sc->bcon_tasklet, ath9k_beacon_tasklet, ath9k_init_softc()
628 (unsigned long)sc); ath9k_init_softc()
630 setup_timer(&sc->sleep_timer, ath_ps_full_sleep, (unsigned long)sc); ath9k_init_softc()
631 INIT_WORK(&sc->hw_reset_work, ath_reset_work); ath9k_init_softc()
632 INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); ath9k_init_softc()
633 INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work); ath9k_init_softc()
635 ath9k_init_channel_context(sc); ath9k_init_softc()
652 ret = ath9k_init_queues(sc); ath9k_init_softc()
656 ret = ath9k_init_btcoex(sc); ath9k_init_softc()
664 ret = ath9k_init_p2p(sc); ath9k_init_softc()
668 ath9k_cmn_init_crypto(sc->sc_ah); ath9k_init_softc()
669 ath9k_init_misc(sc); ath9k_init_softc()
670 ath_fill_led_pin(sc); ath9k_init_softc()
671 ath_chanctx_init(sc); ath9k_init_softc()
672 ath9k_offchannel_init(sc); ath9k_init_softc()
681 if (ATH_TXQ_SETUP(sc, i)) ath9k_init_softc()
682 ath_tx_cleanupq(sc, &sc->tx.txq[i]); ath9k_init_softc()
686 ath9k_eeprom_release(sc); ath9k_init_softc()
687 dev_kfree_skb_any(sc->tx99_skb); ath9k_init_softc()
691 static void ath9k_init_band_txpower(struct ath_softc *sc, int band) ath9k_init_band_txpower() argument
695 struct ath_hw *ah = sc->sc_ah; ath9k_init_band_txpower()
705 ath9k_cmn_get_channel(sc->hw, ah, &chandef); ath9k_init_band_txpower()
710 static void ath9k_init_txpower_limits(struct ath_softc *sc) ath9k_init_txpower_limits() argument
712 struct ath_hw *ah = sc->sc_ah; ath9k_init_txpower_limits()
716 ath9k_init_band_txpower(sc, IEEE80211_BAND_2GHZ); ath9k_init_txpower_limits()
718 ath9k_init_band_txpower(sc, IEEE80211_BAND_5GHZ); ath9k_init_txpower_limits()
798 static void ath9k_set_mcc_capab(struct ath_softc *sc, struct ieee80211_hw *hw) ath9k_set_mcc_capab() argument
800 struct ath_hw *ah = sc->sc_ah; ath9k_set_mcc_capab()
823 static void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw) ath9k_set_hw_capab() argument
825 struct ath_hw *ah = sc->sc_ah; ath9k_set_hw_capab()
840 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) { ath9k_set_hw_capab()
848 if (AR_SREV_9160_10_OR_LATER(sc->sc_ah) || ath9k_modparam_nohwcrypt) ath9k_set_hw_capab()
893 sc->ant_rx = hw->wiphy->available_antennas_rx; ath9k_set_hw_capab()
894 sc->ant_tx = hw->wiphy->available_antennas_tx; ath9k_set_hw_capab()
896 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ) ath9k_set_hw_capab()
899 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_5GHZ) ath9k_set_hw_capab()
904 ath9k_set_mcc_capab(sc, hw); ath9k_set_hw_capab()
912 int ath9k_init_device(u16 devid, struct ath_softc *sc, ath9k_init_device() argument
915 struct ieee80211_hw *hw = sc->hw; ath9k_init_device()
922 error = ath9k_init_softc(devid, sc, bus_ops); ath9k_init_device()
926 ah = sc->sc_ah; ath9k_init_device()
928 ath9k_set_hw_capab(sc, hw); ath9k_init_device()
931 error = ath_regd_init(&common->regulatory, sc->hw->wiphy, ath9k_init_device()
939 error = ath_tx_init(sc, ATH_TXBUF); ath9k_init_device()
944 error = ath_rx_init(sc, ATH_RXBUF); ath9k_init_device()
948 ath9k_init_txpower_limits(sc); ath9k_init_device()
952 sc->led_cdev.default_trigger = ieee80211_create_tpt_led_trigger(sc->hw, ath9k_init_device()
975 ath_init_leds(sc); ath9k_init_device()
976 ath_start_rfkill_poll(sc); ath9k_init_device()
981 ath9k_deinit_debug(sc); ath9k_init_device()
985 ath_rx_cleanup(sc); ath9k_init_device()
987 ath9k_deinit_softc(sc); ath9k_init_device()
995 static void ath9k_deinit_softc(struct ath_softc *sc) ath9k_deinit_softc() argument
999 ath9k_deinit_p2p(sc); ath9k_deinit_softc()
1000 ath9k_deinit_btcoex(sc); ath9k_deinit_softc()
1003 if (ATH_TXQ_SETUP(sc, i)) ath9k_deinit_softc()
1004 ath_tx_cleanupq(sc, &sc->tx.txq[i]); ath9k_deinit_softc()
1006 del_timer_sync(&sc->sleep_timer); ath9k_deinit_softc()
1007 ath9k_hw_deinit(sc->sc_ah); ath9k_deinit_softc()
1008 if (sc->dfs_detector != NULL) ath9k_deinit_softc()
1009 sc->dfs_detector->exit(sc->dfs_detector); ath9k_deinit_softc()
1011 ath9k_eeprom_release(sc); ath9k_deinit_softc()
1014 void ath9k_deinit_device(struct ath_softc *sc) ath9k_deinit_device() argument
1016 struct ieee80211_hw *hw = sc->hw; ath9k_deinit_device()
1018 ath9k_ps_wakeup(sc); ath9k_deinit_device()
1020 wiphy_rfkill_stop_polling(sc->hw->wiphy); ath9k_deinit_device()
1021 ath_deinit_leds(sc); ath9k_deinit_device()
1023 ath9k_ps_restore(sc); ath9k_deinit_device()
1025 ath9k_deinit_debug(sc); ath9k_deinit_device()
1028 ath_rx_cleanup(sc); ath9k_deinit_device()
1029 ath9k_deinit_softc(sc); ath9k_deinit_device()
H A Dwow.c33 static u8 ath9k_wow_map_triggers(struct ath_softc *sc, ath9k_wow_map_triggers() argument
50 static int ath9k_wow_add_disassoc_deauth_pattern(struct ath_softc *sc) ath9k_wow_add_disassoc_deauth_pattern() argument
52 struct ath_hw *ah = sc->sc_ah; ath9k_wow_add_disassoc_deauth_pattern()
138 static int ath9k_wow_add_pattern(struct ath_softc *sc, ath9k_wow_add_pattern() argument
141 struct ath_hw *ah = sc->sc_ah; ath9k_wow_add_pattern()
170 struct ath_softc *sc = hw->priv; ath9k_suspend() local
171 struct ath_hw *ah = sc->sc_ah; ath9k_suspend()
176 ath9k_deinit_channel_context(sc); ath9k_suspend()
178 mutex_lock(&sc->mutex); ath9k_suspend()
192 if (sc->cur_chan->nvifs > 1) { ath9k_suspend()
213 triggers = ath9k_wow_map_triggers(sc, wowlan); ath9k_suspend()
220 ath_cancel_work(sc); ath9k_suspend()
221 ath_stop_ani(sc); ath9k_suspend()
223 ath9k_ps_wakeup(sc); ath9k_suspend()
225 ath9k_stop_btcoex(sc); ath9k_suspend()
231 ret = ath9k_wow_add_disassoc_deauth_pattern(sc); ath9k_suspend()
239 ret = ath9k_wow_add_pattern(sc, wowlan); ath9k_suspend()
247 spin_lock_bh(&sc->sc_pcu_lock); ath9k_suspend()
253 sc->wow_intr_before_sleep = ah->imask; ath9k_suspend()
260 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_suspend()
266 synchronize_irq(sc->irq); ath9k_suspend()
267 tasklet_kill(&sc->intr_tq); ath9k_suspend()
271 ath9k_ps_restore(sc); ath9k_suspend()
276 mutex_unlock(&sc->mutex); ath9k_suspend()
282 struct ath_softc *sc = hw->priv; ath9k_resume() local
283 struct ath_hw *ah = sc->sc_ah; ath9k_resume()
287 mutex_lock(&sc->mutex); ath9k_resume()
289 ath9k_ps_wakeup(sc); ath9k_resume()
291 spin_lock_bh(&sc->sc_pcu_lock); ath9k_resume()
294 ah->imask = sc->wow_intr_before_sleep; ath9k_resume()
298 spin_unlock_bh(&sc->sc_pcu_lock); ath9k_resume()
303 ath_restart_work(sc); ath9k_resume()
304 ath9k_start_btcoex(sc); ath9k_resume()
308 ath9k_ps_restore(sc); ath9k_resume()
309 mutex_unlock(&sc->mutex); ath9k_resume()
316 struct ath_softc *sc = hw->priv; ath9k_set_wakeup() local
317 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_set_wakeup()
319 mutex_lock(&sc->mutex); ath9k_set_wakeup()
320 device_set_wakeup_enable(sc->dev, enabled); ath9k_set_wakeup()
321 mutex_unlock(&sc->mutex); ath9k_set_wakeup()
329 struct ath_softc *sc = hw->priv; ath9k_init_wow() local
330 struct ath_hw *ah = sc->sc_ah; ath9k_init_wow()
332 if ((sc->driver_data & ATH9K_PCI_WOW) || sc->force_wow) { ath9k_init_wow()
338 device_init_wakeup(sc->dev, 1); ath9k_init_wow()
344 struct ath_softc *sc = hw->priv; ath9k_deinit_wow() local
346 if ((sc->driver_data & ATH9K_PCI_WOW) || sc->force_wow) ath9k_deinit_wow()
347 device_init_wakeup(sc->dev, 0); ath9k_deinit_wow()
H A Dlink.c25 struct ath_softc *sc = container_of(work, struct ath_softc, ath_tx_complete_poll_work() local
32 if (sc->tx99_state) { ath_tx_complete_poll_work()
33 ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, ath_tx_complete_poll_work()
39 txq = sc->tx.txq_map[i]; ath_tx_complete_poll_work()
41 ath_txq_lock(sc, txq); ath_tx_complete_poll_work()
45 ath_txq_unlock(sc, txq); ath_tx_complete_poll_work()
51 ath_txq_unlock(sc, txq); ath_tx_complete_poll_work()
55 ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, ath_tx_complete_poll_work()
57 ath9k_queue_reset(sc, RESET_TYPE_TX_HANG); ath_tx_complete_poll_work()
61 ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, ath_tx_complete_poll_work()
68 bool ath_hw_check(struct ath_softc *sc) ath_hw_check() argument
70 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_hw_check()
74 ath9k_ps_wakeup(sc); ath_hw_check()
76 is_alive = ath9k_hw_check_alive(sc->sc_ah); ath_hw_check()
82 ath9k_queue_reset(sc, type); ath_hw_check()
85 ath9k_ps_restore(sc); ath_hw_check()
93 static bool ath_hw_pll_rx_hang_check(struct ath_softc *sc, u32 pll_sqsum) ath_hw_pll_rx_hang_check() argument
96 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_hw_pll_rx_hang_check()
102 ath9k_queue_reset(sc, RESET_TYPE_PLL_HANG); ath_hw_pll_rx_hang_check()
116 struct ath_softc *sc = container_of(work, struct ath_softc, ath_hw_pll_work() local
118 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_hw_pll_work()
128 if (sc->tx99_state) ath_hw_pll_work()
131 ath9k_ps_wakeup(sc); ath_hw_pll_work()
132 pll_sqsum = ar9003_get_pll_sqsum_dvc(sc->sc_ah); ath_hw_pll_work()
133 ath9k_ps_restore(sc); ath_hw_pll_work()
134 if (ath_hw_pll_rx_hang_check(sc, pll_sqsum)) ath_hw_pll_work()
137 ieee80211_queue_delayed_work(sc->hw, &sc->hw_pll_work, ath_hw_pll_work()
144 static void ath_paprd_activate(struct ath_softc *sc) ath_paprd_activate() argument
146 struct ath_hw *ah = sc->sc_ah; ath_paprd_activate()
168 static bool ath_paprd_send_frame(struct ath_softc *sc, struct sk_buff *skb, int chain) ath_paprd_send_frame() argument
170 struct ieee80211_hw *hw = sc->hw; ath_paprd_send_frame()
172 struct ath_hw *ah = sc->sc_ah; ath_paprd_send_frame()
178 txctl.txq = sc->tx.txq_map[IEEE80211_AC_BE]; ath_paprd_send_frame()
181 tx_info->band = sc->cur_chandef.chan->band; ath_paprd_send_frame()
188 init_completion(&sc->paprd_complete); ath_paprd_send_frame()
197 time_left = wait_for_completion_timeout(&sc->paprd_complete, ath_paprd_send_frame()
210 struct ath_softc *sc = container_of(work, struct ath_softc, paprd_work); ath_paprd_calibrate() local
211 struct ieee80211_hw *hw = sc->hw; ath_paprd_calibrate()
212 struct ath_hw *ah = sc->sc_ah; ath_paprd_calibrate()
230 ath9k_ps_wakeup(sc); ath_paprd_calibrate()
258 if (!ath_paprd_send_frame(sc, skb, chain)) ath_paprd_calibrate()
286 ath_paprd_activate(sc); ath_paprd_calibrate()
290 ath9k_ps_restore(sc); ath_paprd_calibrate()
302 struct ath_softc *sc = (struct ath_softc *)data; ath_ani_calibrate() local
303 struct ath_hw *ah = sc->sc_ah; ath_ani_calibrate()
321 if (sc->sc_ah->power_mode != ATH9K_PM_AWAKE) { ath_ani_calibrate()
323 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath_ani_calibrate()
324 sc->ps_flags |= PS_WAIT_FOR_ANI; ath_ani_calibrate()
325 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_ani_calibrate()
330 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath_ani_calibrate()
331 sc->ps_flags &= ~PS_WAIT_FOR_ANI; ath_ani_calibrate()
332 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_ani_calibrate()
334 ath9k_ps_wakeup(sc); ath_ani_calibrate()
368 ath_update_survey_stats(sc); ath_ani_calibrate()
378 ath9k_queue_reset(sc, RESET_TYPE_CALIBRATION); ath_ani_calibrate()
391 ath9k_ps_restore(sc); ath_ani_calibrate()
408 ieee80211_queue_work(sc->hw, &sc->paprd_work); ath_ani_calibrate()
410 ath9k_ps_wakeup(sc); ath_ani_calibrate()
411 ath_paprd_activate(sc); ath_ani_calibrate()
412 ath9k_ps_restore(sc); ath_ani_calibrate()
417 void ath_start_ani(struct ath_softc *sc) ath_start_ani() argument
419 struct ath_hw *ah = sc->sc_ah; ath_start_ani()
425 sc->cur_chan->offchannel) ath_start_ani()
437 void ath_stop_ani(struct ath_softc *sc) ath_stop_ani() argument
439 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_stop_ani()
445 void ath_check_ani(struct ath_softc *sc) ath_check_ani() argument
447 struct ath_hw *ah = sc->sc_ah; ath_check_ani()
448 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_check_ani()
449 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; ath_check_ani()
474 ath_start_ani(sc); ath_check_ani()
481 ath_stop_ani(sc); ath_check_ani()
484 void ath_update_survey_nf(struct ath_softc *sc, int channel) ath_update_survey_nf() argument
486 struct ath_hw *ah = sc->sc_ah; ath_update_survey_nf()
488 struct survey_info *survey = &sc->survey[channel]; ath_update_survey_nf()
502 int ath_update_survey_stats(struct ath_softc *sc) ath_update_survey_stats() argument
504 struct ath_hw *ah = sc->sc_ah; ath_update_survey_stats()
507 struct survey_info *survey = &sc->survey[pos]; ath_update_survey_stats()
537 ath_update_survey_nf(sc, pos); ath_update_survey_stats()
H A Ddfs.c51 ath9k_postprocess_radar_event(struct ath_softc *sc, ath9k_postprocess_radar_event() argument
68 DFS_STAT_INC(sc, pri_phy_errors); ath9k_postprocess_radar_event()
78 DFS_STAT_INC(sc, ext_phy_errors); ath9k_postprocess_radar_event()
97 DFS_STAT_INC(sc, dc_phy_errors); ath9k_postprocess_radar_event()
107 DFS_STAT_INC(sc, bwinfo_discards); ath9k_postprocess_radar_event()
112 DFS_STAT_INC(sc, rssi_discards); ath9k_postprocess_radar_event()
123 pe->width = dur_to_usecs(sc->sc_ah, dur); ath9k_postprocess_radar_event()
126 DFS_STAT_INC(sc, pulses_detected); ath9k_postprocess_radar_event()
131 ath9k_dfs_process_radar_pulse(struct ath_softc *sc, struct pulse_event *pe) ath9k_dfs_process_radar_pulse() argument
133 struct dfs_pattern_detector *pd = sc->dfs_detector; ath9k_dfs_process_radar_pulse()
134 DFS_STAT_INC(sc, pulses_processed); ath9k_dfs_process_radar_pulse()
139 DFS_STAT_INC(sc, radar_detected); ath9k_dfs_process_radar_pulse()
140 ieee80211_radar_detected(sc->hw); ath9k_dfs_process_radar_pulse()
146 void ath9k_dfs_process_phyerr(struct ath_softc *sc, void *data, ath9k_dfs_process_phyerr() argument
153 struct ath_hw *ah = sc->sc_ah; ath9k_dfs_process_phyerr()
156 DFS_STAT_INC(sc, pulses_total); ath9k_dfs_process_phyerr()
162 DFS_STAT_INC(sc, pulses_no_dfs); ath9k_dfs_process_phyerr()
168 DFS_STAT_INC(sc, datalen_discards); ath9k_dfs_process_phyerr()
190 if (!ath9k_postprocess_radar_event(sc, &ard, &pe)) ath9k_dfs_process_phyerr()
197 pe.ts - sc->dfs_prev_pulse_ts); ath9k_dfs_process_phyerr()
198 sc->dfs_prev_pulse_ts = pe.ts; ath9k_dfs_process_phyerr()
200 ath9k_dfs_process_radar_pulse(sc, &pe); ath9k_dfs_process_phyerr()
203 ath9k_dfs_process_radar_pulse(sc, &pe); ath9k_dfs_process_phyerr()
H A Dxmit.c50 static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,
52 static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
54 static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
57 static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
59 static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
62 static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
64 static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
80 void ath_txq_lock(struct ath_softc *sc, struct ath_txq *txq)
86 void ath_txq_unlock(struct ath_softc *sc, struct ath_txq *txq)
92 void ath_txq_unlock_complete(struct ath_softc *sc, struct ath_txq *txq)
103 ieee80211_tx_status(sc->hw, skb);
106 static void ath_tx_queue_tid(struct ath_softc *sc, struct ath_txq *txq, ath_tx_queue_tid() argument
156 static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq, ath_txq_skb_done() argument
166 txq = sc->tx.txq_map[q]; ath_txq_skb_done()
171 txq->pending_frames < sc->tx.txq_max_pending[q]) { ath_txq_skb_done()
173 ieee80211_wake_queue(sc->hw, info->hw_queue); ath_txq_skb_done()
175 ieee80211_wake_queue(sc->hw, q); ath_txq_skb_done()
181 ath_get_skb_tid(struct ath_softc *sc, struct ath_node *an, struct sk_buff *skb) ath_get_skb_tid() argument
209 ath_tx_tid_change_state(struct ath_softc *sc, struct ath_atx_tid *tid) ath_tx_tid_change_state() argument
227 bf = ath_tx_setup_buffer(sc, txq, tid, skb); ath_tx_tid_change_state()
230 ath_txq_skb_done(sc, txq, skb); ath_tx_tid_change_state()
231 ieee80211_free_txskb(sc->hw, skb); ath_tx_tid_change_state()
238 static void ath_tx_flush_tid(struct ath_softc *sc, struct ath_atx_tid *tid) ath_tx_flush_tid() argument
256 ath_txq_skb_done(sc, txq, skb); ath_tx_flush_tid()
257 ieee80211_free_txskb(sc->hw, skb); ath_tx_flush_tid()
262 ath_tx_update_baw(sc, tid, bf->bf_state.seqno); ath_tx_flush_tid()
267 ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0); ath_tx_flush_tid()
271 ath_txq_unlock(sc, txq); ath_tx_flush_tid()
273 ath_txq_lock(sc, txq); ath_tx_flush_tid()
277 static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, ath_tx_update_baw() argument
295 static void ath_tx_addto_baw(struct ath_softc *sc, struct ath_atx_tid *tid, ath_tx_addto_baw() argument
314 static void ath_tid_drain(struct ath_softc *sc, struct ath_txq *txq, ath_tid_drain() argument
332 ath_tx_complete(sc, skb, ATH_TX_ERROR, txq); ath_tid_drain()
337 ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0); ath_tid_drain()
341 static void ath_tx_set_retry(struct ath_softc *sc, struct ath_txq *txq, ath_tx_set_retry() argument
357 dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, ath_tx_set_retry()
361 static struct ath_buf *ath_tx_get_buffer(struct ath_softc *sc) ath_tx_get_buffer() argument
365 spin_lock_bh(&sc->tx.txbuflock); ath_tx_get_buffer()
367 if (unlikely(list_empty(&sc->tx.txbuf))) { ath_tx_get_buffer()
368 spin_unlock_bh(&sc->tx.txbuflock); ath_tx_get_buffer()
372 bf = list_first_entry(&sc->tx.txbuf, struct ath_buf, list); ath_tx_get_buffer()
375 spin_unlock_bh(&sc->tx.txbuflock); ath_tx_get_buffer()
380 static void ath_tx_return_buffer(struct ath_softc *sc, struct ath_buf *bf) ath_tx_return_buffer() argument
382 spin_lock_bh(&sc->tx.txbuflock); ath_tx_return_buffer()
383 list_add_tail(&bf->list, &sc->tx.txbuf); ath_tx_return_buffer()
384 spin_unlock_bh(&sc->tx.txbuflock); ath_tx_return_buffer()
387 static struct ath_buf* ath_clone_txbuf(struct ath_softc *sc, struct ath_buf *bf) ath_clone_txbuf() argument
391 tbf = ath_tx_get_buffer(sc); ath_clone_txbuf()
399 memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); ath_clone_txbuf()
406 static void ath_tx_count_frames(struct ath_softc *sc, struct ath_buf *bf, ath_tx_count_frames() argument
438 static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, ath_tx_complete_aggr() argument
445 struct ieee80211_hw *hw = sc->hw; ath_tx_complete_aggr()
487 ath_tx_complete_buf(sc, bf, txq, &bf_head, ts, 0); ath_tx_complete_aggr()
495 tid = ath_get_skb_tid(sc, an, skb); ath_tx_complete_aggr()
525 if (sc->sc_ah->opmode == NL80211_IFTYPE_STATION) ath_tx_complete_aggr()
532 ath_tx_count_frames(sc, bf, ts, txok, &nframes, &nbad); ath_tx_complete_aggr()
561 ath_tx_set_retry(sc, txq, bf->bf_mpdu, ath_tx_complete_aggr()
585 ath_tx_update_baw(sc, tid, seqno); ath_tx_complete_aggr()
589 ath_tx_rc_status(sc, bf, ts, nframes, nbad, txok); ath_tx_complete_aggr()
592 ath_dynack_sample_tx_ts(sc->sc_ah, ath_tx_complete_aggr()
597 ath_tx_complete_buf(sc, bf, txq, &bf_head, ts, ath_tx_complete_aggr()
608 tbf = ath_clone_txbuf(sc, bf_last); ath_tx_complete_aggr()
615 ath_tx_update_baw(sc, tid, seqno); ath_tx_complete_aggr()
617 ath_tx_complete_buf(sc, bf, txq, ath_tx_complete_aggr()
644 ath_tx_queue_tid(sc, txq, tid); ath_tx_complete_aggr()
657 ath_txq_unlock(sc, txq); ath_tx_complete_aggr()
659 ath_txq_lock(sc, txq); ath_tx_complete_aggr()
665 ath9k_queue_reset(sc, RESET_TYPE_TX_ERROR); ath_tx_complete_aggr()
674 static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq, ath_tx_process_buffer() argument
689 ts->duration = ath9k_hw_get_duration(sc->sc_ah, bf->bf_desc, ath_tx_process_buffer()
696 ath_tx_rc_status(sc, bf, ts, 1, txok ? 0 : 1, txok); ath_tx_process_buffer()
697 ath_dynack_sample_tx_ts(sc->sc_ah, bf->bf_mpdu, ts); ath_tx_process_buffer()
699 ath_tx_complete_buf(sc, bf, txq, bf_head, ts, txok); ath_tx_process_buffer()
701 ath_tx_complete_aggr(sc, txq, bf, bf_head, ts, txok); ath_tx_process_buffer()
704 ath_txq_schedule(sc, txq); ath_tx_process_buffer()
729 static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf, ath_lookup_rate() argument
769 frmlen = sc->tx.max_aggr_framelen[q][modeidx][rates[i].idx]; ath_lookup_rate()
786 bt_aggr_limit = ath9k_btcoex_aggr_limit(sc, max_4ms_framelen); ath_lookup_rate()
800 static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid, ath_compute_num_delims() argument
821 !(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)) ath_compute_num_delims()
828 if (first_subfrm && !AR_SREV_9580_10_OR_LATER(sc->sc_ah) && ath_compute_num_delims()
829 (sc->sc_ah->ent_mode & AR_ENT_OTP_MIN_PKT_SIZE_DISABLE)) ath_compute_num_delims()
871 ath_tx_get_tid_subframe(struct ath_softc *sc, struct ath_txq *txq, ath_tx_get_tid_subframe() argument
892 bf = ath_tx_setup_buffer(sc, txq, tid, skb); ath_tx_get_tid_subframe()
898 ath_txq_skb_done(sc, txq, skb); ath_tx_get_tid_subframe()
899 ieee80211_free_txskb(sc->hw, skb); ath_tx_get_tid_subframe()
936 ath_tx_update_baw(sc, tid, seqno); ath_tx_get_tid_subframe()
937 ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0); ath_tx_get_tid_subframe()
948 ath_tx_form_aggr(struct ath_softc *sc, struct ath_txq *txq, ath_tx_form_aggr() argument
964 aggr_limit = ath_lookup_rate(sc, bf, tid); ath_tx_form_aggr()
990 ndelim = ath_compute_num_delims(sc, tid, bf_first, fi->framelen, ath_tx_form_aggr()
999 ath_tx_addto_baw(sc, tid, bf); ath_tx_form_aggr()
1009 bf = ath_tx_get_tid_subframe(sc, txq, tid, &tid_q); ath_tx_form_aggr()
1038 static u32 ath_pkt_duration(struct ath_softc *sc, u8 rix, int pktlen, ath_pkt_duration() argument
1078 void ath_update_max_aggr_framelen(struct ath_softc *sc, int queue, int txop) ath_update_max_aggr_framelen() argument
1087 cur_ht20 = sc->tx.max_aggr_framelen[queue][MCS_HT20]; ath_update_max_aggr_framelen()
1088 cur_ht20_sgi = sc->tx.max_aggr_framelen[queue][MCS_HT20_SGI]; ath_update_max_aggr_framelen()
1089 cur_ht40 = sc->tx.max_aggr_framelen[queue][MCS_HT40]; ath_update_max_aggr_framelen()
1090 cur_ht40_sgi = sc->tx.max_aggr_framelen[queue][MCS_HT40_SGI]; ath_update_max_aggr_framelen()
1099 static u8 ath_get_rate_txpower(struct ath_softc *sc, struct ath_buf *bf, ath_get_rate_txpower() argument
1106 struct ath_hw *ah = sc->sc_ah; ath_get_rate_txpower()
1108 if (sc->tx99_state || !ah->tpc_enabled) ath_get_rate_txpower()
1172 static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, ath_buf_set_rate() argument
1175 struct ath_hw *ah = sc->sc_ah; ath_buf_set_rate()
1183 u32 rts_thresh = sc->hw->wiphy->rts_threshold; ath_buf_set_rate()
1236 info->rates[i].ChSel = ath_txchainmask_reduction(sc, ath_buf_set_rate()
1238 info->rates[i].PktDuration = ath_pkt_duration(sc, rix, len, ath_buf_set_rate()
1243 info->txpower[i] = ath_get_rate_txpower(sc, bf, rix, ath_buf_set_rate()
1267 info->rates[i].ChSel = ath_txchainmask_reduction(sc, ath_buf_set_rate()
1270 info->rates[i].PktDuration = ath9k_hw_computetxtime(sc->sc_ah, ath_buf_set_rate()
1274 info->txpower[i] = ath_get_rate_txpower(sc, bf, rix, false, ath_buf_set_rate()
1279 if (bf_isaggr(bf) && (len > sc->sc_ah->caps.rts_aggr_limit)) ath_buf_set_rate()
1310 static void ath_tx_fill_desc(struct ath_softc *sc, struct ath_buf *bf, ath_tx_fill_desc() argument
1313 struct ath_hw *ah = sc->sc_ah; ath_tx_fill_desc()
1316 u32 rts_thresh = sc->hw->wiphy->rts_threshold; ath_tx_fill_desc()
1334 info.link = (sc->tx99_state) ? bf->bf_daddr : 0; ath_tx_fill_desc()
1339 if (!sc->tx99_state) ath_tx_fill_desc()
1342 txq == sc->tx.uapsdq) ath_tx_fill_desc()
1373 ath_buf_set_rate(sc, bf, &info, len, rts); ath_tx_fill_desc()
1403 ath_tx_form_burst(struct ath_softc *sc, struct ath_txq *txq, ath_tx_form_burst() argument
1425 bf = ath_tx_get_tid_subframe(sc, txq, tid, &tid_q); ath_tx_form_burst()
1437 static bool ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq, ath_tx_sched_aggr() argument
1452 bf = ath_tx_get_tid_subframe(sc, txq, tid, &tid_q); ath_tx_sched_aggr()
1466 last = ath_tx_form_aggr(sc, txq, tid, &bf_q, bf, ath_tx_sched_aggr()
1469 ath_tx_form_burst(sc, txq, tid, &bf_q, bf, tid_q); ath_tx_sched_aggr()
1479 ath_tx_fill_desc(sc, bf, txq, aggr_len); ath_tx_sched_aggr()
1480 ath_tx_txqaddbuf(sc, txq, &bf_q, false); ath_tx_sched_aggr()
1484 int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, ath_tx_aggr_start() argument
1496 ath_txq_lock(sc, txq); ath_tx_aggr_start()
1510 ath_tx_tid_change_state(sc, txtid); ath_tx_aggr_start()
1519 ath_txq_unlock_complete(sc, txq); ath_tx_aggr_start()
1524 void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid) ath_tx_aggr_stop() argument
1530 ath_txq_lock(sc, txq); ath_tx_aggr_stop()
1532 ath_tx_flush_tid(sc, txtid); ath_tx_aggr_stop()
1533 ath_tx_tid_change_state(sc, txtid); ath_tx_aggr_stop()
1534 ath_txq_unlock_complete(sc, txq); ath_tx_aggr_stop()
1537 void ath_tx_aggr_sleep(struct ieee80211_sta *sta, struct ath_softc *sc, ath_tx_aggr_sleep() argument
1552 ath_txq_lock(sc, txq); ath_tx_aggr_sleep()
1555 ath_txq_unlock(sc, txq); ath_tx_aggr_sleep()
1569 ath_txq_unlock(sc, txq); ath_tx_aggr_sleep()
1575 void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an) ath_tx_aggr_wakeup() argument
1588 ath_txq_lock(sc, txq); ath_tx_aggr_wakeup()
1592 ath_tx_queue_tid(sc, txq, tid); ath_tx_aggr_wakeup()
1593 ath_txq_schedule(sc, txq); ath_tx_aggr_wakeup()
1596 ath_txq_unlock_complete(sc, txq); ath_tx_aggr_wakeup()
1600 void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, ath_tx_aggr_resume() argument
1611 ath_txq_lock(sc, txq); ath_tx_aggr_resume()
1616 ath_tx_queue_tid(sc, txq, tid); ath_tx_aggr_resume()
1617 ath_txq_schedule(sc, txq); ath_tx_aggr_resume()
1620 ath_txq_unlock_complete(sc, txq); ath_tx_aggr_resume()
1629 struct ath_softc *sc = hw->priv; ath9k_release_buffered_frames() local
1631 struct ath_txq *txq = sc->tx.uapsdq; ath9k_release_buffered_frames()
1648 ath_txq_lock(sc, tid->ac->txq); ath9k_release_buffered_frames()
1650 bf = ath_tx_get_tid_subframe(sc, sc->tx.uapsdq, tid, &tid_q); ath9k_release_buffered_frames()
1658 ath_tx_addto_baw(sc, tid, bf); ath9k_release_buffered_frames()
1672 ath_txq_unlock_complete(sc, tid->ac->txq); ath9k_release_buffered_frames()
1682 ath_txq_lock(sc, txq); ath9k_release_buffered_frames()
1683 ath_tx_fill_desc(sc, bf, txq, 0); ath9k_release_buffered_frames()
1684 ath_tx_txqaddbuf(sc, txq, &bf_q, false); ath9k_release_buffered_frames()
1685 ath_txq_unlock(sc, txq); ath9k_release_buffered_frames()
1692 struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype) ath_txq_setup() argument
1694 struct ath_hw *ah = sc->sc_ah; ath_txq_setup()
1743 if (!ATH_TXQ_SETUP(sc, axq_qnum)) { ath_txq_setup()
1744 struct ath_txq *txq = &sc->tx.txq[axq_qnum]; ath_txq_setup()
1755 sc->tx.txqsetup |= 1<<axq_qnum; ath_txq_setup()
1761 return &sc->tx.txq[axq_qnum]; ath_txq_setup()
1764 int ath_txq_update(struct ath_softc *sc, int qnum, ath_txq_update() argument
1767 struct ath_hw *ah = sc->sc_ah; ath_txq_update()
1771 BUG_ON(sc->tx.txq[qnum].axq_qnum != qnum); ath_txq_update()
1781 ath_err(ath9k_hw_common(sc->sc_ah), ath_txq_update()
1791 int ath_cabq_update(struct ath_softc *sc) ath_cabq_update() argument
1794 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; ath_cabq_update()
1795 int qnum = sc->beacon.cabq->axq_qnum; ath_cabq_update()
1797 ath9k_hw_get_txq_props(sc->sc_ah, qnum, &qi); ath_cabq_update()
1801 ath_txq_update(sc, qnum, &qi); ath_cabq_update()
1806 static void ath_drain_txq_list(struct ath_softc *sc, struct ath_txq *txq, ath_drain_txq_list() argument
1823 ath_tx_return_buffer(sc, bf); ath_drain_txq_list()
1829 ath_tx_process_buffer(sc, txq, &ts, bf, &bf_head); ath_drain_txq_list()
1839 void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq) ath_draintxq() argument
1841 ath_txq_lock(sc, txq); ath_draintxq()
1843 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) { ath_draintxq()
1847 ath_drain_txq_list(sc, txq, &txq->txq_fifo[idx]); ath_draintxq()
1856 ath_drain_txq_list(sc, txq, &txq->axq_q); ath_draintxq()
1858 ath_txq_unlock_complete(sc, txq); ath_draintxq()
1861 bool ath_drain_all_txq(struct ath_softc *sc) ath_drain_all_txq() argument
1863 struct ath_hw *ah = sc->sc_ah; ath_drain_all_txq()
1864 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_drain_all_txq()
1876 if (!ATH_TXQ_SETUP(sc, i)) ath_drain_all_txq()
1879 if (!sc->tx.txq[i].axq_depth) ath_drain_all_txq()
1882 if (ath9k_hw_numtxpending(ah, sc->tx.txq[i].axq_qnum)) ath_drain_all_txq()
1890 if (!ATH_TXQ_SETUP(sc, i)) ath_drain_all_txq()
1898 txq = &sc->tx.txq[i]; ath_drain_all_txq()
1900 ath_draintxq(sc, txq); ath_drain_all_txq()
1906 void ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq) ath_tx_cleanupq() argument
1908 ath9k_hw_releasetxqueue(sc->sc_ah, txq->axq_qnum); ath_tx_cleanupq()
1909 sc->tx.txqsetup &= ~(1<<txq->axq_qnum); ath_tx_cleanupq()
1915 void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq) ath_txq_schedule() argument
1917 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_txq_schedule()
1929 spin_lock_bh(&sc->chan_lock); ath_txq_schedule()
1930 ac_list = &sc->cur_chan->acq[txq->mac80211_qnum]; ath_txq_schedule()
1933 spin_unlock_bh(&sc->chan_lock); ath_txq_schedule()
1943 if (sc->cur_chan->stopped) ath_txq_schedule()
1958 if (ath_tx_sched_aggr(sc, txq, tid, &stop)) ath_txq_schedule()
1966 ath_tx_queue_tid(sc, txq, tid); ath_txq_schedule()
1991 spin_unlock_bh(&sc->chan_lock); ath_txq_schedule()
1994 void ath_txq_schedule_all(struct ath_softc *sc) ath_txq_schedule_all() argument
2000 txq = sc->tx.txq_map[i]; ath_txq_schedule_all()
2003 ath_txq_schedule(sc, txq); ath_txq_schedule_all()
2016 static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, ath_tx_txqaddbuf() argument
2019 struct ath_hw *ah = sc->sc_ah; ath_tx_txqaddbuf()
2065 if (!edma || sc->tx99_state) { ath_tx_txqaddbuf()
2083 static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq, ath_tx_send_normal() argument
2096 ath_tx_addto_baw(sc, tid, bf); ath_tx_send_normal()
2101 ath_tx_fill_desc(sc, bf, txq, fi->framelen); ath_tx_send_normal()
2102 ath_tx_txqaddbuf(sc, txq, &bf_head, false); ath_tx_send_normal()
2141 struct ath_softc *sc = hw->priv; setup_frame_info() local
2143 txpower = sc->cur_chan->cur_txpower; setup_frame_info()
2165 u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate) ath_txchainmask_reduction() argument
2167 struct ath_hw *ah = sc->sc_ah; ath_txchainmask_reduction()
2184 static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, ath_tx_setup_buffer() argument
2189 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_tx_setup_buffer()
2196 bf = ath_tx_get_buffer(sc); ath_tx_setup_buffer()
2220 bf->bf_buf_addr = dma_map_single(sc->dev, skb->data, ath_tx_setup_buffer()
2222 if (unlikely(dma_mapping_error(sc->dev, bf->bf_buf_addr))) { ath_tx_setup_buffer()
2225 ath_err(ath9k_hw_common(sc->sc_ah), ath_tx_setup_buffer()
2227 ath_tx_return_buffer(sc, bf); ath_tx_setup_buffer()
2266 struct ath_softc *sc = hw->priv; ath_tx_prepare() local
2281 ath_assign_seq(ath9k_hw_common(sc->sc_ah), skb); ath_tx_prepare()
2314 struct ath_softc *sc = hw->priv; ath_tx_start() local
2341 ath_txq_lock(sc, txq); ath_tx_start()
2342 if (txq == sc->tx.txq_map[q]) { ath_tx_start()
2344 if (++txq->pending_frames > sc->tx.txq_max_pending[q] && ath_tx_start()
2347 ieee80211_stop_queue(sc->hw, info->hw_queue); ath_tx_start()
2349 ieee80211_stop_queue(sc->hw, q); ath_tx_start()
2360 if (((avp && avp->chanctx != sc->cur_chan) || ath_tx_start()
2361 sc->cur_chan->stopped) && !txctl->force_channel) { ath_tx_start()
2369 tid = ath_get_skb_tid(sc, txctl->an, skb); ath_tx_start()
2372 ath_txq_unlock(sc, txq); ath_tx_start()
2373 txq = sc->tx.uapsdq; ath_tx_start()
2374 ath_txq_lock(sc, txq); ath_tx_start()
2388 ath_tx_queue_tid(sc, txq, tid); ath_tx_start()
2390 ath_txq_schedule(sc, txq); ath_tx_start()
2394 bf = ath_tx_setup_buffer(sc, txq, tid, skb); ath_tx_start()
2396 ath_txq_skb_done(sc, txq, skb); ath_tx_start()
2400 ieee80211_free_txskb(sc->hw, skb); ath_tx_start()
2410 ath_tx_send_normal(sc, txq, tid, skb); ath_tx_start()
2413 ath_txq_unlock(sc, txq); ath_tx_start()
2421 struct ath_softc *sc = hw->priv; ath_tx_cabq() local
2423 .txq = sc->beacon.cabq ath_tx_cabq()
2434 sc->cur_chan->beacon.beacon_interval * 1000 * ath_tx_cabq()
2435 sc->cur_chan->beacon.dtim_period / ATH_BCBUF; ath_tx_cabq()
2443 bf = ath_tx_setup_buffer(sc, txctl.txq, NULL, skb); ath_tx_cabq()
2449 ath_buf_set_rate(sc, bf, &info, fi->framelen, false); ath_tx_cabq()
2475 dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, ath_tx_cabq()
2479 ath_txq_lock(sc, txctl.txq); ath_tx_cabq()
2480 ath_tx_fill_desc(sc, bf, txctl.txq, 0); ath_tx_cabq()
2481 ath_tx_txqaddbuf(sc, txctl.txq, &bf_q, false); ath_tx_cabq()
2483 ath_txq_unlock(sc, txctl.txq); ath_tx_cabq()
2490 static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb, ath_tx_complete() argument
2494 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_tx_complete()
2501 if (sc->sc_ah->caldata) ath_tx_complete()
2502 set_bit(PAPRD_PACKET_SENT, &sc->sc_ah->caldata->cal_flags); ath_tx_complete()
2522 spin_lock_irqsave(&sc->sc_pm_lock, flags); ath_tx_complete()
2523 if ((sc->ps_flags & PS_WAIT_FOR_TX_ACK) && !txq->axq_depth) { ath_tx_complete()
2524 sc->ps_flags &= ~PS_WAIT_FOR_TX_ACK; ath_tx_complete()
2527 sc->ps_flags & (PS_WAIT_FOR_BEACON | ath_tx_complete()
2532 spin_unlock_irqrestore(&sc->sc_pm_lock, flags); ath_tx_complete()
2535 ath_txq_skb_done(sc, txq, skb); ath_tx_complete()
2538 static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf, ath_tx_complete_buf() argument
2553 dma_unmap_single(sc->dev, bf->bf_buf_addr, skb->len, DMA_TO_DEVICE); ath_tx_complete_buf()
2555 if (sc->tx99_state) ath_tx_complete_buf()
2564 complete(&sc->paprd_complete); ath_tx_complete_buf()
2566 ath_debug_stat_tx(sc, bf, ts, txq, tx_flags); ath_tx_complete_buf()
2567 ath_tx_complete(sc, skb, tx_flags, txq); ath_tx_complete_buf()
2578 spin_lock_irqsave(&sc->tx.txbuflock, flags); ath_tx_complete_buf()
2579 list_splice_tail_init(bf_q, &sc->tx.txbuf); ath_tx_complete_buf()
2580 spin_unlock_irqrestore(&sc->tx.txbuflock, flags); ath_tx_complete_buf()
2583 static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf, ath_tx_rc_status() argument
2590 struct ieee80211_hw *hw = sc->hw; ath_tx_rc_status()
2591 struct ath_hw *ah = sc->sc_ah; ath_tx_rc_status()
2625 ah->tx_trig_level >= sc->sc_ah->config.max_txtrig_level) ath_tx_rc_status()
2638 static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq) ath_tx_processq() argument
2640 struct ath_hw *ah = sc->sc_ah; ath_tx_processq()
2649 txq->axq_qnum, ath9k_hw_gettxbuf(sc->sc_ah, txq->axq_qnum), ath_tx_processq()
2652 ath_txq_lock(sc, txq); ath_tx_processq()
2659 ath_txq_schedule(sc, txq); ath_tx_processq()
2705 ath_tx_return_buffer(sc, bf_held); ath_tx_processq()
2708 ath_tx_process_buffer(sc, txq, &ts, bf, &bf_head); ath_tx_processq()
2710 ath_txq_unlock_complete(sc, txq); ath_tx_processq()
2713 void ath_tx_tasklet(struct ath_softc *sc) ath_tx_tasklet() argument
2715 struct ath_hw *ah = sc->sc_ah; ath_tx_tasklet()
2720 if (ATH_TXQ_SETUP(sc, i) && (qcumask & (1 << i))) ath_tx_tasklet()
2721 ath_tx_processq(sc, &sc->tx.txq[i]); ath_tx_tasklet()
2725 void ath_tx_edma_tasklet(struct ath_softc *sc) ath_tx_edma_tasklet() argument
2728 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_tx_edma_tasklet()
2729 struct ath_hw *ah = sc->sc_ah; ath_tx_edma_tasklet()
2749 if (ts.qid == sc->beacon.beaconq) { ath_tx_edma_tasklet()
2750 sc->beacon.tx_processed = true; ath_tx_edma_tasklet()
2751 sc->beacon.tx_last = !(ts.ts_status & ATH9K_TXERR_MASK); ath_tx_edma_tasklet()
2754 ath_chanctx_event(sc, NULL, ath_tx_edma_tasklet()
2758 ath9k_csa_update(sc); ath_tx_edma_tasklet()
2762 txq = &sc->tx.txq[ts.qid]; ath_tx_edma_tasklet()
2764 ath_txq_lock(sc, txq); ath_tx_edma_tasklet()
2770 ath_txq_unlock(sc, txq); ath_tx_edma_tasklet()
2777 ath_tx_return_buffer(sc, bf); ath_tx_edma_tasklet()
2794 ath_tx_txqaddbuf(sc, txq, &bf_q, true); ath_tx_edma_tasklet()
2803 ath_tx_process_buffer(sc, txq, &ts, bf, &bf_head); ath_tx_edma_tasklet()
2804 ath_txq_unlock_complete(sc, txq); ath_tx_edma_tasklet()
2812 static int ath_txstatus_setup(struct ath_softc *sc, int size) ath_txstatus_setup() argument
2814 struct ath_descdma *dd = &sc->txsdma; ath_txstatus_setup()
2815 u8 txs_len = sc->sc_ah->caps.txs_len; ath_txstatus_setup()
2818 dd->dd_desc = dmam_alloc_coherent(sc->dev, dd->dd_desc_len, ath_txstatus_setup()
2826 static int ath_tx_edma_init(struct ath_softc *sc) ath_tx_edma_init() argument
2830 err = ath_txstatus_setup(sc, ATH_TXSTATUS_RING_SIZE); ath_tx_edma_init()
2832 ath9k_hw_setup_statusring(sc->sc_ah, sc->txsdma.dd_desc, ath_tx_edma_init()
2833 sc->txsdma.dd_desc_paddr, ath_tx_edma_init()
2839 int ath_tx_init(struct ath_softc *sc, int nbufs) ath_tx_init() argument
2841 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_tx_init()
2844 spin_lock_init(&sc->tx.txbuflock); ath_tx_init()
2846 error = ath_descdma_setup(sc, &sc->tx.txdma, &sc->tx.txbuf, ath_tx_init()
2854 error = ath_descdma_setup(sc, &sc->beacon.bdma, &sc->beacon.bbuf, ath_tx_init()
2862 INIT_DELAYED_WORK(&sc->tx_complete_work, ath_tx_complete_poll_work); ath_tx_init()
2864 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_tx_init()
2865 error = ath_tx_edma_init(sc); ath_tx_init()
2870 void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an) ath_tx_node_init() argument
2896 ac->txq = sc->tx.txq_map[acno]; ath_tx_node_init()
2901 void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an) ath_tx_node_cleanup() argument
2914 ath_txq_lock(sc, txq); ath_tx_node_cleanup()
2926 ath_tid_drain(sc, txq, tid); ath_tx_node_cleanup()
2929 ath_txq_unlock(sc, txq); ath_tx_node_cleanup()
2935 int ath9k_tx99_send(struct ath_softc *sc, struct sk_buff *skb, ath9k_tx99_send() argument
2940 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath9k_tx99_send()
2962 bf = ath_tx_setup_buffer(sc, txctl->txq, NULL, skb); ath9k_tx99_send()
2968 ath_set_rates(sc->tx99_vif, NULL, bf); ath9k_tx99_send()
2970 ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr); ath9k_tx99_send()
2971 ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum); ath9k_tx99_send()
2973 ath_tx_send_normal(sc, txctl->txq, NULL, skb); ath9k_tx99_send()
H A Dath9k.h74 int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd,
82 #define ATH_TXQ_SETUP(sc, i) ((sc)->tx.txqsetup & (1<<i))
260 struct ath_softc *sc; member in struct:ath_node
429 for (ctx = &sc->chanctx[0]; \
430 ctx <= &sc->chanctx[ARRAY_SIZE(sc->chanctx) - 1]; \
433 void ath_chanctx_init(struct ath_softc *sc);
434 void ath_chanctx_set_channel(struct ath_softc *sc, struct ath_chanctx *ctx,
448 void ath9k_init_channel_context(struct ath_softc *sc);
449 void ath9k_offchannel_init(struct ath_softc *sc);
450 void ath9k_deinit_channel_context(struct ath_softc *sc);
451 int ath9k_init_p2p(struct ath_softc *sc);
452 void ath9k_deinit_p2p(struct ath_softc *sc);
453 void ath9k_p2p_remove_vif(struct ath_softc *sc,
455 void ath9k_p2p_beacon_sync(struct ath_softc *sc);
456 void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
458 void ath9k_beacon_add_noa(struct ath_softc *sc, struct ath_vif *avp,
461 void ath9k_chanctx_wake_queues(struct ath_softc *sc, struct ath_chanctx *ctx);
462 void ath9k_chanctx_stop_queues(struct ath_softc *sc, struct ath_chanctx *ctx);
463 void ath_chanctx_check_active(struct ath_softc *sc, struct ath_chanctx *ctx);
465 void ath_chanctx_beacon_recv_ev(struct ath_softc *sc,
467 void ath_chanctx_beacon_sent_ev(struct ath_softc *sc,
469 void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
471 void ath_chanctx_set_next(struct ath_softc *sc, bool force);
472 void ath_offchannel_next(struct ath_softc *sc);
473 void ath_scan_complete(struct ath_softc *sc, bool abort);
474 void ath_roc_complete(struct ath_softc *sc, bool abort);
475 struct ath_chanctx* ath_is_go_chanctx_present(struct ath_softc *sc);
486 static inline void ath9k_init_channel_context(struct ath_softc *sc) ath9k_init_channel_context() argument
489 static inline void ath9k_offchannel_init(struct ath_softc *sc) ath9k_offchannel_init() argument
492 static inline void ath9k_deinit_channel_context(struct ath_softc *sc) ath9k_deinit_channel_context() argument
495 static inline void ath_chanctx_beacon_recv_ev(struct ath_softc *sc, ath_chanctx_beacon_recv_ev() argument
499 static inline void ath_chanctx_beacon_sent_ev(struct ath_softc *sc, ath_chanctx_beacon_sent_ev() argument
503 static inline void ath_chanctx_event(struct ath_softc *sc, ath_chanctx_event() argument
508 static inline int ath9k_init_p2p(struct ath_softc *sc) ath9k_init_p2p() argument
512 static inline void ath9k_deinit_p2p(struct ath_softc *sc) ath9k_deinit_p2p() argument
515 static inline void ath9k_p2p_remove_vif(struct ath_softc *sc, ath9k_p2p_remove_vif() argument
519 static inline void ath9k_p2p_beacon_sync(struct ath_softc *sc) ath9k_p2p_beacon_sync() argument
522 static inline void ath9k_p2p_bss_info_changed(struct ath_softc *sc, ath9k_p2p_bss_info_changed() argument
526 static inline void ath9k_beacon_add_noa(struct ath_softc *sc, struct ath_vif *avp, ath9k_beacon_add_noa() argument
530 static inline void ath9k_p2p_ps_timer(struct ath_softc *sc) ath9k_p2p_ps_timer() argument
533 static inline void ath9k_chanctx_wake_queues(struct ath_softc *sc, ath9k_chanctx_wake_queues() argument
537 static inline void ath9k_chanctx_stop_queues(struct ath_softc *sc, ath9k_chanctx_stop_queues() argument
541 static inline void ath_chanctx_check_active(struct ath_softc *sc, ath_chanctx_check_active() argument
548 void ath_startrecv(struct ath_softc *sc);
549 bool ath_stoprecv(struct ath_softc *sc);
550 u32 ath_calcrxfilter(struct ath_softc *sc);
551 int ath_rx_init(struct ath_softc *sc, int nbufs);
552 void ath_rx_cleanup(struct ath_softc *sc);
553 int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp);
554 struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype);
555 void ath_txq_lock(struct ath_softc *sc, struct ath_txq *txq);
556 void ath_txq_unlock(struct ath_softc *sc, struct ath_txq *txq);
557 void ath_txq_unlock_complete(struct ath_softc *sc, struct ath_txq *txq);
558 void ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq);
559 bool ath_drain_all_txq(struct ath_softc *sc);
560 void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq);
561 void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an);
562 void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an);
563 void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq);
564 void ath_txq_schedule_all(struct ath_softc *sc);
565 int ath_tx_init(struct ath_softc *sc, int nbufs);
566 int ath_txq_update(struct ath_softc *sc, int qnum,
568 void ath_update_max_aggr_framelen(struct ath_softc *sc, int queue, int txop);
574 void ath_tx_tasklet(struct ath_softc *sc);
575 void ath_tx_edma_tasklet(struct ath_softc *sc);
576 int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta,
578 void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid);
579 void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid);
581 void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an);
582 void ath_tx_aggr_sleep(struct ieee80211_sta *sta, struct ath_softc *sc,
643 void ath9k_calculate_iter_data(struct ath_softc *sc,
646 void ath9k_calculate_summary_state(struct ath_softc *sc,
648 void ath9k_set_txpower(struct ath_softc *sc, struct ieee80211_vif *vif);
688 void ath9k_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif,
690 void ath9k_beacon_assign_slot(struct ath_softc *sc, struct ieee80211_vif *vif);
691 void ath9k_beacon_remove_slot(struct ath_softc *sc, struct ieee80211_vif *vif);
692 void ath9k_set_beacon(struct ath_softc *sc);
693 bool ath9k_csa_is_finished(struct ath_softc *sc, struct ieee80211_vif *vif);
694 void ath9k_csa_update(struct ath_softc *sc);
713 bool ath_hw_check(struct ath_softc *sc);
717 void ath_start_ani(struct ath_softc *sc);
718 void ath_stop_ani(struct ath_softc *sc);
719 void ath_check_ani(struct ath_softc *sc);
720 int ath_update_survey_stats(struct ath_softc *sc);
721 void ath_update_survey_nf(struct ath_softc *sc, int channel);
722 void ath9k_queue_reset(struct ath_softc *sc, enum ath_reset_type type);
761 int ath9k_init_btcoex(struct ath_softc *sc);
762 void ath9k_deinit_btcoex(struct ath_softc *sc);
763 void ath9k_start_btcoex(struct ath_softc *sc);
764 void ath9k_stop_btcoex(struct ath_softc *sc);
765 void ath9k_btcoex_timer_resume(struct ath_softc *sc);
766 void ath9k_btcoex_timer_pause(struct ath_softc *sc);
767 void ath9k_btcoex_handle_interrupt(struct ath_softc *sc, u32 status);
768 u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc, u32 max_4ms_framelen);
769 void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc);
770 int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf, u32 size);
772 static inline int ath9k_init_btcoex(struct ath_softc *sc) ath9k_init_btcoex() argument
776 static inline void ath9k_deinit_btcoex(struct ath_softc *sc) ath9k_deinit_btcoex() argument
779 static inline void ath9k_start_btcoex(struct ath_softc *sc) ath9k_start_btcoex() argument
782 static inline void ath9k_stop_btcoex(struct ath_softc *sc) ath9k_stop_btcoex() argument
785 static inline void ath9k_btcoex_handle_interrupt(struct ath_softc *sc, ath9k_btcoex_handle_interrupt() argument
789 static inline u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc, ath9k_btcoex_aggr_limit() argument
794 static inline void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc) ath9k_btcoex_stop_gen_timer() argument
797 static inline int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf, u32 size) ath9k_dump_btcoex() argument
814 void ath_init_leds(struct ath_softc *sc);
815 void ath_deinit_leds(struct ath_softc *sc);
816 void ath_fill_led_pin(struct ath_softc *sc);
818 static inline void ath_init_leds(struct ath_softc *sc) ath_init_leds() argument
822 static inline void ath_deinit_leds(struct ath_softc *sc) ath_deinit_leds() argument
825 static inline void ath_fill_led_pin(struct ath_softc *sc) ath_fill_led_pin() argument
918 void ath_ant_comb_scan(struct ath_softc *sc, struct ath_rx_status *rs);
1051 void ath9k_tx99_init_debug(struct ath_softc *sc);
1052 int ath9k_tx99_send(struct ath_softc *sc, struct sk_buff *skb,
1055 static inline void ath9k_tx99_init_debug(struct ath_softc *sc) ath9k_tx99_init_debug() argument
1058 static inline int ath9k_tx99_send(struct ath_softc *sc, ath9k_tx99_send() argument
1075 int ath_reset(struct ath_softc *sc, struct ath9k_channel *hchan);
1076 void ath_cancel_work(struct ath_softc *sc);
1077 void ath_restart_work(struct ath_softc *sc);
1078 int ath9k_init_device(u16 devid, struct ath_softc *sc,
1080 void ath9k_deinit_device(struct ath_softc *sc);
1081 void ath9k_reload_chainmask_settings(struct ath_softc *sc);
1082 u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate);
1083 void ath_start_rfkill_poll(struct ath_softc *sc);
1085 void ath9k_ps_wakeup(struct ath_softc *sc);
1086 void ath9k_ps_restore(struct ath_softc *sc);
H A Dmci.c119 static void ath_mci_update_scheme(struct ath_softc *sc) ath_mci_update_scheme() argument
121 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_mci_update_scheme()
122 struct ath_btcoex *btcoex = &sc->btcoex; ath_mci_update_scheme()
124 struct ath9k_hw_mci *mci_hw = &sc->sc_ah->btcoex_hw.mci; ath_mci_update_scheme()
160 btcoex->duty_cycle = AR_SREV_9565(sc->sc_ah) ? 40 : 35; ath_mci_update_scheme()
186 if (IS_CHAN_2GHZ(sc->sc_ah->curchan)) { ath_mci_update_scheme()
187 if (IS_CHAN_HT(sc->sc_ah->curchan)) ath_mci_update_scheme()
193 ath9k_btcoex_timer_pause(sc); ath_mci_update_scheme()
194 ath9k_hw_btcoex_disable(sc->sc_ah); ath_mci_update_scheme()
196 if (IS_CHAN_5GHZ(sc->sc_ah->curchan)) ath_mci_update_scheme()
206 ath9k_hw_btcoex_enable(sc->sc_ah); ath_mci_update_scheme()
207 ath9k_btcoex_timer_resume(sc); ath_mci_update_scheme()
210 static void ath_mci_cal_msg(struct ath_softc *sc, u8 opcode, u8 *rx_payload) ath_mci_cal_msg() argument
212 struct ath_hw *ah = sc->sc_ah; ath_mci_cal_msg()
221 ath9k_queue_reset(sc, RESET_TYPE_MCI); ath_mci_cal_msg()
227 ar9003_mci_send_message(sc->sc_ah, MCI_GPM, 0, payload, ath_mci_cal_msg()
238 struct ath_softc *sc = container_of(work, struct ath_softc, mci_work); ath9k_mci_work() local
240 ath_mci_update_scheme(sc); ath9k_mci_work()
256 static void ath_mci_set_concur_txprio(struct ath_softc *sc) ath_mci_set_concur_txprio() argument
258 struct ath_btcoex *btcoex = &sc->btcoex; ath_mci_set_concur_txprio()
292 ath9k_hw_btcoex_set_concur_txprio(sc->sc_ah, stomp_txprio); ath_mci_set_concur_txprio()
295 static u8 ath_mci_process_profile(struct ath_softc *sc, ath_mci_process_profile() argument
298 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_mci_process_profile()
299 struct ath_btcoex *btcoex = &sc->btcoex; ath_mci_process_profile()
326 ath_mci_set_concur_txprio(sc); ath_mci_process_profile()
330 static u8 ath_mci_process_status(struct ath_softc *sc, ath_mci_process_status() argument
333 struct ath_btcoex *btcoex = &sc->btcoex; ath_mci_process_status()
360 ath_mci_set_concur_txprio(sc); ath_mci_process_status()
367 static void ath_mci_msg(struct ath_softc *sc, u8 opcode, u8 *rx_payload) ath_mci_msg() argument
369 struct ath_hw *ah = sc->sc_ah; ath_mci_msg()
372 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_mci_msg()
379 ath_mci_flush_profile(&sc->btcoex.mci); ath_mci_msg()
408 update_scheme += ath_mci_process_profile(sc, &profile_info); ath_mci_msg()
424 update_scheme += ath_mci_process_status(sc, &profile_status); ath_mci_msg()
431 ieee80211_queue_work(sc->hw, &sc->mci_work); ath_mci_msg()
434 int ath_mci_setup(struct ath_softc *sc) ath_mci_setup() argument
436 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_mci_setup()
437 struct ath_mci_coex *mci = &sc->mci_coex; ath_mci_setup()
441 buf->bf_addr = dmam_alloc_coherent(sc->dev, ath_mci_setup()
459 ret = ar9003_mci_setup(sc->sc_ah, mci->gpm_buf.bf_paddr, ath_mci_setup()
467 INIT_WORK(&sc->mci_work, ath9k_mci_work); ath_mci_setup()
473 void ath_mci_cleanup(struct ath_softc *sc) ath_mci_cleanup() argument
475 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_mci_cleanup()
476 struct ath_hw *ah = sc->sc_ah; ath_mci_cleanup()
483 void ath_mci_intr(struct ath_softc *sc) ath_mci_intr() argument
485 struct ath_mci_coex *mci = &sc->mci_coex; ath_mci_intr()
486 struct ath_hw *ah = sc->sc_ah; ath_mci_intr()
495 ar9003_mci_get_interrupt(sc->sc_ah, &mci_int, &mci_int_rxmsg); ath_mci_intr()
580 ath_mci_cal_msg(sc, subtype, (u8 *)pgpm); ath_mci_intr()
584 ath_mci_msg(sc, opcode, (u8 *)pgpm); ath_mci_intr()
627 ath_mci_msg(sc, MCI_GPM_COEX_NOOP, NULL); ath_mci_intr()
631 void ath_mci_enable(struct ath_softc *sc) ath_mci_enable() argument
633 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_mci_enable()
638 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI) ath_mci_enable()
639 sc->sc_ah->imask |= ATH9K_INT_MCI; ath_mci_enable()
642 void ath9k_mci_update_wlan_channels(struct ath_softc *sc, bool allow_all) ath9k_mci_update_wlan_channels() argument
644 struct ath_hw *ah = sc->sc_ah; ath9k_mci_update_wlan_channels()
692 void ath9k_mci_set_txpower(struct ath_softc *sc, bool setchannel, ath9k_mci_set_txpower() argument
695 struct ath_hw *ah = sc->sc_ah; ath9k_mci_set_txpower()
696 struct ath9k_hw_mci *mci_hw = &sc->sc_ah->btcoex_hw.mci; ath9k_mci_set_txpower()
708 struct ath9k_hw_cal_data *caldata = &sc->cur_chan->caldata; ath9k_mci_set_txpower()
722 ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false); ath9k_mci_set_txpower()
725 static void ath9k_mci_stomp_audio(struct ath_softc *sc) ath9k_mci_stomp_audio() argument
727 struct ath_hw *ah = sc->sc_ah; ath9k_mci_stomp_audio()
728 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_mci_stomp_audio()
741 void ath9k_mci_update_rssi(struct ath_softc *sc) ath9k_mci_update_rssi() argument
743 struct ath_hw *ah = sc->sc_ah; ath9k_mci_update_rssi()
744 struct ath_btcoex *btcoex = &sc->btcoex; ath9k_mci_update_rssi()
745 struct ath9k_hw_mci *mci_hw = &sc->sc_ah->btcoex_hw.mci; ath9k_mci_update_rssi()
747 ath9k_mci_stomp_audio(sc); ath9k_mci_update_rssi()
757 ath9k_mci_set_txpower(sc, false, true); ath9k_mci_update_rssi()
764 ath9k_mci_set_txpower(sc, false, false); ath9k_mci_update_rssi()
H A Ddfs_debug.c29 sc->debug.stats.dfs_stats.p);
37 struct ath_softc *sc = file->private_data; read_file_dfs() local
38 struct ath9k_hw_version *hw_ver = &sc->sc_ah->hw_version; read_file_dfs()
50 (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_DFS) ? read_file_dfs()
53 if (!sc->dfs_detector) { read_file_dfs()
59 dfs_pool_stats = sc->dfs_detector->get_stats(sc->dfs_detector); read_file_dfs()
73 sc->dfs_detector->region); read_file_dfs()
100 struct ath_softc *sc = file->private_data; write_file_dfs() local
114 memset(&sc->debug.stats.dfs_stats, 0, write_file_dfs()
115 sizeof(sc->debug.stats.dfs_stats)); write_file_dfs()
123 struct ath_softc *sc = file->private_data; write_file_simulate_radar() local
125 ieee80211_radar_detected(sc->hw); write_file_simulate_radar()
145 void ath9k_dfs_init_debug(struct ath_softc *sc) ath9k_dfs_init_debug() argument
148 sc->debug.debugfs_phy, sc, &fops_dfs_stats); ath9k_dfs_init_debug()
150 sc->debug.debugfs_phy, sc, &fops_simulate_radar); ath9k_dfs_init_debug()
H A Dahb.c61 struct ath_softc *sc = (struct ath_softc *)common->priv; ath_ahb_eeprom_read() local
62 struct platform_device *pdev = to_platform_device(sc->dev); ath_ahb_eeprom_read()
86 struct ath_softc *sc; ath_ahb_probe() local
130 sc = hw->priv; ath_ahb_probe()
131 sc->hw = hw; ath_ahb_probe()
132 sc->dev = &pdev->dev; ath_ahb_probe()
133 sc->mem = mem; ath_ahb_probe()
134 sc->irq = irq; ath_ahb_probe()
136 ret = request_irq(irq, ath_isr, IRQF_SHARED, "ath9k", sc); ath_ahb_probe()
142 ret = ath9k_init_device(id->driver_data, sc, &ath_ahb_bus_ops); ath_ahb_probe()
148 ah = sc->sc_ah; ath_ahb_probe()
156 free_irq(irq, sc); ath_ahb_probe()
167 struct ath_softc *sc = hw->priv; ath_ahb_remove() local
169 ath9k_deinit_device(sc); ath_ahb_remove()
170 free_irq(sc->irq, sc); ath_ahb_remove()
171 ieee80211_free_hw(sc->hw); ath_ahb_remove()
H A Ddebug.h28 #define TX_STAT_INC(q, c) sc->debug.stats.txstats[q].c++
29 #define RX_STAT_INC(c) (sc->debug.stats.rxstats.c++)
30 #define RESET_STAT_INC(sc, type) sc->debug.stats.reset[type]++
31 #define ANT_STAT_INC(i, c) sc->debug.stats.ant_stats[i].c++
32 #define ANT_LNA_INC(i, c) sc->debug.stats.ant_stats[i].lna_recv_cnt[c]++;
36 #define RESET_STAT_INC(sc, type) do { } while (0)
195 #define PR_QNUM(_n) sc->tx.txq_map[_n]->axq_qnum
196 #define TXSTATS sc->debug.stats.txstats
250 void ath9k_deinit_debug(struct ath_softc *sc);
252 void ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status);
253 void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,
256 void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs);
269 void ath9k_debug_stat_ant(struct ath_softc *sc,
272 void ath9k_debug_sync_cause(struct ath_softc *sc, u32 sync_cause);
281 static inline void ath9k_deinit_debug(struct ath_softc *sc) ath9k_deinit_debug() argument
284 static inline void ath_debug_stat_interrupt(struct ath_softc *sc, ath_debug_stat_interrupt() argument
288 static inline void ath_debug_stat_tx(struct ath_softc *sc, ath_debug_stat_tx() argument
295 static inline void ath_debug_stat_rx(struct ath_softc *sc, ath_debug_stat_rx() argument
299 static inline void ath9k_debug_stat_ant(struct ath_softc *sc, ath9k_debug_stat_ant() argument
307 ath9k_debug_sync_cause(struct ath_softc *sc, u32 sync_cause) ath9k_debug_sync_cause() argument
314 void ath_debug_rate_stats(struct ath_softc *sc,
318 static inline void ath_debug_rate_stats(struct ath_softc *sc, ath_debug_rate_stats() argument
H A Dmci.h154 int ath_mci_setup(struct ath_softc *sc);
155 void ath_mci_cleanup(struct ath_softc *sc);
156 void ath_mci_intr(struct ath_softc *sc);
157 void ath9k_mci_update_rssi(struct ath_softc *sc);
160 void ath_mci_enable(struct ath_softc *sc);
161 void ath9k_mci_update_wlan_channels(struct ath_softc *sc, bool allow_all);
162 void ath9k_mci_set_txpower(struct ath_softc *sc, bool setchannel,
165 static inline void ath_mci_enable(struct ath_softc *sc) ath_mci_enable() argument
168 static inline void ath9k_mci_update_wlan_channels(struct ath_softc *sc, ath9k_mci_update_wlan_channels() argument
172 static inline void ath9k_mci_set_txpower(struct ath_softc *sc, bool setchannel, ath9k_mci_set_txpower() argument
H A Ddfs_debug.h58 #define DFS_STAT_INC(sc, c) (sc->debug.stats.dfs_stats.c++)
59 void ath9k_dfs_init_debug(struct ath_softc *sc);
65 #define DFS_STAT_INC(sc, c) do { } while (0) ath9k_dfs_init_debug()
66 static inline void ath9k_dfs_init_debug(struct ath_softc *sc) { } argument
H A Dpci.c771 struct ath_softc *sc = (struct ath_softc *) common->priv; ath_pci_read_cachesize() local
774 pci_read_config_byte(to_pci_dev(sc->dev), PCI_CACHE_LINE_SIZE, &u8tmp); ath_pci_read_cachesize()
789 struct ath_softc *sc = (struct ath_softc *) common->priv; ath_pci_eeprom_read() local
790 struct ath9k_platform_data *pdata = sc->dev->platform_data; ath_pci_eeprom_read()
824 struct ath_softc *sc = (struct ath_softc *) common->priv; ath_pci_aspm_init() local
825 struct ath_hw *ah = sc->sc_ah; ath_pci_aspm_init()
826 struct pci_dev *pdev = to_pci_dev(sc->dev); ath_pci_aspm_init()
888 struct ath_softc *sc; ath_pci_probe() local
959 sc = hw->priv; ath_pci_probe()
960 sc->hw = hw; ath_pci_probe()
961 sc->dev = &pdev->dev; ath_pci_probe()
962 sc->mem = pcim_iomap_table(pdev)[0]; ath_pci_probe()
963 sc->driver_data = id->driver_data; ath_pci_probe()
965 ret = request_irq(pdev->irq, ath_isr, IRQF_SHARED, "ath9k", sc); ath_pci_probe()
971 sc->irq = pdev->irq; ath_pci_probe()
973 ret = ath9k_init_device(id->device, sc, &ath_pci_bus_ops); ath_pci_probe()
979 ath9k_hw_name(sc->sc_ah, hw_name, sizeof(hw_name)); ath_pci_probe()
981 hw_name, (unsigned long)sc->mem, pdev->irq); ath_pci_probe()
986 free_irq(sc->irq, sc); ath_pci_probe()
995 struct ath_softc *sc = hw->priv; ath_pci_remove() local
998 sc->sc_ah->ah_flags |= AH_UNPLUGGED; ath_pci_remove()
999 ath9k_deinit_device(sc); ath_pci_remove()
1000 free_irq(sc->irq, sc); ath_pci_remove()
1001 ieee80211_free_hw(sc->hw); ath_pci_remove()
1010 struct ath_softc *sc = hw->priv; ath_pci_suspend() local
1011 struct ath_common *common = ath9k_hw_common(sc->sc_ah); ath_pci_suspend()
1022 ath9k_stop_btcoex(sc); ath_pci_suspend()
1023 ath9k_hw_disable(sc->sc_ah); ath_pci_suspend()
1024 del_timer_sync(&sc->sleep_timer); ath_pci_suspend()
1025 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_FULL_SLEEP); ath_pci_suspend()
1034 struct ath_softc *sc = hw->priv; ath_pci_resume() local
1035 struct ath_hw *ah = sc->sc_ah; ath_pci_resume()
H A Ddebug_sta.c27 struct ath_softc *sc = an->sc; read_file_node_aggr() local
57 ath_txq_lock(sc, txq); read_file_node_aggr()
61 ath_txq_unlock(sc, txq); read_file_node_aggr()
72 ath_txq_lock(sc, txq); read_file_node_aggr()
85 ath_txq_unlock(sc, txq); read_file_node_aggr()
105 void ath_debug_rate_stats(struct ath_softc *sc, ath_debug_rate_stats() argument
110 struct ath_hw *ah = sc->sc_ah; ath_debug_rate_stats()
121 sta = ieee80211_find_sta_by_ifaddr(sc->hw, hdr->addr2, NULL); ath_debug_rate_stats()
186 struct ath_softc *sc = an->sc; read_file_node_recv() local
187 struct ath_hw *ah = sc->sc_ah; read_file_node_recv()
H A Ddfs.h25 * @sc: ath_softc
37 void ath9k_dfs_process_phyerr(struct ath_softc *sc, void *data,
41 ath9k_dfs_process_phyerr(struct ath_softc *sc, void *data, ath9k_dfs_process_phyerr() argument
H A Dantenna.c721 void ath_ant_comb_scan(struct ath_softc *sc, struct ath_rx_status *rs) ath_ant_comb_scan() argument
724 struct ath_ant_comb *antcomb = &sc->ant_comb; ath_ant_comb_scan()
781 ath9k_hw_antdiv_comb_conf_get(sc->sc_ah, &div_ant_conf); ath_ant_comb_scan()
840 ath9k_hw_antdiv_comb_conf_set(sc->sc_ah, &div_ant_conf); ath_ant_comb_scan()
841 ath9k_debug_stat_ant(sc, &div_ant_conf, main_rssi_avg, alt_rssi_avg); ath_ant_comb_scan()
/linux-4.1.27/drivers/isdn/sc/
H A DMakefile1 # Makefile for the sc ISDN device driver
5 obj-$(CONFIG_ISDN_DRV_SC) += sc.o
9 sc-y := shmem.o init.o packet.o command.o event.o \
H A Dinit.c85 if (!request_region(io[b] + i * 0x400, 1, "sc test")) { sc_init()
125 if (!request_region(i + j * 0x400, 1, "sc test")) { sc_init()
166 if (request_region(ram[b], SRAM_PAGESIZE, "sc test")) { sc_init()
178 if (request_region(i, SRAM_PAGESIZE, "sc test")) { sc_init()
/linux-4.1.27/drivers/md/
H A Ddm-stripe.c52 struct stripe_c *sc = container_of(work, struct stripe_c, trigger_event() local
54 dm_table_event(sc->ti->table); trigger_event()
73 static int get_stripe(struct dm_target *ti, struct stripe_c *sc, get_stripe() argument
83 &sc->stripe[stripe].dev)) get_stripe()
86 sc->stripe[stripe].physical_start = start; get_stripe()
97 struct stripe_c *sc; stripe_ctr() local
142 sc = alloc_context(stripes); stripe_ctr()
143 if (!sc) { stripe_ctr()
149 INIT_WORK(&sc->trigger_event, trigger_event); stripe_ctr()
152 sc->ti = ti; stripe_ctr()
153 sc->stripes = stripes; stripe_ctr()
154 sc->stripe_width = width; stripe_ctr()
157 sc->stripes_shift = -1; stripe_ctr()
159 sc->stripes_shift = __ffs(stripes); stripe_ctr()
163 kfree(sc); stripe_ctr()
171 sc->chunk_size = chunk_size; stripe_ctr()
173 sc->chunk_size_shift = -1; stripe_ctr()
175 sc->chunk_size_shift = __ffs(chunk_size); stripe_ctr()
183 r = get_stripe(ti, sc, i, argv); stripe_ctr()
187 dm_put_device(ti, sc->stripe[i].dev); stripe_ctr()
188 kfree(sc); stripe_ctr()
191 atomic_set(&(sc->stripe[i].error_count), 0); stripe_ctr()
194 ti->private = sc; stripe_ctr()
202 struct stripe_c *sc = (struct stripe_c *) ti->private; stripe_dtr() local
204 for (i = 0; i < sc->stripes; i++) stripe_dtr()
205 dm_put_device(ti, sc->stripe[i].dev); stripe_dtr()
207 flush_work(&sc->trigger_event); stripe_dtr()
208 kfree(sc); stripe_dtr()
211 static void stripe_map_sector(struct stripe_c *sc, sector_t sector, stripe_map_sector() argument
214 sector_t chunk = dm_target_offset(sc->ti, sector); stripe_map_sector()
217 if (sc->chunk_size_shift < 0) stripe_map_sector()
218 chunk_offset = sector_div(chunk, sc->chunk_size); stripe_map_sector()
220 chunk_offset = chunk & (sc->chunk_size - 1); stripe_map_sector()
221 chunk >>= sc->chunk_size_shift; stripe_map_sector()
224 if (sc->stripes_shift < 0) stripe_map_sector()
225 *stripe = sector_div(chunk, sc->stripes); stripe_map_sector()
227 *stripe = chunk & (sc->stripes - 1); stripe_map_sector()
228 chunk >>= sc->stripes_shift; stripe_map_sector()
231 if (sc->chunk_size_shift < 0) stripe_map_sector()
232 chunk *= sc->chunk_size; stripe_map_sector()
234 chunk <<= sc->chunk_size_shift; stripe_map_sector()
239 static void stripe_map_range_sector(struct stripe_c *sc, sector_t sector, stripe_map_range_sector() argument
244 stripe_map_sector(sc, sector, &stripe, result); stripe_map_range_sector()
250 if (sc->chunk_size_shift < 0) stripe_map_range_sector()
251 *result -= sector_div(sector, sc->chunk_size); stripe_map_range_sector()
253 *result = sector & ~(sector_t)(sc->chunk_size - 1); stripe_map_range_sector()
256 *result += sc->chunk_size; /* next chunk */ stripe_map_range_sector()
259 static int stripe_map_range(struct stripe_c *sc, struct bio *bio, stripe_map_range() argument
264 stripe_map_range_sector(sc, bio->bi_iter.bi_sector, stripe_map_range()
266 stripe_map_range_sector(sc, bio_end_sector(bio), stripe_map_range()
269 bio->bi_bdev = sc->stripe[target_stripe].dev->bdev; stripe_map_range()
271 sc->stripe[target_stripe].physical_start; stripe_map_range()
283 struct stripe_c *sc = ti->private; stripe_map() local
289 BUG_ON(target_bio_nr >= sc->stripes); stripe_map()
290 bio->bi_bdev = sc->stripe[target_bio_nr].dev->bdev; stripe_map()
296 BUG_ON(target_bio_nr >= sc->stripes); stripe_map()
297 return stripe_map_range(sc, bio, target_bio_nr); stripe_map()
300 stripe_map_sector(sc, bio->bi_iter.bi_sector, stripe_map()
303 bio->bi_iter.bi_sector += sc->stripe[stripe].physical_start; stripe_map()
304 bio->bi_bdev = sc->stripe[stripe].dev->bdev; stripe_map()
325 struct stripe_c *sc = (struct stripe_c *) ti->private; stripe_status() local
326 char buffer[sc->stripes + 1]; stripe_status()
332 DMEMIT("%d ", sc->stripes); stripe_status()
333 for (i = 0; i < sc->stripes; i++) { stripe_status()
334 DMEMIT("%s ", sc->stripe[i].dev->name); stripe_status()
335 buffer[i] = atomic_read(&(sc->stripe[i].error_count)) ? stripe_status()
343 DMEMIT("%d %llu", sc->stripes, stripe_status()
344 (unsigned long long)sc->chunk_size); stripe_status()
345 for (i = 0; i < sc->stripes; i++) stripe_status()
346 DMEMIT(" %s %llu", sc->stripe[i].dev->name, stripe_status()
347 (unsigned long long)sc->stripe[i].physical_start); stripe_status()
356 struct stripe_c *sc = ti->private; stripe_end_io() local
378 for (i = 0; i < sc->stripes; i++) stripe_end_io()
379 if (!strcmp(sc->stripe[i].dev->name, major_minor)) { stripe_end_io()
380 atomic_inc(&(sc->stripe[i].error_count)); stripe_end_io()
381 if (atomic_read(&(sc->stripe[i].error_count)) < stripe_end_io()
383 schedule_work(&sc->trigger_event); stripe_end_io()
392 struct stripe_c *sc = ti->private; stripe_iterate_devices() local
397 ret = fn(ti, sc->stripe[i].dev, stripe_iterate_devices()
398 sc->stripe[i].physical_start, stripe_iterate_devices()
399 sc->stripe_width, data); stripe_iterate_devices()
400 } while (!ret && ++i < sc->stripes); stripe_iterate_devices()
408 struct stripe_c *sc = ti->private; stripe_io_hints() local
409 unsigned chunk_size = sc->chunk_size << SECTOR_SHIFT; stripe_io_hints()
412 blk_limits_io_opt(limits, chunk_size * sc->stripes); stripe_io_hints()
418 struct stripe_c *sc = ti->private; stripe_merge() local
423 stripe_map_sector(sc, bvm_sector, &stripe, &bvm_sector); stripe_merge()
425 q = bdev_get_queue(sc->stripe[stripe].dev->bdev); stripe_merge()
429 bvm->bi_bdev = sc->stripe[stripe].dev->bdev; stripe_merge()
430 bvm->bi_sector = sc->stripe[stripe].physical_start + bvm_sector; stripe_merge()
/linux-4.1.27/drivers/media/platform/ti-vpe/
H A DMakefile3 ti-vpe-y := vpe.o sc.o csc.o vpdma.o
H A Dsc.c20 #include "sc.h"
23 void sc_dump_regs(struct sc_data *sc) sc_dump_regs() argument
25 struct device *dev = &sc->pdev->dev; sc_dump_regs()
28 ioread32(sc->base + CFG_##r)) sc_dump_regs()
60 void sc_set_hs_coeffs(struct sc_data *sc, void *addr, unsigned int src_w, sc_set_hs_coeffs() argument
87 if (idx == sc->hs_index) sc_set_hs_coeffs()
104 sc->hs_index = idx; sc_set_hs_coeffs()
106 sc->load_coeff_h = true; sc_set_hs_coeffs()
113 void sc_set_vs_coeffs(struct sc_data *sc, void *addr, unsigned int src_h, sc_set_vs_coeffs() argument
133 if (idx == sc->vs_index) sc_set_vs_coeffs()
149 sc->vs_index = idx; sc_set_vs_coeffs()
150 sc->load_coeff_v = true; sc_set_vs_coeffs()
153 void sc_config_scaler(struct sc_data *sc, u32 *sc_reg0, u32 *sc_reg8, sc_config_scaler() argument
157 struct device *dev = &sc->pdev->dev; sc_config_scaler()
282 struct sc_data *sc; sc_create() local
286 sc = devm_kzalloc(&pdev->dev, sizeof(*sc), GFP_KERNEL); sc_create()
287 if (!sc) { sc_create()
292 sc->pdev = pdev; sc_create()
294 sc->res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sc"); sc_create()
295 if (!sc->res) { sc_create()
300 sc->base = devm_ioremap_resource(&pdev->dev, sc->res); sc_create()
301 if (IS_ERR(sc->base)) { sc_create()
303 return ERR_CAST(sc->base); sc_create()
306 return sc; sc_create()
H A Dsc.h198 void sc_dump_regs(struct sc_data *sc);
199 void sc_set_hs_coeffs(struct sc_data *sc, void *addr, unsigned int src_w,
201 void sc_set_vs_coeffs(struct sc_data *sc, void *addr, unsigned int src_h,
203 void sc_config_scaler(struct sc_data *sc, u32 *sc_reg0, u32 *sc_reg8,
H A Dvpe.c48 #include "sc.h"
367 struct sc_data *sc; /* scaler data handle */ member in struct:vpe_dev
510 GET_OFFSET_TOP(ctx, ctx->dev->sc, CFG_SC0)); init_adb_hdrs()
512 GET_OFFSET_TOP(ctx, ctx->dev->sc, CFG_SC8)); init_adb_hdrs()
514 GET_OFFSET_TOP(ctx, ctx->dev->sc, CFG_SC17)); init_adb_hdrs()
857 sc_set_hs_coeffs(ctx->dev->sc, ctx->sc_coeff_h.addr, src_w, dst_w); set_srcdst_params()
858 sc_set_vs_coeffs(ctx->dev->sc, ctx->sc_coeff_v.addr, src_h, dst_h); set_srcdst_params()
860 sc_config_scaler(ctx->dev->sc, &mmr_adb->sc_regs0[0], set_srcdst_params()
983 sc_dump_regs(dev->sc); vpe_dump_regs()
1099 struct sc_data *sc = ctx->dev->sc; device_run() local
1122 if (sc->loaded_coeff_h != ctx->sc_coeff_h.dma_addr || device_run()
1123 sc->load_coeff_h) { device_run()
1128 sc->loaded_coeff_h = ctx->sc_coeff_h.dma_addr; device_run()
1129 sc->load_coeff_h = false; device_run()
1132 if (sc->loaded_coeff_v != ctx->sc_coeff_v.dma_addr || device_run()
1133 sc->load_coeff_v) { device_run()
1138 sc->loaded_coeff_v = ctx->sc_coeff_v.dma_addr; device_run()
1139 sc->load_coeff_v = false; device_run()
2248 dev->sc = sc_create(pdev); vpe_probe()
2249 if (IS_ERR(dev->sc)) { vpe_probe()
2250 ret = PTR_ERR(dev->sc); vpe_probe()
/linux-4.1.27/arch/ia64/hp/sim/
H A Dsimscsi.c68 struct scsi_cmnd *sc; member in struct:queue_entry
101 struct scsi_cmnd *sc; simscsi_interrupt() local
103 while ((sc = queue[rd].sc) != NULL) { simscsi_interrupt()
105 queue[rd].sc = NULL; simscsi_interrupt()
107 printk("simscsi_interrupt: done with %ld\n", sc->serial_number); simscsi_interrupt()
108 (*sc->scsi_done)(sc); simscsi_interrupt()
124 simscsi_sg_readwrite (struct scsi_cmnd *sc, int mode, unsigned long offset) simscsi_sg_readwrite() argument
131 stat.fd = desc[sc->device->id]; simscsi_sg_readwrite()
133 scsi_for_each_sg(sc, sl, scsi_sg_count(sc), i) { scsi_for_each_sg()
139 scsi_sg_count(sc) - i, sl->length); scsi_for_each_sg()
145 sc->result = DID_ERROR << 16; scsi_for_each_sg()
150 sc->result = GOOD;
159 simscsi_readwrite6 (struct scsi_cmnd *sc, int mode) simscsi_readwrite6() argument
163 offset = (((sc->cmnd[1] & 0x1f) << 16) | (sc->cmnd[2] << 8) | sc->cmnd[3])*512; simscsi_readwrite6()
164 simscsi_sg_readwrite(sc, mode, offset); simscsi_readwrite6()
193 simscsi_readwrite10 (struct scsi_cmnd *sc, int mode) simscsi_readwrite10() argument
197 offset = (((unsigned long)sc->cmnd[2] << 24) simscsi_readwrite10()
198 | ((unsigned long)sc->cmnd[3] << 16) simscsi_readwrite10()
199 | ((unsigned long)sc->cmnd[4] << 8) simscsi_readwrite10()
200 | ((unsigned long)sc->cmnd[5] << 0))*512UL; simscsi_readwrite10()
201 simscsi_sg_readwrite(sc, mode, offset); simscsi_readwrite10()
205 simscsi_queuecommand_lck (struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) simscsi_queuecommand_lck() argument
207 unsigned int target_id = sc->device->id; simscsi_queuecommand_lck()
216 printk("simscsi_queuecommand: target=%d,cmnd=%u,sc=%lu,sp=%lx,done=%p\n", simscsi_queuecommand_lck()
217 target_id, sc->cmnd[0], sc->serial_number, sp, done); simscsi_queuecommand_lck()
220 sc->result = DID_BAD_TARGET << 16; simscsi_queuecommand_lck()
221 sc->scsi_done = done; simscsi_queuecommand_lck()
222 if (target_id <= 15 && sc->device->lun == 0) { simscsi_queuecommand_lck()
223 switch (sc->cmnd[0]) { simscsi_queuecommand_lck()
225 if (scsi_bufflen(sc) < 35) { simscsi_queuecommand_lck()
245 scsi_sg_copy_from_buffer(sc, buf, 36); simscsi_queuecommand_lck()
246 sc->result = GOOD; simscsi_queuecommand_lck()
250 sc->result = GOOD; simscsi_queuecommand_lck()
256 simscsi_readwrite6(sc, SSC_READ); simscsi_queuecommand_lck()
262 simscsi_readwrite10(sc, SSC_READ); simscsi_queuecommand_lck()
268 simscsi_readwrite6(sc, SSC_WRITE); simscsi_queuecommand_lck()
274 simscsi_readwrite10(sc, SSC_WRITE); simscsi_queuecommand_lck()
278 if (desc[target_id] < 0 || scsi_bufflen(sc) < 8) { simscsi_queuecommand_lck()
293 scsi_sg_copy_from_buffer(sc, buf, 8); simscsi_queuecommand_lck()
294 sc->result = GOOD; simscsi_queuecommand_lck()
300 scsi_sg_copy_from_buffer(sc, (char *)empty_zero_page, simscsi_queuecommand_lck()
302 sc->result = GOOD; simscsi_queuecommand_lck()
310 panic("simscsi: unknown SCSI command %u\n", sc->cmnd[0]); simscsi_queuecommand_lck()
313 if (sc->result == DID_BAD_TARGET) { simscsi_queuecommand_lck()
314 sc->result |= DRIVER_SENSE << 24; simscsi_queuecommand_lck()
315 sc->sense_buffer[0] = 0x70; simscsi_queuecommand_lck()
316 sc->sense_buffer[2] = 0x00; simscsi_queuecommand_lck()
322 queue[wr].sc = sc; simscsi_queuecommand_lck()
332 simscsi_host_reset (struct scsi_cmnd *sc) simscsi_host_reset() argument
/linux-4.1.27/drivers/dma/sh/
H A Dsudmac.c54 #define to_sdev(sc) container_of(sc->shdma_chan.dma_chan.device, \
82 static void sudmac_writel(struct sudmac_chan *sc, u32 data, u32 reg) sudmac_writel() argument
84 iowrite32(data, sc->base + reg); sudmac_writel()
87 static u32 sudmac_readl(struct sudmac_chan *sc, u32 reg) sudmac_readl() argument
89 return ioread32(sc->base + reg); sudmac_readl()
92 static bool sudmac_is_busy(struct sudmac_chan *sc) sudmac_is_busy() argument
94 u32 den = sudmac_readl(sc, SUDMAC_CH0DEN + sc->offset); sudmac_is_busy()
102 static void sudmac_set_reg(struct sudmac_chan *sc, struct sudmac_regs *hw, sudmac_set_reg() argument
105 sudmac_writel(sc, sc->cfg, SUDMAC_CH0CFG + sc->offset); sudmac_set_reg()
106 sudmac_writel(sc, hw->base_addr, SUDMAC_CH0BA + sc->offset); sudmac_set_reg()
107 sudmac_writel(sc, hw->base_byte_count, SUDMAC_CH0BBC + sc->offset); sudmac_set_reg()
110 static void sudmac_start(struct sudmac_chan *sc) sudmac_start() argument
112 u32 dintctrl = sudmac_readl(sc, SUDMAC_DINTCTRL); sudmac_start()
114 sudmac_writel(sc, dintctrl | sc->dint_end_bit, SUDMAC_DINTCTRL); sudmac_start()
115 sudmac_writel(sc, 1, SUDMAC_CH0DEN + sc->offset); sudmac_start()
121 struct sudmac_chan *sc = to_chan(schan); sudmac_start_xfer() local
124 sudmac_set_reg(sc, &sd->hw, sdesc); sudmac_start_xfer()
125 sudmac_start(sc); sudmac_start_xfer()
130 struct sudmac_chan *sc = to_chan(schan); sudmac_channel_busy() local
132 return sudmac_is_busy(sc); sudmac_channel_busy()
140 struct sudmac_chan *sc, int slave_id) sudmac_find_slave()
142 struct sudmac_device *sdev = to_sdev(sc); sudmac_find_slave()
157 struct sudmac_chan *sc = to_chan(schan); sudmac_set_slave() local
158 const struct sudmac_slave_config *cfg = sudmac_find_slave(sc, slave_id); sudmac_set_slave()
166 static inline void sudmac_dma_halt(struct sudmac_chan *sc) sudmac_dma_halt() argument
168 u32 dintctrl = sudmac_readl(sc, SUDMAC_DINTCTRL); sudmac_dma_halt()
170 sudmac_writel(sc, 0, SUDMAC_CH0DEN + sc->offset); sudmac_dma_halt()
171 sudmac_writel(sc, dintctrl & ~sc->dint_end_bit, SUDMAC_DINTCTRL); sudmac_dma_halt()
172 sudmac_writel(sc, sc->dint_end_bit, SUDMAC_DINTSTSCLR); sudmac_dma_halt()
179 struct sudmac_chan *sc = to_chan(schan); sudmac_desc_setup() local
182 dev_dbg(sc->shdma_chan.dev, "%s: src=%pad, dst=%pad, len=%zu\n", sudmac_desc_setup()
199 struct sudmac_chan *sc = to_chan(schan); sudmac_halt() local
201 sudmac_dma_halt(sc); sudmac_halt()
206 struct sudmac_chan *sc = to_chan(schan); sudmac_chan_irq() local
207 u32 dintsts = sudmac_readl(sc, SUDMAC_DINTSTS); sudmac_chan_irq()
209 if (!(dintsts & sc->dint_end_bit)) sudmac_chan_irq()
213 sudmac_dma_halt(sc); sudmac_chan_irq()
221 struct sudmac_chan *sc = to_chan(schan); sudmac_get_partial() local
223 u32 current_byte_count = sudmac_readl(sc, SUDMAC_CH0CBC + sc->offset); sudmac_get_partial()
231 struct sudmac_chan *sc = to_chan(schan); sudmac_desc_completed() local
233 u32 current_addr = sudmac_readl(sc, SUDMAC_CH0CA + sc->offset); sudmac_desc_completed()
243 struct sudmac_chan *sc; sudmac_chan_probe() local
247 sc = devm_kzalloc(&pdev->dev, sizeof(struct sudmac_chan), GFP_KERNEL); sudmac_chan_probe()
248 if (!sc) { sudmac_chan_probe()
254 schan = &sc->shdma_chan; sudmac_chan_probe()
259 sc->base = su_dev->chan_reg; sudmac_chan_probe()
262 sc->offset = su_dev->pdata->channel->offset; sudmac_chan_probe()
264 sc->cfg |= SUDMAC_SENDBUFM; sudmac_chan_probe()
266 sc->cfg |= SUDMAC_RCVENDM; sudmac_chan_probe()
267 sc->cfg |= (su_dev->pdata->channel->wait << 4) & SUDMAC_LBA_WAIT; sudmac_chan_probe()
270 sc->dint_end_bit |= SUDMAC_CH0ENDE; sudmac_chan_probe()
272 sc->dint_end_bit |= SUDMAC_CH1ENDE; sudmac_chan_probe()
276 snprintf(sc->dev_id, sizeof(sc->dev_id), "sudmac%d.%d", sudmac_chan_probe()
279 snprintf(sc->dev_id, sizeof(sc->dev_id), "sudmac%d", id); sudmac_chan_probe()
281 err = shdma_request_irq(schan, irq, flags, sc->dev_id); sudmac_chan_probe()
139 sudmac_find_slave( struct sudmac_chan *sc, int slave_id) sudmac_find_slave() argument
H A Drcar-hpbdma.c125 #define to_dev(sc) container_of(sc->shdma_chan.dma_chan.device, \
461 const struct hpb_dmae_slave_config *sc = hpb_dmae_set_slave() local
464 if (!sc) hpb_dmae_set_slave()
468 chan->cfg = sc; hpb_dmae_set_slave()
469 chan->slave_addr = slave_addr ? : sc->addr; hpb_dmae_set_slave()
470 return hpb_dmae_alloc_chan_resources(chan, sc); hpb_dmae_set_slave()
/linux-4.1.27/arch/alpha/kernel/
H A Dsignal.c125 struct sigcontext sc; member in struct:sigframe
147 restore_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) restore_sigcontext() argument
151 long i, err = __get_user(regs->pc, &sc->sc_pc); restore_sigcontext()
157 err |= __get_user(regs->r0, sc->sc_regs+0); restore_sigcontext()
158 err |= __get_user(regs->r1, sc->sc_regs+1); restore_sigcontext()
159 err |= __get_user(regs->r2, sc->sc_regs+2); restore_sigcontext()
160 err |= __get_user(regs->r3, sc->sc_regs+3); restore_sigcontext()
161 err |= __get_user(regs->r4, sc->sc_regs+4); restore_sigcontext()
162 err |= __get_user(regs->r5, sc->sc_regs+5); restore_sigcontext()
163 err |= __get_user(regs->r6, sc->sc_regs+6); restore_sigcontext()
164 err |= __get_user(regs->r7, sc->sc_regs+7); restore_sigcontext()
165 err |= __get_user(regs->r8, sc->sc_regs+8); restore_sigcontext()
166 err |= __get_user(sw->r9, sc->sc_regs+9); restore_sigcontext()
167 err |= __get_user(sw->r10, sc->sc_regs+10); restore_sigcontext()
168 err |= __get_user(sw->r11, sc->sc_regs+11); restore_sigcontext()
169 err |= __get_user(sw->r12, sc->sc_regs+12); restore_sigcontext()
170 err |= __get_user(sw->r13, sc->sc_regs+13); restore_sigcontext()
171 err |= __get_user(sw->r14, sc->sc_regs+14); restore_sigcontext()
172 err |= __get_user(sw->r15, sc->sc_regs+15); restore_sigcontext()
173 err |= __get_user(regs->r16, sc->sc_regs+16); restore_sigcontext()
174 err |= __get_user(regs->r17, sc->sc_regs+17); restore_sigcontext()
175 err |= __get_user(regs->r18, sc->sc_regs+18); restore_sigcontext()
176 err |= __get_user(regs->r19, sc->sc_regs+19); restore_sigcontext()
177 err |= __get_user(regs->r20, sc->sc_regs+20); restore_sigcontext()
178 err |= __get_user(regs->r21, sc->sc_regs+21); restore_sigcontext()
179 err |= __get_user(regs->r22, sc->sc_regs+22); restore_sigcontext()
180 err |= __get_user(regs->r23, sc->sc_regs+23); restore_sigcontext()
181 err |= __get_user(regs->r24, sc->sc_regs+24); restore_sigcontext()
182 err |= __get_user(regs->r25, sc->sc_regs+25); restore_sigcontext()
183 err |= __get_user(regs->r26, sc->sc_regs+26); restore_sigcontext()
184 err |= __get_user(regs->r27, sc->sc_regs+27); restore_sigcontext()
185 err |= __get_user(regs->r28, sc->sc_regs+28); restore_sigcontext()
186 err |= __get_user(regs->gp, sc->sc_regs+29); restore_sigcontext()
187 err |= __get_user(usp, sc->sc_regs+30); restore_sigcontext()
191 err |= __get_user(sw->fp[i], sc->sc_fpregs+i); restore_sigcontext()
192 err |= __get_user(sw->fp[31], &sc->sc_fpcr); restore_sigcontext()
202 do_sigreturn(struct sigcontext __user *sc) do_sigreturn() argument
208 if (!access_ok(VERIFY_READ, sc, sizeof(*sc))) do_sigreturn()
210 if (__get_user(set.sig[0], &sc->sc_mask)) do_sigreturn()
215 if (restore_sigcontext(sc, regs)) do_sigreturn()
281 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
287 err |= __put_user(on_sig_stack((unsigned long)sc), &sc->sc_onstack); setup_sigcontext()
288 err |= __put_user(mask, &sc->sc_mask); setup_sigcontext()
289 err |= __put_user(regs->pc, &sc->sc_pc); setup_sigcontext()
290 err |= __put_user(8, &sc->sc_ps); setup_sigcontext()
292 err |= __put_user(regs->r0 , sc->sc_regs+0); setup_sigcontext()
293 err |= __put_user(regs->r1 , sc->sc_regs+1); setup_sigcontext()
294 err |= __put_user(regs->r2 , sc->sc_regs+2); setup_sigcontext()
295 err |= __put_user(regs->r3 , sc->sc_regs+3); setup_sigcontext()
296 err |= __put_user(regs->r4 , sc->sc_regs+4); setup_sigcontext()
297 err |= __put_user(regs->r5 , sc->sc_regs+5); setup_sigcontext()
298 err |= __put_user(regs->r6 , sc->sc_regs+6); setup_sigcontext()
299 err |= __put_user(regs->r7 , sc->sc_regs+7); setup_sigcontext()
300 err |= __put_user(regs->r8 , sc->sc_regs+8); setup_sigcontext()
301 err |= __put_user(sw->r9 , sc->sc_regs+9); setup_sigcontext()
302 err |= __put_user(sw->r10 , sc->sc_regs+10); setup_sigcontext()
303 err |= __put_user(sw->r11 , sc->sc_regs+11); setup_sigcontext()
304 err |= __put_user(sw->r12 , sc->sc_regs+12); setup_sigcontext()
305 err |= __put_user(sw->r13 , sc->sc_regs+13); setup_sigcontext()
306 err |= __put_user(sw->r14 , sc->sc_regs+14); setup_sigcontext()
307 err |= __put_user(sw->r15 , sc->sc_regs+15); setup_sigcontext()
308 err |= __put_user(regs->r16, sc->sc_regs+16); setup_sigcontext()
309 err |= __put_user(regs->r17, sc->sc_regs+17); setup_sigcontext()
310 err |= __put_user(regs->r18, sc->sc_regs+18); setup_sigcontext()
311 err |= __put_user(regs->r19, sc->sc_regs+19); setup_sigcontext()
312 err |= __put_user(regs->r20, sc->sc_regs+20); setup_sigcontext()
313 err |= __put_user(regs->r21, sc->sc_regs+21); setup_sigcontext()
314 err |= __put_user(regs->r22, sc->sc_regs+22); setup_sigcontext()
315 err |= __put_user(regs->r23, sc->sc_regs+23); setup_sigcontext()
316 err |= __put_user(regs->r24, sc->sc_regs+24); setup_sigcontext()
317 err |= __put_user(regs->r25, sc->sc_regs+25); setup_sigcontext()
318 err |= __put_user(regs->r26, sc->sc_regs+26); setup_sigcontext()
319 err |= __put_user(regs->r27, sc->sc_regs+27); setup_sigcontext()
320 err |= __put_user(regs->r28, sc->sc_regs+28); setup_sigcontext()
321 err |= __put_user(regs->gp , sc->sc_regs+29); setup_sigcontext()
322 err |= __put_user(sp, sc->sc_regs+30); setup_sigcontext()
323 err |= __put_user(0, sc->sc_regs+31); setup_sigcontext()
326 err |= __put_user(sw->fp[i], sc->sc_fpregs+i); setup_sigcontext()
327 err |= __put_user(0, sc->sc_fpregs+31); setup_sigcontext()
328 err |= __put_user(sw->fp[31], &sc->sc_fpcr); setup_sigcontext()
330 err |= __put_user(regs->trap_a0, &sc->sc_traparg_a0); setup_sigcontext()
331 err |= __put_user(regs->trap_a1, &sc->sc_traparg_a1); setup_sigcontext()
332 err |= __put_user(regs->trap_a2, &sc->sc_traparg_a2); setup_sigcontext()
348 err |= setup_sigcontext(&frame->sc, regs, set->sig[0], oldsp); setup_frame()
372 regs->r18 = (unsigned long) &frame->sc; /* a2: sigcontext pointer */ setup_frame()
/linux-4.1.27/drivers/usb/atm/
H A Dueagle-atm.c296 #define IS_OPERATIONAL(sc) \
297 ((UEA_CHIP_VERSION(sc) != EAGLE_IV) ? \
298 (GET_STATUS(sc->stats.phy.state) == 2) : \
299 (sc->stats.phy.state == 7))
590 #define uea_wait(sc, cond, timeo) \
592 int _r = wait_event_interruptible_timeout(sc->sync_q, \
601 if (sc->usbatm->atm_dev) \
602 sc->usbatm->atm_dev->type = val; \
607 if (sc->usbatm->atm_dev) \
608 atm_dev_signal_change(sc->usbatm->atm_dev, val); \
864 static int uea_idma_write(struct uea_softc *sc, const void *data, u32 size) uea_idma_write() argument
872 uea_err(INS_TO_USBDEV(sc), "can't allocate xfer_buff\n"); uea_idma_write()
876 ret = usb_bulk_msg(sc->usb_dev, uea_idma_write()
877 usb_sndbulkpipe(sc->usb_dev, UEA_IDMA_PIPE), uea_idma_write()
884 uea_err(INS_TO_USBDEV(sc), "size != bytes_read %d %d\n", size, uea_idma_write()
892 static int request_dsp(struct uea_softc *sc) request_dsp() argument
897 if (UEA_CHIP_VERSION(sc) == EAGLE_IV) { request_dsp()
898 if (IS_ISDN(sc)) request_dsp()
902 } else if (UEA_CHIP_VERSION(sc) == ADI930) { request_dsp()
903 if (IS_ISDN(sc)) request_dsp()
908 if (IS_ISDN(sc)) request_dsp()
914 ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev); request_dsp()
916 uea_err(INS_TO_USBDEV(sc), request_dsp()
922 if (UEA_CHIP_VERSION(sc) == EAGLE_IV) request_dsp()
923 ret = check_dsp_e4(sc->dsp_firm->data, sc->dsp_firm->size); request_dsp()
925 ret = check_dsp_e1(sc->dsp_firm->data, sc->dsp_firm->size); request_dsp()
928 uea_err(INS_TO_USBDEV(sc), "firmware %s is corrupted\n", request_dsp()
930 release_firmware(sc->dsp_firm); request_dsp()
931 sc->dsp_firm = NULL; request_dsp()
943 struct uea_softc *sc = container_of(work, struct uea_softc, task); uea_load_page_e1() local
944 u16 pageno = sc->pageno; uea_load_page_e1()
945 u16 ovl = sc->ovl; uea_load_page_e1()
956 release_firmware(sc->dsp_firm); uea_load_page_e1()
957 sc->dsp_firm = NULL; uea_load_page_e1()
960 if (sc->dsp_firm == NULL && request_dsp(sc) < 0) uea_load_page_e1()
963 p = sc->dsp_firm->data; uea_load_page_e1()
976 p = sc->dsp_firm->data + pageoffset; uea_load_page_e1()
980 uea_dbg(INS_TO_USBDEV(sc), uea_load_page_e1()
999 if (uea_idma_write(sc, &bi, E1_BLOCK_INFO_SIZE)) uea_load_page_e1()
1003 if (uea_idma_write(sc, p, blocksize)) uea_load_page_e1()
1012 uea_err(INS_TO_USBDEV(sc), "sending DSP block %u failed\n", i); uea_load_page_e1()
1015 uea_err(INS_TO_USBDEV(sc), "invalid DSP page %u requested\n", pageno); uea_load_page_e1()
1018 static void __uea_load_page_e4(struct uea_softc *sc, u8 pageno, int boot) __uea_load_page_e4() argument
1022 struct l1_code *p = (struct l1_code *) sc->dsp_firm->data; __uea_load_page_e4()
1036 blockoffset = sc->dsp_firm->data + le32_to_cpu( __uea_load_page_e4()
1042 uea_dbg(INS_TO_USBDEV(sc), __uea_load_page_e4()
1049 if (uea_idma_write(sc, &bi, E4_BLOCK_INFO_SIZE)) __uea_load_page_e4()
1053 if (uea_idma_write(sc, blockoffset, blocksize)) __uea_load_page_e4()
1062 uea_err(INS_TO_USBDEV(sc), "sending DSP block %u failed\n", blockno); __uea_load_page_e4()
1068 struct uea_softc *sc = container_of(work, struct uea_softc, task); uea_load_page_e4() local
1069 u8 pageno = sc->pageno; uea_load_page_e4()
1074 uea_dbg(INS_TO_USBDEV(sc), "sending DSP page %u\n", pageno); uea_load_page_e4()
1078 release_firmware(sc->dsp_firm); uea_load_page_e4()
1079 sc->dsp_firm = NULL; uea_load_page_e4()
1082 if (sc->dsp_firm == NULL && request_dsp(sc) < 0) uea_load_page_e4()
1085 p = (struct l1_code *) sc->dsp_firm->data; uea_load_page_e4()
1087 uea_err(INS_TO_USBDEV(sc), "invalid DSP " uea_load_page_e4()
1093 __uea_load_page_e4(sc, pageno, 0); uea_load_page_e4()
1097 uea_dbg(INS_TO_USBDEV(sc), uea_load_page_e4()
1102 __uea_load_page_e4(sc, i, 1); uea_load_page_e4()
1105 uea_dbg(INS_TO_USBDEV(sc) , "sending start bi\n"); uea_load_page_e4()
1115 if (uea_idma_write(sc, &bi, E4_BLOCK_INFO_SIZE)) uea_load_page_e4()
1116 uea_err(INS_TO_USBDEV(sc), "sending DSP start bi failed\n"); uea_load_page_e4()
1119 static inline void wake_up_cmv_ack(struct uea_softc *sc) wake_up_cmv_ack() argument
1121 BUG_ON(sc->cmv_ack); wake_up_cmv_ack()
1122 sc->cmv_ack = 1; wake_up_cmv_ack()
1123 wake_up(&sc->sync_q); wake_up_cmv_ack()
1126 static inline int wait_cmv_ack(struct uea_softc *sc) wait_cmv_ack() argument
1128 int ret = uea_wait(sc, sc->cmv_ack , ACK_TIMEOUT); wait_cmv_ack()
1130 sc->cmv_ack = 0; wait_cmv_ack()
1132 uea_dbg(INS_TO_USBDEV(sc), "wait_event_timeout : %d ms\n", wait_cmv_ack()
1143 static int uea_request(struct uea_softc *sc, uea_request() argument
1151 uea_err(INS_TO_USBDEV(sc), "can't allocate xfer_buff\n"); uea_request()
1155 ret = usb_control_msg(sc->usb_dev, usb_sndctrlpipe(sc->usb_dev, 0), uea_request()
1162 uea_err(INS_TO_USBDEV(sc), "usb_control_msg error %d\n", ret); uea_request()
1167 uea_err(INS_TO_USBDEV(sc), uea_request()
1176 static int uea_cmv_e1(struct uea_softc *sc, uea_cmv_e1() argument
1182 uea_enters(INS_TO_USBDEV(sc)); uea_cmv_e1()
1183 uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Address : %c%c%c%c, " uea_cmv_e1()
1192 sc->cmv_dsc.e1.function = function | 0x2; uea_cmv_e1()
1193 sc->cmv_dsc.e1.idx++; uea_cmv_e1()
1194 sc->cmv_dsc.e1.address = address; uea_cmv_e1()
1195 sc->cmv_dsc.e1.offset = offset; uea_cmv_e1()
1200 cmv.wIndex = cpu_to_le16(sc->cmv_dsc.e1.idx); uea_cmv_e1()
1205 ret = uea_request(sc, UEA_E1_SET_BLOCK, UEA_MPTX_START, uea_cmv_e1()
1209 ret = wait_cmv_ack(sc); uea_cmv_e1()
1210 uea_leaves(INS_TO_USBDEV(sc)); uea_cmv_e1()
1214 static int uea_cmv_e4(struct uea_softc *sc, uea_cmv_e4() argument
1220 uea_enters(INS_TO_USBDEV(sc)); uea_cmv_e4()
1223 uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Group : 0x%04x, " uea_cmv_e4()
1229 sc->cmv_dsc.e4.function = function | (0x1 << 4); uea_cmv_e4()
1230 sc->cmv_dsc.e4.offset = offset; uea_cmv_e4()
1231 sc->cmv_dsc.e4.address = address; uea_cmv_e4()
1232 sc->cmv_dsc.e4.group = group; uea_cmv_e4()
1240 ret = uea_request(sc, UEA_E4_SET_BLOCK, UEA_MPTX_START, uea_cmv_e4()
1244 ret = wait_cmv_ack(sc); uea_cmv_e4()
1245 uea_leaves(INS_TO_USBDEV(sc)); uea_cmv_e4()
1249 static inline int uea_read_cmv_e1(struct uea_softc *sc, uea_read_cmv_e1() argument
1252 int ret = uea_cmv_e1(sc, E1_MAKEFUNCTION(E1_MEMACCESS, E1_REQUESTREAD), uea_read_cmv_e1()
1255 uea_err(INS_TO_USBDEV(sc), uea_read_cmv_e1()
1258 *data = sc->data; uea_read_cmv_e1()
1263 static inline int uea_read_cmv_e4(struct uea_softc *sc, uea_read_cmv_e4() argument
1266 int ret = uea_cmv_e4(sc, E4_MAKEFUNCTION(E4_MEMACCESS, uea_read_cmv_e4()
1270 uea_err(INS_TO_USBDEV(sc), uea_read_cmv_e4()
1273 *data = sc->data; uea_read_cmv_e4()
1276 *(data + 1) = sc->data1; uea_read_cmv_e4()
1281 static inline int uea_write_cmv_e1(struct uea_softc *sc, uea_write_cmv_e1() argument
1284 int ret = uea_cmv_e1(sc, E1_MAKEFUNCTION(E1_MEMACCESS, E1_REQUESTWRITE), uea_write_cmv_e1()
1287 uea_err(INS_TO_USBDEV(sc), uea_write_cmv_e1()
1293 static inline int uea_write_cmv_e4(struct uea_softc *sc, uea_write_cmv_e4() argument
1296 int ret = uea_cmv_e4(sc, E4_MAKEFUNCTION(E4_MEMACCESS, uea_write_cmv_e4()
1300 uea_err(INS_TO_USBDEV(sc), uea_write_cmv_e4()
1306 static void uea_set_bulk_timeout(struct uea_softc *sc, u32 dsrate) uea_set_bulk_timeout() argument
1317 if (UEA_CHIP_VERSION(sc) == ADI930 || uea_set_bulk_timeout()
1318 altsetting[sc->modem_index] > 0 || uea_set_bulk_timeout()
1319 sc->stats.phy.dsrate == dsrate) uea_set_bulk_timeout()
1324 ret = uea_request(sc, UEA_SET_TIMEOUT, timeout, 0, NULL); uea_set_bulk_timeout()
1325 uea_info(INS_TO_USBDEV(sc), "setting new timeout %d%s\n", uea_set_bulk_timeout()
1335 static int uea_stat_e1(struct uea_softc *sc) uea_stat_e1() argument
1340 uea_enters(INS_TO_USBDEV(sc)); uea_stat_e1()
1341 data = sc->stats.phy.state; uea_stat_e1()
1343 ret = uea_read_cmv_e1(sc, E1_SA_STAT, 0, &sc->stats.phy.state); uea_stat_e1()
1347 switch (GET_STATUS(sc->stats.phy.state)) { uea_stat_e1()
1349 uea_dbg(INS_TO_USBDEV(sc), uea_stat_e1()
1354 uea_dbg(INS_TO_USBDEV(sc), "modem initializing\n"); uea_stat_e1()
1358 uea_vdbg(INS_TO_USBDEV(sc), "modem operational\n"); uea_stat_e1()
1362 uea_info(INS_TO_USBDEV(sc), "modem synchronization failed" uea_stat_e1()
1367 uea_warn(INS_TO_USBDEV(sc), uea_stat_e1()
1372 uea_info(INS_TO_USBDEV(sc), "modem in fast-retain mode\n"); uea_stat_e1()
1375 uea_err(INS_TO_USBDEV(sc), "modem invalid SW mode %d\n", uea_stat_e1()
1376 GET_STATUS(sc->stats.phy.state)); uea_stat_e1()
1381 uea_request(sc, UEA_SET_MODE, UEA_LOOPBACK_OFF, 0, NULL); uea_stat_e1()
1382 uea_info(INS_TO_USBDEV(sc), "modem operational\n"); uea_stat_e1()
1387 release_firmware(sc->dsp_firm); uea_stat_e1()
1388 sc->dsp_firm = NULL; uea_stat_e1()
1397 wake_up(&sc->sync_q); uea_stat_e1()
1399 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 2, &sc->stats.phy.flags); uea_stat_e1()
1402 sc->stats.phy.mflags |= sc->stats.phy.flags; uea_stat_e1()
1407 if (sc->stats.phy.flags) { uea_stat_e1()
1408 uea_dbg(INS_TO_USBDEV(sc), "Stat flag = 0x%x\n", uea_stat_e1()
1409 sc->stats.phy.flags); uea_stat_e1()
1413 ret = uea_read_cmv_e1(sc, E1_SA_RATE, 0, &data); uea_stat_e1()
1417 uea_set_bulk_timeout(sc, (data >> 16) * 32); uea_stat_e1()
1418 sc->stats.phy.dsrate = (data >> 16) * 32; uea_stat_e1()
1419 sc->stats.phy.usrate = (data & 0xffff) * 32; uea_stat_e1()
1420 UPDATE_ATM_STAT(link_rate, sc->stats.phy.dsrate * 1000 / 424); uea_stat_e1()
1422 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 23, &data); uea_stat_e1()
1425 sc->stats.phy.dsattenuation = (data & 0xff) / 2; uea_stat_e1()
1427 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 47, &data); uea_stat_e1()
1430 sc->stats.phy.usattenuation = (data & 0xff) / 2; uea_stat_e1()
1432 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 25, &sc->stats.phy.dsmargin); uea_stat_e1()
1436 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 49, &sc->stats.phy.usmargin); uea_stat_e1()
1440 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 51, &sc->stats.phy.rxflow); uea_stat_e1()
1444 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 52, &sc->stats.phy.txflow); uea_stat_e1()
1448 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 54, &sc->stats.phy.dsunc); uea_stat_e1()
1453 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 58, &sc->stats.phy.usunc); uea_stat_e1()
1457 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 53, &sc->stats.phy.dscorr); uea_stat_e1()
1462 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 57, &sc->stats.phy.uscorr); uea_stat_e1()
1466 ret = uea_read_cmv_e1(sc, E1_SA_INFO, 8, &sc->stats.phy.vidco); uea_stat_e1()
1470 ret = uea_read_cmv_e1(sc, E1_SA_INFO, 13, &sc->stats.phy.vidcpe); uea_stat_e1()
1477 static int uea_stat_e4(struct uea_softc *sc) uea_stat_e4() argument
1483 uea_enters(INS_TO_USBDEV(sc)); uea_stat_e4()
1484 data = sc->stats.phy.state; uea_stat_e4()
1487 ret = uea_read_cmv_e4(sc, 1, E4_SA_STAT, 0, 0, &sc->stats.phy.state); uea_stat_e4()
1491 switch (sc->stats.phy.state) { uea_stat_e4()
1496 uea_dbg(INS_TO_USBDEV(sc), "modem not yet " uea_stat_e4()
1503 uea_dbg(INS_TO_USBDEV(sc), "modem initializing\n"); uea_stat_e4()
1506 uea_info(INS_TO_USBDEV(sc), "modem synchronization " uea_stat_e4()
1512 uea_warn(INS_TO_USBDEV(sc), "unknown state: %x\n", uea_stat_e4()
1513 sc->stats.phy.state); uea_stat_e4()
1518 uea_request(sc, UEA_SET_MODE, UEA_LOOPBACK_OFF, 0, NULL); uea_stat_e4()
1519 uea_info(INS_TO_USBDEV(sc), "modem operational\n"); uea_stat_e4()
1524 release_firmware(sc->dsp_firm); uea_stat_e4()
1525 sc->dsp_firm = NULL; uea_stat_e4()
1534 wake_up(&sc->sync_q); uea_stat_e4()
1541 ret = uea_read_cmv_e4(sc, 1, E4_SA_DIAG, 0, 0, &sc->stats.phy.flags); uea_stat_e4()
1544 sc->stats.phy.mflags |= sc->stats.phy.flags; uea_stat_e4()
1549 if (sc->stats.phy.flags) { uea_stat_e4()
1550 uea_dbg(INS_TO_USBDEV(sc), "Stat flag = 0x%x\n", uea_stat_e4()
1551 sc->stats.phy.flags); uea_stat_e4()
1552 if (sc->stats.phy.flags & 1) /* delineation LOSS */ uea_stat_e4()
1554 if (sc->stats.phy.flags & 0x4000) /* Reset Flag */ uea_stat_e4()
1560 ret = uea_read_cmv_e4(sc, 4, E4_SA_RATE, 0, 0, tmp_arr); uea_stat_e4()
1564 sc->stats.phy.usrate = data / 1000; uea_stat_e4()
1566 ret = uea_read_cmv_e4(sc, 4, E4_SA_RATE, 1, 0, tmp_arr); uea_stat_e4()
1570 uea_set_bulk_timeout(sc, data / 1000); uea_stat_e4()
1571 sc->stats.phy.dsrate = data / 1000; uea_stat_e4()
1572 UPDATE_ATM_STAT(link_rate, sc->stats.phy.dsrate * 1000 / 424); uea_stat_e4()
1574 ret = uea_read_cmv_e4(sc, 1, E4_SA_INFO, 68, 1, &data); uea_stat_e4()
1577 sc->stats.phy.dsattenuation = data / 10; uea_stat_e4()
1579 ret = uea_read_cmv_e4(sc, 1, E4_SA_INFO, 69, 1, &data); uea_stat_e4()
1582 sc->stats.phy.usattenuation = data / 10; uea_stat_e4()
1584 ret = uea_read_cmv_e4(sc, 1, E4_SA_INFO, 68, 3, &data); uea_stat_e4()
1587 sc->stats.phy.dsmargin = data / 2; uea_stat_e4()
1589 ret = uea_read_cmv_e4(sc, 1, E4_SA_INFO, 69, 3, &data); uea_stat_e4()
1592 sc->stats.phy.usmargin = data / 10; uea_stat_e4()
1597 static void cmvs_file_name(struct uea_softc *sc, char *const cmv_name, int ver) cmvs_file_name() argument
1604 if (cmv_file[sc->modem_index] == NULL) { cmvs_file_name()
1605 if (UEA_CHIP_VERSION(sc) == ADI930) cmvs_file_name()
1607 else if (UEA_CHIP_VERSION(sc) == EAGLE_IV) cmvs_file_name()
1612 file_arr[4] = IS_ISDN(sc) ? 'i' : 'p'; cmvs_file_name()
1615 file = cmv_file[sc->modem_index]; cmvs_file_name()
1624 static int request_cmvs_old(struct uea_softc *sc, request_cmvs_old() argument
1631 cmvs_file_name(sc, cmv_name, 1); request_cmvs_old()
1632 ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev); request_cmvs_old()
1634 uea_err(INS_TO_USBDEV(sc), request_cmvs_old()
1652 uea_err(INS_TO_USBDEV(sc), "firmware %s is corrupted\n", cmv_name); request_cmvs_old()
1657 static int request_cmvs(struct uea_softc *sc, request_cmvs() argument
1665 cmvs_file_name(sc, cmv_name, 2); request_cmvs()
1666 ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev); request_cmvs()
1670 uea_warn(INS_TO_USBDEV(sc), "requesting " request_cmvs()
1673 return request_cmvs_old(sc, cmvs, fw); request_cmvs()
1675 uea_err(INS_TO_USBDEV(sc), request_cmvs()
1685 uea_warn(INS_TO_USBDEV(sc), "firmware %s is corrupted," request_cmvs()
1688 return request_cmvs_old(sc, cmvs, fw); request_cmvs()
1713 uea_err(INS_TO_USBDEV(sc), "firmware %s is corrupted\n", cmv_name); request_cmvs()
1718 static int uea_send_cmvs_e1(struct uea_softc *sc) uea_send_cmvs_e1() argument
1726 ret = uea_write_cmv_e1(sc, E1_SA_CNTL, 0, 1); uea_send_cmvs_e1()
1731 ret = uea_read_cmv_e1(sc, E1_SA_INFO, 10, &sc->stats.phy.firmid); uea_send_cmvs_e1()
1734 uea_info(INS_TO_USBDEV(sc), "ATU-R firmware version : %x\n", uea_send_cmvs_e1()
1735 sc->stats.phy.firmid); uea_send_cmvs_e1()
1738 ret = len = request_cmvs(sc, &cmvs_ptr, &cmvs_fw, &ver); uea_send_cmvs_e1()
1746 uea_warn(INS_TO_USBDEV(sc), "use deprecated cmvs version, " uea_send_cmvs_e1()
1750 ret = uea_write_cmv_e1(sc, uea_send_cmvs_e1()
1761 ret = uea_write_cmv_e1(sc, uea_send_cmvs_e1()
1770 uea_err(INS_TO_USBDEV(sc), "bad cmvs version %d\n", ver); uea_send_cmvs_e1()
1775 ret = uea_write_cmv_e1(sc, E1_SA_CNTL, 0, 2); uea_send_cmvs_e1()
1776 uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); uea_send_cmvs_e1()
1777 uea_info(INS_TO_USBDEV(sc), "modem started, waiting " uea_send_cmvs_e1()
1784 static int uea_send_cmvs_e4(struct uea_softc *sc) uea_send_cmvs_e4() argument
1792 ret = uea_write_cmv_e4(sc, 1, E4_SA_CNTL, 0, 0, 1); uea_send_cmvs_e4()
1798 ret = uea_read_cmv_e4(sc, 2, E4_SA_INFO, 55, 0, &sc->stats.phy.firmid); uea_send_cmvs_e4()
1801 uea_info(INS_TO_USBDEV(sc), "ATU-R firmware version : %x\n", uea_send_cmvs_e4()
1802 sc->stats.phy.firmid); uea_send_cmvs_e4()
1806 ret = len = request_cmvs(sc, &cmvs_ptr, &cmvs_fw, &ver); uea_send_cmvs_e4()
1815 ret = uea_write_cmv_e4(sc, 1, uea_send_cmvs_e4()
1825 uea_err(INS_TO_USBDEV(sc), "bad cmvs version %d\n", ver); uea_send_cmvs_e4()
1830 ret = uea_write_cmv_e4(sc, 1, E4_SA_CNTL, 0, 0, 2); uea_send_cmvs_e4()
1831 uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); uea_send_cmvs_e4()
1832 uea_info(INS_TO_USBDEV(sc), "modem started, waiting " uea_send_cmvs_e4()
1845 static int uea_start_reset(struct uea_softc *sc) uea_start_reset() argument
1850 uea_enters(INS_TO_USBDEV(sc)); uea_start_reset()
1851 uea_info(INS_TO_USBDEV(sc), "(re)booting started\n"); uea_start_reset()
1854 sc->booting = 1; uea_start_reset()
1859 sc->cmv_ack = 0; uea_start_reset()
1863 memset(&sc->stats, 0, sizeof(struct uea_stats)); uea_start_reset()
1866 uea_request(sc, UEA_SET_MODE, UEA_LOOPBACK_ON, 0, NULL); uea_start_reset()
1867 uea_request(sc, UEA_SET_MODE, UEA_BOOT_IDMA, 0, NULL); uea_start_reset()
1870 uea_request(sc, UEA_SET_MODE, UEA_START_RESET, 0, NULL); uea_start_reset()
1873 ret = uea_wait(sc, 0, msecs_to_jiffies(100)); uea_start_reset()
1878 uea_request(sc, UEA_SET_MODE, UEA_END_RESET, 0, NULL); uea_start_reset()
1880 if (UEA_CHIP_VERSION(sc) != EAGLE_IV) { uea_start_reset()
1882 uea_request(sc, UEA_SET_2183_DATA, UEA_MPTX_MAILBOX, 2, &zero); uea_start_reset()
1883 uea_request(sc, UEA_SET_2183_DATA, UEA_MPRX_MAILBOX, 2, &zero); uea_start_reset()
1884 uea_request(sc, UEA_SET_2183_DATA, UEA_SWAP_MAILBOX, 2, &zero); uea_start_reset()
1887 ret = uea_wait(sc, 0, msecs_to_jiffies(1000)); uea_start_reset()
1891 if (UEA_CHIP_VERSION(sc) == EAGLE_IV) uea_start_reset()
1892 sc->cmv_dsc.e4.function = E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, uea_start_reset()
1895 sc->cmv_dsc.e1.function = E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, uea_start_reset()
1899 sc->booting = 0; uea_start_reset()
1902 sc->pageno = 0; uea_start_reset()
1903 sc->ovl = 0; uea_start_reset()
1904 schedule_work(&sc->task); uea_start_reset()
1907 ret = wait_cmv_ack(sc); uea_start_reset()
1911 uea_vdbg(INS_TO_USBDEV(sc), "Ready CMV received\n"); uea_start_reset()
1913 ret = sc->send_cmvs(sc); uea_start_reset()
1917 sc->reset = 0; uea_start_reset()
1918 uea_leaves(INS_TO_USBDEV(sc)); uea_start_reset()
1930 struct uea_softc *sc = data; uea_kthread() local
1934 uea_enters(INS_TO_USBDEV(sc)); uea_kthread()
1936 if (ret < 0 || sc->reset) uea_kthread()
1937 ret = uea_start_reset(sc); uea_kthread()
1939 ret = sc->stat(sc); uea_kthread()
1941 uea_wait(sc, 0, msecs_to_jiffies(1000)); uea_kthread()
1944 uea_leaves(INS_TO_USBDEV(sc)); uea_kthread()
1949 static int load_XILINX_firmware(struct uea_softc *sc) load_XILINX_firmware() argument
1957 uea_enters(INS_TO_USBDEV(sc)); load_XILINX_firmware()
1959 ret = request_firmware(&fw_entry, fw_name, &sc->usb_dev->dev); load_XILINX_firmware()
1961 uea_err(INS_TO_USBDEV(sc), "firmware %s is not available\n", load_XILINX_firmware()
1969 uea_err(INS_TO_USBDEV(sc), "firmware %s is corrupted\n", load_XILINX_firmware()
1976 ret = uea_request(sc, 0xe, 0, ln, pfw + u); load_XILINX_firmware()
1978 uea_err(INS_TO_USBDEV(sc), load_XILINX_firmware()
1985 ret = uea_request(sc, 0xe, 1, 0, NULL); load_XILINX_firmware()
1987 uea_err(INS_TO_USBDEV(sc), load_XILINX_firmware()
1994 ret = uea_send_modem_cmd(sc->usb_dev, 0xe, 1, &value); load_XILINX_firmware()
1996 uea_err(sc->usb_dev, "elsa de-assert failed with error" load_XILINX_firmware()
2002 uea_leaves(INS_TO_USBDEV(sc)); load_XILINX_firmware()
2007 static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr) uea_dispatch_cmv_e1() argument
2009 struct cmv_dsc_e1 *dsc = &sc->cmv_dsc.e1; uea_dispatch_cmv_e1()
2012 uea_enters(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e1()
2023 if (UEA_CHIP_VERSION(sc) == ADI930 uea_dispatch_cmv_e1()
2035 wake_up_cmv_ack(sc); uea_dispatch_cmv_e1()
2036 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e1()
2046 sc->data = get_unaligned_le32(&cmv->dwData); uea_dispatch_cmv_e1()
2047 sc->data = sc->data << 16 | sc->data >> 16; uea_dispatch_cmv_e1()
2049 wake_up_cmv_ack(sc); uea_dispatch_cmv_e1()
2050 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e1()
2054 uea_err(INS_TO_USBDEV(sc), "unexpected cmv received, " uea_dispatch_cmv_e1()
2058 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e1()
2062 uea_err(INS_TO_USBDEV(sc), "invalid cmv received, " uea_dispatch_cmv_e1()
2065 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e1()
2069 static void uea_dispatch_cmv_e4(struct uea_softc *sc, struct intr_pkt *intr) uea_dispatch_cmv_e4() argument
2071 struct cmv_dsc_e4 *dsc = &sc->cmv_dsc.e4; uea_dispatch_cmv_e4()
2074 uea_enters(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e4()
2075 uea_dbg(INS_TO_USBDEV(sc), "cmv %x %x %x %x %x %x\n", uea_dispatch_cmv_e4()
2085 wake_up_cmv_ack(sc); uea_dispatch_cmv_e4()
2086 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e4()
2096 sc->data = be32_to_cpu(cmv->dwData[0]); uea_dispatch_cmv_e4()
2097 sc->data1 = be32_to_cpu(cmv->dwData[1]); uea_dispatch_cmv_e4()
2098 wake_up_cmv_ack(sc); uea_dispatch_cmv_e4()
2099 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e4()
2103 uea_err(INS_TO_USBDEV(sc), "unexpected cmv received, " uea_dispatch_cmv_e4()
2107 uea_leaves(INS_TO_USBDEV(sc)); uea_dispatch_cmv_e4()
2111 static void uea_schedule_load_page_e1(struct uea_softc *sc, uea_schedule_load_page_e1() argument
2114 sc->pageno = intr->e1_bSwapPageNo; uea_schedule_load_page_e1()
2115 sc->ovl = intr->e1_bOvl >> 4 | intr->e1_bOvl << 4; uea_schedule_load_page_e1()
2116 schedule_work(&sc->task); uea_schedule_load_page_e1()
2119 static void uea_schedule_load_page_e4(struct uea_softc *sc, uea_schedule_load_page_e4() argument
2122 sc->pageno = intr->e4_bSwapPageNo; uea_schedule_load_page_e4()
2123 schedule_work(&sc->task); uea_schedule_load_page_e4()
2131 struct uea_softc *sc = urb->context; uea_intr() local
2135 uea_enters(INS_TO_USBDEV(sc)); uea_intr()
2138 uea_err(INS_TO_USBDEV(sc), "uea_intr() failed with %d\n", uea_intr()
2144 if (intr->bType != 0x08 || sc->booting) { uea_intr()
2145 uea_err(INS_TO_USBDEV(sc), "wrong interrupt\n"); uea_intr()
2151 sc->schedule_load_page(sc, intr); uea_intr()
2155 sc->dispatch_cmv(sc, intr); uea_intr()
2159 uea_err(INS_TO_USBDEV(sc), "unknown interrupt %u\n", uea_intr()
2164 usb_submit_urb(sc->urb_int, GFP_ATOMIC); uea_intr()
2170 static int uea_boot(struct uea_softc *sc) uea_boot() argument
2175 uea_enters(INS_TO_USBDEV(sc)); uea_boot()
2177 if (UEA_CHIP_VERSION(sc) == EAGLE_IV) { uea_boot()
2179 sc->dispatch_cmv = uea_dispatch_cmv_e4; uea_boot()
2180 sc->schedule_load_page = uea_schedule_load_page_e4; uea_boot()
2181 sc->stat = uea_stat_e4; uea_boot()
2182 sc->send_cmvs = uea_send_cmvs_e4; uea_boot()
2183 INIT_WORK(&sc->task, uea_load_page_e4); uea_boot()
2186 sc->dispatch_cmv = uea_dispatch_cmv_e1; uea_boot()
2187 sc->schedule_load_page = uea_schedule_load_page_e1; uea_boot()
2188 sc->stat = uea_stat_e1; uea_boot()
2189 sc->send_cmvs = uea_send_cmvs_e1; uea_boot()
2190 INIT_WORK(&sc->task, uea_load_page_e1); uea_boot()
2193 init_waitqueue_head(&sc->sync_q); uea_boot()
2195 if (UEA_CHIP_VERSION(sc) == ADI930) uea_boot()
2196 load_XILINX_firmware(sc); uea_boot()
2200 uea_err(INS_TO_USBDEV(sc), uea_boot()
2205 sc->urb_int = usb_alloc_urb(0, GFP_KERNEL); uea_boot()
2206 if (!sc->urb_int) { uea_boot()
2207 uea_err(INS_TO_USBDEV(sc), "cannot allocate interrupt URB\n"); uea_boot()
2211 usb_fill_int_urb(sc->urb_int, sc->usb_dev, uea_boot()
2212 usb_rcvintpipe(sc->usb_dev, UEA_INTR_PIPE), uea_boot()
2213 intr, size, uea_intr, sc, uea_boot()
2214 sc->usb_dev->actconfig->interface[0]->altsetting[0]. uea_boot()
2217 ret = usb_submit_urb(sc->urb_int, GFP_KERNEL); uea_boot()
2219 uea_err(INS_TO_USBDEV(sc), uea_boot()
2227 sc->kthread = kthread_create(uea_kthread, sc, "ueagle-atm"); uea_boot()
2228 if (IS_ERR(sc->kthread)) { uea_boot()
2229 uea_err(INS_TO_USBDEV(sc), "failed to create thread\n"); uea_boot()
2233 uea_leaves(INS_TO_USBDEV(sc)); uea_boot()
2237 usb_kill_urb(sc->urb_int); uea_boot()
2239 usb_free_urb(sc->urb_int); uea_boot()
2240 sc->urb_int = NULL; uea_boot()
2243 uea_leaves(INS_TO_USBDEV(sc)); uea_boot()
2250 static void uea_stop(struct uea_softc *sc) uea_stop() argument
2253 uea_enters(INS_TO_USBDEV(sc)); uea_stop()
2254 ret = kthread_stop(sc->kthread); uea_stop()
2255 uea_dbg(INS_TO_USBDEV(sc), "kthread finish with status %d\n", ret); uea_stop()
2257 uea_request(sc, UEA_SET_MODE, UEA_LOOPBACK_ON, 0, NULL); uea_stop()
2259 usb_kill_urb(sc->urb_int); uea_stop()
2260 kfree(sc->urb_int->transfer_buffer); uea_stop()
2261 usb_free_urb(sc->urb_int); uea_stop()
2264 flush_work(&sc->task); uea_stop()
2266 release_firmware(sc->dsp_firm); uea_stop()
2267 uea_leaves(INS_TO_USBDEV(sc)); uea_stop()
2291 struct uea_softc *sc; read_status() local
2294 sc = dev_to_uea(dev); read_status()
2295 if (!sc) read_status()
2297 ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.state); read_status()
2307 struct uea_softc *sc; reboot() local
2310 sc = dev_to_uea(dev); reboot()
2311 if (!sc) reboot()
2313 sc->reset = 1; reboot()
2327 struct uea_softc *sc; read_human_status() local
2330 sc = dev_to_uea(dev); read_human_status()
2331 if (!sc) read_human_status()
2334 if (UEA_CHIP_VERSION(sc) == EAGLE_IV) { read_human_status()
2335 switch (sc->stats.phy.state) { read_human_status()
2359 modem_state = GET_STATUS(sc->stats.phy.state); read_human_status()
2389 struct uea_softc *sc; read_delin() local
2393 sc = dev_to_uea(dev); read_delin()
2394 if (!sc) read_delin()
2397 if (UEA_CHIP_VERSION(sc) == EAGLE_IV) { read_delin()
2398 if (sc->stats.phy.flags & 0x4000) read_delin()
2400 else if (sc->stats.phy.flags & 0x0001) read_delin()
2403 if (sc->stats.phy.flags & 0x0C00) read_delin()
2405 else if (sc->stats.phy.flags & 0x0030) read_delin()
2423 struct uea_softc *sc; \
2426 sc = dev_to_uea(dev); \
2427 if (!sc) \
2429 ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.name); \
2431 sc->stats.phy.name = 0; \
2457 static int uea_getesi(struct uea_softc *sc, u_char * esi) uea_getesi() argument
2462 (sc->usb_dev, sc->usb_dev->descriptor.iSerialNumber, mac_str, uea_getesi()
2476 struct uea_softc *sc = usbatm->driver_data; uea_atm_open() local
2478 return uea_getesi(sc, atm_dev->esi); uea_atm_open()
2483 struct uea_softc *sc = usbatm->driver_data; uea_heavy() local
2485 wait_event_interruptible(sc->sync_q, IS_OPERATIONAL(sc)); uea_heavy()
2538 struct uea_softc *sc; uea_bind() local
2563 sc = kzalloc(sizeof(struct uea_softc), GFP_KERNEL); uea_bind()
2564 if (!sc) { uea_bind()
2569 sc->usb_dev = usb; uea_bind()
2570 usbatm->driver_data = sc; uea_bind()
2571 sc->usbatm = usbatm; uea_bind()
2572 sc->modem_index = (modem_index < NB_MODEM) ? modem_index++ : 0; uea_bind()
2573 sc->driver_info = id->driver_info; uea_bind()
2576 if (annex[sc->modem_index] == 1) uea_bind()
2577 sc->annex = ANNEXA; uea_bind()
2578 else if (annex[sc->modem_index] == 2) uea_bind()
2579 sc->annex = ANNEXB; uea_bind()
2581 else if (sc->driver_info & AUTO_ANNEX_A) uea_bind()
2582 sc->annex = ANNEXA; uea_bind()
2583 else if (sc->driver_info & AUTO_ANNEX_B) uea_bind()
2584 sc->annex = ANNEXB; uea_bind()
2586 sc->annex = (le16_to_cpu uea_bind()
2587 (sc->usb_dev->descriptor.bcdDevice) & 0x80) ? ANNEXB : ANNEXA; uea_bind()
2589 alt = altsetting[sc->modem_index]; uea_bind()
2607 ret = uea_boot(sc); uea_bind()
2616 kfree(sc); uea_bind()
2622 struct uea_softc *sc = usbatm->driver_data; uea_unbind() local
2625 uea_stop(sc); uea_unbind()
2626 kfree(sc); uea_unbind()
2660 struct uea_softc *sc = usbatm->driver_data; uea_probe() local
2666 wake_up_process(sc->kthread); uea_probe()
/linux-4.1.27/fs/ocfs2/cluster/
H A Dtcp.c77 #define SC_NODEF_ARGS(sc) sc->sc_node->nd_name, sc->sc_node->nd_num, \
78 &sc->sc_node->nd_ipv4_address, \
79 ntohs(sc->sc_node->nd_ipv4_port)
96 #define sclog(sc, fmt, args...) do { \
97 typeof(sc) __sc = (sc); \
98 mlog(ML_SOCKET, "[sc %p refs %d sock %p node %u page %p " \
143 static void o2net_sc_postpone_idle(struct o2net_sock_container *sc);
144 static void o2net_sc_reset_idle_timer(struct o2net_sock_container *sc);
173 struct o2net_sock_container *sc) o2net_set_nst_sock_container()
175 nst->st_sc = sc; o2net_set_nst_sock_container()
184 static inline void o2net_set_sock_timer(struct o2net_sock_container *sc) o2net_set_sock_timer() argument
186 sc->sc_tv_timer = ktime_get(); o2net_set_sock_timer()
189 static inline void o2net_set_data_ready_time(struct o2net_sock_container *sc) o2net_set_data_ready_time() argument
191 sc->sc_tv_data_ready = ktime_get(); o2net_set_data_ready_time()
194 static inline void o2net_set_advance_start_time(struct o2net_sock_container *sc) o2net_set_advance_start_time() argument
196 sc->sc_tv_advance_start = ktime_get(); o2net_set_advance_start_time()
199 static inline void o2net_set_advance_stop_time(struct o2net_sock_container *sc) o2net_set_advance_stop_time() argument
201 sc->sc_tv_advance_stop = ktime_get(); o2net_set_advance_stop_time()
204 static inline void o2net_set_func_start_time(struct o2net_sock_container *sc) o2net_set_func_start_time() argument
206 sc->sc_tv_func_start = ktime_get(); o2net_set_func_start_time()
209 static inline void o2net_set_func_stop_time(struct o2net_sock_container *sc) o2net_set_func_stop_time() argument
211 sc->sc_tv_func_stop = ktime_get(); o2net_set_func_stop_time()
230 static ktime_t o2net_get_func_run_time(struct o2net_sock_container *sc) o2net_get_func_run_time() argument
232 return ktime_sub(sc->sc_tv_func_stop, sc->sc_tv_func_start); o2net_get_func_run_time()
236 struct o2net_sock_container *sc) o2net_update_send_stats()
238 sc->sc_tv_status_total = ktime_add(sc->sc_tv_status_total, o2net_update_send_stats()
241 sc->sc_tv_send_total = ktime_add(sc->sc_tv_send_total, o2net_update_send_stats()
244 sc->sc_tv_acquiry_total = ktime_add(sc->sc_tv_acquiry_total, o2net_update_send_stats()
247 sc->sc_send_count++; o2net_update_send_stats()
250 static void o2net_update_recv_stats(struct o2net_sock_container *sc) o2net_update_recv_stats() argument
252 sc->sc_tv_process_total = ktime_add(sc->sc_tv_process_total, o2net_update_recv_stats()
253 o2net_get_func_run_time(sc)); o2net_update_recv_stats()
254 sc->sc_recv_count++; o2net_update_recv_stats()
261 # define o2net_update_recv_stats(sc)
393 struct o2net_sock_container *sc = container_of(kref, sc_kref_release() local
395 BUG_ON(timer_pending(&sc->sc_idle_timeout)); sc_kref_release()
397 sclog(sc, "releasing\n"); sc_kref_release()
399 if (sc->sc_sock) { sc_kref_release()
400 sock_release(sc->sc_sock); sc_kref_release()
401 sc->sc_sock = NULL; sc_kref_release()
404 o2nm_undepend_item(&sc->sc_node->nd_item); sc_kref_release()
405 o2nm_node_put(sc->sc_node); sc_kref_release()
406 sc->sc_node = NULL; sc_kref_release()
408 o2net_debug_del_sc(sc); sc_kref_release()
410 if (sc->sc_page) sc_kref_release()
411 __free_page(sc->sc_page); sc_kref_release()
412 kfree(sc); sc_kref_release()
415 static void sc_put(struct o2net_sock_container *sc) sc_put() argument
417 sclog(sc, "put\n"); sc_put()
418 kref_put(&sc->sc_kref, sc_kref_release); sc_put()
420 static void sc_get(struct o2net_sock_container *sc) sc_get() argument
422 sclog(sc, "get\n"); sc_get()
423 kref_get(&sc->sc_kref); sc_get()
427 struct o2net_sock_container *sc, *ret = NULL; sc_alloc() local
432 sc = kzalloc(sizeof(*sc), GFP_NOFS); sc_alloc()
433 if (sc == NULL || page == NULL) sc_alloc()
436 kref_init(&sc->sc_kref); sc_alloc()
438 sc->sc_node = node; sc_alloc()
447 INIT_WORK(&sc->sc_connect_work, o2net_sc_connect_completed); sc_alloc()
448 INIT_WORK(&sc->sc_rx_work, o2net_rx_until_empty); sc_alloc()
449 INIT_WORK(&sc->sc_shutdown_work, o2net_shutdown_sc); sc_alloc()
450 INIT_DELAYED_WORK(&sc->sc_keepalive_work, o2net_sc_send_keep_req); sc_alloc()
452 init_timer(&sc->sc_idle_timeout); sc_alloc()
453 sc->sc_idle_timeout.function = o2net_idle_timer; sc_alloc()
454 sc->sc_idle_timeout.data = (unsigned long)sc; sc_alloc()
456 sclog(sc, "alloced\n"); sc_alloc()
458 ret = sc; sc_alloc()
459 sc->sc_page = page; sc_alloc()
460 o2net_debug_add_sc(sc); sc_alloc()
461 sc = NULL; sc_alloc()
467 kfree(sc); sc_alloc()
474 static void o2net_sc_queue_work(struct o2net_sock_container *sc, o2net_sc_queue_work() argument
477 sc_get(sc); o2net_sc_queue_work()
479 sc_put(sc); o2net_sc_queue_work()
481 static void o2net_sc_queue_delayed_work(struct o2net_sock_container *sc, o2net_sc_queue_delayed_work() argument
485 sc_get(sc); o2net_sc_queue_delayed_work()
487 sc_put(sc); o2net_sc_queue_delayed_work()
489 static void o2net_sc_cancel_delayed_work(struct o2net_sock_container *sc, o2net_sc_cancel_delayed_work() argument
493 sc_put(sc); o2net_sc_cancel_delayed_work()
504 struct o2net_sock_container *sc, o2net_set_nn_state()
513 if (old_sc && !sc) o2net_set_nn_state()
515 else if (!old_sc && sc) o2net_set_nn_state()
519 * an non-null sc from being overwritten with another */ o2net_set_nn_state()
520 BUG_ON(sc && nn->nn_sc && nn->nn_sc != sc); o2net_set_nn_state()
522 mlog_bug_on_msg(valid && !sc, "valid %u sc %p\n", valid, sc); o2net_set_nn_state()
527 mlog(ML_CONN, "node %u sc: %p -> %p, valid %u -> %u, err %d -> %d\n", o2net_set_nn_state()
528 o2net_num_from_nn(nn), nn->nn_sc, sc, nn->nn_sc_valid, valid, o2net_set_nn_state()
531 nn->nn_sc = sc; o2net_set_nn_state()
556 o2nm_this_node() > sc->sc_node->nd_num ? o2net_set_nn_state()
558 SC_NODEF_ARGS(sc)); o2net_set_nn_state()
590 /* keep track of the nn's sc ref for the caller */ o2net_set_nn_state()
591 if ((old_sc == NULL) && sc) o2net_set_nn_state()
592 sc_get(sc); o2net_set_nn_state()
593 if (old_sc && (old_sc != sc)) { o2net_set_nn_state()
606 struct o2net_sock_container *sc = sk->sk_user_data; o2net_data_ready() local
607 sclog(sc, "data_ready hit\n"); o2net_data_ready()
608 o2net_set_data_ready_time(sc); o2net_data_ready()
609 o2net_sc_queue_work(sc, &sc->sc_rx_work); o2net_data_ready()
610 ready = sc->sc_data_ready; o2net_data_ready()
623 struct o2net_sock_container *sc; o2net_state_change() local
626 sc = sk->sk_user_data; o2net_state_change()
627 if (sc == NULL) { o2net_state_change()
632 sclog(sc, "state_change to %d\n", sk->sk_state); o2net_state_change()
634 state_change = sc->sc_state_change; o2net_state_change()
642 o2net_sc_queue_work(sc, &sc->sc_connect_work); o2net_state_change()
647 SC_NODEF_ARGS(sc), sk->sk_state); o2net_state_change()
648 o2net_sc_queue_work(sc, &sc->sc_shutdown_work); o2net_state_change()
662 struct o2net_sock_container *sc) o2net_register_callbacks()
673 sk->sk_user_data = sc; o2net_register_callbacks()
674 sc_get(sc); o2net_register_callbacks()
676 sc->sc_data_ready = sk->sk_data_ready; o2net_register_callbacks()
677 sc->sc_state_change = sk->sk_state_change; o2net_register_callbacks()
681 mutex_init(&sc->sc_send_lock); o2net_register_callbacks()
687 struct o2net_sock_container *sc) o2net_unregister_callbacks()
692 if (sk->sk_user_data == sc) { o2net_unregister_callbacks()
695 sk->sk_data_ready = sc->sc_data_ready; o2net_unregister_callbacks()
696 sk->sk_state_change = sc->sc_state_change; o2net_unregister_callbacks()
705 * with an sc and want to detach it from the nn if someone already hasn't beat
710 struct o2net_sock_container *sc, o2net_ensure_shutdown()
714 if (nn->nn_sc == sc) o2net_ensure_shutdown()
722 * sc detached from the nn. state_change will also trigger this callback
729 struct o2net_sock_container *sc = o2net_shutdown_sc() local
732 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_shutdown_sc()
734 sclog(sc, "shutting down\n"); o2net_shutdown_sc()
737 if (o2net_unregister_callbacks(sc->sc_sock->sk, sc)) { o2net_shutdown_sc()
739 * races with pending sc work structs are harmless */ o2net_shutdown_sc()
740 del_timer_sync(&sc->sc_idle_timeout); o2net_shutdown_sc()
741 o2net_sc_cancel_delayed_work(sc, &sc->sc_keepalive_work); o2net_shutdown_sc()
742 sc_put(sc); o2net_shutdown_sc()
743 kernel_sock_shutdown(sc->sc_sock, SHUT_RDWR); o2net_shutdown_sc()
748 o2net_ensure_shutdown(nn, sc, 0); o2net_shutdown_sc()
749 sc_put(sc); o2net_shutdown_sc()
946 static void o2net_sendpage(struct o2net_sock_container *sc, o2net_sendpage() argument
950 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_sendpage()
954 mutex_lock(&sc->sc_send_lock); o2net_sendpage()
955 ret = sc->sc_sock->ops->sendpage(sc->sc_sock, o2net_sendpage()
959 mutex_unlock(&sc->sc_send_lock); o2net_sendpage()
964 " returned EAGAIN\n", size, SC_NODEF_ARGS(sc)); o2net_sendpage()
969 " failed with %zd\n", size, SC_NODEF_ARGS(sc), ret); o2net_sendpage()
970 o2net_ensure_shutdown(nn, sc, 0); o2net_sendpage()
1012 struct o2net_sock_container *sc; o2net_fill_node_map() local
1019 if (!o2net_tx_can_proceed(o2net_nn_from_num(node), &sc, &ret)) o2net_fill_node_map()
1023 sc_put(sc); o2net_fill_node_map()
1036 struct o2net_sock_container *sc = NULL; o2net_send_message_vec() local
1073 wait_event(nn->nn_sc_wq, o2net_tx_can_proceed(nn, &sc, &ret)); o2net_send_message_vec()
1077 o2net_set_nst_sock_container(&nst, sc); o2net_send_message_vec()
1111 mutex_lock(&sc->sc_send_lock); o2net_send_message_vec()
1112 ret = o2net_send_tcp_msg(sc->sc_sock, vec, veclen, o2net_send_message_vec()
1114 mutex_unlock(&sc->sc_send_lock); o2net_send_message_vec()
1125 o2net_update_send_stats(&nst, sc); o2net_send_message_vec()
1137 o2net_debug_del_nst(&nst); /* must be before dropping sc and node */ o2net_send_message_vec()
1138 if (sc) o2net_send_message_vec()
1139 sc_put(sc); o2net_send_message_vec()
1183 static int o2net_process_message(struct o2net_sock_container *sc, o2net_process_message() argument
1186 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_process_message()
1194 o2net_sc_postpone_idle(sc); o2net_process_message()
1205 o2net_sendpage(sc, o2net_keep_resp, o2net_process_message()
1238 o2net_set_func_start_time(sc); o2net_process_message()
1239 sc->sc_msg_key = be32_to_cpu(hdr->key); o2net_process_message()
1240 sc->sc_msg_type = be16_to_cpu(hdr->msg_type); o2net_process_message()
1244 o2net_set_func_stop_time(sc); o2net_process_message()
1246 o2net_update_recv_stats(sc); o2net_process_message()
1250 mutex_lock(&sc->sc_send_lock); o2net_process_message()
1251 ret = o2net_send_status_magic(sc->sc_sock, hdr, syserr, o2net_process_message()
1253 mutex_unlock(&sc->sc_send_lock); o2net_process_message()
1271 static int o2net_check_handshake(struct o2net_sock_container *sc) o2net_check_handshake() argument
1273 struct o2net_handshake *hand = page_address(sc->sc_page); o2net_check_handshake()
1274 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_check_handshake()
1279 "Disconnecting.\n", SC_NODEF_ARGS(sc), o2net_check_handshake()
1284 o2net_ensure_shutdown(nn, sc, -ENOTCONN); o2net_check_handshake()
1297 "Disconnecting.\n", SC_NODEF_ARGS(sc), o2net_check_handshake()
1300 o2net_ensure_shutdown(nn, sc, -ENOTCONN); o2net_check_handshake()
1308 "Disconnecting.\n", SC_NODEF_ARGS(sc), o2net_check_handshake()
1311 o2net_ensure_shutdown(nn, sc, -ENOTCONN); o2net_check_handshake()
1319 "Disconnecting.\n", SC_NODEF_ARGS(sc), o2net_check_handshake()
1322 o2net_ensure_shutdown(nn, sc, -ENOTCONN); o2net_check_handshake()
1326 sc->sc_handshake_ok = 1; o2net_check_handshake()
1331 if (nn->nn_sc == sc) { o2net_check_handshake()
1332 o2net_sc_reset_idle_timer(sc); o2net_check_handshake()
1334 o2net_set_nn_state(nn, sc, 1, 0); o2net_check_handshake()
1339 sc->sc_page_off -= sizeof(struct o2net_handshake); o2net_check_handshake()
1340 if (sc->sc_page_off) o2net_check_handshake()
1341 memmove(hand, hand + 1, sc->sc_page_off); o2net_check_handshake()
1349 static int o2net_advance_rx(struct o2net_sock_container *sc) o2net_advance_rx() argument
1356 sclog(sc, "receiving\n"); o2net_advance_rx()
1357 o2net_set_advance_start_time(sc); o2net_advance_rx()
1359 if (unlikely(sc->sc_handshake_ok == 0)) { o2net_advance_rx()
1360 if(sc->sc_page_off < sizeof(struct o2net_handshake)) { o2net_advance_rx()
1361 data = page_address(sc->sc_page) + sc->sc_page_off; o2net_advance_rx()
1362 datalen = sizeof(struct o2net_handshake) - sc->sc_page_off; o2net_advance_rx()
1363 ret = o2net_recv_tcp_msg(sc->sc_sock, data, datalen); o2net_advance_rx()
1365 sc->sc_page_off += ret; o2net_advance_rx()
1368 if (sc->sc_page_off == sizeof(struct o2net_handshake)) { o2net_advance_rx()
1369 o2net_check_handshake(sc); o2net_advance_rx()
1370 if (unlikely(sc->sc_handshake_ok == 0)) o2net_advance_rx()
1377 if (sc->sc_page_off < sizeof(struct o2net_msg)) { o2net_advance_rx()
1378 data = page_address(sc->sc_page) + sc->sc_page_off; o2net_advance_rx()
1379 datalen = sizeof(struct o2net_msg) - sc->sc_page_off; o2net_advance_rx()
1380 ret = o2net_recv_tcp_msg(sc->sc_sock, data, datalen); o2net_advance_rx()
1382 sc->sc_page_off += ret; o2net_advance_rx()
1386 if (sc->sc_page_off == sizeof(struct o2net_msg)) { o2net_advance_rx()
1387 hdr = page_address(sc->sc_page); o2net_advance_rx()
1397 if (sc->sc_page_off < sizeof(struct o2net_msg)) { o2net_advance_rx()
1403 hdr = page_address(sc->sc_page); o2net_advance_rx()
1405 msglog(hdr, "at page_off %zu\n", sc->sc_page_off); o2net_advance_rx()
1408 if (sc->sc_page_off - sizeof(struct o2net_msg) < be16_to_cpu(hdr->data_len)) { o2net_advance_rx()
1410 data = page_address(sc->sc_page) + sc->sc_page_off; o2net_advance_rx()
1412 sc->sc_page_off; o2net_advance_rx()
1413 ret = o2net_recv_tcp_msg(sc->sc_sock, data, datalen); o2net_advance_rx()
1415 sc->sc_page_off += ret; o2net_advance_rx()
1420 if (sc->sc_page_off - sizeof(struct o2net_msg) == be16_to_cpu(hdr->data_len)) { o2net_advance_rx()
1424 ret = o2net_process_message(sc, hdr); o2net_advance_rx()
1427 sc->sc_page_off = 0; o2net_advance_rx()
1431 sclog(sc, "ret = %d\n", ret); o2net_advance_rx()
1432 o2net_set_advance_stop_time(sc); o2net_advance_rx()
1441 struct o2net_sock_container *sc = o2net_rx_until_empty() local
1446 ret = o2net_advance_rx(sc); o2net_rx_until_empty()
1450 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_rx_until_empty()
1451 sclog(sc, "saw error %d, closing\n", ret); o2net_rx_until_empty()
1453 o2net_ensure_shutdown(nn, sc, 0); o2net_rx_until_empty()
1456 sc_put(sc); o2net_rx_until_empty()
1506 * rx path will see the response and mark the sc valid */ o2net_sc_connect_completed()
1509 struct o2net_sock_container *sc = o2net_sc_connect_completed() local
1513 mlog(ML_MSG, "sc sending handshake with ver %llu id %llx\n", o2net_sc_connect_completed()
1518 o2net_sendpage(sc, o2net_hand, sizeof(*o2net_hand)); o2net_sc_connect_completed()
1519 sc_put(sc); o2net_sc_connect_completed()
1525 struct o2net_sock_container *sc = o2net_sc_send_keep_req() local
1529 o2net_sendpage(sc, o2net_keep_req, sizeof(*o2net_keep_req)); o2net_sc_send_keep_req()
1530 sc_put(sc); o2net_sc_send_keep_req()
1534 * we can't start this timer until we've got to the point in sc buildup
1538 struct o2net_sock_container *sc = (struct o2net_sock_container *)data; o2net_idle_timer() local
1539 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_idle_timer()
1542 ktime_to_ms(sc->sc_tv_timer); o2net_idle_timer()
1549 SC_NODEF_ARGS(sc), msecs / 1000, msecs % 1000); o2net_idle_timer()
1560 o2net_sc_reset_idle_timer(sc); o2net_idle_timer()
1564 static void o2net_sc_reset_idle_timer(struct o2net_sock_container *sc) o2net_sc_reset_idle_timer() argument
1566 o2net_sc_cancel_delayed_work(sc, &sc->sc_keepalive_work); o2net_sc_reset_idle_timer()
1567 o2net_sc_queue_delayed_work(sc, &sc->sc_keepalive_work, o2net_sc_reset_idle_timer()
1569 o2net_set_sock_timer(sc); o2net_sc_reset_idle_timer()
1570 mod_timer(&sc->sc_idle_timeout, o2net_sc_reset_idle_timer()
1574 static void o2net_sc_postpone_idle(struct o2net_sock_container *sc) o2net_sc_postpone_idle() argument
1576 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); o2net_sc_postpone_idle()
1586 if (timer_pending(&sc->sc_idle_timeout)) o2net_sc_postpone_idle()
1587 o2net_sc_reset_idle_timer(sc); o2net_sc_postpone_idle()
1599 struct o2net_sock_container *sc = NULL; o2net_start_connect() local
1649 sc = sc_alloc(node); o2net_start_connect()
1650 if (sc == NULL) { o2net_start_connect()
1651 mlog(0, "couldn't allocate sc\n"); o2net_start_connect()
1661 sc->sc_sock = sock; /* freed by sc_kref_release */ o2net_start_connect()
1677 ret = o2net_set_nodelay(sc->sc_sock); o2net_start_connect()
1689 o2net_register_callbacks(sc->sc_sock->sk, sc); o2net_start_connect()
1693 o2net_set_nn_state(nn, sc, 0, 0); o2net_start_connect()
1700 ret = sc->sc_sock->ops->connect(sc->sc_sock, o2net_start_connect()
1708 if (ret && sc) { o2net_start_connect()
1710 " failed with errno %d\n", SC_NODEF_ARGS(sc), ret); o2net_start_connect()
1713 o2net_ensure_shutdown(nn, sc, 0); o2net_start_connect()
1715 if (sc) o2net_start_connect()
1716 sc_put(sc); o2net_start_connect()
1847 struct o2net_sock_container *sc = NULL; o2net_accept_one() local
1945 sc = sc_alloc(node); o2net_accept_one()
1946 if (sc == NULL) { o2net_accept_one()
1951 sc->sc_sock = new_sock; o2net_accept_one()
1956 o2net_set_nn_state(nn, sc, 0, 0); o2net_accept_one()
1959 o2net_register_callbacks(sc->sc_sock->sk, sc); o2net_accept_one()
1960 o2net_sc_queue_work(sc, &sc->sc_rx_work); o2net_accept_one()
1963 o2net_sendpage(sc, o2net_hand, sizeof(*o2net_hand)); o2net_accept_one()
1972 if (sc) o2net_accept_one()
1973 sc_put(sc); o2net_accept_one()
172 o2net_set_nst_sock_container(struct o2net_send_tracking *nst, struct o2net_sock_container *sc) o2net_set_nst_sock_container() argument
235 o2net_update_send_stats(struct o2net_send_tracking *nst, struct o2net_sock_container *sc) o2net_update_send_stats() argument
503 o2net_set_nn_state(struct o2net_node *nn, struct o2net_sock_container *sc, unsigned valid, int err) o2net_set_nn_state() argument
661 o2net_register_callbacks(struct sock *sk, struct o2net_sock_container *sc) o2net_register_callbacks() argument
686 o2net_unregister_callbacks(struct sock *sk, struct o2net_sock_container *sc) o2net_unregister_callbacks() argument
709 o2net_ensure_shutdown(struct o2net_node *nn, struct o2net_sock_container *sc, int err) o2net_ensure_shutdown() argument
H A Dnetdebug.c152 " sc: %p\n" nst_seq_show()
213 void o2net_debug_add_sc(struct o2net_sock_container *sc) o2net_debug_add_sc() argument
216 list_add(&sc->sc_net_debug_item, &sock_containers); o2net_debug_add_sc()
220 void o2net_debug_del_sc(struct o2net_sock_container *sc) o2net_debug_del_sc() argument
223 list_del_init(&sc->sc_net_debug_item); o2net_debug_del_sc()
235 struct o2net_sock_container *sc, *ret = NULL; next_sc() local
239 list_for_each_entry(sc, &sc_start->sc_net_debug_item, next_sc()
241 /* discover the head of the list miscast as a sc */ next_sc()
242 if (&sc->sc_net_debug_item == &sock_containers) next_sc()
246 if (sc->sc_page != NULL) { next_sc()
247 ret = sc; next_sc()
258 struct o2net_sock_container *sc, *dummy_sc = sd->dbg_sock; sc_seq_start() local
261 sc = next_sc(dummy_sc); sc_seq_start()
264 return sc; sc_seq_start()
270 struct o2net_sock_container *sc, *dummy_sc = sd->dbg_sock; sc_seq_next() local
273 sc = next_sc(dummy_sc); sc_seq_next()
275 if (sc) sc_seq_next()
276 list_add(&dummy_sc->sc_net_debug_item, &sc->sc_net_debug_item); sc_seq_next()
279 return sc; /* unused, just needs to be null when done */ sc_seq_next()
301 struct o2net_sock_container *sc) sc_show_sock_stats()
303 if (!sc) sc_show_sock_stats()
307 sc->sc_node->nd_num, (unsigned long)sc_send_count(sc), sc_show_sock_stats()
308 (long long)sc_tv_acquiry_total_ns(sc), sc_show_sock_stats()
309 (long long)sc_tv_send_total_ns(sc), sc_show_sock_stats()
310 (long long)sc_tv_status_total_ns(sc), sc_show_sock_stats()
311 (unsigned long)sc_recv_count(sc), sc_show_sock_stats()
312 (long long)sc_tv_process_total_ns(sc)); sc_show_sock_stats()
316 struct o2net_sock_container *sc) sc_show_sock_container()
322 if (!sc) sc_show_sock_container()
325 if (sc->sc_sock) { sc_show_sock_container()
326 inet = inet_sk(sc->sc_sock->sk); sc_show_sock_container()
351 sc, sc_show_sock_container()
352 atomic_read(&sc->sc_kref.refcount), sc_show_sock_container()
355 sc->sc_node->nd_name, sc_show_sock_container()
356 sc->sc_page_off, sc_show_sock_container()
357 sc->sc_handshake_ok, sc_show_sock_container()
358 (long long)ktime_to_us(sc->sc_tv_timer), sc_show_sock_container()
359 (long long)ktime_to_us(sc->sc_tv_data_ready), sc_show_sock_container()
360 (long long)ktime_to_us(sc->sc_tv_advance_start), sc_show_sock_container()
361 (long long)ktime_to_us(sc->sc_tv_advance_stop), sc_show_sock_container()
362 (long long)ktime_to_us(sc->sc_tv_func_start), sc_show_sock_container()
363 (long long)ktime_to_us(sc->sc_tv_func_stop), sc_show_sock_container()
364 sc->sc_msg_key, sc_show_sock_container()
365 sc->sc_msg_type); sc_show_sock_container()
371 struct o2net_sock_container *sc, *dummy_sc = sd->dbg_sock; sc_seq_show() local
374 sc = next_sc(dummy_sc); sc_seq_show()
376 if (sc) { sc_seq_show()
378 sc_show_sock_container(seq, sc); sc_seq_show()
380 sc_show_sock_stats(seq, sc); sc_seq_show()
300 sc_show_sock_stats(struct seq_file *seq, struct o2net_sock_container *sc) sc_show_sock_stats() argument
315 sc_show_sock_container(struct seq_file *seq, struct o2net_sock_container *sc) sc_show_sock_container() argument
H A Dtcp_internal.h92 /* set the moment an sc is allocated and a connect is started */
101 /* threads waiting for an sc to arrive wait on the wq for generation
132 /* the next two are valid for the life time of the sc */
136 /* all of these sc work structs hold refs on the sc while they are
137 * queued. they should not be able to ref a freed sc. the teardown
140 /* rx and connect work are generated from socket callbacks. sc
146 * the sc from the nn, and queues the work. in this case the
148 * callback, though, and in this case the work will find the sc
152 * has to be careful to remove the sc from the nn before waiting
154 * sc and rearm itself.
H A Dtcp.h131 void o2net_debug_add_sc(struct o2net_sock_container *sc);
132 void o2net_debug_del_sc(struct o2net_sock_container *sc);
147 static inline void o2net_debug_add_sc(struct o2net_sock_container *sc) o2net_debug_add_sc() argument
150 static inline void o2net_debug_del_sc(struct o2net_sock_container *sc) o2net_debug_del_sc() argument
/linux-4.1.27/drivers/scsi/fnic/
H A Dfnic_scsi.c107 struct scsi_cmnd *sc) fnic_io_lock_hash()
109 u32 hash = sc->request->tag & (FNIC_IO_LOCKS - 1); fnic_io_lock_hash()
126 struct scsi_cmnd *sc) fnic_release_ioreq_buf()
132 scsi_dma_unmap(sc); fnic_release_ioreq_buf()
320 struct scsi_cmnd *sc, fnic_queue_wq_copy_desc()
324 struct fc_rport *rport = starget_to_rport(scsi_target(sc->device)); fnic_queue_wq_copy_desc()
337 for_each_sg(scsi_sglist(sc), sg, sg_count, i) { fnic_queue_wq_copy_desc()
352 sc->sense_buffer, fnic_queue_wq_copy_desc()
356 int_to_scsilun(sc->device->lun, &fc_lun); fnic_queue_wq_copy_desc()
373 if (sc->sc_data_direction == DMA_FROM_DEVICE) fnic_queue_wq_copy_desc()
375 else if (sc->sc_data_direction == DMA_TO_DEVICE) fnic_queue_wq_copy_desc()
383 fnic_queue_wq_copy_desc_icmnd_16(wq, sc->request->tag, fnic_queue_wq_copy_desc()
392 sc->cmnd, sc->cmd_len, fnic_queue_wq_copy_desc()
393 scsi_bufflen(sc), fnic_queue_wq_copy_desc()
413 static int fnic_queuecommand_lck(struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) fnic_queuecommand_lck() argument
415 struct fc_lport *lp = shost_priv(sc->device->host); fnic_queuecommand_lck()
433 rport = starget_to_rport(scsi_target(sc->device)); fnic_queuecommand_lck()
437 sc->result = ret; fnic_queuecommand_lck()
438 done(sc); fnic_queuecommand_lck()
447 sc->result = DID_NO_CONNECT; fnic_queuecommand_lck()
448 done(sc); fnic_queuecommand_lck()
463 CMD_STATE(sc) = FNIC_IOREQ_NOT_INITED; fnic_queuecommand_lck()
464 CMD_FLAGS(sc) = FNIC_NO_FLAGS; fnic_queuecommand_lck()
476 sg_count = scsi_dma_map(sc); fnic_queuecommand_lck()
478 FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, fnic_queuecommand_lck()
479 sc->request->tag, sc, 0, sc->cmnd[0], fnic_queuecommand_lck()
480 sg_count, CMD_STATE(sc)); fnic_queuecommand_lck()
498 scsi_dma_unmap(sc); fnic_queuecommand_lck()
518 io_lock = fnic_io_lock_hash(fnic, sc); fnic_queuecommand_lck()
525 CMD_STATE(sc) = FNIC_IOREQ_CMD_PENDING; fnic_queuecommand_lck()
526 CMD_SP(sc) = (char *)io_req; fnic_queuecommand_lck()
527 CMD_FLAGS(sc) |= FNIC_IO_INITIALIZED; fnic_queuecommand_lck()
528 sc->scsi_done = done; fnic_queuecommand_lck()
532 ret = fnic_queue_wq_copy_desc(fnic, wq, io_req, sc, sg_count); fnic_queuecommand_lck()
538 FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, fnic_queuecommand_lck()
539 sc->request->tag, sc, 0, 0, 0, fnic_queuecommand_lck()
540 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_queuecommand_lck()
541 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_queuecommand_lck()
542 CMD_SP(sc) = NULL; fnic_queuecommand_lck()
543 CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; fnic_queuecommand_lck()
546 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_queuecommand_lck()
562 CMD_FLAGS(sc) |= FNIC_IO_ISSUED; fnic_queuecommand_lck()
565 cmd_trace = ((u64)sc->cmnd[0] << 56 | (u64)sc->cmnd[7] << 40 | fnic_queuecommand_lck()
566 (u64)sc->cmnd[8] << 32 | (u64)sc->cmnd[2] << 24 | fnic_queuecommand_lck()
567 (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | fnic_queuecommand_lck()
568 sc->cmnd[5]); fnic_queuecommand_lck()
570 FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, fnic_queuecommand_lck()
571 sc->request->tag, sc, io_req, fnic_queuecommand_lck()
573 (((u64)CMD_FLAGS(sc) >> 32) | CMD_STATE(sc))); fnic_queuecommand_lck()
794 struct scsi_cmnd *sc; fnic_fcpio_icmnd_cmpl_handler() local
813 sc = scsi_host_find_tag(fnic->lport->host, id); fnic_fcpio_icmnd_cmpl_handler()
814 WARN_ON_ONCE(!sc); fnic_fcpio_icmnd_cmpl_handler()
815 if (!sc) { fnic_fcpio_icmnd_cmpl_handler()
818 "icmnd_cmpl sc is null - " fnic_fcpio_icmnd_cmpl_handler()
832 io_lock = fnic_io_lock_hash(fnic, sc); fnic_fcpio_icmnd_cmpl_handler()
834 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_fcpio_icmnd_cmpl_handler()
838 CMD_FLAGS(sc) |= FNIC_IO_REQ_NULL; fnic_fcpio_icmnd_cmpl_handler()
842 "hdr status = %s tag = 0x%x sc 0x%p\n", fnic_fcpio_icmnd_cmpl_handler()
843 fnic_fcpio_status_to_str(hdr_status), id, sc); fnic_fcpio_icmnd_cmpl_handler()
855 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { fnic_fcpio_icmnd_cmpl_handler()
857 CMD_FLAGS(sc) |= FNIC_IO_ABTS_PENDING; fnic_fcpio_icmnd_cmpl_handler()
860 CMD_FLAGS(sc) |= FNIC_IO_DONE; fnic_fcpio_icmnd_cmpl_handler()
863 "sc 0x%p scsi_status %x residual %d\n", fnic_fcpio_icmnd_cmpl_handler()
864 fnic_fcpio_status_to_str(hdr_status), sc, fnic_fcpio_icmnd_cmpl_handler()
869 CMD_FLAGS(sc) |= FNIC_IO_ABORTED; fnic_fcpio_icmnd_cmpl_handler()
874 "hdr status = %s tag = 0x%x sc = 0x%p\n", fnic_fcpio_icmnd_cmpl_handler()
876 id, sc); fnic_fcpio_icmnd_cmpl_handler()
883 CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; fnic_fcpio_icmnd_cmpl_handler()
889 sc->result = (DID_OK << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
890 xfer_len = scsi_bufflen(sc); fnic_fcpio_icmnd_cmpl_handler()
891 scsi_set_resid(sc, icmnd_cmpl->residual); fnic_fcpio_icmnd_cmpl_handler()
902 sc->result = (DID_TIME_OUT << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
907 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
912 scsi_set_resid(sc, icmnd_cmpl->residual); fnic_fcpio_icmnd_cmpl_handler()
913 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
918 sc->result = (DID_REQUEUE << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
923 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
928 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
933 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
938 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
947 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; fnic_fcpio_icmnd_cmpl_handler()
957 CMD_SP(sc) = NULL; fnic_fcpio_icmnd_cmpl_handler()
958 CMD_FLAGS(sc) |= FNIC_IO_DONE; fnic_fcpio_icmnd_cmpl_handler()
962 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_fcpio_icmnd_cmpl_handler()
968 (u64)icmnd_cmpl->flags << 40 | (u64)sc->cmnd[0] << 32 | fnic_fcpio_icmnd_cmpl_handler()
969 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | fnic_fcpio_icmnd_cmpl_handler()
970 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]; fnic_fcpio_icmnd_cmpl_handler()
973 sc->device->host->host_no, id, sc, fnic_fcpio_icmnd_cmpl_handler()
978 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_fcpio_icmnd_cmpl_handler()
980 if (sc->sc_data_direction == DMA_FROM_DEVICE) { fnic_fcpio_icmnd_cmpl_handler()
983 } else if (sc->sc_data_direction == DMA_TO_DEVICE) { fnic_fcpio_icmnd_cmpl_handler()
996 if (sc->scsi_done) fnic_fcpio_icmnd_cmpl_handler()
997 sc->scsi_done(sc); fnic_fcpio_icmnd_cmpl_handler()
1010 struct scsi_cmnd *sc; fnic_fcpio_itmf_cmpl_handler() local
1030 sc = scsi_host_find_tag(fnic->lport->host, id & FNIC_TAG_MASK); fnic_fcpio_itmf_cmpl_handler()
1031 WARN_ON_ONCE(!sc); fnic_fcpio_itmf_cmpl_handler()
1032 if (!sc) { fnic_fcpio_itmf_cmpl_handler()
1035 "itmf_cmpl sc is null - hdr status = %s tag = 0x%x\n", fnic_fcpio_itmf_cmpl_handler()
1039 io_lock = fnic_io_lock_hash(fnic, sc); fnic_fcpio_itmf_cmpl_handler()
1041 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_fcpio_itmf_cmpl_handler()
1046 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; fnic_fcpio_itmf_cmpl_handler()
1049 "hdr status = %s tag = 0x%x sc 0x%p\n", fnic_fcpio_itmf_cmpl_handler()
1050 fnic_fcpio_status_to_str(hdr_status), id, sc); fnic_fcpio_itmf_cmpl_handler()
1061 CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; fnic_fcpio_itmf_cmpl_handler()
1062 CMD_ABTS_STATUS(sc) = hdr_status; fnic_fcpio_itmf_cmpl_handler()
1063 CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; fnic_fcpio_itmf_cmpl_handler()
1073 if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) fnic_fcpio_itmf_cmpl_handler()
1080 if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) fnic_fcpio_itmf_cmpl_handler()
1087 if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) fnic_fcpio_itmf_cmpl_handler()
1094 if (CMD_STATE(sc) != FNIC_IOREQ_ABTS_PENDING) { fnic_fcpio_itmf_cmpl_handler()
1099 CMD_ABTS_STATUS(sc) = hdr_status; fnic_fcpio_itmf_cmpl_handler()
1100 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_DONE; fnic_fcpio_itmf_cmpl_handler()
1108 if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE))) fnic_fcpio_itmf_cmpl_handler()
1127 CMD_SP(sc) = NULL; fnic_fcpio_itmf_cmpl_handler()
1128 sc->result = (DID_ERROR << 16); fnic_fcpio_itmf_cmpl_handler()
1132 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_fcpio_itmf_cmpl_handler()
1134 if (sc->scsi_done) { fnic_fcpio_itmf_cmpl_handler()
1136 sc->device->host->host_no, id, fnic_fcpio_itmf_cmpl_handler()
1137 sc, fnic_fcpio_itmf_cmpl_handler()
1141 (u64)sc->cmnd[0] << 32 | fnic_fcpio_itmf_cmpl_handler()
1142 (u64)sc->cmnd[2] << 24 | fnic_fcpio_itmf_cmpl_handler()
1143 (u64)sc->cmnd[3] << 16 | fnic_fcpio_itmf_cmpl_handler()
1144 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), fnic_fcpio_itmf_cmpl_handler()
1145 (((u64)CMD_FLAGS(sc) << 32) | fnic_fcpio_itmf_cmpl_handler()
1146 CMD_STATE(sc))); fnic_fcpio_itmf_cmpl_handler()
1147 sc->scsi_done(sc); fnic_fcpio_itmf_cmpl_handler()
1153 CMD_LR_STATUS(sc) = hdr_status; fnic_fcpio_itmf_cmpl_handler()
1154 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { fnic_fcpio_itmf_cmpl_handler()
1156 CMD_FLAGS(sc) |= FNIC_DEV_RST_ABTS_PENDING; fnic_fcpio_itmf_cmpl_handler()
1158 sc->device->host->host_no, id, sc, fnic_fcpio_itmf_cmpl_handler()
1161 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_fcpio_itmf_cmpl_handler()
1169 if (CMD_FLAGS(sc) & FNIC_DEV_RST_TIMED_OUT) { fnic_fcpio_itmf_cmpl_handler()
1173 sc->device->host->host_no, id, sc, fnic_fcpio_itmf_cmpl_handler()
1176 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_fcpio_itmf_cmpl_handler()
1184 CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; fnic_fcpio_itmf_cmpl_handler()
1185 CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; fnic_fcpio_itmf_cmpl_handler()
1197 fnic_ioreq_state_to_str(CMD_STATE(sc)), id); fnic_fcpio_itmf_cmpl_handler()
1282 struct scsi_cmnd *sc; fnic_cleanup_io() local
1293 sc = scsi_host_find_tag(fnic->lport->host, i); fnic_cleanup_io()
1294 if (!sc) { fnic_cleanup_io()
1299 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_cleanup_io()
1300 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && fnic_cleanup_io()
1301 !(CMD_FLAGS(sc) & FNIC_DEV_RST_DONE)) { fnic_cleanup_io()
1306 CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; fnic_cleanup_io()
1313 } else if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { fnic_cleanup_io()
1322 CMD_SP(sc) = NULL; fnic_cleanup_io()
1331 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_cleanup_io()
1335 sc->result = DID_TRANSPORT_DISRUPTED << 16; fnic_cleanup_io()
1337 "%s: sc duration = %lu DID_TRANSPORT_DISRUPTED\n", fnic_cleanup_io()
1346 if (sc->scsi_done) { fnic_cleanup_io()
1348 sc->device->host->host_no, i, sc, fnic_cleanup_io()
1350 0, ((u64)sc->cmnd[0] << 32 | fnic_cleanup_io()
1351 (u64)sc->cmnd[2] << 24 | fnic_cleanup_io()
1352 (u64)sc->cmnd[3] << 16 | fnic_cleanup_io()
1353 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), fnic_cleanup_io()
1354 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_cleanup_io()
1356 sc->scsi_done(sc); fnic_cleanup_io()
1367 struct scsi_cmnd *sc; fnic_wq_copy_cleanup_handler() local
1379 sc = scsi_host_find_tag(fnic->lport->host, id); fnic_wq_copy_cleanup_handler()
1380 if (!sc) fnic_wq_copy_cleanup_handler()
1383 io_lock = fnic_io_lock_hash(fnic, sc); fnic_wq_copy_cleanup_handler()
1387 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_wq_copy_cleanup_handler()
1396 CMD_SP(sc) = NULL; fnic_wq_copy_cleanup_handler()
1401 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_wq_copy_cleanup_handler()
1405 sc->result = DID_NO_CONNECT << 16; fnic_wq_copy_cleanup_handler()
1409 if (sc->scsi_done) { fnic_wq_copy_cleanup_handler()
1411 sc->device->host->host_no, id, sc, fnic_wq_copy_cleanup_handler()
1413 0, ((u64)sc->cmnd[0] << 32 | fnic_wq_copy_cleanup_handler()
1414 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | fnic_wq_copy_cleanup_handler()
1415 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), fnic_wq_copy_cleanup_handler()
1416 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_wq_copy_cleanup_handler()
1418 sc->scsi_done(sc); fnic_wq_copy_cleanup_handler()
1477 struct scsi_cmnd *sc; fnic_rport_exch_reset() local
1495 sc = scsi_host_find_tag(fnic->lport->host, tag); fnic_rport_exch_reset()
1496 if (!sc) { fnic_rport_exch_reset()
1501 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_rport_exch_reset()
1508 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && fnic_rport_exch_reset()
1509 (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { fnic_rport_exch_reset()
1511 "fnic_rport_exch_reset dev rst not pending sc 0x%p\n", fnic_rport_exch_reset()
1512 sc); fnic_rport_exch_reset()
1521 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { fnic_rport_exch_reset()
1529 fnic_ioreq_state_to_str(CMD_STATE(sc))); fnic_rport_exch_reset()
1532 if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED)) { fnic_rport_exch_reset()
1537 sc, tag, CMD_FLAGS(sc), CMD_STATE(sc)); fnic_rport_exch_reset()
1539 old_ioreq_state = CMD_STATE(sc); fnic_rport_exch_reset()
1540 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; fnic_rport_exch_reset()
1541 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; fnic_rport_exch_reset()
1542 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { fnic_rport_exch_reset()
1546 "fnic_rport_exch_reset dev rst sc 0x%p\n", fnic_rport_exch_reset()
1547 sc); fnic_rport_exch_reset()
1558 int_to_scsilun(sc->device->lun, &fc_lun); fnic_rport_exch_reset()
1570 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) fnic_rport_exch_reset()
1571 CMD_STATE(sc) = old_ioreq_state; fnic_rport_exch_reset()
1575 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) fnic_rport_exch_reset()
1576 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; fnic_rport_exch_reset()
1578 CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; fnic_rport_exch_reset()
1597 struct scsi_cmnd *sc; fnic_terminate_rport_io() local
1640 sc = scsi_host_find_tag(fnic->lport->host, tag); fnic_terminate_rport_io()
1641 if (!sc) { fnic_terminate_rport_io()
1646 cmd_rport = starget_to_rport(scsi_target(sc->device)); fnic_terminate_rport_io()
1652 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_terminate_rport_io()
1659 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && fnic_terminate_rport_io()
1660 (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { fnic_terminate_rport_io()
1662 "fnic_terminate_rport_io dev rst not pending sc 0x%p\n", fnic_terminate_rport_io()
1663 sc); fnic_terminate_rport_io()
1671 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { fnic_terminate_rport_io()
1679 fnic_ioreq_state_to_str(CMD_STATE(sc))); fnic_terminate_rport_io()
1681 if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED)) { fnic_terminate_rport_io()
1686 sc, tag, CMD_FLAGS(sc), CMD_STATE(sc)); fnic_terminate_rport_io()
1688 old_ioreq_state = CMD_STATE(sc); fnic_terminate_rport_io()
1689 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; fnic_terminate_rport_io()
1690 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; fnic_terminate_rport_io()
1691 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { fnic_terminate_rport_io()
1695 "fnic_terminate_rport_io dev rst sc 0x%p\n", sc); fnic_terminate_rport_io()
1707 int_to_scsilun(sc->device->lun, &fc_lun); fnic_terminate_rport_io()
1719 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) fnic_terminate_rport_io()
1720 CMD_STATE(sc) = old_ioreq_state; fnic_terminate_rport_io()
1724 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) fnic_terminate_rport_io()
1725 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; fnic_terminate_rport_io()
1727 CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; fnic_terminate_rport_io()
1743 int fnic_abort_cmd(struct scsi_cmnd *sc) fnic_abort_cmd() argument
1763 fc_block_scsi_eh(sc); fnic_abort_cmd()
1766 lp = shost_priv(sc->device->host); fnic_abort_cmd()
1773 rport = starget_to_rport(scsi_target(sc->device)); fnic_abort_cmd()
1774 tag = sc->request->tag; fnic_abort_cmd()
1778 rport->port_id, sc->device->lun, tag, CMD_FLAGS(sc)); fnic_abort_cmd()
1780 CMD_FLAGS(sc) = FNIC_NO_FLAGS; fnic_abort_cmd()
1799 io_lock = fnic_io_lock_hash(fnic, sc); fnic_abort_cmd()
1801 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_abort_cmd()
1809 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { fnic_abort_cmd()
1819 old_ioreq_state = CMD_STATE(sc); fnic_abort_cmd()
1820 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; fnic_abort_cmd()
1821 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; fnic_abort_cmd()
1838 int_to_scsilun(sc->device->lun, &fc_lun); fnic_abort_cmd()
1840 if (fnic_queue_abort_io_req(fnic, sc->request->tag, task_req, fnic_abort_cmd()
1843 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) fnic_abort_cmd()
1844 CMD_STATE(sc) = old_ioreq_state; fnic_abort_cmd()
1845 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_abort_cmd()
1853 CMD_FLAGS(sc) |= FNIC_IO_ABTS_ISSUED; fnic_abort_cmd()
1856 CMD_FLAGS(sc) |= FNIC_IO_TERM_ISSUED; fnic_abort_cmd()
1874 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_abort_cmd()
1878 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; fnic_abort_cmd()
1885 if (CMD_ABTS_STATUS(sc) == FCPIO_INVALID_CODE) { fnic_abort_cmd()
1892 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_TIMED_OUT; fnic_abort_cmd()
1899 if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE))) { fnic_abort_cmd()
1904 if (fnic_host_reset(sc) == FAILED) { fnic_abort_cmd()
1912 CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; fnic_abort_cmd()
1918 if (CMD_ABTS_STATUS(sc) != FCPIO_SUCCESS) fnic_abort_cmd()
1921 CMD_SP(sc) = NULL; fnic_abort_cmd()
1926 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_abort_cmd()
1930 FNIC_TRACE(fnic_abort_cmd, sc->device->host->host_no, fnic_abort_cmd()
1931 sc->request->tag, sc, fnic_abort_cmd()
1933 0, ((u64)sc->cmnd[0] << 32 | fnic_abort_cmd()
1934 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | fnic_abort_cmd()
1935 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), fnic_abort_cmd()
1936 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_abort_cmd()
1946 struct scsi_cmnd *sc, fnic_queue_dr_io_req()
1979 int_to_scsilun(sc->device->lun, &fc_lun); fnic_queue_dr_io_req()
1981 fnic_queue_wq_copy_desc_itmf(wq, sc->request->tag | FNIC_TAG_DEV_RST, fnic_queue_dr_io_req()
2013 struct scsi_cmnd *sc; fnic_clean_pending_aborts() local
2022 sc = scsi_host_find_tag(fnic->lport->host, tag); fnic_clean_pending_aborts()
2027 if (!sc || sc == lr_sc || sc->device != lun_dev) { fnic_clean_pending_aborts()
2032 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_clean_pending_aborts()
2034 if (!io_req || sc->device != lun_dev) { fnic_clean_pending_aborts()
2045 fnic_ioreq_state_to_str(CMD_STATE(sc))); fnic_clean_pending_aborts()
2047 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { fnic_clean_pending_aborts()
2051 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && fnic_clean_pending_aborts()
2052 (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { fnic_clean_pending_aborts()
2054 "%s dev rst not pending sc 0x%p\n", __func__, fnic_clean_pending_aborts()
2055 sc); fnic_clean_pending_aborts()
2063 __func__, fnic_ioreq_state_to_str(CMD_STATE(sc))); fnic_clean_pending_aborts()
2064 old_ioreq_state = CMD_STATE(sc); fnic_clean_pending_aborts()
2072 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; fnic_clean_pending_aborts()
2077 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { fnic_clean_pending_aborts()
2080 "%s: dev rst sc 0x%p\n", __func__, sc); fnic_clean_pending_aborts()
2083 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; fnic_clean_pending_aborts()
2088 int_to_scsilun(sc->device->lun, &fc_lun); fnic_clean_pending_aborts()
2094 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_clean_pending_aborts()
2097 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) fnic_clean_pending_aborts()
2098 CMD_STATE(sc) = old_ioreq_state; fnic_clean_pending_aborts()
2104 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) fnic_clean_pending_aborts()
2105 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; fnic_clean_pending_aborts()
2108 CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; fnic_clean_pending_aborts()
2116 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_clean_pending_aborts()
2119 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; fnic_clean_pending_aborts()
2126 if (CMD_ABTS_STATUS(sc) == FCPIO_INVALID_CODE) { fnic_clean_pending_aborts()
2128 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_DONE; fnic_clean_pending_aborts()
2132 CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; fnic_clean_pending_aborts()
2133 CMD_SP(sc) = NULL; fnic_clean_pending_aborts()
2136 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_clean_pending_aborts()
2155 fnic_scsi_host_start_tag(struct fnic *fnic, struct scsi_cmnd *sc) fnic_scsi_host_start_tag() argument
2174 bqt->tag_index[tag] = sc->request; fnic_scsi_host_start_tag()
2175 sc->request->tag = tag; fnic_scsi_host_start_tag()
2176 sc->tag = tag; fnic_scsi_host_start_tag()
2177 if (!sc->request->special) fnic_scsi_host_start_tag()
2178 sc->request->special = sc; fnic_scsi_host_start_tag()
2191 fnic_scsi_host_end_tag(struct fnic *fnic, struct scsi_cmnd *sc) fnic_scsi_host_end_tag() argument
2194 int tag = sc->request->tag; fnic_scsi_host_end_tag()
2214 int fnic_device_reset(struct scsi_cmnd *sc) fnic_device_reset() argument
2233 fc_block_scsi_eh(sc); fnic_device_reset()
2236 lp = shost_priv(sc->device->host); fnic_device_reset()
2244 rport = starget_to_rport(scsi_target(sc->device)); fnic_device_reset()
2246 "Device reset called FCID 0x%x, LUN 0x%llx sc 0x%p\n", fnic_device_reset()
2247 rport->port_id, sc->device->lun, sc); fnic_device_reset()
2258 CMD_FLAGS(sc) = FNIC_DEVICE_RESET; fnic_device_reset()
2261 tag = sc->request->tag; fnic_device_reset()
2276 if (shost_use_blk_mq(sc->device->host)) fnic_device_reset()
2279 tag = fnic_scsi_host_start_tag(fnic, sc); fnic_device_reset()
2284 io_lock = fnic_io_lock_hash(fnic, sc); fnic_device_reset()
2286 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2300 CMD_SP(sc) = (char *)io_req; fnic_device_reset()
2303 CMD_STATE(sc) = FNIC_IOREQ_CMD_PENDING; fnic_device_reset()
2304 CMD_LR_STATUS(sc) = FCPIO_INVALID_CODE; fnic_device_reset()
2313 if (fnic_queue_dr_io_req(fnic, sc, io_req)) { fnic_device_reset()
2315 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2321 CMD_FLAGS(sc) |= FNIC_DEV_RST_ISSUED; fnic_device_reset()
2332 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2336 "io_req is null tag 0x%x sc 0x%p\n", tag, sc); fnic_device_reset()
2341 status = CMD_LR_STATUS(sc); fnic_device_reset()
2351 CMD_FLAGS(sc) |= FNIC_DEV_RST_TIMED_OUT; fnic_device_reset()
2353 int_to_scsilun(sc->device->lun, &fc_lun); fnic_device_reset()
2360 if (CMD_FLAGS(sc) & FNIC_DEV_RST_TERM_ISSUED) { fnic_device_reset()
2373 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; fnic_device_reset()
2374 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; fnic_device_reset()
2379 "tag 0x%x sc 0x%p\n", tag, sc); fnic_device_reset()
2385 if (!(CMD_FLAGS(sc) & FNIC_DEV_RST_DONE)) { fnic_device_reset()
2391 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2406 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2417 if (fnic_clean_pending_aborts(fnic, sc)) { fnic_device_reset()
2419 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2428 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_device_reset()
2435 CMD_SP(sc) = NULL; fnic_device_reset()
2441 fnic_release_ioreq_buf(fnic, io_req, sc); fnic_device_reset()
2446 FNIC_TRACE(fnic_device_reset, sc->device->host->host_no, fnic_device_reset()
2447 sc->request->tag, sc, fnic_device_reset()
2449 0, ((u64)sc->cmnd[0] << 32 | fnic_device_reset()
2450 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | fnic_device_reset()
2451 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), fnic_device_reset()
2452 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); fnic_device_reset()
2456 fnic_scsi_host_end_tag(fnic, sc); fnic_device_reset()
2514 int fnic_host_reset(struct scsi_cmnd *sc) fnic_host_reset() argument
2518 struct Scsi_Host *shost = sc->device->host; fnic_host_reset()
2672 struct scsi_cmnd *sc; fnic_is_abts_pending() local
2680 sc = scsi_host_find_tag(fnic->lport->host, tag); fnic_is_abts_pending()
2685 if (!sc || (lr_sc && (sc->device != lun_dev || sc == lr_sc))) fnic_is_abts_pending()
2688 io_lock = fnic_io_lock_hash(fnic, sc); fnic_is_abts_pending()
2691 io_req = (struct fnic_io_req *)CMD_SP(sc); fnic_is_abts_pending()
2693 if (!io_req || sc->device != lun_dev) { fnic_is_abts_pending()
2704 fnic_ioreq_state_to_str(CMD_STATE(sc))); fnic_is_abts_pending()
2706 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) fnic_is_abts_pending()
106 fnic_io_lock_hash(struct fnic *fnic, struct scsi_cmnd *sc) fnic_io_lock_hash() argument
124 fnic_release_ioreq_buf(struct fnic *fnic, struct fnic_io_req *io_req, struct scsi_cmnd *sc) fnic_release_ioreq_buf() argument
317 fnic_queue_wq_copy_desc(struct fnic *fnic, struct vnic_wq_copy *wq, struct fnic_io_req *io_req, struct scsi_cmnd *sc, int sg_count) fnic_queue_wq_copy_desc() argument
1945 fnic_queue_dr_io_req(struct fnic *fnic, struct scsi_cmnd *sc, struct fnic_io_req *io_req) fnic_queue_dr_io_req() argument
/linux-4.1.27/arch/mips/kernel/
H A Dsignal.c44 static int (*save_fp_context)(struct sigcontext __user *sc);
45 static int (*restore_fp_context)(struct sigcontext __user *sc);
47 extern asmlinkage int _save_fp_context(struct sigcontext __user *sc);
48 extern asmlinkage int _restore_fp_context(struct sigcontext __user *sc);
68 static int copy_fp_to_sigcontext(struct sigcontext __user *sc) copy_fp_to_sigcontext() argument
76 &sc->sc_fpregs[i]); copy_fp_to_sigcontext()
78 err |= __put_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); copy_fp_to_sigcontext()
83 static int copy_fp_from_sigcontext(struct sigcontext __user *sc) copy_fp_from_sigcontext() argument
90 err |= __get_user(fpr_val, &sc->sc_fpregs[i]); copy_fp_from_sigcontext()
93 err |= __get_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); copy_fp_from_sigcontext()
101 static int protected_save_fp_context(struct sigcontext __user *sc) protected_save_fp_context() argument
108 err = save_fp_context(sc); protected_save_fp_context()
112 err = copy_fp_to_sigcontext(sc); protected_save_fp_context()
117 err = __put_user(0, &sc->sc_fpregs[0]) | protected_save_fp_context()
118 __put_user(0, &sc->sc_fpregs[31]) | protected_save_fp_context()
119 __put_user(0, &sc->sc_fpc_csr); protected_save_fp_context()
129 err = save_fp_context(sc); /* this might fail */ protected_save_fp_context()
134 static int protected_restore_fp_context(struct sigcontext __user *sc) protected_restore_fp_context() argument
141 err = restore_fp_context(sc); protected_restore_fp_context()
145 err = copy_fp_from_sigcontext(sc); protected_restore_fp_context()
150 err = __get_user(tmp, &sc->sc_fpregs[0]) | protected_restore_fp_context()
151 __get_user(tmp, &sc->sc_fpregs[31]) | protected_restore_fp_context()
152 __get_user(tmp, &sc->sc_fpc_csr); protected_restore_fp_context()
162 err = restore_fp_context(sc); /* this might fail */ protected_restore_fp_context()
167 int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext() argument
173 err |= __put_user(regs->cp0_epc, &sc->sc_pc); setup_sigcontext()
175 err |= __put_user(0, &sc->sc_regs[0]); setup_sigcontext()
177 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); setup_sigcontext()
180 err |= __put_user(regs->acx, &sc->sc_acx); setup_sigcontext()
182 err |= __put_user(regs->hi, &sc->sc_mdhi); setup_sigcontext()
183 err |= __put_user(regs->lo, &sc->sc_mdlo); setup_sigcontext()
185 err |= __put_user(mfhi1(), &sc->sc_hi1); setup_sigcontext()
186 err |= __put_user(mflo1(), &sc->sc_lo1); setup_sigcontext()
187 err |= __put_user(mfhi2(), &sc->sc_hi2); setup_sigcontext()
188 err |= __put_user(mflo2(), &sc->sc_lo2); setup_sigcontext()
189 err |= __put_user(mfhi3(), &sc->sc_hi3); setup_sigcontext()
190 err |= __put_user(mflo3(), &sc->sc_lo3); setup_sigcontext()
191 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); setup_sigcontext()
195 err |= __put_user(used_math, &sc->sc_used_math); setup_sigcontext()
202 err |= protected_save_fp_context(sc); setup_sigcontext()
227 check_and_restore_fp_context(struct sigcontext __user *sc) check_and_restore_fp_context() argument
231 err = sig = fpcsr_pending(&sc->sc_fpc_csr); check_and_restore_fp_context()
234 err |= protected_restore_fp_context(sc); check_and_restore_fp_context()
238 int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
248 err |= __get_user(regs->cp0_epc, &sc->sc_pc); restore_sigcontext()
251 err |= __get_user(regs->acx, &sc->sc_acx); restore_sigcontext()
253 err |= __get_user(regs->hi, &sc->sc_mdhi); restore_sigcontext()
254 err |= __get_user(regs->lo, &sc->sc_mdlo); restore_sigcontext()
256 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg); restore_sigcontext()
257 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg); restore_sigcontext()
258 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg); restore_sigcontext()
259 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg); restore_sigcontext()
260 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg); restore_sigcontext()
261 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg); restore_sigcontext()
262 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK); restore_sigcontext()
266 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); restore_sigcontext()
268 err |= __get_user(used_math, &sc->sc_used_math); restore_sigcontext()
274 err = check_and_restore_fp_context(sc); restore_sigcontext()
633 static int smp_save_fp_context(struct sigcontext __user *sc) smp_save_fp_context() argument
636 ? _save_fp_context(sc) smp_save_fp_context()
637 : copy_fp_to_sigcontext(sc); smp_save_fp_context()
640 static int smp_restore_fp_context(struct sigcontext __user *sc) smp_restore_fp_context() argument
643 ? _restore_fp_context(sc) smp_restore_fp_context()
644 : copy_fp_from_sigcontext(sc); smp_restore_fp_context()
H A Dsignal32.c39 static int (*save_fp_context32)(struct sigcontext32 __user *sc);
40 static int (*restore_fp_context32)(struct sigcontext32 __user *sc);
42 extern asmlinkage int _save_fp_context32(struct sigcontext32 __user *sc);
43 extern asmlinkage int _restore_fp_context32(struct sigcontext32 __user *sc);
81 static int copy_fp_to_sigcontext32(struct sigcontext32 __user *sc) copy_fp_to_sigcontext32() argument
90 &sc->sc_fpregs[i]); copy_fp_to_sigcontext32()
92 err |= __put_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); copy_fp_to_sigcontext32()
97 static int copy_fp_from_sigcontext32(struct sigcontext32 __user *sc) copy_fp_from_sigcontext32() argument
105 err |= __get_user(fpr_val, &sc->sc_fpregs[i]); copy_fp_from_sigcontext32()
108 err |= __get_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); copy_fp_from_sigcontext32()
116 static int protected_save_fp_context32(struct sigcontext32 __user *sc) protected_save_fp_context32() argument
122 err = save_fp_context32(sc); protected_save_fp_context32()
126 err = copy_fp_to_sigcontext32(sc); protected_save_fp_context32()
131 err = __put_user(0, &sc->sc_fpregs[0]) | protected_save_fp_context32()
132 __put_user(0, &sc->sc_fpregs[31]) | protected_save_fp_context32()
133 __put_user(0, &sc->sc_fpc_csr); protected_save_fp_context32()
140 static int protected_restore_fp_context32(struct sigcontext32 __user *sc) protected_restore_fp_context32() argument
146 err = restore_fp_context32(sc); protected_restore_fp_context32()
150 err = copy_fp_from_sigcontext32(sc); protected_restore_fp_context32()
155 err = __get_user(tmp, &sc->sc_fpregs[0]) | protected_restore_fp_context32()
156 __get_user(tmp, &sc->sc_fpregs[31]) | protected_restore_fp_context32()
157 __get_user(tmp, &sc->sc_fpc_csr); protected_restore_fp_context32()
165 struct sigcontext32 __user *sc) setup_sigcontext32()
171 err |= __put_user(regs->cp0_epc, &sc->sc_pc); setup_sigcontext32()
173 err |= __put_user(0, &sc->sc_regs[0]); setup_sigcontext32()
175 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); setup_sigcontext32()
177 err |= __put_user(regs->hi, &sc->sc_mdhi); setup_sigcontext32()
178 err |= __put_user(regs->lo, &sc->sc_mdlo); setup_sigcontext32()
180 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); setup_sigcontext32()
181 err |= __put_user(mfhi1(), &sc->sc_hi1); setup_sigcontext32()
182 err |= __put_user(mflo1(), &sc->sc_lo1); setup_sigcontext32()
183 err |= __put_user(mfhi2(), &sc->sc_hi2); setup_sigcontext32()
184 err |= __put_user(mflo2(), &sc->sc_lo2); setup_sigcontext32()
185 err |= __put_user(mfhi3(), &sc->sc_hi3); setup_sigcontext32()
186 err |= __put_user(mflo3(), &sc->sc_lo3); setup_sigcontext32()
190 err |= __put_user(used_math, &sc->sc_used_math); setup_sigcontext32()
197 err |= protected_save_fp_context32(sc); setup_sigcontext32()
203 check_and_restore_fp_context32(struct sigcontext32 __user *sc) check_and_restore_fp_context32() argument
207 err = sig = fpcsr_pending(&sc->sc_fpc_csr); check_and_restore_fp_context32()
210 err |= protected_restore_fp_context32(sc); check_and_restore_fp_context32()
215 struct sigcontext32 __user *sc) restore_sigcontext32()
225 err |= __get_user(regs->cp0_epc, &sc->sc_pc); restore_sigcontext32()
226 err |= __get_user(regs->hi, &sc->sc_mdhi); restore_sigcontext32()
227 err |= __get_user(regs->lo, &sc->sc_mdlo); restore_sigcontext32()
229 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg); restore_sigcontext32()
230 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg); restore_sigcontext32()
231 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg); restore_sigcontext32()
232 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg); restore_sigcontext32()
233 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg); restore_sigcontext32()
234 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg); restore_sigcontext32()
235 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK); restore_sigcontext32()
239 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); restore_sigcontext32()
241 err |= __get_user(used_math, &sc->sc_used_math); restore_sigcontext32()
247 err = check_and_restore_fp_context32(sc); restore_sigcontext32()
164 setup_sigcontext32(struct pt_regs *regs, struct sigcontext32 __user *sc) setup_sigcontext32() argument
214 restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 __user *sc) restore_sigcontext32() argument
H A Dsyscall.c117 "2: sc %[tmp], (%[addr]) \n" mips_atomic_set()
143 "2: sc %[tmp], (%[addr]) \n" mips_atomic_set()
/linux-4.1.27/arch/hexagon/kernel/
H A Dsignal.c47 static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext() argument
52 err |= copy_to_user(&sc->sc_regs.r0, &regs->r00, setup_sigcontext()
55 err |= __put_user(regs->sa0, &sc->sc_regs.sa0); setup_sigcontext()
56 err |= __put_user(regs->lc0, &sc->sc_regs.lc0); setup_sigcontext()
57 err |= __put_user(regs->sa1, &sc->sc_regs.sa1); setup_sigcontext()
58 err |= __put_user(regs->lc1, &sc->sc_regs.lc1); setup_sigcontext()
59 err |= __put_user(regs->m0, &sc->sc_regs.m0); setup_sigcontext()
60 err |= __put_user(regs->m1, &sc->sc_regs.m1); setup_sigcontext()
61 err |= __put_user(regs->usr, &sc->sc_regs.usr); setup_sigcontext()
62 err |= __put_user(regs->preds, &sc->sc_regs.p3_0); setup_sigcontext()
63 err |= __put_user(regs->gp, &sc->sc_regs.gp); setup_sigcontext()
64 err |= __put_user(regs->ugp, &sc->sc_regs.ugp); setup_sigcontext()
66 err |= __put_user(regs->cs0, &sc->sc_regs.cs0); setup_sigcontext()
67 err |= __put_user(regs->cs1, &sc->sc_regs.cs1); setup_sigcontext()
69 tmp = pt_elr(regs); err |= __put_user(tmp, &sc->sc_regs.pc); setup_sigcontext()
70 tmp = pt_cause(regs); err |= __put_user(tmp, &sc->sc_regs.cause); setup_sigcontext()
71 tmp = pt_badva(regs); err |= __put_user(tmp, &sc->sc_regs.badva); setup_sigcontext()
77 struct sigcontext __user *sc) restore_sigcontext()
82 err |= copy_from_user(&regs->r00, &sc->sc_regs.r0, restore_sigcontext()
85 err |= __get_user(regs->sa0, &sc->sc_regs.sa0); restore_sigcontext()
86 err |= __get_user(regs->lc0, &sc->sc_regs.lc0); restore_sigcontext()
87 err |= __get_user(regs->sa1, &sc->sc_regs.sa1); restore_sigcontext()
88 err |= __get_user(regs->lc1, &sc->sc_regs.lc1); restore_sigcontext()
89 err |= __get_user(regs->m0, &sc->sc_regs.m0); restore_sigcontext()
90 err |= __get_user(regs->m1, &sc->sc_regs.m1); restore_sigcontext()
91 err |= __get_user(regs->usr, &sc->sc_regs.usr); restore_sigcontext()
92 err |= __get_user(regs->preds, &sc->sc_regs.p3_0); restore_sigcontext()
93 err |= __get_user(regs->gp, &sc->sc_regs.gp); restore_sigcontext()
94 err |= __get_user(regs->ugp, &sc->sc_regs.ugp); restore_sigcontext()
96 err |= __get_user(regs->cs0, &sc->sc_regs.cs0); restore_sigcontext()
97 err |= __get_user(regs->cs1, &sc->sc_regs.cs1); restore_sigcontext()
99 err |= __get_user(tmp, &sc->sc_regs.pc); pt_set_elr(regs, tmp); restore_sigcontext()
76 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
/linux-4.1.27/drivers/hid/
H A Dhid-sony.c891 struct sony_sc *sc = hid_get_drvdata(hdev); sony_report_fixup() local
897 if ((sc->quirks & VAIO_RDESC_CONSTANT) && *rsize >= 56 && sony_report_fixup()
914 if ((sc->quirks & DUALSHOCK4_CONTROLLER_USB) && *rsize == 467) { sony_report_fixup()
918 } else if ((sc->quirks & DUALSHOCK4_CONTROLLER_BT) && *rsize == 357) { sony_report_fixup()
924 if (sc->quirks & SIXAXIS_CONTROLLER) sony_report_fixup()
927 if (sc->quirks & PS3REMOTE) sony_report_fixup()
933 static void sixaxis_parse_report(struct sony_sc *sc, __u8 *rd, int size) sixaxis_parse_report() argument
956 spin_lock_irqsave(&sc->lock, flags); sixaxis_parse_report()
957 sc->cable_state = cable_state; sixaxis_parse_report()
958 sc->battery_capacity = battery_capacity; sixaxis_parse_report()
959 sc->battery_charging = battery_charging; sixaxis_parse_report()
960 spin_unlock_irqrestore(&sc->lock, flags); sixaxis_parse_report()
963 static void dualshock4_parse_report(struct sony_sc *sc, __u8 *rd, int size) dualshock4_parse_report() argument
965 struct hid_input *hidinput = list_entry(sc->hdev->inputs.next, dualshock4_parse_report()
976 offset = (sc->quirks & DUALSHOCK4_CONTROLLER_USB) ? 30 : 32; dualshock4_parse_report()
1002 spin_lock_irqsave(&sc->lock, flags); dualshock4_parse_report()
1003 sc->cable_state = cable_state; dualshock4_parse_report()
1004 sc->battery_capacity = battery_capacity; dualshock4_parse_report()
1005 sc->battery_charging = battery_charging; dualshock4_parse_report()
1006 spin_unlock_irqrestore(&sc->lock, flags); dualshock4_parse_report()
1038 struct sony_sc *sc = hid_get_drvdata(hdev); sony_raw_event() local
1044 if ((sc->quirks & SIXAXIS_CONTROLLER) && rd[0] == 0x01 && size == 49) { sony_raw_event()
1050 sixaxis_parse_report(sc, rd, size); sony_raw_event()
1051 } else if (((sc->quirks & DUALSHOCK4_CONTROLLER_USB) && rd[0] == 0x01 && sony_raw_event()
1052 size == 64) || ((sc->quirks & DUALSHOCK4_CONTROLLER_BT) sony_raw_event()
1054 dualshock4_parse_report(sc, rd, size); sony_raw_event()
1064 struct sony_sc *sc = hid_get_drvdata(hdev); sony_mapping() local
1066 if (sc->quirks & BUZZ_CONTROLLER) { sony_mapping()
1089 if (sc->quirks & PS3REMOTE) sony_mapping()
1115 struct sony_sc *sc = hid_get_drvdata(hdev); sony_input_configured() local
1121 if (sc->quirks & DUALSHOCK4_CONTROLLER) { sony_input_configured()
1123 hid_err(sc->hdev, sony_input_configured()
1275 static void sony_set_leds(struct sony_sc *sc, const __u8 *leds, int count) sony_set_leds() argument
1281 if (sc->quirks & BUZZ_CONTROLLER && count == 4) { sony_set_leds()
1282 buzz_set_leds(sc->hdev, leds); sony_set_leds()
1285 sc->led_state[n] = leds[n]; sony_set_leds()
1286 schedule_work(&sc->state_worker); sony_set_leds()
1403 static void sony_leds_remove(struct sony_sc *sc) sony_leds_remove() argument
1408 BUG_ON(!(sc->quirks & SONY_LED_SUPPORT)); sony_leds_remove()
1410 for (n = 0; n < sc->led_count; n++) { sony_leds_remove()
1411 led = sc->leds[n]; sony_leds_remove()
1412 sc->leds[n] = NULL; sony_leds_remove()
1419 sc->led_count = 0; sony_leds_remove()
1422 static int sony_leds_init(struct sony_sc *sc) sony_leds_init() argument
1424 struct hid_device *hdev = sc->hdev; sony_leds_init()
1438 BUG_ON(!(sc->quirks & SONY_LED_SUPPORT)); sony_leds_init()
1440 if (sc->quirks & BUZZ_CONTROLLER) { sony_leds_init()
1441 sc->led_count = 4; sony_leds_init()
1448 } else if (sc->quirks & DUALSHOCK4_CONTROLLER) { sony_leds_init()
1449 dualshock4_set_leds_from_id(sc->device_id, initial_values); sony_leds_init()
1451 sc->led_count = 4; sony_leds_init()
1458 sixaxis_set_leds_from_id(sc->device_id, initial_values); sony_leds_init()
1459 sc->led_count = 4; sony_leds_init()
1471 sony_set_leds(sc, initial_values, sc->led_count); sony_leds_init()
1475 for (n = 0; n < sc->led_count; n++) { sony_leds_init()
1502 sc->leds[n] = led; sony_leds_init()
1507 sc->leds[n] = NULL; sony_leds_init()
1516 sony_leds_remove(sc); sony_leds_init()
1535 struct sony_sc *sc = container_of(work, struct sony_sc, state_worker); sixaxis_state_worker() local
1537 (struct sixaxis_output_report *)sc->output_report_dmabuf; sixaxis_state_worker()
1544 report->rumble.right_motor_on = sc->right ? 1 : 0; sixaxis_state_worker()
1545 report->rumble.left_motor_force = sc->left; sixaxis_state_worker()
1548 report->leds_bitmap |= sc->led_state[0] << 1; sixaxis_state_worker()
1549 report->leds_bitmap |= sc->led_state[1] << 2; sixaxis_state_worker()
1550 report->leds_bitmap |= sc->led_state[2] << 3; sixaxis_state_worker()
1551 report->leds_bitmap |= sc->led_state[3] << 4; sixaxis_state_worker()
1567 if (sc->led_delay_on[n] || sc->led_delay_off[n]) { sixaxis_state_worker()
1568 report->led[3 - n].duty_off = sc->led_delay_off[n]; sixaxis_state_worker()
1569 report->led[3 - n].duty_on = sc->led_delay_on[n]; sixaxis_state_worker()
1573 hid_hw_raw_request(sc->hdev, report->report_id, (__u8 *)report, sixaxis_state_worker()
1580 struct sony_sc *sc = container_of(work, struct sony_sc, state_worker); dualshock4_state_worker() local
1581 struct hid_device *hdev = sc->hdev; dualshock4_state_worker()
1582 __u8 *buf = sc->output_report_dmabuf; dualshock4_state_worker()
1585 if (sc->quirks & DUALSHOCK4_CONTROLLER_USB) { dualshock4_state_worker()
1599 buf[offset++] = sc->right; dualshock4_state_worker()
1600 buf[offset++] = sc->left; dualshock4_state_worker()
1606 if (sc->led_state[3]) { dualshock4_state_worker()
1607 buf[offset++] = sc->led_state[0]; dualshock4_state_worker()
1608 buf[offset++] = sc->led_state[1]; dualshock4_state_worker()
1609 buf[offset++] = sc->led_state[2]; dualshock4_state_worker()
1615 buf[offset++] = sc->led_delay_on[3]; dualshock4_state_worker()
1616 buf[offset++] = sc->led_delay_off[3]; dualshock4_state_worker()
1618 if (sc->quirks & DUALSHOCK4_CONTROLLER_USB) dualshock4_state_worker()
1625 static int sony_allocate_output_report(struct sony_sc *sc) sony_allocate_output_report() argument
1627 if (sc->quirks & SIXAXIS_CONTROLLER) sony_allocate_output_report()
1628 sc->output_report_dmabuf = sony_allocate_output_report()
1631 else if (sc->quirks & DUALSHOCK4_CONTROLLER_BT) sony_allocate_output_report()
1632 sc->output_report_dmabuf = kmalloc(DS4_REPORT_0x11_SIZE, sony_allocate_output_report()
1634 else if (sc->quirks & DUALSHOCK4_CONTROLLER_USB) sony_allocate_output_report()
1635 sc->output_report_dmabuf = kmalloc(DS4_REPORT_0x05_SIZE, sony_allocate_output_report()
1640 if (!sc->output_report_dmabuf) sony_allocate_output_report()
1651 struct sony_sc *sc = hid_get_drvdata(hid); sony_play_effect() local
1656 sc->left = effect->u.rumble.strong_magnitude / 256; sony_play_effect()
1657 sc->right = effect->u.rumble.weak_magnitude / 256; sony_play_effect()
1659 schedule_work(&sc->state_worker); sony_play_effect()
1663 static int sony_init_ff(struct sony_sc *sc) sony_init_ff() argument
1665 struct hid_input *hidinput = list_entry(sc->hdev->inputs.next, sony_init_ff()
1674 static int sony_init_ff(struct sony_sc *sc) sony_init_ff() argument
1685 struct sony_sc *sc = power_supply_get_drvdata(psy); sony_battery_get_property() local
1690 spin_lock_irqsave(&sc->lock, flags); sony_battery_get_property()
1691 battery_charging = sc->battery_charging; sony_battery_get_property()
1692 battery_capacity = sc->battery_capacity; sony_battery_get_property()
1693 cable_state = sc->cable_state; sony_battery_get_property()
1694 spin_unlock_irqrestore(&sc->lock, flags); sony_battery_get_property()
1722 static int sony_battery_probe(struct sony_sc *sc) sony_battery_probe() argument
1724 struct power_supply_config psy_cfg = { .drv_data = sc, }; sony_battery_probe()
1725 struct hid_device *hdev = sc->hdev; sony_battery_probe()
1732 sc->battery_capacity = 100; sony_battery_probe()
1734 sc->battery_desc.properties = sony_battery_props; sony_battery_probe()
1735 sc->battery_desc.num_properties = ARRAY_SIZE(sony_battery_props); sony_battery_probe()
1736 sc->battery_desc.get_property = sony_battery_get_property; sony_battery_probe()
1737 sc->battery_desc.type = POWER_SUPPLY_TYPE_BATTERY; sony_battery_probe()
1738 sc->battery_desc.use_for_apm = 0; sony_battery_probe()
1739 sc->battery_desc.name = kasprintf(GFP_KERNEL, sony_battery_probe()
1741 sc->mac_address); sony_battery_probe()
1742 if (!sc->battery_desc.name) sony_battery_probe()
1745 sc->battery = power_supply_register(&hdev->dev, &sc->battery_desc, sony_battery_probe()
1747 if (IS_ERR(sc->battery)) { sony_battery_probe()
1748 ret = PTR_ERR(sc->battery); sony_battery_probe()
1753 power_supply_powers(sc->battery, &hdev->dev); sony_battery_probe()
1757 kfree(sc->battery_desc.name); sony_battery_probe()
1758 sc->battery_desc.name = NULL; sony_battery_probe()
1762 static void sony_battery_remove(struct sony_sc *sc) sony_battery_remove() argument
1764 if (!sc->battery_desc.name) sony_battery_remove()
1767 power_supply_unregister(sc->battery); sony_battery_remove()
1768 kfree(sc->battery_desc.name); sony_battery_remove()
1769 sc->battery_desc.name = NULL; sony_battery_remove()
1778 static int sony_check_add_dev_list(struct sony_sc *sc) sony_check_add_dev_list() argument
1787 ret = memcmp(sc->mac_address, entry->mac_address, sony_check_add_dev_list()
1788 sizeof(sc->mac_address)); sony_check_add_dev_list()
1791 hid_info(sc->hdev, "controller with MAC address %pMR already connected\n", sony_check_add_dev_list()
1792 sc->mac_address); sony_check_add_dev_list()
1798 list_add(&(sc->list_node), &sony_device_list); sony_check_add_dev_list()
1805 static void sony_remove_dev_list(struct sony_sc *sc) sony_remove_dev_list() argument
1809 if (sc->list_node.next) { sony_remove_dev_list()
1811 list_del(&(sc->list_node)); sony_remove_dev_list()
1816 static int sony_get_bt_devaddr(struct sony_sc *sc) sony_get_bt_devaddr() argument
1821 ret = strlen(sc->hdev->uniq); sony_get_bt_devaddr()
1825 ret = sscanf(sc->hdev->uniq, sony_get_bt_devaddr()
1827 &sc->mac_address[5], &sc->mac_address[4], &sc->mac_address[3], sony_get_bt_devaddr()
1828 &sc->mac_address[2], &sc->mac_address[1], &sc->mac_address[0]); sony_get_bt_devaddr()
1836 static int sony_check_add(struct sony_sc *sc) sony_check_add() argument
1841 if ((sc->quirks & DUALSHOCK4_CONTROLLER_BT) || sony_check_add()
1842 (sc->quirks & SIXAXIS_CONTROLLER_BT)) { sony_check_add()
1849 if (sony_get_bt_devaddr(sc) < 0) { sony_check_add()
1850 hid_warn(sc->hdev, "UNIQ does not contain a MAC address; duplicate check skipped\n"); sony_check_add()
1853 } else if (sc->quirks & DUALSHOCK4_CONTROLLER_USB) { sony_check_add()
1863 ret = hid_hw_raw_request(sc->hdev, 0x81, buf, sony_check_add()
1868 hid_err(sc->hdev, "failed to retrieve feature report 0x81 with the DualShock 4 MAC address\n"); sony_check_add()
1873 memcpy(sc->mac_address, &buf[1], sizeof(sc->mac_address)); sony_check_add()
1874 } else if (sc->quirks & SIXAXIS_CONTROLLER_USB) { sony_check_add()
1884 ret = hid_hw_raw_request(sc->hdev, 0xf2, buf, sony_check_add()
1889 hid_err(sc->hdev, "failed to retrieve feature report 0xf2 with the Sixaxis MAC address\n"); sony_check_add()
1899 sc->mac_address[5-n] = buf[4+n]; sony_check_add()
1904 ret = sony_check_add_dev_list(sc); sony_check_add()
1913 static int sony_set_device_id(struct sony_sc *sc) sony_set_device_id() argument
1921 if ((sc->quirks & SIXAXIS_CONTROLLER) || sony_set_device_id()
1922 (sc->quirks & DUALSHOCK4_CONTROLLER)) { sony_set_device_id()
1926 sc->device_id = -1; sony_set_device_id()
1929 sc->device_id = ret; sony_set_device_id()
1931 sc->device_id = -1; sony_set_device_id()
1937 static void sony_release_device_id(struct sony_sc *sc) sony_release_device_id() argument
1939 if (sc->device_id >= 0) { sony_release_device_id()
1940 ida_simple_remove(&sony_device_id_allocator, sc->device_id); sony_release_device_id()
1941 sc->device_id = -1; sony_release_device_id()
1945 static inline void sony_init_work(struct sony_sc *sc, sony_init_work() argument
1948 if (!sc->worker_initialized) sony_init_work()
1949 INIT_WORK(&sc->state_worker, worker); sony_init_work()
1951 sc->worker_initialized = 1; sony_init_work()
1954 static inline void sony_cancel_work_sync(struct sony_sc *sc) sony_cancel_work_sync() argument
1956 if (sc->worker_initialized) sony_cancel_work_sync()
1957 cancel_work_sync(&sc->state_worker); sony_cancel_work_sync()
1964 struct sony_sc *sc; sony_probe() local
1967 sc = devm_kzalloc(&hdev->dev, sizeof(*sc), GFP_KERNEL); sony_probe()
1968 if (sc == NULL) { sony_probe()
1973 spin_lock_init(&sc->lock); sony_probe()
1975 sc->quirks = quirks; sony_probe()
1976 hid_set_drvdata(hdev, sc); sony_probe()
1977 sc->hdev = hdev; sony_probe()
1985 if (sc->quirks & VAIO_RDESC_CONSTANT) sony_probe()
1987 else if (sc->quirks & SIXAXIS_CONTROLLER) sony_probe()
1996 ret = sony_allocate_output_report(sc); sony_probe()
2002 ret = sony_set_device_id(sc); sony_probe()
2008 if (sc->quirks & SIXAXIS_CONTROLLER_USB) { sony_probe()
2022 sony_init_work(sc, sixaxis_state_worker); sony_probe()
2023 } else if (sc->quirks & SIXAXIS_CONTROLLER_BT) { sony_probe()
2030 sony_init_work(sc, sixaxis_state_worker); sony_probe()
2031 } else if (sc->quirks & DUALSHOCK4_CONTROLLER) { sony_probe()
2032 if (sc->quirks & DUALSHOCK4_CONTROLLER_BT) { sony_probe()
2045 sony_init_work(sc, dualshock4_state_worker); sony_probe()
2053 ret = sony_check_add(sc); sony_probe()
2057 if (sc->quirks & SONY_LED_SUPPORT) { sony_probe()
2058 ret = sony_leds_init(sc); sony_probe()
2063 if (sc->quirks & SONY_BATTERY_SUPPORT) { sony_probe()
2064 ret = sony_battery_probe(sc); sony_probe()
2076 if (sc->quirks & SONY_FF_SUPPORT) { sony_probe()
2077 ret = sony_init_ff(sc); sony_probe()
2086 if (sc->quirks & SONY_LED_SUPPORT) sony_probe()
2087 sony_leds_remove(sc); sony_probe()
2088 if (sc->quirks & SONY_BATTERY_SUPPORT) sony_probe()
2089 sony_battery_remove(sc); sony_probe()
2090 sony_cancel_work_sync(sc); sony_probe()
2091 kfree(sc->output_report_dmabuf); sony_probe()
2092 sony_remove_dev_list(sc); sony_probe()
2093 sony_release_device_id(sc); sony_probe()
2100 struct sony_sc *sc = hid_get_drvdata(hdev); sony_remove() local
2102 if (sc->quirks & SONY_LED_SUPPORT) sony_remove()
2103 sony_leds_remove(sc); sony_remove()
2105 if (sc->quirks & SONY_BATTERY_SUPPORT) { sony_remove()
2107 sony_battery_remove(sc); sony_remove()
2110 sony_cancel_work_sync(sc); sony_remove()
2112 kfree(sc->output_report_dmabuf); sony_remove()
2114 sony_remove_dev_list(sc); sony_remove()
2116 sony_release_device_id(sc); sony_remove()
/linux-4.1.27/drivers/media/pci/cx18/
H A Dcx18-alsa-main.c89 static void snd_cx18_card_private_free(struct snd_card *sc) snd_cx18_card_private_free() argument
91 if (sc == NULL) snd_cx18_card_private_free()
93 snd_cx18_card_free(sc->private_data); snd_cx18_card_private_free()
94 sc->private_data = NULL; snd_cx18_card_private_free()
95 sc->private_free = NULL; snd_cx18_card_private_free()
99 struct snd_card *sc, snd_cx18_card_create()
107 (*cxsc)->sc = sc; snd_cx18_card_create()
109 sc->private_data = *cxsc; snd_cx18_card_create()
110 sc->private_free = snd_cx18_card_private_free; snd_cx18_card_create()
118 struct snd_card *sc = cxsc->sc; snd_cx18_card_set_names() local
120 /* sc->driver is used by alsa-lib's configurator: simple, unique */ snd_cx18_card_set_names()
121 strlcpy(sc->driver, "CX23418", sizeof(sc->driver)); snd_cx18_card_set_names()
123 /* sc->shortname is a symlink in /proc/asound: CX18-M -> cardN */ snd_cx18_card_set_names()
124 snprintf(sc->shortname, sizeof(sc->shortname), "CX18-%d", snd_cx18_card_set_names()
127 /* sc->longname is read from /proc/asound/cards */ snd_cx18_card_set_names()
128 snprintf(sc->longname, sizeof(sc->longname), snd_cx18_card_set_names()
138 struct snd_card *sc = NULL; snd_cx18_init() local
151 THIS_MODULE, 0, &sc); snd_cx18_init()
159 ret = snd_cx18_card_create(v4l2_dev, sc, &cxsc); snd_cx18_init()
183 ret = snd_card_register(sc); snd_cx18_init()
194 if (sc != NULL) snd_cx18_init()
195 snd_card_free(sc); snd_cx18_init()
254 snd_card_free(cxsc->sc); snd_cx18_exit()
98 snd_cx18_card_create(struct v4l2_device *v4l2_dev, struct snd_card *sc, struct snd_cx18_card **cxsc) snd_cx18_card_create() argument
H A Dcx18-alsa-mixer.c164 struct snd_card *sc = cxsc->sc; snd_cx18_mixer_create() local
167 strlcpy(sc->mixername, "CX23418 Mixer", sizeof(sc->mixername)); snd_cx18_mixer_create()
169 ret = snd_ctl_add(sc, snd_ctl_new1(snd_cx18_mixer_tv_vol, cxsc)); snd_cx18_mixer_create()
H A Dcx18-av-core.c299 int hblank, hactive, burst, vblank, vactive, sc; cx18_av_std_setup() local
376 /* sc = 4433618.75 * src_decimation/28636360 * 2^13 */ cx18_av_std_setup()
377 sc = 688700; cx18_av_std_setup()
381 /* sc = 3582056.25 * src_decimation/28636360 * 2^13 */ cx18_av_std_setup()
382 sc = 556422; cx18_av_std_setup()
387 /* sc = 4328130 * src_decimation/28636360 * 2^13 */ cx18_av_std_setup()
388 sc = 672314; cx18_av_std_setup()
437 /* sc = 4433618.75 * src_decimation/28636360 * 2^13 */ cx18_av_std_setup()
438 sc = 688700; cx18_av_std_setup()
443 /* sc = 3575611.49 * src_decimation/28636360 * 2^13 */ cx18_av_std_setup()
444 sc = 555421; cx18_av_std_setup()
448 /* sc = 3579545.45.. * src_decimation/28636360 * 2^13 */ cx18_av_std_setup()
449 sc = 556032; cx18_av_std_setup()
475 tmp = 28636360 * (u64) sc; cx18_av_std_setup()
485 "comb 0x%02x, sc 0x%06x\n", cx18_av_std_setup()
488 comb, sc); cx18_av_std_setup()
518 cx18_av_write(cx, 0x47c, sc); cx18_av_std_setup()
519 cx18_av_write(cx, 0x47d, (sc >> 8) & 0xff); cx18_av_std_setup()
520 cx18_av_write(cx, 0x47e, (sc >> 16) & 0xff); cx18_av_std_setup()
H A Dcx18-alsa.h26 struct snd_card *sc; member in struct:snd_cx18_card
H A Dcx18-alsa-pcm.c329 struct snd_card *sc = cxsc->sc; snd_cx18_pcm_create() local
334 ret = snd_pcm_new(sc, "CX23418 PCM", snd_cx18_pcm_create()
/linux-4.1.27/drivers/media/pci/ivtv/
H A Divtv-alsa-main.c89 static void snd_ivtv_card_private_free(struct snd_card *sc) snd_ivtv_card_private_free() argument
91 if (sc == NULL) snd_ivtv_card_private_free()
93 snd_ivtv_card_free(sc->private_data); snd_ivtv_card_private_free()
94 sc->private_data = NULL; snd_ivtv_card_private_free()
95 sc->private_free = NULL; snd_ivtv_card_private_free()
99 struct snd_card *sc, snd_ivtv_card_create()
107 (*itvsc)->sc = sc; snd_ivtv_card_create()
109 sc->private_data = *itvsc; snd_ivtv_card_create()
110 sc->private_free = snd_ivtv_card_private_free; snd_ivtv_card_create()
118 struct snd_card *sc = itvsc->sc; snd_ivtv_card_set_names() local
120 /* sc->driver is used by alsa-lib's configurator: simple, unique */ snd_ivtv_card_set_names()
121 strlcpy(sc->driver, "CX2341[56]", sizeof(sc->driver)); snd_ivtv_card_set_names()
123 /* sc->shortname is a symlink in /proc/asound: IVTV-M -> cardN */ snd_ivtv_card_set_names()
124 snprintf(sc->shortname, sizeof(sc->shortname), "IVTV-%d", snd_ivtv_card_set_names()
127 /* sc->longname is read from /proc/asound/cards */ snd_ivtv_card_set_names()
128 snprintf(sc->longname, sizeof(sc->longname), snd_ivtv_card_set_names()
138 struct snd_card *sc = NULL; snd_ivtv_init() local
151 THIS_MODULE, 0, &sc); snd_ivtv_init()
159 ret = snd_ivtv_card_create(v4l2_dev, sc, &itvsc); snd_ivtv_init()
191 ret = snd_card_register(sc); snd_ivtv_init()
202 if (sc != NULL) snd_ivtv_init()
203 snd_card_free(sc); snd_ivtv_init()
262 snd_card_free(itvsc->sc); snd_ivtv_exit()
98 snd_ivtv_card_create(struct v4l2_device *v4l2_dev, struct snd_card *sc, struct snd_ivtv_card **itvsc) snd_ivtv_card_create() argument
H A Divtv-alsa-mixer.c164 struct snd_card *sc = itvsc->sc; snd_ivtv_mixer_create() local
167 strlcpy(sc->mixername, "CX2341[56] Mixer", sizeof(sc->mixername)); snd_ivtv_mixer_create()
169 ret = snd_ctl_add(sc, snd_ctl_new1(snd_ivtv_mixer_tv_vol, itvsc)); snd_ivtv_mixer_create()
H A Divtv-alsa.h27 struct snd_card *sc; member in struct:snd_ivtv_card
H A Divtv-alsa-pcm.c336 struct snd_card *sc = itvsc->sc; snd_ivtv_pcm_create() local
341 ret = snd_pcm_new(sc, "CX2341[56] PCM", snd_ivtv_pcm_create()
/linux-4.1.27/net/ceph/
H A Dsnapshot.c61 struct ceph_snap_context *ceph_get_snap_context(struct ceph_snap_context *sc) ceph_get_snap_context() argument
63 if (sc) ceph_get_snap_context()
64 atomic_inc(&sc->nref); ceph_get_snap_context()
65 return sc; ceph_get_snap_context()
69 void ceph_put_snap_context(struct ceph_snap_context *sc) ceph_put_snap_context() argument
71 if (!sc) ceph_put_snap_context()
73 if (atomic_dec_and_test(&sc->nref)) { ceph_put_snap_context()
74 /*printk(" deleting snap_context %p\n", sc);*/ ceph_put_snap_context()
75 kfree(sc); ceph_put_snap_context()
H A Dceph_fs.c13 __u32 sc = le32_to_cpu(layout->fl_stripe_count); ceph_file_layout_is_valid() local
25 if (!sc) ceph_file_layout_is_valid()
/linux-4.1.27/arch/parisc/kernel/
H A Dsignal32.c63 restore_sigcontext32(struct compat_sigcontext __user *sc, struct compat_regfile __user * rf, restore_sigcontext32() argument
74 DBG(2,"restore_sigcontext32: sc = 0x%p, rf = 0x%p, regs = 0x%p\n", sc, rf, regs); restore_sigcontext32()
75 DBG(2,"restore_sigcontext32: compat_sigcontext is %#lx bytes\n", sizeof(*sc)); restore_sigcontext32()
77 err |= __get_user(compat_reg,&sc->sc_gr[regn]); restore_sigcontext32()
85 DBG(2,"restore_sigcontext32: sc->sc_fr = 0x%p (%#lx)\n",sc->sc_fr, sizeof(sc->sc_fr)); restore_sigcontext32()
87 err |= __copy_from_user(regs->fr, sc->sc_fr, sizeof(regs->fr)); restore_sigcontext32()
92 err |= __get_user(compat_reg, &sc->sc_iaoq[0]); restore_sigcontext32()
97 DBG(2,"restore_sigcontext32: sc->sc_iaoq[0] = %p => %#x\n", restore_sigcontext32()
98 &sc->sc_iaoq[0], compat_reg); restore_sigcontext32()
100 err |= __get_user(compat_reg, &sc->sc_iaoq[1]); restore_sigcontext32()
105 DBG(2,"restore_sigcontext32: sc->sc_iaoq[1] = %p => %#x\n", restore_sigcontext32()
106 &sc->sc_iaoq[1],compat_reg); restore_sigcontext32()
110 err |= __get_user(compat_reg, &sc->sc_iasq[0]); restore_sigcontext32()
116 err |= __get_user(compat_reg, &sc->sc_iasq[1]); restore_sigcontext32()
124 err |= __get_user(compat_reg, &sc->sc_sar); restore_sigcontext32()
142 setup_sigcontext32(struct compat_sigcontext __user *sc, struct compat_regfile __user * rf, setup_sigcontext32() argument
151 if (on_sig_stack((unsigned long) sc)) setup_sigcontext32()
162 err |= __put_user(compat_reg, &sc->sc_iaoq[0]); setup_sigcontext32()
163 DBG(2,"setup_sigcontext32: sc->sc_iaoq[0] = %p <= %#x\n", setup_sigcontext32()
164 &sc->sc_iaoq[0], compat_reg); setup_sigcontext32()
173 err |= __put_user(compat_reg, &sc->sc_iaoq[1]); setup_sigcontext32()
174 DBG(2,"setup_sigcontext32: sc->sc_iaoq[1] = %p <= %#x\n", setup_sigcontext32()
175 &sc->sc_iaoq[1], compat_reg); setup_sigcontext32()
183 err |= __put_user(compat_reg, &sc->sc_iasq[0]); setup_sigcontext32()
184 err |= __put_user(compat_reg, &sc->sc_iasq[1]); setup_sigcontext32()
199 err |= __put_user(compat_reg, &sc->sc_iaoq[0]); setup_sigcontext32()
200 DBG(2,"setup_sigcontext32: sc->sc_iaoq[0] = %p <= %#x\n", setup_sigcontext32()
201 &sc->sc_iaoq[0], compat_reg); setup_sigcontext32()
208 err |= __put_user(compat_reg, &sc->sc_iaoq[1]); setup_sigcontext32()
209 DBG(2,"setup_sigcontext32: sc->sc_iaoq[1] = %p <= %#x\n", setup_sigcontext32()
210 &sc->sc_iaoq[1], compat_reg); setup_sigcontext32()
218 err |= __put_user(compat_reg, &sc->sc_iasq[0]); setup_sigcontext32()
219 DBG(2,"setup_sigcontext32: sc->sc_iasq[0] = %p <= %#x\n", setup_sigcontext32()
220 &sc->sc_iasq[0], compat_reg); setup_sigcontext32()
228 err |= __put_user(compat_reg, &sc->sc_iasq[1]); setup_sigcontext32()
229 DBG(2,"setup_sigcontext32: sc->sc_iasq[1] = %p <= %#x\n", setup_sigcontext32()
230 &sc->sc_iasq[1], compat_reg); setup_sigcontext32()
241 err |= __put_user(flags, &sc->sc_flags); setup_sigcontext32()
248 err |= __put_user(compat_reg, &sc->sc_gr[regn]); setup_sigcontext32()
260 DBG(1,"setup_sigcontext32: Copying from regs to sc, " setup_sigcontext32()
261 "sc->sc_fr size = %#lx, regs->fr size = %#lx\n", setup_sigcontext32()
262 sizeof(regs->fr), sizeof(sc->sc_fr)); setup_sigcontext32()
263 err |= __copy_to_user(sc->sc_fr, regs->fr, sizeof(regs->fr)); setup_sigcontext32()
266 err |= __put_user(compat_reg, &sc->sc_sar); setup_sigcontext32()
H A Dsignal.c71 restore_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) restore_sigcontext() argument
75 err |= __copy_from_user(regs->gr, sc->sc_gr, sizeof(regs->gr)); restore_sigcontext()
76 err |= __copy_from_user(regs->fr, sc->sc_fr, sizeof(regs->fr)); restore_sigcontext()
77 err |= __copy_from_user(regs->iaoq, sc->sc_iaoq, sizeof(regs->iaoq)); restore_sigcontext()
78 err |= __copy_from_user(regs->iasq, sc->sc_iasq, sizeof(regs->iasq)); restore_sigcontext()
79 err |= __get_user(regs->sar, &sc->sc_sar); restore_sigcontext()
195 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, int in_syscall) setup_sigcontext() argument
201 if (on_sig_stack((unsigned long) sc)) setup_sigcontext()
206 err |= __put_user(regs->gr[31], &sc->sc_iaoq[0]); setup_sigcontext()
207 err |= __put_user(regs->gr[31]+4, &sc->sc_iaoq[1]); setup_sigcontext()
208 err |= __put_user(regs->sr[3], &sc->sc_iasq[0]); setup_sigcontext()
209 err |= __put_user(regs->sr[3], &sc->sc_iasq[1]); setup_sigcontext()
213 err |= __copy_to_user(sc->sc_iaoq, regs->iaoq, sizeof(regs->iaoq)); setup_sigcontext()
214 err |= __copy_to_user(sc->sc_iasq, regs->iasq, sizeof(regs->iasq)); setup_sigcontext()
219 err |= __put_user(flags, &sc->sc_flags); setup_sigcontext()
220 err |= __copy_to_user(sc->sc_gr, regs->gr, sizeof(regs->gr)); setup_sigcontext()
221 err |= __copy_to_user(sc->sc_fr, regs->fr, sizeof(regs->fr)); setup_sigcontext()
222 err |= __put_user(regs->sar, &sc->sc_sar); setup_sigcontext()
H A Dsignal32.h84 long restore_sigcontext32(struct compat_sigcontext __user *sc,
87 long setup_sigcontext32(struct compat_sigcontext __user *sc,
/linux-4.1.27/drivers/net/ethernet/broadcom/
H A Dsb1250-mac.c286 static int sbdma_add_rcvbuffer(struct sbmac_softc *sc, struct sbmacdma *d,
290 static void sbdma_fillring(struct sbmac_softc *sc, struct sbmacdma *d);
291 static int sbdma_rx_process(struct sbmac_softc *sc, struct sbmacdma *d,
293 static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d,
300 static void sbmac_promiscuous_mode(struct sbmac_softc *sc, int onoff);
304 static void sbmac_setmulti(struct sbmac_softc *sc);
437 struct sbmac_softc *sc = (struct sbmac_softc *)bus->priv; sbmac_mii_read() local
438 void __iomem *sbm_mdio = sc->sbm_mdio; sbmac_mii_read()
531 struct sbmac_softc *sc = (struct sbmac_softc *)bus->priv; sbmac_mii_write() local
532 void __iomem *sbm_mdio = sc->sbm_mdio; sbmac_mii_write()
775 * sc - softc structure
785 static int sbdma_add_rcvbuffer(struct sbmac_softc *sc, struct sbmacdma *d, sbdma_add_rcvbuffer() argument
788 struct net_device *dev = sc->sbm_dev; sbdma_add_rcvbuffer()
1012 * sc - softc structure
1019 static void sbdma_fillring(struct sbmac_softc *sc, struct sbmacdma *d) sbdma_fillring() argument
1024 if (sbdma_add_rcvbuffer(sc, d, NULL) != 0) sbdma_fillring()
1032 struct sbmac_softc *sc = netdev_priv(netdev); sbmac_netpoll() local
1033 int irq = sc->sbm_dev->irq; sbmac_netpoll()
1035 __raw_writeq(0, sc->sbm_imr); sbmac_netpoll()
1042 sc->sbm_imr); sbmac_netpoll()
1045 (M_MAC_INT_CHANNEL << S_MAC_RX_CH0), sc->sbm_imr); sbmac_netpoll()
1051 * SBDMA_RX_PROCESS(sc,d,work_to_do,poll)
1056 * sc - softc structure
1066 static int sbdma_rx_process(struct sbmac_softc *sc, struct sbmacdma *d, sbdma_rx_process() argument
1069 struct net_device *dev = sc->sbm_dev; sbdma_rx_process()
1083 += __raw_readq(sc->sbm_rxdma.sbdma_oodpktlost) & 0xffff; sbdma_rx_process()
1084 __raw_writeq(0, sc->sbm_rxdma.sbdma_oodpktlost); sbdma_rx_process()
1140 if (unlikely(sbdma_add_rcvbuffer(sc, d, NULL) == sbdma_rx_process()
1144 sbdma_add_rcvbuffer(sc, d, sb); sbdma_rx_process()
1162 if (sc->rx_hw_checksum == ENABLE) { sbdma_rx_process()
1194 sbdma_add_rcvbuffer(sc, d, sb); sbdma_rx_process()
1214 * SBDMA_TX_PROCESS(sc,d)
1223 * sc - softc structure
1231 static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d, sbdma_tx_process() argument
1234 struct net_device *dev = sc->sbm_dev; sbdma_tx_process()
1242 spin_lock_irqsave(&(sc->sbm_lock), flags); sbdma_tx_process()
1314 spin_unlock_irqrestore(&(sc->sbm_lock), flags); sbdma_tx_process()
1383 static void sbmac_uninitctx(struct sbmac_softc *sc) sbmac_uninitctx() argument
1385 sbdma_uninitctx(&(sc->sbm_txdma)); sbmac_uninitctx()
1386 sbdma_uninitctx(&(sc->sbm_rxdma)); sbmac_uninitctx()
1667 static enum sbmac_state sbmac_set_channel_state(struct sbmac_softc *sc, sbmac_set_channel_state() argument
1670 enum sbmac_state oldstate = sc->sbm_state; sbmac_set_channel_state()
1685 sbmac_channel_start(sc); sbmac_set_channel_state()
1688 sbmac_channel_stop(sc); sbmac_set_channel_state()
1700 * SBMAC_PROMISCUOUS_MODE(sc,onoff)
1705 * sc - softc
1712 static void sbmac_promiscuous_mode(struct sbmac_softc *sc,int onoff) sbmac_promiscuous_mode() argument
1716 if (sc->sbm_state != sbmac_state_on) sbmac_promiscuous_mode()
1720 reg = __raw_readq(sc->sbm_rxfilter); sbmac_promiscuous_mode()
1722 __raw_writeq(reg, sc->sbm_rxfilter); sbmac_promiscuous_mode()
1725 reg = __raw_readq(sc->sbm_rxfilter); sbmac_promiscuous_mode()
1727 __raw_writeq(reg, sc->sbm_rxfilter); sbmac_promiscuous_mode()
1732 * SBMAC_SETIPHDR_OFFSET(sc,onoff)
1737 * sc - softc
1743 static void sbmac_set_iphdr_offset(struct sbmac_softc *sc) sbmac_set_iphdr_offset() argument
1748 reg = __raw_readq(sc->sbm_rxfilter); sbmac_set_iphdr_offset()
1750 __raw_writeq(reg, sc->sbm_rxfilter); sbmac_set_iphdr_offset()
1755 sc->rx_hw_checksum = DISABLE; sbmac_set_iphdr_offset()
1757 sc->rx_hw_checksum = ENABLE; sbmac_set_iphdr_offset()
1995 struct sbmac_softc *sc = netdev_priv(dev); sbmac_intr() local
2004 isr = __raw_readq(sc->sbm_isr) & ~M_MAC_COUNTER_ADDR; sbmac_intr()
2015 sbdma_tx_process(sc,&(sc->sbm_txdma), 0); sbmac_intr()
2018 if (napi_schedule_prep(&sc->napi)) { sbmac_intr()
2019 __raw_writeq(0, sc->sbm_imr); sbmac_intr()
2020 __napi_schedule(&sc->napi); sbmac_intr()
2025 sbdma_rx_process(sc,&(sc->sbm_rxdma), sbmac_intr()
2047 struct sbmac_softc *sc = netdev_priv(dev); sbmac_start_tx() local
2051 spin_lock_irqsave(&sc->sbm_lock, flags); sbmac_start_tx()
2058 if (sbdma_add_txbuffer(&(sc->sbm_txdma),skb)) { sbmac_start_tx()
2061 spin_unlock_irqrestore(&sc->sbm_lock, flags); sbmac_start_tx()
2066 spin_unlock_irqrestore(&sc->sbm_lock, flags); sbmac_start_tx()
2072 * SBMAC_SETMULTI(sc)
2079 * sc - softc
2085 static void sbmac_setmulti(struct sbmac_softc *sc) sbmac_setmulti() argument
2091 struct net_device *dev = sc->sbm_dev; sbmac_setmulti()
2100 port = sc->sbm_base + R_MAC_ADDR_BASE+(idx*sizeof(uint64_t)); sbmac_setmulti()
2105 port = sc->sbm_base + R_MAC_HASH_BASE+(idx*sizeof(uint64_t)); sbmac_setmulti()
2113 reg = __raw_readq(sc->sbm_rxfilter); sbmac_setmulti()
2115 __raw_writeq(reg, sc->sbm_rxfilter); sbmac_setmulti()
2122 reg = __raw_readq(sc->sbm_rxfilter); sbmac_setmulti()
2124 __raw_writeq(reg, sc->sbm_rxfilter); sbmac_setmulti()
2143 port = sc->sbm_base + R_MAC_ADDR_BASE+(idx * sizeof(uint64_t)); netdev_for_each_mc_addr()
2154 reg = __raw_readq(sc->sbm_rxfilter);
2156 __raw_writeq(reg, sc->sbm_rxfilter);
2200 struct sbmac_softc *sc = netdev_priv(dev); sbmac_init() local
2206 sc->sbm_dev = dev; sbmac_init()
2207 sc->sbe_idx = idx; sbmac_init()
2209 eaddr = sc->sbm_hwaddr; sbmac_init()
2216 ea_reg = __raw_readq(sc->sbm_base + R_MAC_ETHERNET_ADDR); sbmac_init()
2217 __raw_writeq(0, sc->sbm_base + R_MAC_ETHERNET_ADDR); sbmac_init()
2232 sbmac_initctx(sc); sbmac_init()
2238 spin_lock_init(&(sc->sbm_lock)); sbmac_init()
2243 netif_napi_add(dev, &sc->napi, sbmac_poll, 16); sbmac_init()
2248 sbmac_set_iphdr_offset(sc); sbmac_init()
2250 sc->mii_bus = mdiobus_alloc(); sbmac_init()
2251 if (sc->mii_bus == NULL) { sbmac_init()
2256 sc->mii_bus->name = sbmac_mdio_string; sbmac_init()
2257 snprintf(sc->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x", sbmac_init()
2259 sc->mii_bus->priv = sc; sbmac_init()
2260 sc->mii_bus->read = sbmac_mii_read; sbmac_init()
2261 sc->mii_bus->write = sbmac_mii_write; sbmac_init()
2262 sc->mii_bus->irq = sc->phy_irq; sbmac_init()
2264 sc->mii_bus->irq[i] = SBMAC_PHY_INT; sbmac_init()
2266 sc->mii_bus->parent = &pldev->dev; sbmac_init()
2270 err = mdiobus_register(sc->mii_bus); sbmac_init()
2276 platform_set_drvdata(pldev, sc->mii_bus); sbmac_init()
2287 if (sc->rx_hw_checksum == ENABLE) sbmac_init()
2300 mdiobus_unregister(sc->mii_bus); sbmac_init()
2302 mdiobus_free(sc->mii_bus); sbmac_init()
2304 sbmac_uninitctx(sc); sbmac_init()
2311 struct sbmac_softc *sc = netdev_priv(dev); sbmac_open() local
2323 __raw_readq(sc->sbm_isr); sbmac_open()
2331 sc->sbm_speed = sbmac_speed_none; sbmac_open()
2332 sc->sbm_duplex = sbmac_duplex_none; sbmac_open()
2333 sc->sbm_fc = sbmac_fc_none; sbmac_open()
2334 sc->sbm_pause = -1; sbmac_open()
2335 sc->sbm_link = 0; sbmac_open()
2348 sbmac_set_channel_state(sc,sbmac_state_on); sbmac_open()
2354 phy_start(sc->phy_dev); sbmac_open()
2356 napi_enable(&sc->napi); sbmac_open()
2368 struct sbmac_softc *sc = netdev_priv(dev); sbmac_mii_probe() local
2373 phy_dev = sc->mii_bus->phy_map[i]; sbmac_mii_probe()
2406 sc->phy_dev = phy_dev; sbmac_mii_probe()
2414 struct sbmac_softc *sc = netdev_priv(dev); sbmac_mii_poll() local
2415 struct phy_device *phy_dev = sc->phy_dev; sbmac_mii_poll()
2420 link_chg = (sc->sbm_link != phy_dev->link); sbmac_mii_poll()
2421 speed_chg = (sc->sbm_speed != phy_dev->speed); sbmac_mii_poll()
2422 duplex_chg = (sc->sbm_duplex != phy_dev->duplex); sbmac_mii_poll()
2423 pause_chg = (sc->sbm_pause != phy_dev->pause); sbmac_mii_poll()
2430 sc->sbm_link = phy_dev->link; sbmac_mii_poll()
2431 sc->sbm_speed = sbmac_speed_none; sbmac_mii_poll()
2432 sc->sbm_duplex = sbmac_duplex_none; sbmac_mii_poll()
2433 sc->sbm_fc = sbmac_fc_disabled; sbmac_mii_poll()
2434 sc->sbm_pause = -1; sbmac_mii_poll()
2447 fc_chg = (sc->sbm_fc != fc); sbmac_mii_poll()
2452 spin_lock_irqsave(&sc->sbm_lock, flags); sbmac_mii_poll()
2454 sc->sbm_speed = phy_dev->speed; sbmac_mii_poll()
2455 sc->sbm_duplex = phy_dev->duplex; sbmac_mii_poll()
2456 sc->sbm_fc = fc; sbmac_mii_poll()
2457 sc->sbm_pause = phy_dev->pause; sbmac_mii_poll()
2458 sc->sbm_link = phy_dev->link; sbmac_mii_poll()
2461 sc->sbm_state != sbmac_state_off) { sbmac_mii_poll()
2468 sbmac_channel_stop(sc); sbmac_mii_poll()
2469 sbmac_channel_start(sc); sbmac_mii_poll()
2472 spin_unlock_irqrestore(&sc->sbm_lock, flags); sbmac_mii_poll()
2478 struct sbmac_softc *sc = netdev_priv(dev); sbmac_tx_timeout() local
2481 spin_lock_irqsave(&sc->sbm_lock, flags); sbmac_tx_timeout()
2487 spin_unlock_irqrestore(&sc->sbm_lock, flags); sbmac_tx_timeout()
2498 struct sbmac_softc *sc = netdev_priv(dev); sbmac_set_rx_mode() local
2500 spin_lock_irqsave(&sc->sbm_lock, flags); sbmac_set_rx_mode()
2501 if ((dev->flags ^ sc->sbm_devflags) & IFF_PROMISC) { sbmac_set_rx_mode()
2507 sbmac_promiscuous_mode(sc,1); sbmac_set_rx_mode()
2510 sbmac_promiscuous_mode(sc,0); sbmac_set_rx_mode()
2513 spin_unlock_irqrestore(&sc->sbm_lock, flags); sbmac_set_rx_mode()
2519 sbmac_setmulti(sc); sbmac_set_rx_mode()
2525 struct sbmac_softc *sc = netdev_priv(dev); sbmac_mii_ioctl() local
2527 if (!netif_running(dev) || !sc->phy_dev) sbmac_mii_ioctl()
2530 return phy_mii_ioctl(sc->phy_dev, rq, cmd); sbmac_mii_ioctl()
2535 struct sbmac_softc *sc = netdev_priv(dev); sbmac_close() local
2537 napi_disable(&sc->napi); sbmac_close()
2539 phy_stop(sc->phy_dev); sbmac_close()
2541 sbmac_set_channel_state(sc, sbmac_state_off); sbmac_close()
2548 phy_disconnect(sc->phy_dev); sbmac_close()
2549 sc->phy_dev = NULL; sbmac_close()
2552 sbdma_emptyring(&(sc->sbm_txdma)); sbmac_close()
2553 sbdma_emptyring(&(sc->sbm_rxdma)); sbmac_close()
2560 struct sbmac_softc *sc = container_of(napi, struct sbmac_softc, napi); sbmac_poll() local
2563 work_done = sbdma_rx_process(sc, &(sc->sbm_rxdma), budget, 1); sbmac_poll()
2564 sbdma_tx_process(sc, &(sc->sbm_txdma), 1); sbmac_poll()
2572 sc->sbm_imr); sbmac_poll()
2575 (M_MAC_INT_CHANNEL << S_MAC_RX_CH0), sc->sbm_imr); sbmac_poll()
2586 struct sbmac_softc *sc; sbmac_probe() local
2627 sc = netdev_priv(dev); sbmac_probe()
2628 sc->sbm_base = sbm_base; sbmac_probe()
2650 struct sbmac_softc *sc = netdev_priv(dev); sbmac_remove() local
2653 sbmac_uninitctx(sc); sbmac_remove()
2654 mdiobus_unregister(sc->mii_bus); sbmac_remove()
2655 mdiobus_free(sc->mii_bus); sbmac_remove()
2656 iounmap(sc->sbm_base); sbmac_remove()
/linux-4.1.27/arch/ia64/kernel/
H A Dsignal.c43 restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr) restore_sigcontext() argument
52 err = __get_user(flags, &sc->sc_flags); restore_sigcontext()
53 err |= __get_user(nat, &sc->sc_nat); restore_sigcontext()
54 err |= __get_user(ip, &sc->sc_ip); /* instruction pointer */ restore_sigcontext()
55 err |= __get_user(cfm, &sc->sc_cfm); restore_sigcontext()
56 err |= __get_user(um, &sc->sc_um); /* user mask */ restore_sigcontext()
57 err |= __get_user(rsc, &sc->sc_ar_rsc); restore_sigcontext()
58 err |= __get_user(scr->pt.ar_unat, &sc->sc_ar_unat); restore_sigcontext()
59 err |= __get_user(scr->pt.ar_fpsr, &sc->sc_ar_fpsr); restore_sigcontext()
60 err |= __get_user(scr->pt.ar_pfs, &sc->sc_ar_pfs); restore_sigcontext()
61 err |= __get_user(scr->pt.pr, &sc->sc_pr); /* predicates */ restore_sigcontext()
62 err |= __get_user(scr->pt.b0, &sc->sc_br[0]); /* b0 (rp) */ restore_sigcontext()
63 err |= __get_user(scr->pt.b6, &sc->sc_br[6]); /* b6 */ restore_sigcontext()
64 err |= __copy_from_user(&scr->pt.r1, &sc->sc_gr[1], 8); /* r1 */ restore_sigcontext()
65 err |= __copy_from_user(&scr->pt.r8, &sc->sc_gr[8], 4*8); /* r8-r11 */ restore_sigcontext()
66 err |= __copy_from_user(&scr->pt.r12, &sc->sc_gr[12], 2*8); /* r12-r13 */ restore_sigcontext()
67 err |= __copy_from_user(&scr->pt.r15, &sc->sc_gr[15], 8); /* r15 */ restore_sigcontext()
81 err |= __get_user(scr->pt.ar_ccv, &sc->sc_ar_ccv); /* ar.ccv */ restore_sigcontext()
82 err |= __get_user(scr->pt.b7, &sc->sc_br[7]); /* b7 */ restore_sigcontext()
83 err |= __get_user(scr->pt.r14, &sc->sc_gr[14]); /* r14 */ restore_sigcontext()
84 err |= __copy_from_user(&scr->pt.ar_csd, &sc->sc_ar25, 2*8); /* ar.csd & ar.ssd */ restore_sigcontext()
85 err |= __copy_from_user(&scr->pt.r2, &sc->sc_gr[2], 2*8); /* r2-r3 */ restore_sigcontext()
86 err |= __copy_from_user(&scr->pt.r16, &sc->sc_gr[16], 16*8); /* r16-r31 */ restore_sigcontext()
92 err |= __copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16); restore_sigcontext()
164 struct sigcontext __user *sc; ia64_rt_sigreturn() local
169 sc = &((struct sigframe __user *) (scr->pt.r12 + 16))->sc; ia64_rt_sigreturn()
188 if (!access_ok(VERIFY_READ, sc, sizeof(*sc))) ia64_rt_sigreturn()
191 if (GET_SIGSET(&set, &sc->sc_mask)) ia64_rt_sigreturn()
196 if (restore_sigcontext(sc, scr)) ia64_rt_sigreturn()
203 if (restore_altstack(&sc->sc_stack)) ia64_rt_sigreturn()
213 si.si_addr = sc; ia64_rt_sigreturn()
225 setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr) setup_sigcontext() argument
232 if (on_sig_stack((unsigned long) sc)) setup_sigcontext()
241 err = __copy_to_user(&sc->sc_fr[32], current->thread.fph, 96*16); setup_sigcontext()
246 err |= __put_user(flags, &sc->sc_flags); setup_sigcontext()
247 err |= __put_user(nat, &sc->sc_nat); setup_sigcontext()
248 err |= PUT_SIGSET(mask, &sc->sc_mask); setup_sigcontext()
249 err |= __put_user(cfm, &sc->sc_cfm); setup_sigcontext()
250 err |= __put_user(scr->pt.cr_ipsr & IA64_PSR_UM, &sc->sc_um); setup_sigcontext()
251 err |= __put_user(scr->pt.ar_rsc, &sc->sc_ar_rsc); setup_sigcontext()
252 err |= __put_user(scr->pt.ar_unat, &sc->sc_ar_unat); /* ar.unat */ setup_sigcontext()
253 err |= __put_user(scr->pt.ar_fpsr, &sc->sc_ar_fpsr); /* ar.fpsr */ setup_sigcontext()
254 err |= __put_user(scr->pt.ar_pfs, &sc->sc_ar_pfs); setup_sigcontext()
255 err |= __put_user(scr->pt.pr, &sc->sc_pr); /* predicates */ setup_sigcontext()
256 err |= __put_user(scr->pt.b0, &sc->sc_br[0]); /* b0 (rp) */ setup_sigcontext()
257 err |= __put_user(scr->pt.b6, &sc->sc_br[6]); /* b6 */ setup_sigcontext()
258 err |= __copy_to_user(&sc->sc_gr[1], &scr->pt.r1, 8); /* r1 */ setup_sigcontext()
259 err |= __copy_to_user(&sc->sc_gr[8], &scr->pt.r8, 4*8); /* r8-r11 */ setup_sigcontext()
260 err |= __copy_to_user(&sc->sc_gr[12], &scr->pt.r12, 2*8); /* r12-r13 */ setup_sigcontext()
261 err |= __copy_to_user(&sc->sc_gr[15], &scr->pt.r15, 8); /* r15 */ setup_sigcontext()
262 err |= __put_user(scr->pt.cr_iip + ia64_psr(&scr->pt)->ri, &sc->sc_ip); setup_sigcontext()
266 err |= __put_user(scr->pt.ar_ccv, &sc->sc_ar_ccv); /* ar.ccv */ setup_sigcontext()
267 err |= __put_user(scr->pt.b7, &sc->sc_br[7]); /* b7 */ setup_sigcontext()
268 err |= __put_user(scr->pt.r14, &sc->sc_gr[14]); /* r14 */ setup_sigcontext()
269 err |= __copy_to_user(&sc->sc_ar25, &scr->pt.ar_csd, 2*8); /* ar.csd & ar.ssd */ setup_sigcontext()
270 err |= __copy_to_user(&sc->sc_gr[2], &scr->pt.r2, 2*8); /* r2-r3 */ setup_sigcontext()
271 err |= __copy_to_user(&sc->sc_gr[16], &scr->pt.r16, 16*8); /* r16-r31 */ setup_sigcontext()
360 err |= __put_user(&frame->sc, &frame->arg2); setup_frame()
361 err |= __put_user(new_rbs, &frame->sc.sc_rbs_base); setup_frame()
362 err |= __put_user(0, &frame->sc.sc_loadrs); /* initialize to zero */ setup_frame()
367 err |= __save_altstack(&frame->sc.sc_stack, scr->pt.r12); setup_frame()
368 err |= setup_sigcontext(&frame->sc, set, scr); setup_frame()
396 current->comm, current->pid, ksig->sig, scr->pt.r12, frame->sc.sc_ip, frame->handler); setup_frame()
H A Dsigframe.h22 struct sigcontext sc; member in struct:sigframe
/linux-4.1.27/arch/x86/include/asm/
H A Dsighandling.h16 int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc);
17 int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
H A Dsigframe.h26 struct sigcontext_ia32 sc; member in struct:sigframe_ia32
/linux-4.1.27/drivers/scsi/
H A Dvirtio_scsi.c39 struct scsi_cmnd *sc; member in struct:virtio_scsi_cmd
129 static void virtscsi_compute_resid(struct scsi_cmnd *sc, u32 resid) virtscsi_compute_resid() argument
134 if (!scsi_bidi_cmnd(sc)) { virtscsi_compute_resid()
135 scsi_set_resid(sc, resid); virtscsi_compute_resid()
139 scsi_in(sc)->resid = min(resid, scsi_in(sc)->length); virtscsi_compute_resid()
140 scsi_out(sc)->resid = resid - scsi_in(sc)->resid; virtscsi_compute_resid()
151 struct scsi_cmnd *sc = cmd->sc; virtscsi_complete_cmd() local
154 scsi_target(sc->device)->hostdata; virtscsi_complete_cmd()
156 dev_dbg(&sc->device->sdev_gendev, virtscsi_complete_cmd()
158 sc, resp->response, resp->status, resp->sense_len); virtscsi_complete_cmd()
160 sc->result = resp->status; virtscsi_complete_cmd()
161 virtscsi_compute_resid(sc, virtio32_to_cpu(vscsi->vdev, resp->resid)); virtscsi_complete_cmd()
164 set_host_byte(sc, DID_OK); virtscsi_complete_cmd()
167 set_host_byte(sc, DID_ERROR); virtscsi_complete_cmd()
170 set_host_byte(sc, DID_ABORT); virtscsi_complete_cmd()
173 set_host_byte(sc, DID_BAD_TARGET); virtscsi_complete_cmd()
176 set_host_byte(sc, DID_RESET); virtscsi_complete_cmd()
179 set_host_byte(sc, DID_BUS_BUSY); virtscsi_complete_cmd()
182 set_host_byte(sc, DID_TRANSPORT_DISRUPTED); virtscsi_complete_cmd()
185 set_host_byte(sc, DID_TARGET_FAILURE); virtscsi_complete_cmd()
188 set_host_byte(sc, DID_NEXUS_FAILURE); virtscsi_complete_cmd()
191 scmd_printk(KERN_WARNING, sc, "Unknown response %d", virtscsi_complete_cmd()
195 set_host_byte(sc, DID_ERROR); virtscsi_complete_cmd()
201 if (sc->sense_buffer) { virtscsi_complete_cmd()
202 memcpy(sc->sense_buffer, resp->sense, virtscsi_complete_cmd()
207 set_driver_byte(sc, DRIVER_SENSE); virtscsi_complete_cmd()
210 sc->scsi_done(sc); virtscsi_complete_cmd()
429 struct scsi_cmnd *sc = cmd->sc; virtscsi_add_cmd() local
436 if (sc && sc->sc_data_direction != DMA_NONE) { virtscsi_add_cmd()
437 if (sc->sc_data_direction != DMA_FROM_DEVICE) virtscsi_add_cmd()
438 out = &scsi_out(sc)->table; virtscsi_add_cmd()
439 if (sc->sc_data_direction != DMA_TO_DEVICE) virtscsi_add_cmd()
440 in = &scsi_in(sc)->table; virtscsi_add_cmd()
450 if (scsi_prot_sg_count(sc)) virtscsi_add_cmd()
451 sgs[out_num++] = scsi_prot_sglist(sc); virtscsi_add_cmd()
462 if (scsi_prot_sg_count(sc)) virtscsi_add_cmd()
463 sgs[out_num + in_num++] = scsi_prot_sglist(sc); virtscsi_add_cmd()
492 struct scsi_cmnd *sc) virtio_scsi_init_hdr()
495 cmd->lun[1] = sc->device->id; virtio_scsi_init_hdr()
496 cmd->lun[2] = (sc->device->lun >> 8) | 0x40; virtio_scsi_init_hdr()
497 cmd->lun[3] = sc->device->lun & 0xff; virtio_scsi_init_hdr()
498 cmd->tag = cpu_to_virtio64(vdev, (unsigned long)sc); virtio_scsi_init_hdr()
506 struct scsi_cmnd *sc) virtio_scsi_init_hdr_pi()
508 struct request *rq = sc->request; virtio_scsi_init_hdr_pi()
511 virtio_scsi_init_hdr(vdev, (struct virtio_scsi_cmd_req *)cmd_pi, sc); virtio_scsi_init_hdr_pi()
513 if (!rq || !scsi_prot_sg_count(sc)) virtio_scsi_init_hdr_pi()
518 if (sc->sc_data_direction == DMA_TO_DEVICE) virtio_scsi_init_hdr_pi()
522 else if (sc->sc_data_direction == DMA_FROM_DEVICE) virtio_scsi_init_hdr_pi()
530 struct scsi_cmnd *sc) virtscsi_queuecommand()
533 struct virtio_scsi_cmd *cmd = scsi_cmd_priv(sc); virtscsi_queuecommand()
536 BUG_ON(scsi_sg_count(sc) > shost->sg_tablesize); virtscsi_queuecommand()
539 BUG_ON(sc->sc_data_direction == DMA_BIDIRECTIONAL); virtscsi_queuecommand()
541 dev_dbg(&sc->device->sdev_gendev, virtscsi_queuecommand()
542 "cmd %p CDB: %#02x\n", sc, sc->cmnd[0]); virtscsi_queuecommand()
545 cmd->sc = sc; virtscsi_queuecommand()
547 BUG_ON(sc->cmd_len > VIRTIO_SCSI_CDB_SIZE); virtscsi_queuecommand()
550 virtio_scsi_init_hdr_pi(vscsi->vdev, &cmd->req.cmd_pi, sc); virtscsi_queuecommand()
551 memcpy(cmd->req.cmd_pi.cdb, sc->cmnd, sc->cmd_len); virtscsi_queuecommand()
554 virtio_scsi_init_hdr(vscsi->vdev, &cmd->req.cmd, sc); virtscsi_queuecommand()
555 memcpy(cmd->req.cmd.cdb, sc->cmnd, sc->cmd_len); virtscsi_queuecommand()
565 struct scsi_cmnd *sc) virtscsi_queuecommand_single()
569 scsi_target(sc->device)->hostdata; virtscsi_queuecommand_single()
572 return virtscsi_queuecommand(vscsi, &vscsi->req_vqs[0], sc); virtscsi_queuecommand_single()
576 struct scsi_cmnd *sc) virtscsi_pick_vq_mq()
578 u32 tag = blk_mq_unique_tag(sc->request); virtscsi_pick_vq_mq()
622 struct scsi_cmnd *sc) virtscsi_queuecommand_multi()
626 scsi_target(sc->device)->hostdata; virtscsi_queuecommand_multi()
630 req_vq = virtscsi_pick_vq_mq(vscsi, sc); virtscsi_queuecommand_multi()
634 return virtscsi_queuecommand(vscsi, req_vq, sc); virtscsi_queuecommand_multi()
658 * In the abort case, sc->scsi_done will do nothing, because virtscsi_tmf()
669 static int virtscsi_device_reset(struct scsi_cmnd *sc) virtscsi_device_reset() argument
671 struct virtio_scsi *vscsi = shost_priv(sc->device->host); virtscsi_device_reset()
674 sdev_printk(KERN_INFO, sc->device, "device reset\n"); virtscsi_device_reset()
680 cmd->sc = sc; virtscsi_device_reset()
686 .lun[1] = sc->device->id, virtscsi_device_reset()
687 .lun[2] = (sc->device->lun >> 8) | 0x40, virtscsi_device_reset()
688 .lun[3] = sc->device->lun & 0xff, virtscsi_device_reset()
706 static int virtscsi_abort(struct scsi_cmnd *sc) virtscsi_abort() argument
708 struct virtio_scsi *vscsi = shost_priv(sc->device->host); virtscsi_abort()
711 scmd_printk(KERN_INFO, sc, "abort\n"); virtscsi_abort()
717 cmd->sc = sc; virtscsi_abort()
722 .lun[1] = sc->device->id, virtscsi_abort()
723 .lun[2] = (sc->device->lun >> 8) | 0x40, virtscsi_abort()
724 .lun[3] = sc->device->lun & 0xff, virtscsi_abort()
725 .tag = cpu_to_virtio64(vscsi->vdev, (unsigned long)sc), virtscsi_abort()
490 virtio_scsi_init_hdr(struct virtio_device *vdev, struct virtio_scsi_cmd_req *cmd, struct scsi_cmnd *sc) virtio_scsi_init_hdr() argument
504 virtio_scsi_init_hdr_pi(struct virtio_device *vdev, struct virtio_scsi_cmd_req_pi *cmd_pi, struct scsi_cmnd *sc) virtio_scsi_init_hdr_pi() argument
528 virtscsi_queuecommand(struct virtio_scsi *vscsi, struct virtio_scsi_vq *req_vq, struct scsi_cmnd *sc) virtscsi_queuecommand() argument
564 virtscsi_queuecommand_single(struct Scsi_Host *sh, struct scsi_cmnd *sc) virtscsi_queuecommand_single() argument
575 virtscsi_pick_vq_mq(struct virtio_scsi *vscsi, struct scsi_cmnd *sc) virtscsi_pick_vq_mq() argument
621 virtscsi_queuecommand_multi(struct Scsi_Host *sh, struct scsi_cmnd *sc) virtscsi_queuecommand_multi() argument
H A Dlibiscsi.c185 struct scsi_cmnd *cmd = task->sc; iscsi_prep_ecdb_ahs()
222 struct scsi_cmnd *sc = task->sc; iscsi_prep_bidi_ahs() local
236 rlen_ahdr->read_length = cpu_to_be32(scsi_in(sc)->length); iscsi_prep_bidi_ahs()
277 if (hdr_lun != task->sc->device->lun) iscsi_check_tmf_restrictions()
339 struct scsi_cmnd *sc = task->sc; iscsi_prep_scsi_cmd_pdu() local
369 int_to_scsilun(sc->device->lun, &hdr->lun); iscsi_prep_scsi_cmd_pdu()
372 cmd_len = sc->cmd_len; iscsi_prep_scsi_cmd_pdu()
381 memcpy(hdr->cdb, sc->cmnd, cmd_len); iscsi_prep_scsi_cmd_pdu()
384 if (scsi_bidi_cmnd(sc)) { iscsi_prep_scsi_cmd_pdu()
391 if (scsi_get_prot_op(sc) != SCSI_PROT_NORMAL) iscsi_prep_scsi_cmd_pdu()
394 transfer_length = scsi_transfer_length(sc); iscsi_prep_scsi_cmd_pdu()
396 if (sc->sc_data_direction == DMA_TO_DEVICE) { iscsi_prep_scsi_cmd_pdu()
443 if (sc->sc_data_direction == DMA_FROM_DEVICE) iscsi_prep_scsi_cmd_pdu()
464 ISCSI_DBG_SESSION(session, "iscsi prep [%s cid %d sc %p cdb 0x%x " iscsi_prep_scsi_cmd_pdu()
466 scsi_bidi_cmnd(sc) ? "bidirectional" : iscsi_prep_scsi_cmd_pdu()
467 sc->sc_data_direction == DMA_TO_DEVICE ? iscsi_prep_scsi_cmd_pdu()
468 "write" : "read", conn->id, sc, sc->cmnd[0], iscsi_prep_scsi_cmd_pdu()
470 scsi_bidi_cmnd(sc) ? scsi_in(sc)->length : 0, iscsi_prep_scsi_cmd_pdu()
488 struct scsi_cmnd *sc = task->sc; iscsi_free_task() local
491 ISCSI_DBG_SESSION(session, "freeing task itt 0x%x state %d sc %p\n", iscsi_free_task()
492 task->itt, task->state, task->sc); iscsi_free_task()
496 task->sc = NULL; iscsi_free_task()
505 if (sc) { iscsi_free_task()
507 sc->SCp.ptr = NULL; iscsi_free_task()
510 * it will decide how to return sc to scsi-ml. iscsi_free_task()
513 sc->scsi_done(sc); iscsi_free_task()
553 "complete task itt 0x%x state %d sc %p\n", iscsi_complete_task()
554 task->itt, task->state, task->sc); iscsi_complete_task()
609 struct scsi_cmnd *sc; fail_scsi_task() local
617 sc = task->sc; fail_scsi_task()
618 if (!sc) fail_scsi_task()
634 sc->result = err << 16; fail_scsi_task()
635 if (!scsi_bidi_cmnd(sc)) fail_scsi_task()
636 scsi_set_resid(sc, scsi_bufflen(sc)); fail_scsi_task()
638 scsi_out(sc)->resid = scsi_out(sc)->length; fail_scsi_task()
639 scsi_in(sc)->resid = scsi_in(sc)->length; fail_scsi_task()
749 task->sc = NULL; __iscsi_conn_send_pdu()
832 struct scsi_cmnd *sc = task->sc; iscsi_scsi_cmd_rsp() local
837 sc->result = (DID_OK << 16) | rhdr->cmd_status; iscsi_scsi_cmd_rsp()
852 sc->result = DRIVER_SENSE << 24 | iscsi_scsi_cmd_rsp()
854 scsi_build_sense_buffer(1, sc->sense_buffer, iscsi_scsi_cmd_rsp()
856 sc->sense_buffer[7] = 0xc; /* Additional sense length */ iscsi_scsi_cmd_rsp()
857 sc->sense_buffer[8] = 0; /* Information desc type */ iscsi_scsi_cmd_rsp()
858 sc->sense_buffer[9] = 0xa; /* Additional desc length */ iscsi_scsi_cmd_rsp()
859 sc->sense_buffer[10] = 0x80; /* Validity bit */ iscsi_scsi_cmd_rsp()
861 put_unaligned_be64(sector, &sc->sense_buffer[12]); iscsi_scsi_cmd_rsp()
867 sc->result = DID_ERROR << 16; iscsi_scsi_cmd_rsp()
879 sc->result = DID_BAD_TARGET << 16; iscsi_scsi_cmd_rsp()
887 memcpy(sc->sense_buffer, data + 2, iscsi_scsi_cmd_rsp()
898 if (scsi_bidi_cmnd(sc) && res_count > 0 && iscsi_scsi_cmd_rsp()
900 res_count <= scsi_in(sc)->length)) iscsi_scsi_cmd_rsp()
901 scsi_in(sc)->resid = res_count; iscsi_scsi_cmd_rsp()
903 sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status; iscsi_scsi_cmd_rsp()
912 res_count <= scsi_bufflen(sc))) iscsi_scsi_cmd_rsp()
914 scsi_set_resid(sc, res_count); iscsi_scsi_cmd_rsp()
916 sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status; iscsi_scsi_cmd_rsp()
919 ISCSI_DBG_SESSION(session, "cmd rsp done [sc %p res %d itt 0x%x]\n", iscsi_scsi_cmd_rsp()
920 sc, sc->result, task->itt); iscsi_scsi_cmd_rsp()
936 struct scsi_cmnd *sc = task->sc; iscsi_data_in_rsp() local
942 sc->result = (DID_OK << 16) | rhdr->cmd_status; iscsi_data_in_rsp()
950 res_count <= scsi_in(sc)->length)) iscsi_data_in_rsp()
951 scsi_in(sc)->resid = res_count; iscsi_data_in_rsp()
953 sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status; iscsi_data_in_rsp()
957 "[sc %p res %d itt 0x%x]\n", iscsi_data_in_rsp()
958 sc, sc->result, task->itt); iscsi_data_in_rsp()
1356 if (!task || !task->sc) iscsi_itt_to_ctask()
1359 if (task->sc->SCp.phase != conn->session->age) { iscsi_itt_to_ctask()
1362 task->sc->SCp.phase, conn->session->age); iscsi_itt_to_ctask()
1608 struct scsi_cmnd *sc) iscsi_alloc_task()
1616 sc->SCp.phase = conn->session->age; iscsi_alloc_task()
1617 sc->SCp.ptr = (char *) task; iscsi_alloc_task()
1622 task->sc = sc; iscsi_alloc_task()
1644 int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc) iscsi_queuecommand() argument
1653 sc->result = 0; iscsi_queuecommand()
1654 sc->SCp.ptr = NULL; iscsi_queuecommand()
1658 cls_session = starget_to_session(scsi_target(sc->device)); iscsi_queuecommand()
1664 sc->result = reason; iscsi_queuecommand()
1679 sc->result = DID_IMM_RETRY << 16; iscsi_queuecommand()
1683 sc->result = DID_IMM_RETRY << 16; iscsi_queuecommand()
1687 sc->result = DID_TRANSPORT_FAILFAST << 16; iscsi_queuecommand()
1691 sc->result = DID_NO_CONNECT << 16; iscsi_queuecommand()
1695 sc->result = DID_NO_CONNECT << 16; iscsi_queuecommand()
1703 sc->result = DID_NO_CONNECT << 16; iscsi_queuecommand()
1709 sc->result = DID_REQUEUE; iscsi_queuecommand()
1718 task = iscsi_alloc_task(conn, sc); iscsi_queuecommand()
1731 sc->result = DID_ABORT << 16; iscsi_queuecommand()
1754 sc->cmnd[0], reason); iscsi_queuecommand()
1762 sc->cmnd[0], reason); iscsi_queuecommand()
1763 if (!scsi_bidi_cmnd(sc)) iscsi_queuecommand()
1764 scsi_set_resid(sc, scsi_bufflen(sc)); iscsi_queuecommand()
1766 scsi_out(sc)->resid = scsi_out(sc)->length; iscsi_queuecommand()
1767 scsi_in(sc)->resid = scsi_in(sc)->length; iscsi_queuecommand()
1769 sc->scsi_done(sc); iscsi_queuecommand()
1860 if (!task->sc || task->state == ISCSI_TASK_FREE) fail_scsi_tasks()
1863 if (lun != -1 && lun != task->sc->device->lun) fail_scsi_tasks()
1867 "failing sc %p itt 0x%x state %d\n", fail_scsi_tasks()
1868 task->sc, task->itt, task->state); fail_scsi_tasks()
1933 static enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc) iscsi_eh_cmd_timed_out() argument
1942 cls_session = starget_to_session(scsi_target(sc->device)); iscsi_eh_cmd_timed_out()
1945 ISCSI_DBG_EH(session, "scsi cmd %p timedout\n", sc); iscsi_eh_cmd_timed_out()
1948 task = (struct iscsi_task *)sc->SCp.ptr; iscsi_eh_cmd_timed_out()
2004 if (!running_task->sc || running_task == task || iscsi_eh_cmd_timed_out()
2012 if (time_after(running_task->sc->jiffies_at_alloc, iscsi_eh_cmd_timed_out()
2013 task->sc->jiffies_at_alloc)) iscsi_eh_cmd_timed_out()
2121 int iscsi_eh_abort(struct scsi_cmnd *sc) iscsi_eh_abort() argument
2130 cls_session = starget_to_session(scsi_target(sc->device)); iscsi_eh_abort()
2133 ISCSI_DBG_EH(session, "aborting sc %p\n", sc); iscsi_eh_abort()
2141 if (!sc->SCp.ptr) { iscsi_eh_abort()
2142 ISCSI_DBG_EH(session, "sc never reached iscsi layer or " iscsi_eh_abort()
2154 sc->SCp.phase != session->age) { iscsi_eh_abort()
2166 task = (struct iscsi_task *)sc->SCp.ptr; iscsi_eh_abort()
2167 ISCSI_DBG_EH(session, "aborting [sc %p itt 0x%x]\n", iscsi_eh_abort()
2168 sc, task->itt); iscsi_eh_abort()
2171 if (!task->sc) { iscsi_eh_abort()
2172 ISCSI_DBG_EH(session, "sc completed while abort in progress\n"); iscsi_eh_abort()
2219 if (!sc->SCp.ptr) { iscsi_eh_abort()
2223 ISCSI_DBG_EH(session, "sc completed while abort in " iscsi_eh_abort()
2236 ISCSI_DBG_EH(session, "abort success [sc %p itt 0x%x]\n", iscsi_eh_abort()
2237 sc, task->itt); iscsi_eh_abort()
2244 ISCSI_DBG_EH(session, "abort failed [sc %p itt 0x%x]\n", sc, iscsi_eh_abort()
2251 static void iscsi_prep_lun_reset_pdu(struct scsi_cmnd *sc, struct iscsi_tm *hdr) iscsi_prep_lun_reset_pdu() argument
2257 int_to_scsilun(sc->device->lun, &hdr->lun); iscsi_prep_lun_reset_pdu()
2261 int iscsi_eh_device_reset(struct scsi_cmnd *sc) iscsi_eh_device_reset() argument
2269 cls_session = starget_to_session(scsi_target(sc->device)); iscsi_eh_device_reset()
2272 ISCSI_DBG_EH(session, "LU Reset [sc %p lun %llu]\n", sc, iscsi_eh_device_reset()
2273 sc->device->lun); iscsi_eh_device_reset()
2291 iscsi_prep_lun_reset_pdu(sc, hdr); iscsi_eh_device_reset()
2318 fail_scsi_tasks(conn, sc->device->lun, DID_ERROR); iscsi_eh_device_reset()
2351 * @sc: scsi command
2356 int iscsi_eh_session_reset(struct scsi_cmnd *sc) iscsi_eh_session_reset() argument
2362 cls_session = starget_to_session(scsi_target(sc->device)); iscsi_eh_session_reset()
2409 static void iscsi_prep_tgt_reset_pdu(struct scsi_cmnd *sc, struct iscsi_tm *hdr) iscsi_prep_tgt_reset_pdu() argument
2420 * @sc: scsi command
2424 int iscsi_eh_target_reset(struct scsi_cmnd *sc) iscsi_eh_target_reset() argument
2432 cls_session = starget_to_session(scsi_target(sc->device)); iscsi_eh_target_reset()
2435 ISCSI_DBG_EH(session, "tgt Reset [sc %p tgt %s]\n", sc, iscsi_eh_target_reset()
2454 iscsi_prep_tgt_reset_pdu(sc, hdr); iscsi_eh_target_reset()
2500 * @sc: scsi command
2505 int iscsi_eh_recover_target(struct scsi_cmnd *sc) iscsi_eh_recover_target() argument
2509 rc = iscsi_eh_target_reset(sc); iscsi_eh_recover_target()
2511 rc = iscsi_eh_session_reset(sc); iscsi_eh_recover_target()
3057 if (task->sc) fail_mgmt_tasks()
1607 iscsi_alloc_task(struct iscsi_conn *conn, struct scsi_cmnd *sc) iscsi_alloc_task() argument
H A Dxen-scsifront.c96 struct scsi_cmnd *sc; member in struct:vscsifrnt_shadow
209 if (s->sc->sc_data_direction == DMA_NONE) scsifront_gnttab_done()
227 struct scsi_cmnd *sc; scsifront_cdb_cmd_done() local
232 sc = info->shadow[id]->sc; scsifront_cdb_cmd_done()
234 BUG_ON(sc == NULL); scsifront_cdb_cmd_done()
239 sc->result = ring_rsp->rslt; scsifront_cdb_cmd_done()
240 scsi_set_resid(sc, ring_rsp->residual_len); scsifront_cdb_cmd_done()
246 memcpy(sc->sense_buffer, ring_rsp->sense_buffer, sense_len); scsifront_cdb_cmd_done()
248 sc->scsi_done(sc); scsifront_cdb_cmd_done()
368 struct scsi_cmnd *sc, map_data_for_request()
375 int grant_ro = (sc->sc_data_direction == DMA_TO_DEVICE); map_data_for_request()
377 unsigned int data_len = scsi_bufflen(sc); map_data_for_request()
384 if (sc->sc_data_direction == DMA_NONE || !data_len) map_data_for_request()
387 scsi_for_each_sg(sc, sg, scsi_sg_count(sc), i) map_data_for_request()
440 scsi_for_each_sg(sc, sg, scsi_sg_count(sc), i) { scsi_for_each_sg()
485 struct vscsifrnt_info *info, struct scsi_cmnd *sc, scsifront_command2ring()
499 ring_req->id = sc->device->id; scsifront_command2ring()
500 ring_req->lun = sc->device->lun; scsifront_command2ring()
501 ring_req->channel = sc->device->channel; scsifront_command2ring()
502 ring_req->cmd_len = sc->cmd_len; scsifront_command2ring()
504 BUG_ON(sc->cmd_len > VSCSIIF_MAX_COMMAND_SIZE); scsifront_command2ring()
506 memcpy(ring_req->cmnd, sc->cmnd, sc->cmd_len); scsifront_command2ring()
508 ring_req->sc_data_direction = (uint8_t)sc->sc_data_direction; scsifront_command2ring()
509 ring_req->timeout_per_command = sc->request->timeout / HZ; scsifront_command2ring()
536 struct scsi_cmnd *sc) scsifront_queuecommand()
540 struct vscsifrnt_shadow *shadow = scsi_cmd_priv(sc); scsifront_queuecommand()
553 ring_req = scsifront_command2ring(info, sc, shadow); scsifront_queuecommand()
557 sc->result = 0; scsifront_queuecommand()
562 shadow->sc = sc; scsifront_queuecommand()
565 err = map_data_for_request(info, sc, ring_req, shadow); scsifront_queuecommand()
573 sc->result = DID_ERROR << 16; scsifront_queuecommand()
574 sc->scsi_done(sc); scsifront_queuecommand()
596 static int scsifront_action_handler(struct scsi_cmnd *sc, uint8_t act) scsifront_action_handler() argument
598 struct Scsi_Host *host = sc->device->host; scsifront_action_handler()
600 struct vscsifrnt_shadow *shadow, *s = scsi_cmd_priv(sc); scsifront_action_handler()
612 ring_req = scsifront_command2ring(info, sc, shadow); scsifront_action_handler()
664 static int scsifront_eh_abort_handler(struct scsi_cmnd *sc) scsifront_eh_abort_handler() argument
667 return scsifront_action_handler(sc, VSCSIIF_ACT_SCSI_ABORT); scsifront_eh_abort_handler()
670 static int scsifront_dev_reset_handler(struct scsi_cmnd *sc) scsifront_dev_reset_handler() argument
673 return scsifront_action_handler(sc, VSCSIIF_ACT_SCSI_RESET); scsifront_dev_reset_handler()
367 map_data_for_request(struct vscsifrnt_info *info, struct scsi_cmnd *sc, struct vscsiif_request *ring_req, struct vscsifrnt_shadow *shadow) map_data_for_request() argument
484 scsifront_command2ring( struct vscsifrnt_info *info, struct scsi_cmnd *sc, struct vscsifrnt_shadow *shadow) scsifront_command2ring() argument
535 scsifront_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *sc) scsifront_queuecommand() argument
H A Dlibiscsi_tcp.c457 if (!task->sc) iscsi_tcp_cleanup_task()
489 unsigned total_in_length = scsi_in(task->sc)->length; iscsi_tcp_data_in()
554 if (!task->sc || session->state != ISCSI_STATE_LOGGED_IN) { iscsi_tcp_r2t_rsp()
574 if (data_offset + data_length > scsi_out(task->sc)->length) { iscsi_tcp_r2t_rsp()
578 data_offset, scsi_out(task->sc)->length); iscsi_tcp_r2t_rsp()
690 struct scsi_data_buffer *sdb = scsi_in(task->sc); iscsi_tcp_hdr_dissect()
737 else if (task->sc->sc_data_direction == DMA_TO_DEVICE) { iscsi_tcp_hdr_dissect()
955 * @sc: scsi command
961 struct scsi_cmnd *sc = task->sc; iscsi_tcp_task_init() local
964 if (!sc) { iscsi_tcp_task_init()
1047 if (!task->sc) { iscsi_tcp_task_xmit()
1054 if (task->sc->sc_data_direction != DMA_TO_DEVICE) iscsi_tcp_task_xmit()
/linux-4.1.27/arch/m68k/include/asm/
H A Dstring.h10 const char *sc = s; strnlen() local
19 : "+a" (sc), "+d" (count)); strnlen()
20 return sc - s; strnlen()
/linux-4.1.27/drivers/target/loopback/
H A Dtcm_loop.c117 struct scsi_cmnd *sc = tl_cmd->sc; tcm_loop_submission_work() local
125 tl_hba = *(struct tcm_loop_hba **)shost_priv(sc->device->host); tcm_loop_submission_work()
126 tl_tpg = &tl_hba->tl_hba_tpgs[sc->device->id]; tcm_loop_submission_work()
129 * Ensure that this tl_tpg reference from the incoming sc->device->id tcm_loop_submission_work()
133 set_host_byte(sc, DID_NO_CONNECT); tcm_loop_submission_work()
137 set_host_byte(sc, DID_TRANSPORT_DISRUPTED); tcm_loop_submission_work()
142 scmd_printk(KERN_ERR, sc, "TCM_Loop I_T Nexus" tcm_loop_submission_work()
144 set_host_byte(sc, DID_ERROR); tcm_loop_submission_work()
147 if (scsi_bidi_cmnd(sc)) { tcm_loop_submission_work()
148 struct scsi_data_buffer *sdb = scsi_in(sc); tcm_loop_submission_work()
156 transfer_length = scsi_transfer_length(sc); tcm_loop_submission_work()
157 if (!scsi_prot_sg_count(sc) && tcm_loop_submission_work()
158 scsi_get_prot_op(sc) != SCSI_PROT_NORMAL) { tcm_loop_submission_work()
165 transfer_length = scsi_bufflen(sc); tcm_loop_submission_work()
168 rc = target_submit_cmd_map_sgls(se_cmd, tl_nexus->se_sess, sc->cmnd, tcm_loop_submission_work()
169 &tl_cmd->tl_sense_buf[0], tl_cmd->sc->device->lun, tcm_loop_submission_work()
171 sc->sc_data_direction, 0, tcm_loop_submission_work()
172 scsi_sglist(sc), scsi_sg_count(sc), tcm_loop_submission_work()
174 scsi_prot_sglist(sc), scsi_prot_sg_count(sc)); tcm_loop_submission_work()
176 set_host_byte(sc, DID_NO_CONNECT); tcm_loop_submission_work()
183 sc->scsi_done(sc); tcm_loop_submission_work()
191 static int tcm_loop_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *sc) tcm_loop_queuecommand() argument
196 " scsi_buf_len: %u\n", sc->device->host->host_no, tcm_loop_queuecommand()
197 sc->device->id, sc->device->channel, sc->device->lun, tcm_loop_queuecommand()
198 sc->cmnd[0], scsi_bufflen(sc)); tcm_loop_queuecommand()
203 set_host_byte(sc, DID_ERROR); tcm_loop_queuecommand()
204 sc->scsi_done(sc); tcm_loop_queuecommand()
208 tl_cmd->sc = sc; tcm_loop_queuecommand()
209 tl_cmd->sc_cmd_tag = sc->request->tag; tcm_loop_queuecommand()
297 static int tcm_loop_abort_task(struct scsi_cmnd *sc) tcm_loop_abort_task() argument
306 tl_hba = *(struct tcm_loop_hba **)shost_priv(sc->device->host); tcm_loop_abort_task()
307 tl_tpg = &tl_hba->tl_hba_tpgs[sc->device->id]; tcm_loop_abort_task()
308 ret = tcm_loop_issue_tmr(tl_tpg, sc->device->lun, tcm_loop_abort_task()
309 sc->request->tag, TMR_ABORT_TASK); tcm_loop_abort_task()
317 static int tcm_loop_device_reset(struct scsi_cmnd *sc) tcm_loop_device_reset() argument
326 tl_hba = *(struct tcm_loop_hba **)shost_priv(sc->device->host); tcm_loop_device_reset()
327 tl_tpg = &tl_hba->tl_hba_tpgs[sc->device->id]; tcm_loop_device_reset()
329 ret = tcm_loop_issue_tmr(tl_tpg, sc->device->lun, tcm_loop_device_reset()
334 static int tcm_loop_target_reset(struct scsi_cmnd *sc) tcm_loop_target_reset() argument
342 tl_hba = *(struct tcm_loop_hba **)shost_priv(sc->device->host); tcm_loop_target_reset()
349 * Locate the tl_tpg pointer from TargetID in sc->device->id tcm_loop_target_reset()
351 tl_tpg = &tl_hba->tl_hba_tpgs[sc->device->id]; tcm_loop_target_reset()
775 * sc->sc_data_direction of DMA_TO_DEVICE with struct scatterlist array tcm_loop_write_pending()
795 struct scsi_cmnd *sc = tl_cmd->sc; tcm_loop_queue_data_in() local
798 " cdb: 0x%02x\n", sc, sc->cmnd[0]); tcm_loop_queue_data_in()
800 sc->result = SAM_STAT_GOOD; tcm_loop_queue_data_in()
801 set_host_byte(sc, DID_OK); tcm_loop_queue_data_in()
804 scsi_set_resid(sc, se_cmd->residual_count); tcm_loop_queue_data_in()
805 sc->scsi_done(sc); tcm_loop_queue_data_in()
813 struct scsi_cmnd *sc = tl_cmd->sc; tcm_loop_queue_status() local
816 " cdb: 0x%02x\n", sc, sc->cmnd[0]); tcm_loop_queue_status()
822 memcpy(sc->sense_buffer, se_cmd->sense_buffer, tcm_loop_queue_status()
824 sc->result = SAM_STAT_CHECK_CONDITION; tcm_loop_queue_status()
825 set_driver_byte(sc, DRIVER_SENSE); tcm_loop_queue_status()
827 sc->result = se_cmd->scsi_status; tcm_loop_queue_status()
829 set_host_byte(sc, DID_OK); tcm_loop_queue_status()
832 scsi_set_resid(sc, se_cmd->residual_count); tcm_loop_queue_status()
833 sc->scsi_done(sc); tcm_loop_queue_status()
H A Dtcm_loop.h16 struct scsi_cmnd *sc; member in struct:tcm_loop_cmd
/linux-4.1.27/arch/score/kernel/
H A Dsignal.c44 static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext() argument
49 reg = regs->cp0_epc; err |= __put_user(reg, &sc->sc_pc); setup_sigcontext()
50 err |= __put_user(regs->cp0_psr, &sc->sc_psr); setup_sigcontext()
51 err |= __put_user(regs->cp0_condition, &sc->sc_condition); setup_sigcontext()
56 err |= __put_user(reg, &sc->sc_regs[i]); \ setup_sigcontext()
70 reg = regs->ceh; err |= __put_user(reg, &sc->sc_mdceh); setup_sigcontext()
71 reg = regs->cel; err |= __put_user(reg, &sc->sc_mdcel); setup_sigcontext()
72 err |= __put_user(regs->cp0_ecr, &sc->sc_ecr); setup_sigcontext()
73 err |= __put_user(regs->cp0_ema, &sc->sc_ema); setup_sigcontext()
78 static int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
83 err |= __get_user(regs->cp0_epc, &sc->sc_pc); restore_sigcontext()
84 err |= __get_user(regs->cp0_condition, &sc->sc_condition); restore_sigcontext()
86 err |= __get_user(reg, &sc->sc_mdceh); restore_sigcontext()
88 err |= __get_user(reg, &sc->sc_mdcel); restore_sigcontext()
91 err |= __get_user(reg, &sc->sc_psr); restore_sigcontext()
93 err |= __get_user(reg, &sc->sc_ecr); restore_sigcontext()
95 err |= __get_user(reg, &sc->sc_ema); restore_sigcontext()
99 err |= __get_user(reg, &sc->sc_regs[i]); \ restore_sigcontext()
/linux-4.1.27/arch/x86/ia32/
H A Dia32_signal.c142 get_user_ex(regs->x, &sc->x); \
147 get_user_ex(tmp, &sc->seg); \
164 struct sigcontext_ia32 __user *sc) ia32_restore_sigcontext()
192 get_user_ex(tmpflags, &sc->flags); ia32_restore_sigcontext()
197 get_user_ex(tmp, &sc->fpstate); ia32_restore_sigcontext()
216 if (__get_user(set.sig[0], &frame->sc.oldmask) sys32_sigreturn()
225 if (ia32_restore_sigcontext(regs, &frame->sc)) sys32_sigreturn()
266 static int ia32_setup_sigcontext(struct sigcontext_ia32 __user *sc, ia32_setup_sigcontext() argument
273 put_user_ex(get_user_seg(gs), (unsigned int __user *)&sc->gs); ia32_setup_sigcontext()
274 put_user_ex(get_user_seg(fs), (unsigned int __user *)&sc->fs); ia32_setup_sigcontext()
275 put_user_ex(get_user_seg(ds), (unsigned int __user *)&sc->ds); ia32_setup_sigcontext()
276 put_user_ex(get_user_seg(es), (unsigned int __user *)&sc->es); ia32_setup_sigcontext()
278 put_user_ex(regs->di, &sc->di); ia32_setup_sigcontext()
279 put_user_ex(regs->si, &sc->si); ia32_setup_sigcontext()
280 put_user_ex(regs->bp, &sc->bp); ia32_setup_sigcontext()
281 put_user_ex(regs->sp, &sc->sp); ia32_setup_sigcontext()
282 put_user_ex(regs->bx, &sc->bx); ia32_setup_sigcontext()
283 put_user_ex(regs->dx, &sc->dx); ia32_setup_sigcontext()
284 put_user_ex(regs->cx, &sc->cx); ia32_setup_sigcontext()
285 put_user_ex(regs->ax, &sc->ax); ia32_setup_sigcontext()
286 put_user_ex(current->thread.trap_nr, &sc->trapno); ia32_setup_sigcontext()
287 put_user_ex(current->thread.error_code, &sc->err); ia32_setup_sigcontext()
288 put_user_ex(regs->ip, &sc->ip); ia32_setup_sigcontext()
289 put_user_ex(regs->cs, (unsigned int __user *)&sc->cs); ia32_setup_sigcontext()
290 put_user_ex(regs->flags, &sc->flags); ia32_setup_sigcontext()
291 put_user_ex(regs->sp, &sc->sp_at_signal); ia32_setup_sigcontext()
292 put_user_ex(regs->ss, (unsigned int __user *)&sc->ss); ia32_setup_sigcontext()
294 put_user_ex(ptr_to_compat(fpstate), &sc->fpstate); ia32_setup_sigcontext()
297 put_user_ex(mask, &sc->oldmask); ia32_setup_sigcontext()
298 put_user_ex(current->thread.cr2, &sc->cr2); ia32_setup_sigcontext()
369 if (ia32_setup_sigcontext(&frame->sc, fpstate, regs, set->sig[0])) ia32_setup_frame()
163 ia32_restore_sigcontext(struct pt_regs *regs, struct sigcontext_ia32 __user *sc) ia32_restore_sigcontext() argument
/linux-4.1.27/mm/
H A Dswap_cgroup.c67 struct swap_cgroup *sc; lookup_swap_cgroup() local
74 sc = page_address(mappage); lookup_swap_cgroup()
75 return sc + offset % SC_PER_PAGE; lookup_swap_cgroup()
91 struct swap_cgroup *sc; swap_cgroup_cmpxchg() local
95 sc = lookup_swap_cgroup(ent, &ctrl); swap_cgroup_cmpxchg()
98 retval = sc->id; swap_cgroup_cmpxchg()
100 sc->id = new; swap_cgroup_cmpxchg()
118 struct swap_cgroup *sc; swap_cgroup_record() local
122 sc = lookup_swap_cgroup(ent, &ctrl); swap_cgroup_record()
125 old = sc->id; swap_cgroup_record()
126 sc->id = id; swap_cgroup_record()
H A Dvmscan.c153 static bool global_reclaim(struct scan_control *sc) global_reclaim() argument
155 return !sc->target_mem_cgroup; global_reclaim()
158 static bool global_reclaim(struct scan_control *sc) global_reclaim() argument
401 struct shrink_control sc = { shrink_slab() local
411 sc.nid = 0; shrink_slab()
413 freed += do_shrink_slab(&sc, shrinker, nr_scanned, nr_eligible); shrink_slab()
456 struct scan_control *sc) may_write_to_queue()
505 struct scan_control *sc) pageout()
541 if (!may_write_to_queue(inode_to_bdi(mapping->host), sc)) pageout()
757 struct scan_control *sc) page_check_references()
762 referenced_ptes = page_referenced(page, 1, sc->target_mem_cgroup, page_check_references()
845 struct scan_control *sc, shrink_page_list()
884 sc->nr_scanned++; shrink_page_list()
889 if (!sc->may_unmap && page_mapped(page)) shrink_page_list()
894 sc->nr_scanned++; shrink_page_list()
896 may_enter_fs = (sc->gfp_mask & __GFP_FS) || shrink_page_list()
897 (PageSwapCache(page) && (sc->gfp_mask & __GFP_IO)); shrink_page_list()
966 } else if (global_reclaim(sc) || shrink_page_list()
991 references = page_check_references(page, sc); shrink_page_list()
1008 if (!(sc->gfp_mask & __GFP_IO)) shrink_page_list()
1060 if (!sc->may_writepage) shrink_page_list()
1064 switch (pageout(page, mapping, sc)) { shrink_page_list()
1111 if (!try_to_release_page(page, sc->gfp_mask)) shrink_page_list()
1190 struct scan_control sc = { reclaim_clean_pages_from_list() local
1207 ret = shrink_page_list(&clean_pages, zone, &sc,
1303 * @sc: The scan_control struct for this reclaim session
1311 unsigned long *nr_scanned, struct scan_control *sc, isolate_lru_pages()
1346 trace_mm_vmscan_lru_isolate(sc->order, nr_to_scan, scan, isolate_lru_pages()
1408 struct scan_control *sc) too_many_isolated()
1415 if (!global_reclaim(sc)) too_many_isolated()
1431 if ((sc->gfp_mask & GFP_IOFS) == GFP_IOFS) too_many_isolated()
1511 struct scan_control *sc, enum lru_list lru) shrink_inactive_list()
1527 while (unlikely(too_many_isolated(zone, file, sc))) { shrink_inactive_list()
1537 if (!sc->may_unmap) shrink_inactive_list()
1539 if (!sc->may_writepage) shrink_inactive_list()
1545 &nr_scanned, sc, isolate_mode, lru); shrink_inactive_list()
1550 if (global_reclaim(sc)) { shrink_inactive_list()
1562 nr_reclaimed = shrink_page_list(&page_list, zone, sc, TTU_UNMAP, shrink_inactive_list()
1571 if (global_reclaim(sc)) { shrink_inactive_list()
1610 if (global_reclaim(sc)) { shrink_inactive_list()
1642 if (!sc->hibernation_mode && !current_is_kswapd() && shrink_inactive_list()
1649 sc->priority, shrink_inactive_list()
1715 struct scan_control *sc, shrink_active_list()
1733 if (!sc->may_unmap) shrink_active_list()
1735 if (!sc->may_writepage) shrink_active_list()
1741 &nr_scanned, sc, isolate_mode, lru); shrink_active_list()
1742 if (global_reclaim(sc)) shrink_active_list()
1770 if (page_referenced(page, 0, sc->target_mem_cgroup, shrink_active_list()
1889 struct lruvec *lruvec, struct scan_control *sc) shrink_list()
1893 shrink_active_list(nr_to_scan, lruvec, sc, lru); shrink_list()
1897 return shrink_inactive_list(nr_to_scan, lruvec, sc, lru); shrink_list()
1917 struct scan_control *sc, unsigned long *nr, get_scan_count()
1949 if (!global_reclaim(sc)) get_scan_count()
1953 if (!sc->may_swap || (get_nr_swap_pages() <= 0)) { get_scan_count()
1965 if (!global_reclaim(sc) && !swappiness) { get_scan_count()
1975 if (!sc->priority && swappiness) { get_scan_count()
1989 if (global_reclaim(sc)) { get_scan_count()
2075 scan = size >> sc->priority; for_each_evictable_lru()
2121 struct scan_control *sc, unsigned long *lru_pages) shrink_lruvec()
2128 unsigned long nr_to_reclaim = sc->nr_to_reclaim; shrink_lruvec()
2132 get_scan_count(lruvec, swappiness, sc, nr, lru_pages); shrink_lruvec()
2148 scan_adjusted = (global_reclaim(sc) && !current_is_kswapd() && shrink_lruvec()
2149 sc->priority == DEF_PRIORITY); shrink_lruvec()
2163 lruvec, sc); for_each_evictable_lru()
2222 sc->nr_reclaimed += nr_reclaimed;
2230 sc, LRU_ACTIVE_ANON);
2232 throttle_vm_writeout(sc->gfp_mask);
2236 static bool in_reclaim_compaction(struct scan_control *sc) in_reclaim_compaction() argument
2238 if (IS_ENABLED(CONFIG_COMPACTION) && sc->order && in_reclaim_compaction()
2239 (sc->order > PAGE_ALLOC_COSTLY_ORDER || in_reclaim_compaction()
2240 sc->priority < DEF_PRIORITY - 2)) in_reclaim_compaction()
2256 struct scan_control *sc) should_continue_reclaim()
2262 if (!in_reclaim_compaction(sc)) should_continue_reclaim()
2266 if (sc->gfp_mask & __GFP_REPEAT) { should_continue_reclaim()
2292 pages_for_compaction = (2UL << sc->order); should_continue_reclaim()
2296 if (sc->nr_reclaimed < pages_for_compaction && should_continue_reclaim()
2301 switch (compaction_suitable(zone, sc->order, 0, 0)) { should_continue_reclaim()
2310 static bool shrink_zone(struct zone *zone, struct scan_control *sc, shrink_zone() argument
2318 struct mem_cgroup *root = sc->target_mem_cgroup; shrink_zone()
2321 .priority = sc->priority, shrink_zone()
2326 nr_reclaimed = sc->nr_reclaimed; shrink_zone()
2327 nr_scanned = sc->nr_scanned; shrink_zone()
2337 if (!sc->may_thrash) shrink_zone()
2344 scanned = sc->nr_scanned; shrink_zone()
2346 shrink_lruvec(lruvec, swappiness, sc, &lru_pages); shrink_zone()
2350 shrink_slab(sc->gfp_mask, zone_to_nid(zone), shrink_zone()
2351 memcg, sc->nr_scanned - scanned, shrink_zone()
2364 if (!global_reclaim(sc) && shrink_zone()
2365 sc->nr_reclaimed >= sc->nr_to_reclaim) { shrink_zone()
2375 if (global_reclaim(sc) && is_classzone) shrink_zone()
2376 shrink_slab(sc->gfp_mask, zone_to_nid(zone), NULL, shrink_zone()
2377 sc->nr_scanned - nr_scanned, shrink_zone()
2381 sc->nr_reclaimed += reclaim_state->reclaimed_slab; shrink_zone()
2385 vmpressure(sc->gfp_mask, sc->target_mem_cgroup, shrink_zone()
2386 sc->nr_scanned - nr_scanned, shrink_zone()
2387 sc->nr_reclaimed - nr_reclaimed); shrink_zone()
2389 if (sc->nr_reclaimed - nr_reclaimed) shrink_zone()
2392 } while (should_continue_reclaim(zone, sc->nr_reclaimed - nr_reclaimed, shrink_zone()
2393 sc->nr_scanned - nr_scanned, sc)); shrink_zone()
2453 static bool shrink_zones(struct zonelist *zonelist, struct scan_control *sc) shrink_zones() argument
2460 enum zone_type requested_highidx = gfp_zone(sc->gfp_mask); shrink_zones()
2468 orig_mask = sc->gfp_mask; shrink_zones()
2470 sc->gfp_mask |= __GFP_HIGHMEM; shrink_zones()
2473 gfp_zone(sc->gfp_mask), sc->nodemask) { for_each_zone_zonelist_nodemask()
2488 if (global_reclaim(sc)) { for_each_zone_zonelist_nodemask()
2493 if (sc->priority != DEF_PRIORITY && for_each_zone_zonelist_nodemask()
2507 sc->order > PAGE_ALLOC_COSTLY_ORDER && for_each_zone_zonelist_nodemask()
2509 compaction_ready(zone, sc->order)) { for_each_zone_zonelist_nodemask()
2510 sc->compaction_ready = true; for_each_zone_zonelist_nodemask()
2522 sc->order, sc->gfp_mask, for_each_zone_zonelist_nodemask()
2524 sc->nr_reclaimed += nr_soft_reclaimed; for_each_zone_zonelist_nodemask()
2525 sc->nr_scanned += nr_soft_scanned; for_each_zone_zonelist_nodemask()
2531 if (shrink_zone(zone, sc, zone_idx(zone) == classzone_idx)) for_each_zone_zonelist_nodemask()
2534 if (global_reclaim(sc) && for_each_zone_zonelist_nodemask()
2543 sc->gfp_mask = orig_mask;
2565 struct scan_control *sc) do_try_to_free_pages()
2567 int initial_priority = sc->priority; do_try_to_free_pages()
2574 if (global_reclaim(sc)) do_try_to_free_pages()
2578 vmpressure_prio(sc->gfp_mask, sc->target_mem_cgroup, do_try_to_free_pages()
2579 sc->priority); do_try_to_free_pages()
2580 sc->nr_scanned = 0; do_try_to_free_pages()
2581 zones_reclaimable = shrink_zones(zonelist, sc); do_try_to_free_pages()
2583 total_scanned += sc->nr_scanned; do_try_to_free_pages()
2584 if (sc->nr_reclaimed >= sc->nr_to_reclaim) do_try_to_free_pages()
2587 if (sc->compaction_ready) do_try_to_free_pages()
2594 if (sc->priority < DEF_PRIORITY - 2) do_try_to_free_pages()
2595 sc->may_writepage = 1; do_try_to_free_pages()
2604 writeback_threshold = sc->nr_to_reclaim + sc->nr_to_reclaim / 2; do_try_to_free_pages()
2608 sc->may_writepage = 1; do_try_to_free_pages()
2610 } while (--sc->priority >= 0); do_try_to_free_pages()
2614 if (sc->nr_reclaimed) do_try_to_free_pages()
2615 return sc->nr_reclaimed; do_try_to_free_pages()
2618 if (sc->compaction_ready) do_try_to_free_pages()
2622 if (!sc->may_thrash) { do_try_to_free_pages()
2623 sc->priority = initial_priority; do_try_to_free_pages()
2624 sc->may_thrash = 1; do_try_to_free_pages()
2765 struct scan_control sc = { try_to_free_pages() local
2785 sc.may_writepage, try_to_free_pages()
2788 nr_reclaimed = do_try_to_free_pages(zonelist, &sc); try_to_free_pages()
2802 struct scan_control sc = { mem_cgroup_shrink_node_zone() local
2813 sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) | mem_cgroup_shrink_node_zone()
2816 trace_mm_vmscan_memcg_softlimit_reclaim_begin(sc.order, mem_cgroup_shrink_node_zone()
2817 sc.may_writepage, mem_cgroup_shrink_node_zone()
2818 sc.gfp_mask); mem_cgroup_shrink_node_zone()
2827 shrink_lruvec(lruvec, swappiness, &sc, &lru_pages); mem_cgroup_shrink_node_zone()
2829 trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed); mem_cgroup_shrink_node_zone()
2831 *nr_scanned = sc.nr_scanned; mem_cgroup_shrink_node_zone()
2832 return sc.nr_reclaimed; mem_cgroup_shrink_node_zone()
2843 struct scan_control sc = { try_to_free_mem_cgroup_pages() local
2864 sc.may_writepage, try_to_free_mem_cgroup_pages()
2865 sc.gfp_mask); try_to_free_mem_cgroup_pages()
2867 nr_reclaimed = do_try_to_free_pages(zonelist, &sc); try_to_free_mem_cgroup_pages()
2875 static void age_active_anon(struct zone *zone, struct scan_control *sc) age_active_anon() argument
2888 sc, LRU_ACTIVE_ANON); age_active_anon()
3009 struct scan_control *sc, kswapd_shrink_zone()
3012 int testorder = sc->order; kswapd_shrink_zone()
3017 sc->nr_to_reclaim = max(SWAP_CLUSTER_MAX, high_wmark_pages(zone)); kswapd_shrink_zone()
3025 if (IS_ENABLED(CONFIG_COMPACTION) && sc->order && kswapd_shrink_zone()
3026 compaction_suitable(zone, sc->order, 0, classzone_idx) kswapd_shrink_zone()
3048 shrink_zone(zone, sc, zone_idx(zone) == classzone_idx); kswapd_shrink_zone()
3051 *nr_attempted += sc->nr_to_reclaim; kswapd_shrink_zone()
3067 return sc->nr_scanned >= sc->nr_to_reclaim; kswapd_shrink_zone()
3098 struct scan_control sc = { balance_pgdat() local
3113 sc.nr_reclaimed = 0; balance_pgdat()
3125 if (sc.priority != DEF_PRIORITY && balance_pgdat()
3133 age_active_anon(zone, &sc); balance_pgdat()
3184 if (sc.priority < DEF_PRIORITY - 2) balance_pgdat()
3185 sc.may_writepage = 1; balance_pgdat()
3202 if (sc.priority != DEF_PRIORITY && balance_pgdat()
3206 sc.nr_scanned = 0; balance_pgdat()
3213 order, sc.gfp_mask, balance_pgdat()
3215 sc.nr_reclaimed += nr_soft_reclaimed; balance_pgdat()
3224 &sc, &nr_attempted)) balance_pgdat()
3245 if (order && sc.nr_reclaimed >= 2UL << order) balance_pgdat()
3246 order = sc.order = 0; balance_pgdat()
3256 if (pgdat_needs_compaction && sc.nr_reclaimed > nr_attempted) balance_pgdat()
3263 if (raise_priority || !sc.nr_reclaimed) balance_pgdat()
3264 sc.priority--; balance_pgdat()
3265 } while (sc.priority >= 1 && balance_pgdat()
3481 struct scan_control sc = { shrink_all_memory() local
3490 struct zonelist *zonelist = node_zonelist(numa_node_id(), sc.gfp_mask); shrink_all_memory()
3495 lockdep_set_current_reclaim_state(sc.gfp_mask); shrink_all_memory()
3499 nr_reclaimed = do_try_to_free_pages(zonelist, &sc); shrink_all_memory()
3667 struct scan_control sc = { __zone_reclaim() local
3694 shrink_zone(zone, &sc, true); __zone_reclaim()
3695 } while (sc.nr_reclaimed < nr_pages && --sc.priority >= 0); __zone_reclaim()
3701 return sc.nr_reclaimed >= nr_pages; __zone_reclaim()
455 may_write_to_queue(struct backing_dev_info *bdi, struct scan_control *sc) may_write_to_queue() argument
504 pageout(struct page *page, struct address_space *mapping, struct scan_control *sc) pageout() argument
756 page_check_references(struct page *page, struct scan_control *sc) page_check_references() argument
843 shrink_page_list(struct list_head *page_list, struct zone *zone, struct scan_control *sc, enum ttu_flags ttu_flags, unsigned long *ret_nr_dirty, unsigned long *ret_nr_unqueued_dirty, unsigned long *ret_nr_congested, unsigned long *ret_nr_writeback, unsigned long *ret_nr_immediate, bool force_reclaim) shrink_page_list() argument
1309 isolate_lru_pages(unsigned long nr_to_scan, struct lruvec *lruvec, struct list_head *dst, unsigned long *nr_scanned, struct scan_control *sc, isolate_mode_t mode, enum lru_list lru) isolate_lru_pages() argument
1407 too_many_isolated(struct zone *zone, int file, struct scan_control *sc) too_many_isolated() argument
1510 shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec, struct scan_control *sc, enum lru_list lru) shrink_inactive_list() argument
1713 shrink_active_list(unsigned long nr_to_scan, struct lruvec *lruvec, struct scan_control *sc, enum lru_list lru) shrink_active_list() argument
1888 shrink_list(enum lru_list lru, unsigned long nr_to_scan, struct lruvec *lruvec, struct scan_control *sc) shrink_list() argument
1916 get_scan_count(struct lruvec *lruvec, int swappiness, struct scan_control *sc, unsigned long *nr, unsigned long *lru_pages) get_scan_count() argument
2120 shrink_lruvec(struct lruvec *lruvec, int swappiness, struct scan_control *sc, unsigned long *lru_pages) shrink_lruvec() argument
2253 should_continue_reclaim(struct zone *zone, unsigned long nr_reclaimed, unsigned long nr_scanned, struct scan_control *sc) should_continue_reclaim() argument
2564 do_try_to_free_pages(struct zonelist *zonelist, struct scan_control *sc) do_try_to_free_pages() argument
3007 kswapd_shrink_zone(struct zone *zone, int classzone_idx, struct scan_control *sc, unsigned long *nr_attempted) kswapd_shrink_zone() argument
H A Dworkingset.c270 struct shrink_control *sc) count_shadow_nodes()
278 shadow_nodes = list_lru_shrink_count(&workingset_shadow_nodes, sc); count_shadow_nodes()
281 pages = node_present_pages(sc->nid); count_shadow_nodes()
374 struct shrink_control *sc) scan_shadow_nodes()
380 ret = list_lru_shrink_walk(&workingset_shadow_nodes, sc, scan_shadow_nodes()
269 count_shadow_nodes(struct shrinker *shrinker, struct shrink_control *sc) count_shadow_nodes() argument
373 scan_shadow_nodes(struct shrinker *shrinker, struct shrink_control *sc) scan_shadow_nodes() argument
/linux-4.1.27/arch/x86/kernel/
H A Dsignal.c47 get_user_ex(regs->x, &sc->x); \
52 get_user_ex(tmp, &sc->seg); \
64 int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
106 get_user_ex(tmpflags, &sc->flags); restore_sigcontext()
110 get_user_ex(buf, &sc->fpstate); restore_sigcontext()
120 int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, setup_sigcontext() argument
128 put_user_ex(get_user_gs(regs), (unsigned int __user *)&sc->gs); setup_sigcontext()
129 put_user_ex(regs->fs, (unsigned int __user *)&sc->fs); setup_sigcontext()
130 put_user_ex(regs->es, (unsigned int __user *)&sc->es); setup_sigcontext()
131 put_user_ex(regs->ds, (unsigned int __user *)&sc->ds); setup_sigcontext()
134 put_user_ex(regs->di, &sc->di); setup_sigcontext()
135 put_user_ex(regs->si, &sc->si); setup_sigcontext()
136 put_user_ex(regs->bp, &sc->bp); setup_sigcontext()
137 put_user_ex(regs->sp, &sc->sp); setup_sigcontext()
138 put_user_ex(regs->bx, &sc->bx); setup_sigcontext()
139 put_user_ex(regs->dx, &sc->dx); setup_sigcontext()
140 put_user_ex(regs->cx, &sc->cx); setup_sigcontext()
141 put_user_ex(regs->ax, &sc->ax); setup_sigcontext()
143 put_user_ex(regs->r8, &sc->r8); setup_sigcontext()
144 put_user_ex(regs->r9, &sc->r9); setup_sigcontext()
145 put_user_ex(regs->r10, &sc->r10); setup_sigcontext()
146 put_user_ex(regs->r11, &sc->r11); setup_sigcontext()
147 put_user_ex(regs->r12, &sc->r12); setup_sigcontext()
148 put_user_ex(regs->r13, &sc->r13); setup_sigcontext()
149 put_user_ex(regs->r14, &sc->r14); setup_sigcontext()
150 put_user_ex(regs->r15, &sc->r15); setup_sigcontext()
153 put_user_ex(current->thread.trap_nr, &sc->trapno); setup_sigcontext()
154 put_user_ex(current->thread.error_code, &sc->err); setup_sigcontext()
155 put_user_ex(regs->ip, &sc->ip); setup_sigcontext()
157 put_user_ex(regs->cs, (unsigned int __user *)&sc->cs); setup_sigcontext()
158 put_user_ex(regs->flags, &sc->flags); setup_sigcontext()
159 put_user_ex(regs->sp, &sc->sp_at_signal); setup_sigcontext()
160 put_user_ex(regs->ss, (unsigned int __user *)&sc->ss); setup_sigcontext()
162 put_user_ex(regs->flags, &sc->flags); setup_sigcontext()
163 put_user_ex(regs->cs, &sc->cs); setup_sigcontext()
164 put_user_ex(0, &sc->gs); setup_sigcontext()
165 put_user_ex(0, &sc->fs); setup_sigcontext()
168 put_user_ex(fpstate, &sc->fpstate); setup_sigcontext()
171 put_user_ex(mask, &sc->oldmask); setup_sigcontext()
172 put_user_ex(current->thread.cr2, &sc->cr2); setup_sigcontext()
290 if (setup_sigcontext(&frame->sc, fpstate, regs, set->sig[0])) __setup_frame()
547 if (__get_user(set.sig[0], &frame->sc.oldmask) || (_NSIG_WORDS > 1 sys_sigreturn()
554 if (restore_sigcontext(regs, &frame->sc)) sys_sigreturn()
/linux-4.1.27/arch/m68k/kernel/
H A Dsignal.c199 static inline void save_a5_state(struct sigcontext *sc, struct pt_regs *regs) save_a5_state() argument
224 static inline void save_a5_state(struct sigcontext *sc, struct pt_regs *regs) save_a5_state() argument
226 sc->sc_a5 = ((struct switch_stack *)regs - 1)->a5; save_a5_state()
250 struct sigcontext sc; member in struct:sigframe
273 static inline int restore_fpu_state(struct sigcontext *sc) restore_fpu_state() argument
279 memcpy(current->thread.fpcntl, sc->sc_fpcntl, 12); restore_fpu_state()
280 memcpy(current->thread.fp, sc->sc_fpregs, 24); restore_fpu_state()
284 if (CPU_IS_060 ? sc->sc_fpstate[2] : sc->sc_fpstate[0]) { restore_fpu_state()
287 (sc->sc_fpstate[0] != fpu_version)) restore_fpu_state()
291 !(sc->sc_fpstate[1] == 0x18 || sc->sc_fpstate[1] == 0xb4)) restore_fpu_state()
294 !(sc->sc_fpstate[1] == 0x38 || sc->sc_fpstate[1] == 0xd4)) restore_fpu_state()
297 if (!(sc->sc_fpstate[1] == 0x00 || restore_fpu_state()
298 sc->sc_fpstate[1] == 0x28 || restore_fpu_state()
299 sc->sc_fpstate[1] == 0x60)) restore_fpu_state()
302 if (!(sc->sc_fpstate[3] == 0x00 || restore_fpu_state()
303 sc->sc_fpstate[3] == 0x60 || restore_fpu_state()
304 sc->sc_fpstate[3] == 0xe0)) restore_fpu_state()
307 if (!(sc->sc_fpstate[0] == 0x00 || restore_fpu_state()
308 sc->sc_fpstate[0] == 0x05 || restore_fpu_state()
309 sc->sc_fpstate[0] == 0xe5)) restore_fpu_state()
320 : "m" (sc->sc_fpregs[0]), restore_fpu_state()
321 "m" (sc->sc_fpcntl[0]), restore_fpu_state()
322 "m" (sc->sc_fpcntl[1]), restore_fpu_state()
323 "m" (sc->sc_fpcntl[2])); restore_fpu_state()
330 : "m" (*sc->sc_fpregs), restore_fpu_state()
331 "m" (*sc->sc_fpcntl)); restore_fpu_state()
336 __asm__ volatile ("frestore %0" : : "m" (*sc->sc_fpstate)); restore_fpu_state()
341 : : "m" (*sc->sc_fpstate)); restore_fpu_state()
447 static inline void save_fpu_state(struct sigcontext *sc, struct pt_regs *regs) save_fpu_state() argument
451 memcpy(sc->sc_fpcntl, current->thread.fpcntl, 12); save_fpu_state()
452 memcpy(sc->sc_fpregs, current->thread.fp, 24); save_fpu_state()
458 : : "m" (*sc->sc_fpstate) : "memory"); save_fpu_state()
463 : : "m" (*sc->sc_fpstate) : "memory"); save_fpu_state()
466 if (CPU_IS_060 ? sc->sc_fpstate[2] : sc->sc_fpstate[0]) { save_fpu_state()
467 fpu_version = sc->sc_fpstate[0]; save_fpu_state()
472 if (*(unsigned short *) sc->sc_fpstate == 0x1f38) save_fpu_state()
473 sc->sc_fpstate[0x38] |= 1 << 3; save_fpu_state()
481 : "=m" (sc->sc_fpregs[0]), save_fpu_state()
482 "=m" (sc->sc_fpcntl[0]), save_fpu_state()
483 "=m" (sc->sc_fpcntl[1]), save_fpu_state()
484 "=m" (sc->sc_fpcntl[2]) save_fpu_state()
492 : "=m" (*sc->sc_fpregs), save_fpu_state()
493 "=m" (*sc->sc_fpcntl) save_fpu_state()
573 static inline int restore_fpu_state(struct sigcontext *sc) restore_fpu_state() argument
583 static inline void save_fpu_state(struct sigcontext *sc, struct pt_regs *regs) save_fpu_state() argument
750 if (__get_user(set.sig[0], &frame->sc.sc_mask) || do_sigreturn()
758 if (restore_sigcontext(regs, &frame->sc, frame + 1)) do_sigreturn()
791 static void setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs, setup_sigcontext() argument
794 sc->sc_mask = mask; setup_sigcontext()
795 sc->sc_usp = rdusp(); setup_sigcontext()
796 sc->sc_d0 = regs->d0; setup_sigcontext()
797 sc->sc_d1 = regs->d1; setup_sigcontext()
798 sc->sc_a0 = regs->a0; setup_sigcontext()
799 sc->sc_a1 = regs->a1; setup_sigcontext()
800 sc->sc_sr = regs->sr; setup_sigcontext()
801 sc->sc_pc = regs->pc; setup_sigcontext()
802 sc->sc_formatvec = regs->format << 12 | regs->vector; setup_sigcontext()
803 save_a5_state(sc, regs); setup_sigcontext()
804 save_fpu_state(sc, regs); setup_sigcontext()
869 err |= __put_user(&frame->sc, &frame->psc); setup_frame()
876 err |= copy_to_user (&frame->sc, &context, sizeof(context)); setup_frame()
/linux-4.1.27/arch/alpha/lib/
H A Ddec_and_lock.c4 * ll/sc version of atomic_dec_and_lock()
/linux-4.1.27/arch/arm/boot/compressed/
H A Dstring.c61 const char *sc = s; strlen() local
63 while (*sc != '\0') strlen()
64 sc++; strlen()
65 return sc - s; strlen()
/linux-4.1.27/tools/testing/selftests/powerpc/switch_endian/
H A Dswitch_endian_test.S64 sc
69 .long 0x02000044 /* sc */
77 sc
80 sc
/linux-4.1.27/drivers/message/fusion/
H A Dmptscsih.c89 static void mptscsih_report_queue_full(struct scsi_cmnd *sc, SCSIIOReply_t *pScsiReply, SCSIIORequest_t *pScsiReq);
95 static void mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply);
428 * @sc: original scsi cmnd pointer
436 mptscsih_info_scsiio(MPT_ADAPTER *ioc, struct scsi_cmnd *sc, SCSIIOReply_t * pScsiReply) mptscsih_info_scsiio() argument
538 scsi_print_command(sc); mptscsih_info_scsiio()
540 ioc->name, pScsiReply->Bus, pScsiReply->TargetID, sc->device->lun); mptscsih_info_scsiio()
542 "resid = %d\n", ioc->name, scsi_bufflen(sc), sc->underflow, mptscsih_info_scsiio()
543 scsi_get_resid(sc)); mptscsih_info_scsiio()
545 "sc->result = %08X\n", ioc->name, le16_to_cpu(pScsiReply->TaskTag), mptscsih_info_scsiio()
546 le32_to_cpu(pScsiReply->TransferCount), sc->result); mptscsih_info_scsiio()
554 skey = sc->sense_buffer[2] & 0x0F; mptscsih_info_scsiio()
555 asc = sc->sense_buffer[12]; mptscsih_info_scsiio()
556 ascq = sc->sense_buffer[13]; mptscsih_info_scsiio()
590 struct scsi_cmnd *sc; mptscsih_io_done() local
611 sc = mptscsih_getclear_scsi_lookup(ioc, req_idx); mptscsih_io_done()
612 if (sc == NULL) { mptscsih_io_done()
617 * completion done. Cannot touch sc struct. Just free mem. mptscsih_io_done()
627 if ((unsigned char *)mf != sc->host_scribble) { mptscsih_io_done()
633 VirtDevice *vdevice = sc->device->hostdata; mptscsih_io_done()
637 sc->result = DID_NO_CONNECT << 16; mptscsih_io_done()
642 sc->host_scribble = NULL; mptscsih_io_done()
643 sc->result = DID_OK << 16; /* Set default reply as OK */ mptscsih_io_done()
649 "ScsiDone (mf=%p,mr=%p,sc=%p,idx=%d,task-tag=%d)\n", mptscsih_io_done()
650 ioc->name, mf, mr, sc, req_idx, pScsiReply->TaskTag)); mptscsih_io_done()
653 "ScsiDone (mf=%p,mr=%p,sc=%p,idx=%d)\n", mptscsih_io_done()
654 ioc->name, mf, mr, sc, req_idx)); mptscsih_io_done()
671 scsi_set_resid(sc, scsi_bufflen(sc) - xfer_cnt); mptscsih_io_done()
688 mptscsih_copy_sense_data(sc, hd, mf, pScsiReply); mptscsih_io_done()
697 sc->device->host->host_no, sc->device->channel, mptscsih_io_done()
698 sc->device->id, sc->device->lun, mptscsih_io_done()
710 sc->result = SAM_STAT_BUSY; mptscsih_io_done()
715 sc->result = DID_BAD_TARGET << 16; mptscsih_io_done()
721 sc->result = DID_NO_CONNECT << 16; mptscsih_io_done()
724 sc->result = DID_REQUEUE << 16; mptscsih_io_done()
729 vdevice = sc->device->hostdata; mptscsih_io_done()
750 sc->device->hostdata; mptscsih_io_done()
768 sc->result = mptscsih_io_done()
782 sc->result = DID_ERROR << 16; mptscsih_io_done()
794 sc->result = DID_RESET << 16; mptscsih_io_done()
799 sc->result = DID_ERROR << 16; mptscsih_io_done()
801 sc->result = DID_RESET << 16; mptscsih_io_done()
805 scsi_set_resid(sc, scsi_bufflen(sc) - xfer_cnt); mptscsih_io_done()
806 if((xfer_cnt==0)||(sc->underflow > xfer_cnt)) mptscsih_io_done()
807 sc->result=DID_SOFT_ERROR << 16; mptscsih_io_done()
809 sc->result = (DID_OK << 16) | scsi_status; mptscsih_io_done()
812 ioc->name, sc->result, sc->device->channel, sc->device->id)); mptscsih_io_done()
820 sc->result = (DID_OK << 16) | scsi_status; mptscsih_io_done()
838 if (scsi_bufflen(sc) != mptscsih_io_done()
840 sc->result = mptscsih_io_done()
844 "sc->req_bufflen=0x%02x," mptscsih_io_done()
846 scsi_bufflen(sc), mptscsih_io_done()
852 if (xfer_cnt < sc->underflow) { mptscsih_io_done()
854 sc->result = SAM_STAT_BUSY; mptscsih_io_done()
856 sc->result = DID_SOFT_ERROR << 16; mptscsih_io_done()
861 sc->result = DID_SOFT_ERROR << 16; mptscsih_io_done()
865 sc->result = DID_RESET << 16; mptscsih_io_done()
871 " sc->underflow={report ERR if < %02xh bytes xfer'd}\n", mptscsih_io_done()
872 ioc->name, sc->underflow)); mptscsih_io_done()
879 mptscsih_report_queue_full(sc, pScsiReply, pScsiReq); mptscsih_io_done()
884 scsi_set_resid(sc, 0); mptscsih_io_done()
887 sc->result = (DID_OK << 16) | scsi_status; mptscsih_io_done()
902 (sc->sense_buffer[2] & 0x20)) { mptscsih_io_done()
905 sc->sense_buffer[3] << 24 | mptscsih_io_done()
906 sc->sense_buffer[4] << 16 | mptscsih_io_done()
907 sc->sense_buffer[5] << 8 | mptscsih_io_done()
908 sc->sense_buffer[6]; mptscsih_io_done()
909 if (((sc->sense_buffer[3] & 0x80) == mptscsih_io_done()
910 0x80) && (scsi_bufflen(sc) mptscsih_io_done()
912 sc->sense_buffer[2] = mptscsih_io_done()
914 sc->sense_buffer[12] = 0xff; mptscsih_io_done()
915 sc->sense_buffer[13] = 0xff; mptscsih_io_done()
918 "sc->req_bufflen=0x%02x," mptscsih_io_done()
920 scsi_bufflen(sc), mptscsih_io_done()
923 if (((sc->sense_buffer[3] & 0x80) mptscsih_io_done()
925 (scsi_bufflen(sc) != mptscsih_io_done()
927 sc->sense_buffer[2] = mptscsih_io_done()
929 sc->sense_buffer[12] = 0xff; mptscsih_io_done()
930 sc->sense_buffer[13] = 0xff; mptscsih_io_done()
933 "sc->req_bufflen=0x%02x," mptscsih_io_done()
936 scsi_bufflen(sc), mptscsih_io_done()
949 mptscsih_report_queue_full(sc, pScsiReply, pScsiReq); mptscsih_io_done()
958 sc->result = DID_SOFT_ERROR << 16; mptscsih_io_done()
962 sc->result = DID_RESET << 16; mptscsih_io_done()
972 if (sc->result == MPI_SCSI_STATUS_TASK_SET_FULL) mptscsih_io_done()
973 mptscsih_report_queue_full(sc, pScsiReply, pScsiReq); mptscsih_io_done()
982 sc->result = DID_SOFT_ERROR << 16; mptscsih_io_done()
997 sc->result = DID_SOFT_ERROR << 16; mptscsih_io_done()
1003 if (sc->result && (ioc->debug_level & MPT_DEBUG_REPLY)) mptscsih_io_done()
1004 mptscsih_info_scsiio(ioc, sc, pScsiReply); mptscsih_io_done()
1010 scsi_dma_unmap(sc); mptscsih_io_done()
1012 sc->scsi_done(sc); /* Issue the command callback */ mptscsih_io_done()
1033 struct scsi_cmnd *sc; mptscsih_flush_running_cmds() local
1039 sc = mptscsih_getclear_scsi_lookup(ioc, ii); mptscsih_flush_running_cmds()
1040 if (!sc) mptscsih_flush_running_cmds()
1049 if ((unsigned char *)mf != sc->host_scribble) mptscsih_flush_running_cmds()
1051 scsi_dma_unmap(sc); mptscsih_flush_running_cmds()
1052 sc->result = DID_RESET << 16; mptscsih_flush_running_cmds()
1053 sc->host_scribble = NULL; mptscsih_flush_running_cmds()
1054 dtmprintk(ioc, sdev_printk(KERN_INFO, sc->device, MYIOC_s_FMT mptscsih_flush_running_cmds()
1055 "completing cmds: fw_channel %d, fw_id %d, sc=%p, mf = %p, " mptscsih_flush_running_cmds()
1056 "idx=%x\n", ioc->name, channel, id, sc, mf, ii)); mptscsih_flush_running_cmds()
1057 sc->scsi_done(sc); mptscsih_flush_running_cmds()
1081 struct scsi_cmnd *sc; mptscsih_search_running_cmds() local
1088 if ((sc = ioc->ScsiLookup[ii]) != NULL) { mptscsih_search_running_cmds()
1107 if ((unsigned char *)mf != sc->host_scribble) mptscsih_search_running_cmds()
1113 scsi_dma_unmap(sc); mptscsih_search_running_cmds()
1114 sc->host_scribble = NULL; mptscsih_search_running_cmds()
1115 sc->result = DID_NO_CONNECT << 16; mptscsih_search_running_cmds()
1116 dtmprintk(ioc, sdev_printk(KERN_INFO, sc->device, mptscsih_search_running_cmds()
1118 "fw_id %d, sc=%p, mf = %p, idx=%x\n", ioc->name, mptscsih_search_running_cmds()
1120 sc, mf, ii)); mptscsih_search_running_cmds()
1121 sc->scsi_done(sc); mptscsih_search_running_cmds()
1135 * @sc: Pointer to scsi_cmnd structure
1144 mptscsih_report_queue_full(struct scsi_cmnd *sc, SCSIIOReply_t *pScsiReply, SCSIIORequest_t *pScsiReq) mptscsih_report_queue_full() argument
1150 if (sc->device == NULL) mptscsih_report_queue_full()
1152 if (sc->device->host == NULL) mptscsih_report_queue_full()
1154 if ((hd = shost_priv(sc->device->host)) == NULL) mptscsih_report_queue_full()
1159 ioc->name, 0, sc->device->id, sc->device->lun)); mptscsih_report_queue_full()
1703 "can't locate host! (sc=%p)\n", SCpnt); mptscsih_abort()
1708 printk(MYIOC_s_INFO_FMT "attempting task abort! (sc=%p)\n", mptscsih_abort()
1715 "task abort: device has been deleted (sc=%p)\n", mptscsih_abort()
1727 "task abort: hidden raid component (sc=%p)\n", mptscsih_abort()
1738 "task abort: raid volume (sc=%p)\n", mptscsih_abort()
1753 "Command not in the active list! (sc=%p)\n", ioc->name, mptscsih_abort()
1782 "task abort: command still in active list! (sc=%p)\n", mptscsih_abort()
1787 "task abort: command cleared from active list! (sc=%p)\n", mptscsih_abort()
1793 printk(MYIOC_s_INFO_FMT "task abort: %s (rv=%04x) (sc=%p)\n", mptscsih_abort()
1821 "Can't locate host! (sc=%p)\n", SCpnt); mptscsih_dev_reset()
1826 printk(MYIOC_s_INFO_FMT "attempting target reset! (sc=%p)\n", mptscsih_dev_reset()
1850 printk (MYIOC_s_INFO_FMT "target reset: %s (sc=%p)\n", mptscsih_dev_reset()
1881 "Can't locate host! (sc=%p)\n", SCpnt); mptscsih_bus_reset()
1886 printk(MYIOC_s_INFO_FMT "attempting bus reset! (sc=%p)\n", mptscsih_bus_reset()
1901 printk(MYIOC_s_INFO_FMT "bus reset: %s (sc=%p)\n", mptscsih_bus_reset()
1930 "Can't locate host! (sc=%p)\n", SCpnt); mptscsih_host_reset()
1938 printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n", mptscsih_host_reset()
1950 printk(MYIOC_s_INFO_FMT "host reset: %s (sc=%p)\n", mptscsih_host_reset()
2411 mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply) mptscsih_copy_sense_data() argument
2421 vdevice = sc->device->hostdata; mptscsih_copy_sense_data()
2430 memcpy(sc->sense_buffer, sense_data, SNS_LEN(sc)); mptscsih_copy_sense_data()
2444 (sc->device->channel << 8) | sc->device->id; mptscsih_copy_sense_data()
2528 * @sc: scsi_cmnd pointer
2531 SCPNT_TO_LOOKUP_IDX(MPT_ADAPTER *ioc, struct scsi_cmnd *sc) SCPNT_TO_LOOKUP_IDX() argument
2538 if (ioc->ScsiLookup[i] == sc) { SCPNT_TO_LOOKUP_IDX()
/linux-4.1.27/arch/powerpc/kernel/
H A Dsignal_64.c80 static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
93 elf_vrreg_t __user *v_regs = (elf_vrreg_t __user *)(((unsigned long)sc->vmx_reserve + 15) & ~0xful); setup_sigcontext()
99 err |= __put_user(v_regs, &sc->v_regs); setup_sigcontext()
107 /* set MSR_VEC in the MSR value in the frame to indicate that sc->v_reg) setup_sigcontext()
119 err |= __put_user(0, &sc->v_regs); setup_sigcontext()
123 err |= copy_fpr_to_user(&sc->fp_regs, current); setup_sigcontext()
141 * indicate that sc->vs_reg) contains valid data. setup_sigcontext()
146 err |= __put_user(&sc->gp_regs, &sc->regs); setup_sigcontext()
148 err |= __copy_to_user(&sc->gp_regs, regs, GP_REGS_SIZE); setup_sigcontext()
149 err |= __put_user(msr, &sc->gp_regs[PT_MSR]); setup_sigcontext()
150 err |= __put_user(signr, &sc->signal); setup_sigcontext()
151 err |= __put_user(handler, &sc->handler); setup_sigcontext()
153 err |= __put_user(set->sig[0], &sc->oldmask); setup_sigcontext()
170 static long setup_tm_sigcontexts(struct sigcontext __user *sc, setup_tm_sigcontexts() argument
185 (((unsigned long)sc->vmx_reserve + 15) & ~0xful); setup_tm_sigcontexts()
204 err |= __put_user(v_regs, &sc->v_regs); setup_tm_sigcontexts()
226 * that sc->v_reg contains valid data. setup_tm_sigcontexts()
244 err |= __put_user(0, &sc->v_regs); setup_tm_sigcontexts()
249 err |= copy_fpr_to_user(&sc->fp_regs, current); setup_tm_sigcontexts()
274 * indicate that sc->vs_reg) contains valid data. setup_tm_sigcontexts()
280 err |= __put_user(&sc->gp_regs, &sc->regs); setup_tm_sigcontexts()
284 err |= __copy_to_user(&sc->gp_regs, setup_tm_sigcontexts()
287 err |= __put_user(msr, &sc->gp_regs[PT_MSR]); setup_tm_sigcontexts()
288 err |= __put_user(signr, &sc->signal); setup_tm_sigcontexts()
289 err |= __put_user(handler, &sc->handler); setup_tm_sigcontexts()
291 err |= __put_user(set->sig[0], &sc->oldmask); setup_tm_sigcontexts()
302 struct sigcontext __user *sc) restore_sigcontext()
319 err |= __copy_from_user(regs->gpr, sc->gp_regs, sizeof(regs->gpr)); restore_sigcontext()
320 err |= __get_user(regs->nip, &sc->gp_regs[PT_NIP]); restore_sigcontext()
322 err |= __get_user(msr, &sc->gp_regs[PT_MSR]); restore_sigcontext()
325 err |= __get_user(regs->orig_gpr3, &sc->gp_regs[PT_ORIG_R3]); restore_sigcontext()
326 err |= __get_user(regs->ctr, &sc->gp_regs[PT_CTR]); restore_sigcontext()
327 err |= __get_user(regs->link, &sc->gp_regs[PT_LNK]); restore_sigcontext()
328 err |= __get_user(regs->xer, &sc->gp_regs[PT_XER]); restore_sigcontext()
329 err |= __get_user(regs->ccr, &sc->gp_regs[PT_CCR]); restore_sigcontext()
332 err |= __get_user(regs->dar, &sc->gp_regs[PT_DAR]); restore_sigcontext()
333 err |= __get_user(regs->dsisr, &sc->gp_regs[PT_DSISR]); restore_sigcontext()
334 err |= __get_user(regs->result, &sc->gp_regs[PT_RESULT]); restore_sigcontext()
339 err |= __get_user(set->sig[0], &sc->oldmask); restore_sigcontext()
358 err |= __get_user(v_regs, &sc->v_regs); restore_sigcontext()
378 err |= copy_fpr_from_user(current, &sc->fp_regs); restore_sigcontext()
401 struct sigcontext __user *sc, restore_tm_sigcontexts()
414 err |= __copy_from_user(&current->thread.ckpt_regs, sc->gp_regs, restore_tm_sigcontexts()
426 err |= __get_user(current->thread.tm_tfhar, &sc->gp_regs[PT_NIP]); restore_tm_sigcontexts()
429 err |= __get_user(msr, &sc->gp_regs[PT_MSR]); restore_tm_sigcontexts()
446 &sc->gp_regs[PT_CTR]); restore_tm_sigcontexts()
448 &sc->gp_regs[PT_LNK]); restore_tm_sigcontexts()
450 &sc->gp_regs[PT_XER]); restore_tm_sigcontexts()
452 &sc->gp_regs[PT_CCR]); restore_tm_sigcontexts()
455 err |= __get_user(regs->trap, &sc->gp_regs[PT_TRAP]); restore_tm_sigcontexts()
456 err |= __get_user(regs->dar, &sc->gp_regs[PT_DAR]); restore_tm_sigcontexts()
457 err |= __get_user(regs->dsisr, &sc->gp_regs[PT_DSISR]); restore_tm_sigcontexts()
458 err |= __get_user(regs->result, &sc->gp_regs[PT_RESULT]); restore_tm_sigcontexts()
477 err |= __get_user(v_regs, &sc->v_regs); restore_tm_sigcontexts()
512 err |= copy_fpr_from_user(current, &sc->fp_regs); restore_tm_sigcontexts()
566 /* sc */ setup_trampoline()
301 restore_sigcontext(struct pt_regs *regs, sigset_t *set, int sig, struct sigcontext __user *sc) restore_sigcontext() argument
400 restore_tm_sigcontexts(struct pt_regs *regs, struct sigcontext __user *sc, struct sigcontext __user *tm_sc) restore_tm_sigcontexts() argument
H A Dsignal_32.c494 /* Set up the sigreturn trampoline: li r0,sigret; sc */ save_user_regs()
646 /* Set up the sigreturn trampoline: li r0,sigret; sc */ save_tm_user_regs()
1414 struct sigcontext __user *sc; handle_signal32() local
1425 sc = (struct sigcontext __user *) &frame->sctx; handle_signal32()
1430 if (__put_user(to_user_ptr(ksig->ka.sa.sa_handler), &sc->handler) handle_signal32()
1431 || __put_user(oldset->sig[0], &sc->oldmask) handle_signal32()
1433 || __put_user((oldset->sig[0] >> 32), &sc->_unused[3]) handle_signal32()
1435 || __put_user(oldset->sig[1], &sc->_unused[3]) handle_signal32()
1437 || __put_user(to_user_ptr(&frame->mctx), &sc->regs) handle_signal32()
1438 || __put_user(ksig->sig, &sc->signal)) handle_signal32()
1474 regs->gpr[4] = (unsigned long) sc; handle_signal32()
1498 struct sigcontext __user *sc; sys_sigreturn() local
1512 sc = &sf->sctx; sys_sigreturn()
1513 addr = sc; sys_sigreturn()
1514 if (copy_from_user(&sigctx, sc, sizeof(sigctx))) sys_sigreturn()
/linux-4.1.27/arch/mips/include/asm/
H A Dspinlock.h70 " sc %[my_ticket], %[ticket_ptr] \n" arch_spin_lock()
104 " sc %[my_ticket], %[ticket_ptr] \n" arch_spin_lock()
158 " sc %[ticket], %[ticket_ptr] \n" arch_spin_trylock()
182 " sc %[ticket], %[ticket_ptr] \n" arch_spin_trylock()
234 " sc %1, %0 \n" arch_read_lock()
247 "2: sc %1, %0 \n" arch_read_lock()
267 " sc %1, %0 \n" arch_read_unlock()
277 " sc %1, %0 \n" arch_read_unlock()
295 " sc %1, %0 \n" arch_write_lock()
308 "2: sc %1, %0 \n" arch_write_lock()
342 " sc %1, %0 \n" arch_read_trylock()
359 " sc %1, %0 \n" arch_read_trylock()
386 " sc %1, %0 \n" arch_write_trylock()
403 " sc %1, %0 \n" arch_write_trylock()
H A Dedac.h26 " sc %0, %1 \n" atomic_scrub()
H A Dcmpxchg.h31 " sc %2, %1 \n" __xchg_u32()
47 " sc %2, %1 \n" __xchg_u32()
211 __res = __cmpxchg_asm("ll", "sc", __ptr, __old, __new); \
H A Datomic.h54 " sc %0, %1 \n" \
67 " sc %0, %1 \n" \
95 " sc %0, %2 \n" \
110 " sc %0, %2 \n" \
166 " sc %0, %2 \n" atomic_sub_if_positive()
185 " sc %0, %2 \n" atomic_sub_if_positive()
H A Dfutex.h32 "2: sc $1, %2 \n" \
163 "2: sc $1, %2 \n" futex_atomic_cmpxchg_inatomic()
H A Dasm-eva.h19 #define kernel_sc(reg, addr) "sc " reg ", " addr "\n"
103 #define kernel_sc(reg, addr) sc reg, addr
/linux-4.1.27/drivers/staging/android/
H A Dlowmemorykiller.c70 struct shrink_control *sc) lowmem_count()
78 static unsigned long lowmem_scan(struct shrinker *s, struct shrink_control *sc) lowmem_scan() argument
107 sc->nr_to_scan, sc->gfp_mask, other_free, lowmem_scan()
112 sc->nr_to_scan, sc->gfp_mask); lowmem_scan()
174 sc->nr_to_scan, sc->gfp_mask, rem);
69 lowmem_count(struct shrinker *s, struct shrink_control *sc) lowmem_count() argument
/linux-4.1.27/arch/mips/include/asm/mach-ip32/
H A Dcpu-feature-overrides.h14 * R5000 has an interesting "restriction": ll(d)/sc(d)
17 * so, for 64bit IP32 kernel we just don't use ll/sc.
/linux-4.1.27/arch/x86/um/
H A Dsignal.c156 struct sigcontext sc; copy_sc_from_user() local
162 err = copy_from_user(&sc, from, sizeof(sc)); copy_sc_from_user()
166 #define GETREG(regno, regname) regs->regs.gp[HOST_##regno] = sc.regname copy_sc_from_user()
209 &((struct _fpstate __user *)sc.fpstate)->_fxsr_env[0], copy_sc_from_user()
214 err = convert_fxsr_from_user(&fpx, sc.fpstate); copy_sc_from_user()
230 err = copy_from_user(&fp, sc.fpstate, copy_sc_from_user()
250 struct sigcontext sc; copy_sc_to_user() local
253 memset(&sc, 0, sizeof(struct sigcontext)); copy_sc_to_user()
255 #define PUTREG(regno, regname) sc.regname = regs->regs.gp[HOST_##regno] copy_sc_to_user()
282 sc.cr2 = fi->cr2; copy_sc_to_user()
283 sc.err = fi->error_code; copy_sc_to_user()
284 sc.trapno = fi->trap_no; copy_sc_to_user()
293 sc.oldmask = mask; copy_sc_to_user()
294 sc.fpstate = to_fp; copy_sc_to_user()
296 err = copy_to_user(to, &sc, sizeof(struct sigcontext)); copy_sc_to_user()
355 struct sigcontext sc; member in struct:sigframe
392 err |= copy_sc_to_user(&frame->sc, &frame->fpstate, regs, mask->sig[0]); setup_signal_stack_sc()
470 struct sigcontext __user *sc = &frame->sc; sys_sigreturn() local
471 unsigned long __user *oldmask = &sc->oldmask; sys_sigreturn()
481 if (copy_sc_from_user(&current->thread.regs, sc)) sys_sigreturn()
/linux-4.1.27/arch/sh/kernel/
H A Dsignal_32.c63 struct sigcontext sc; member in struct:sigframe
76 static inline int restore_sigcontext_fpu(struct sigcontext __user *sc) restore_sigcontext_fpu() argument
84 return __copy_from_user(&tsk->thread.xstate->hardfpu, &sc->sc_fpregs[0], restore_sigcontext_fpu()
88 static inline int save_sigcontext_fpu(struct sigcontext __user *sc, save_sigcontext_fpu() argument
97 return __put_user(0, &sc->sc_ownedfp); save_sigcontext_fpu()
99 if (__put_user(1, &sc->sc_ownedfp)) save_sigcontext_fpu()
108 return __copy_to_user(&sc->sc_fpregs[0], &tsk->thread.xstate->hardfpu, save_sigcontext_fpu()
114 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p) restore_sigcontext() argument
118 #define COPY(x) err |= __get_user(regs->x, &sc->sc_##x) restore_sigcontext()
140 err |= __get_user (owned_fp, &sc->sc_ownedfp); restore_sigcontext()
142 err |= restore_sigcontext_fpu(sc); restore_sigcontext()
147 err |= __get_user(*r0_p, &sc->sc_regs[0]); restore_sigcontext()
164 if (__get_user(set.sig[0], &frame->sc.oldmask) sys_sigreturn()
172 if (restore_sigcontext(regs, &frame->sc, &r0)) sys_sigreturn()
217 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
222 #define COPY(x) err |= __put_user(regs->x, &sc->sc_##x) setup_sigcontext()
237 err |= save_sigcontext_fpu(sc, regs); setup_sigcontext()
241 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
276 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]); setup_frame()
311 regs->regs[6] = (unsigned long) &frame->sc; setup_frame()
H A Dsignal_64.c130 struct sigcontext sc; member in struct:sigframe
145 restore_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext_fpu() argument
150 err |= __get_user (fpvalid, &sc->sc_fpvalid); restore_sigcontext_fpu()
160 err |= __copy_from_user(&current->thread.xstate->hardfpu, &sc->sc_fpregs[0], restore_sigcontext_fpu()
167 setup_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext_fpu() argument
173 err |= __put_user(fpvalid, &sc->sc_fpvalid); setup_sigcontext_fpu()
185 err |= __copy_to_user(&sc->sc_fpregs[0], &current->thread.xstate->hardfpu, setup_sigcontext_fpu()
193 restore_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext_fpu() argument
198 setup_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext_fpu() argument
205 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, long long *r2_p) restore_sigcontext() argument
211 #define COPY(x) err |= __get_user(regs->x, &sc->sc_##x) restore_sigcontext()
236 err |= __get_user(new_sr, &sc->sc_sr); restore_sigcontext()
246 err |= restore_sigcontext_fpu(regs, sc); restore_sigcontext()
249 err |= __get_user(*r2_p, &sc->sc_regs[REG_RET]); restore_sigcontext()
268 if (__get_user(set.sig[0], &frame->sc.oldmask) sys_sigreturn()
276 if (restore_sigcontext(regs, &frame->sc, &ret)) sys_sigreturn()
325 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
331 err |= setup_sigcontext_fpu(regs, sc); setup_sigcontext()
333 #define COPY(x) err |= __put_user(regs->x, &sc->sc_##x) setup_sigcontext()
357 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
388 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]); setup_frame()
449 regs->regs[REG_ARG2] = (unsigned long long)(unsigned long)(signed long)&frame->sc; setup_frame()
450 regs->regs[REG_ARG3] = (unsigned long long)(unsigned long)(signed long)&frame->sc; setup_frame()
/linux-4.1.27/arch/x86/boot/
H A Dstring.c130 const char *sc; strlen() local
132 for (sc = s; *sc != '\0'; ++sc) strlen()
134 return sc - s; strlen()
/linux-4.1.27/arch/powerpc/boot/
H A Dcpm-serial.c65 u16 sc; /* Status and Control */ member in struct:cpm_bd
147 rbdf->sc = 0xa000; cpm_serial_open()
152 tbdf->sc = 0x2000; cpm_serial_open()
167 while (tbdf->sc & 0x8000) cpm_serial_putc()
174 tbdf->sc |= 0x8000; cpm_serial_putc()
180 return !(rbdf->sc & 0x8000); cpm_serial_tstc()
193 rbdf->sc |= 0x8000; cpm_serial_getc()
H A Dstdio.c17 const char *sc; strnlen() local
19 for (sc = s; count-- && *sc != '\0'; ++sc) strnlen()
21 return sc - s; strnlen()
/linux-4.1.27/drivers/scsi/aic7xxx/
H A Daic7770.c278 struct seeprom_config *sc; aha2840_load_seeprom() local
293 sc = ahc->seep_config; aha2840_load_seeprom()
297 have_seeprom = ahc_read_seeprom(&sd, (uint16_t *)sc, aha2840_load_seeprom()
298 /*start_addr*/0, sizeof(*sc)/2); aha2840_load_seeprom()
302 if (ahc_verify_cksum(sc) == 0) { aha2840_load_seeprom()
329 target_settings = (sc->device_flags[i] & CFXFER) << 4; aha2840_load_seeprom()
330 if (sc->device_flags[i] & CFSYNCH) aha2840_load_seeprom()
332 if (sc->device_flags[i] & CFWIDEB) aha2840_load_seeprom()
334 if (sc->device_flags[i] & CFDISC) aha2840_load_seeprom()
341 ahc->our_id = sc->brtime_id & CFSCSIID; aha2840_load_seeprom()
344 if (sc->adapter_control & CFSPARITY) aha2840_load_seeprom()
346 if (sc->adapter_control & CFRESETB) aha2840_load_seeprom()
349 if (sc->bios_control & CF284XEXTEND) aha2840_load_seeprom()
354 if (sc->adapter_control & CF284XSTERM) aha2840_load_seeprom()
H A Daic7xxx_pci.c612 struct seeprom_config *sc);
1263 struct seeprom_config *sc; check_extport() local
1271 sc = ahc->seep_config; check_extport()
1302 have_seeprom = ahc_read_seeprom(&sd, (uint16_t *)sc, check_extport()
1304 sizeof(*sc)/2); check_extport()
1307 have_seeprom = ahc_verify_cksum(sc); check_extport()
1343 sc_data = (uint16_t *)sc; check_extport()
1351 have_seeprom = ahc_verify_cksum(sc); check_extport()
1369 sc = NULL; check_extport()
1371 ahc_parse_pci_eeprom(ahc, sc); check_extport()
1395 configure_termination(ahc, &sd, sc->adapter_control, sxfrctl1); check_extport()
1399 if ((sc->adapter_control & CFSTERM) != 0) check_extport()
1409 ahc_parse_pci_eeprom(struct ahc_softc *ahc, struct seeprom_config *sc) ahc_parse_pci_eeprom() argument
1416 int max_targ = sc->max_targets & CFMAXTARG; ahc_parse_pci_eeprom()
1423 if ((sc->adapter_control & CFULTRAEN) != 0) { ahc_parse_pci_eeprom()
1429 if ((sc->device_flags[i] & CFSYNCHISULTRA) != 0) { ahc_parse_pci_eeprom()
1441 if (sc->device_flags[i] & CFDISC) ahc_parse_pci_eeprom()
1444 if ((sc->device_flags[i] & CFSYNCHISULTRA) != 0) ahc_parse_pci_eeprom()
1446 } else if ((sc->adapter_control & CFULTRAEN) != 0) { ahc_parse_pci_eeprom()
1449 if ((sc->device_flags[i] & CFXFER) == 0x04 ahc_parse_pci_eeprom()
1452 sc->device_flags[i] &= ~CFXFER; ahc_parse_pci_eeprom()
1458 if (sc->device_flags[i] & CFSYNCH) ahc_parse_pci_eeprom()
1469 scsirate = (sc->device_flags[i] & CFXFER) ahc_parse_pci_eeprom()
1471 if (sc->device_flags[i] & CFWIDEB) ahc_parse_pci_eeprom()
1474 scsirate = (sc->device_flags[i] & CFXFER) << 4; ahc_parse_pci_eeprom()
1475 if (sc->device_flags[i] & CFSYNCH) ahc_parse_pci_eeprom()
1477 if (sc->device_flags[i] & CFWIDEB) ahc_parse_pci_eeprom()
1482 ahc->our_id = sc->brtime_id & CFSCSIID; ahc_parse_pci_eeprom()
1485 if (sc->adapter_control & CFSPARITY) ahc_parse_pci_eeprom()
1487 if (sc->adapter_control & CFRESETB) ahc_parse_pci_eeprom()
1490 ahc->flags |= (sc->adapter_control & CFBOOTCHAN) >> CFBOOTCHANSHIFT; ahc_parse_pci_eeprom()
1492 if (sc->bios_control & CFEXTEND) ahc_parse_pci_eeprom()
1495 if (sc->bios_control & CFBIOSEN) ahc_parse_pci_eeprom()
1500 if (!(sc->adapter_control & CFULTRAEN)) ahc_parse_pci_eeprom()
1505 if (sc->signature == CFSIGNATURE ahc_parse_pci_eeprom()
1506 || sc->signature == CFSIGNATURE2) { ahc_parse_pci_eeprom()
1513 if ((sc->bios_control & CFSTPWLEVEL) != 0) ahc_parse_pci_eeprom()
H A Daic79xx_pci.c517 struct seeprom_config *sc; ahd_check_extport() local
522 sc = ahd->seep_config; ahd_check_extport()
535 start_addr = ((2 * sizeof(*sc)) ahd_check_extport()
552 start_addr = (sizeof(*sc) / 2) * (ahd->channel - 'A'); ahd_check_extport()
554 error = ahd_read_seeprom(ahd, (uint16_t *)sc, ahd_check_extport()
555 start_addr, sizeof(*sc)/2, ahd_check_extport()
562 have_seeprom = ahd_verify_cksum(sc); ahd_check_extport()
603 sc_data = (uint16_t *)sc; ahd_check_extport()
606 have_seeprom = ahd_verify_cksum(sc); ahd_check_extport()
619 sc_data = (uint16_t *)sc; ahd_check_extport()
620 for (i = 0; i < (sizeof(*sc)); i += 2) ahd_check_extport()
635 error = ahd_parse_cfgdata(ahd, sc); ahd_check_extport()
636 adapter_control = sc->adapter_control; ahd_check_extport()
H A Daic7xxx_93cx6.c305 ahc_verify_cksum(struct seeprom_config *sc) ahc_verify_cksum() argument
312 maxaddr = (sizeof(*sc)/2) - 1; ahc_verify_cksum()
314 scarray = (uint16_t *)sc; ahc_verify_cksum()
319 || (checksum & 0xFFFF) != sc->checksum) { ahc_verify_cksum()
H A Daic7xxx_93cx6.h100 int ahc_verify_cksum(struct seeprom_config *sc);
/linux-4.1.27/arch/mn10300/kernel/
H A Dsignal.c38 struct sigcontext __user *sc, long *_d0) restore_sigcontext()
48 #define COPY(x) err |= __get_user(regs->x, &sc->x) restore_sigcontext()
68 err |= __get_user(tmpflags, &sc->epsw); restore_sigcontext()
76 err |= __get_user(buf, &sc->fpucontext); restore_sigcontext()
84 err |= __get_user(*_d0, &sc->d0); restore_sigcontext()
103 if (__get_user(set.sig[0], &frame->sc.oldmask)) sys_sigreturn()
113 if (restore_sigcontext(current_frame(), &frame->sc, &d0)) sys_sigreturn()
156 static int setup_sigcontext(struct sigcontext __user *sc, setup_sigcontext() argument
163 #define COPY(x) err |= __put_user(regs->x, &sc->x) setup_sigcontext()
178 err |= __put_user(tmp ? fpuctx : NULL, &sc->fpucontext); setup_sigcontext()
181 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
213 __put_user(&frame->sc, &frame->psc) < 0) setup_frame()
216 if (setup_sigcontext(&frame->sc, &frame->fpuctx, regs, set->sig[0])) setup_frame()
249 regs->d1 = (unsigned long) &frame->sc; setup_frame()
37 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, long *_d0) restore_sigcontext() argument
H A Dsigframe.h17 struct sigcontext sc; member in struct:sigframe
/linux-4.1.27/drivers/mmc/host/
H A Dsdhci-s3c.c451 struct sdhci_s3c *sc; sdhci_s3c_probe() local
471 sc = sdhci_priv(host); sdhci_s3c_probe()
485 sc->ext_cd_gpio = -1; /* invalid gpio number */ sdhci_s3c_probe()
490 sc->host = host; sdhci_s3c_probe()
491 sc->pdev = pdev; sdhci_s3c_probe()
492 sc->pdata = pdata; sdhci_s3c_probe()
493 sc->cur_clk = -1; sdhci_s3c_probe()
497 sc->clk_io = devm_clk_get(dev, "hsmmc"); sdhci_s3c_probe()
498 if (IS_ERR(sc->clk_io)) { sdhci_s3c_probe()
500 ret = PTR_ERR(sc->clk_io); sdhci_s3c_probe()
505 clk_prepare_enable(sc->clk_io); sdhci_s3c_probe()
511 sc->clk_bus[ptr] = devm_clk_get(dev, name); sdhci_s3c_probe()
512 if (IS_ERR(sc->clk_bus[ptr])) sdhci_s3c_probe()
516 sc->clk_rates[ptr] = clk_get_rate(sc->clk_bus[ptr]); sdhci_s3c_probe()
519 ptr, name, sc->clk_rates[ptr]); sdhci_s3c_probe()
550 sc->no_divider = drv_data->no_divider; sdhci_s3c_probe()
600 if (sc->no_divider) { sdhci_s3c_probe()
630 clk_disable_unprepare(sc->clk_io); sdhci_s3c_probe()
638 clk_disable_unprepare(sc->clk_io); sdhci_s3c_probe()
649 struct sdhci_s3c *sc = sdhci_priv(host); sdhci_s3c_remove() local
651 if (sc->ext_cd_irq) sdhci_s3c_remove()
652 free_irq(sc->ext_cd_irq, sc); sdhci_s3c_remove()
655 if (sc->pdata->cd_type != S3C_SDHCI_CD_INTERNAL) sdhci_s3c_remove()
656 clk_prepare_enable(sc->clk_io); sdhci_s3c_remove()
663 clk_disable_unprepare(sc->clk_io); sdhci_s3c_remove()
/linux-4.1.27/drivers/gpu/drm/exynos/
H A Dexynos_drm_gsc.c131 * @sc: scaler infomations.
143 struct gsc_scaler sc; member in struct:gsc_context
608 struct gsc_scaler *sc = &ctx->sc; gsc_src_set_size() local
644 DRM_DEBUG_KMS("width[%d]range[%d]\n", pos->w, sc->range); gsc_src_set_size()
647 if (sc->range) gsc_src_set_size()
652 if (sc->range) gsc_src_set_size()
901 static int gsc_set_prescaler(struct gsc_context *ctx, struct gsc_scaler *sc, gsc_set_prescaler() argument
920 ret = gsc_get_ratio_shift(src_w, dst_w, &sc->pre_hratio); gsc_set_prescaler()
926 ret = gsc_get_ratio_shift(src_h, dst_h, &sc->pre_vratio); gsc_set_prescaler()
933 sc->pre_hratio, sc->pre_vratio); gsc_set_prescaler()
935 sc->main_hratio = (src_w << 16) / dst_w; gsc_set_prescaler()
936 sc->main_vratio = (src_h << 16) / dst_h; gsc_set_prescaler()
939 sc->main_hratio, sc->main_vratio); gsc_set_prescaler()
941 gsc_get_prescaler_shfactor(sc->pre_hratio, sc->pre_vratio, gsc_set_prescaler()
942 &sc->pre_shfactor); gsc_set_prescaler()
944 DRM_DEBUG_KMS("pre_shfactor[%d]\n", sc->pre_shfactor); gsc_set_prescaler()
946 cfg = (GSC_PRESC_SHFACTOR(sc->pre_shfactor) | gsc_set_prescaler()
947 GSC_PRESC_H_RATIO(sc->pre_hratio) | gsc_set_prescaler()
948 GSC_PRESC_V_RATIO(sc->pre_vratio)); gsc_set_prescaler()
1006 static void gsc_set_scaler(struct gsc_context *ctx, struct gsc_scaler *sc) gsc_set_scaler() argument
1011 sc->main_hratio, sc->main_vratio); gsc_set_scaler()
1013 gsc_set_h_coef(ctx, sc->main_hratio); gsc_set_scaler()
1014 cfg = GSC_MAIN_H_RATIO_VALUE(sc->main_hratio); gsc_set_scaler()
1017 gsc_set_v_coef(ctx, sc->main_vratio); gsc_set_scaler()
1018 cfg = GSC_MAIN_V_RATIO_VALUE(sc->main_vratio); gsc_set_scaler()
1027 struct gsc_scaler *sc = &ctx->sc; gsc_dst_set_size() local
1060 DRM_DEBUG_KMS("width[%d]range[%d]\n", pos->w, sc->range); gsc_dst_set_size()
1063 if (sc->range) gsc_dst_set_size()
1068 if (sc->range) gsc_dst_set_size()
1489 struct gsc_scaler *sc = &ctx->sc; gsc_ippdrv_reset() local
1500 memset(&ctx->sc, 0x0, sizeof(ctx->sc)); gsc_ippdrv_reset()
1501 sc->range = true; gsc_ippdrv_reset()
1589 ret = gsc_set_prescaler(ctx, &ctx->sc,
1597 gsc_set_scaler(ctx, &ctx->sc);
H A Dexynos_drm_fimc.c151 * @sc: scaler infomations.
165 struct fimc_scaler sc; member in struct:fimc_context
942 static int fimc_set_prescaler(struct fimc_context *ctx, struct fimc_scaler *sc, fimc_set_prescaler() argument
988 sc->hratio = (src_w << 14) / (dst_w << hfactor); fimc_set_prescaler()
989 sc->vratio = (src_h << 14) / (dst_h << vfactor); fimc_set_prescaler()
990 sc->up_h = (dst_w >= src_w) ? true : false; fimc_set_prescaler()
991 sc->up_v = (dst_h >= src_h) ? true : false; fimc_set_prescaler()
993 sc->hratio, sc->vratio, sc->up_h, sc->up_v); fimc_set_prescaler()
1010 static void fimc_set_scaler(struct fimc_context *ctx, struct fimc_scaler *sc) fimc_set_scaler() argument
1015 sc->range, sc->bypass, sc->up_h, sc->up_v); fimc_set_scaler()
1017 sc->hratio, sc->vratio); fimc_set_scaler()
1027 if (sc->range) fimc_set_scaler()
1030 if (sc->bypass) fimc_set_scaler()
1032 if (sc->up_h) fimc_set_scaler()
1034 if (sc->up_v) fimc_set_scaler()
1037 cfg |= (EXYNOS_CISCCTRL_MAINHORRATIO((sc->hratio >> 6)) | fimc_set_scaler()
1038 EXYNOS_CISCCTRL_MAINVERRATIO((sc->vratio >> 6))); fimc_set_scaler()
1044 cfg_ext |= (EXYNOS_CIEXTEN_MAINHORRATIO_EXT(sc->hratio) | fimc_set_scaler()
1045 EXYNOS_CIEXTEN_MAINVERRATIO_EXT(sc->vratio)); fimc_set_scaler()
1441 memset(&ctx->sc, 0x0, sizeof(ctx->sc)); fimc_ippdrv_reset()
1476 ret = fimc_set_prescaler(ctx, &ctx->sc,
1486 fimc_set_scaler(ctx, &ctx->sc);
/linux-4.1.27/arch/mips/include/asm/mach-pmcs-msp71xx/
H A Dmsp_regops.h5 * - These macros use ll/sc instructions, so it is your responsibility to
7 * - The MIPS32 spec states that ll/sc results are undefined for uncached
12 * - A maximum of 2k of code can be inserted between ll and sc. Every
14 * sc failing and having to loop.
84 " sc %0, %1 \n" set_value_reg32()
105 " sc %0, %1 \n" set_reg32()
126 " sc %0, %1 \n" clear_reg32()
147 " sc %0, %1 \n" toggle_reg32()
201 * If you need custom processing within a ll/sc loop, use the following macros
230 " sc %0, %1 #custom_write_reg32 \n" \
/linux-4.1.27/arch/cris/arch-v10/kernel/
H A Dsignal.c49 struct sigcontext sc; member in struct:sigframe
64 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
72 /* restore the regs from &sc->regs (same as sc, since regs is first) restore_sigcontext()
73 * (sc is already checked for VERIFY_READ since the sigframe was restore_sigcontext()
77 if (__copy_from_user(regs, sc, sizeof(struct pt_regs))) restore_sigcontext()
84 /* restore the old USP as it was before we stacked the sc etc. restore_sigcontext()
89 err |= __get_user(old_usp, &sc->usp); restore_sigcontext()
120 if (__get_user(set.sig[0], &frame->sc.oldmask) sys_sigreturn()
128 if (restore_sigcontext(regs, &frame->sc)) sys_sigreturn()
178 static int setup_sigcontext(struct sigcontext __user *sc, setup_sigcontext() argument
184 /* copy the regs. they are first in sc so we can use sc directly */ setup_sigcontext()
186 err |= __copy_to_user(sc, regs, sizeof(struct pt_regs)); setup_sigcontext()
195 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
197 err |= __put_user(usp, &sc->usp); setup_sigcontext()
237 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]); setup_frame()
/linux-4.1.27/drivers/infiniband/ulp/iser/
H A Diser_memory.c574 iser_set_dif_domain(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs, iser_set_dif_domain() argument
578 domain->sig.dif.pi_interval = scsi_prot_interval(sc); iser_set_dif_domain()
579 domain->sig.dif.ref_tag = scsi_prot_ref_tag(sc); iser_set_dif_domain()
582 * we will take them from sc. iser_set_dif_domain()
587 if (sc->prot_flags & SCSI_PROT_REF_INCREMENT) iser_set_dif_domain()
592 iser_set_sig_attrs(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs) iser_set_sig_attrs() argument
594 switch (scsi_get_prot_op(sc)) { iser_set_sig_attrs()
598 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->wire); iser_set_sig_attrs()
604 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->mem); iser_set_sig_attrs()
605 sig_attrs->mem.sig.dif.bg_type = sc->prot_flags & SCSI_PROT_IP_CHECKSUM ? iser_set_sig_attrs()
610 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->wire); iser_set_sig_attrs()
612 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->mem); iser_set_sig_attrs()
613 sig_attrs->mem.sig.dif.bg_type = sc->prot_flags & SCSI_PROT_IP_CHECKSUM ? iser_set_sig_attrs()
618 scsi_get_prot_op(sc)); iser_set_sig_attrs()
626 iser_set_prot_checks(struct scsi_cmnd *sc, u8 *mask) iser_set_prot_checks() argument
629 if (sc->prot_flags & SCSI_PROT_REF_CHECK) iser_set_prot_checks()
631 if (sc->prot_flags & SCSI_PROT_GUARD_CHECK) iser_set_prot_checks()
664 ret = iser_set_sig_attrs(iser_task->sc, &sig_attrs); iser_reg_sig_mr()
668 iser_set_prot_checks(iser_task->sc, &sig_attrs.check_mask); iser_reg_sig_mr()
682 if (scsi_prot_sg_count(iser_task->sc)) iser_reg_sig_mr()
703 sig_reg->sge.length = scsi_transfer_length(iser_task->sc); iser_reg_sig_mr()
812 scsi_get_prot_op(iser_task->sc) != SCSI_PROT_NORMAL) { iser_reg_rdma_mem_fastreg()
822 if (scsi_get_prot_op(iser_task->sc) != SCSI_PROT_NORMAL) { iser_reg_rdma_mem_fastreg()
826 if (scsi_prot_sg_count(iser_task->sc)) { iser_reg_rdma_mem_fastreg()
H A Diser_initiator.c65 if (scsi_prot_sg_count(iser_task->sc)) { iser_prepare_read_cmd()
120 if (scsi_prot_sg_count(iser_task->sc)) { iser_prepare_write_cmd()
385 struct scsi_cmnd *sc = task->sc; iser_send_command() local
403 if (scsi_sg_count(sc)) { /* using a scatter list */ iser_send_command()
404 data_buf->sg = scsi_sglist(sc); iser_send_command()
405 data_buf->size = scsi_sg_count(sc); iser_send_command()
407 data_buf->data_len = scsi_bufflen(sc); iser_send_command()
409 if (scsi_prot_sg_count(sc)) { iser_send_command()
410 prot_buf->sg = scsi_prot_sglist(sc); iser_send_command()
411 prot_buf->size = scsi_prot_sg_count(sc); iser_send_command()
413 ilog2(sc->device->sector_size)) * 8; iser_send_command()
674 int prot_count = scsi_prot_sg_count(iser_task->sc); iser_task_rdma_finalize()
H A Discsi_iser.c186 const bool mgmt_task = !task->sc && !in_interrupt(); iser_initialize_task_headers()
241 if (!task->sc) iscsi_iser_task_init()
246 iser_task->sc = task->sc; iscsi_iser_task_init()
323 if (!task->sc) iscsi_iser_task_xmit()
326 if (task->sc->sc_data_direction == DMA_TO_DEVICE) { iscsi_iser_task_xmit()
327 BUG_ON(scsi_bufflen(task->sc) == 0); iscsi_iser_task_xmit()
330 task->itt, scsi_bufflen(task->sc), iscsi_iser_task_xmit()
379 if (!task->sc) iscsi_iser_cleanup_task()
/linux-4.1.27/arch/metag/kernel/
H A Dsignal.c46 struct sigcontext __user *sc) restore_sigcontext()
54 &sc->regs); restore_sigcontext()
58 &sc->cb); restore_sigcontext()
62 &sc->rp); restore_sigcontext()
102 static int setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
108 &sc->regs); setup_sigcontext()
113 &sc->cb); setup_sigcontext()
117 &sc->rp); setup_sigcontext()
135 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
45 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
/linux-4.1.27/arch/cris/arch-v32/kernel/
H A Dsignal.c38 struct sigcontext sc; member in struct:signal_frame
56 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
65 * Restore the registers from &sc->regs. sc is already checked restore_sigcontext()
69 if (__copy_from_user(regs, sc, sizeof(struct pt_regs))) restore_sigcontext()
79 err |= __get_user(old_usp, &sc->usp); restore_sigcontext()
109 if (__get_user(set.sig[0], &frame->sc.oldmask) || sys_sigreturn()
117 if (restore_sigcontext(regs, &frame->sc)) sys_sigreturn()
172 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
182 * Copy the registers. They are located first in sc, so it's setup_sigcontext()
183 * possible to use sc directly. setup_sigcontext()
185 err |= __copy_to_user(sc, regs, sizeof(struct pt_regs)); setup_sigcontext()
187 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
188 err |= __put_user(usp, &sc->usp); setup_sigcontext()
225 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]); setup_frame()
/linux-4.1.27/arch/frv/kernel/
H A Dsignal.c43 struct sigcontext sc; member in struct:sigframe
59 static int restore_sigcontext(struct sigcontext __user *sc, int *_gr8) restore_sigcontext() argument
69 if (copy_from_user(user, &sc->sc_context, sizeof(sc->sc_context))) restore_sigcontext()
93 if (__get_user(set.sig[0], &frame->sc.sc_oldmask)) sys_sigreturn()
102 if (restore_sigcontext(&frame->sc, &gr8)) sys_sigreturn()
140 static int setup_sigcontext(struct sigcontext __user *sc, unsigned long mask) setup_sigcontext() argument
144 if (copy_to_user(&sc->sc_context, current->thread.user, sizeof(sc->sc_context)) != 0) setup_sigcontext()
148 if (__put_user(mask, &sc->sc_oldmask) < 0) setup_sigcontext()
187 if (setup_sigcontext(&frame->sc, set->sig[0])) setup_frame()
/linux-4.1.27/drivers/media/platform/exynos4-is/
H A Dfimc-reg.c237 struct fimc_scaler *sc = &ctx->scaler; fimc_hw_set_prescaler() local
240 shfactor = 10 - (sc->hfactor + sc->vfactor); fimc_hw_set_prescaler()
243 cfg |= (sc->pre_hratio << 16) | sc->pre_vratio; fimc_hw_set_prescaler()
246 cfg = (sc->pre_dst_width << 16) | sc->pre_dst_height; fimc_hw_set_prescaler()
253 struct fimc_scaler *sc = &ctx->scaler; fimc_hw_set_scaler() local
269 if (!sc->enabled) fimc_hw_set_scaler()
272 if (sc->scaleup_h) fimc_hw_set_scaler()
275 if (sc->scaleup_v) fimc_hw_set_scaler()
278 if (sc->copy_mode) fimc_hw_set_scaler()
318 struct fimc_scaler *sc = &ctx->scaler; fimc_hw_set_mainscaler() local
322 sc->main_hratio, sc->main_vratio); fimc_hw_set_mainscaler()
331 cfg |= FIMC_REG_CISCCTRL_MHRATIO_EXT(sc->main_hratio); fimc_hw_set_mainscaler()
332 cfg |= FIMC_REG_CISCCTRL_MVRATIO_EXT(sc->main_vratio); fimc_hw_set_mainscaler()
339 cfg |= FIMC_REG_CIEXTEN_MHRATIO_EXT(sc->main_hratio); fimc_hw_set_mainscaler()
340 cfg |= FIMC_REG_CIEXTEN_MVRATIO_EXT(sc->main_vratio); fimc_hw_set_mainscaler()
343 cfg |= FIMC_REG_CISCCTRL_MHRATIO(sc->main_hratio); fimc_hw_set_mainscaler()
344 cfg |= FIMC_REG_CISCCTRL_MVRATIO(sc->main_vratio); fimc_hw_set_mainscaler()
H A Dfimc-core.c253 struct fimc_scaler *sc = &ctx->scaler; fimc_set_scaler_info() local
277 sc->real_width = sx; fimc_set_scaler_info()
278 sc->real_height = sy; fimc_set_scaler_info()
280 ret = fimc_get_scaler_factor(sx, tx, &sc->pre_hratio, &sc->hfactor); fimc_set_scaler_info()
284 ret = fimc_get_scaler_factor(sy, ty, &sc->pre_vratio, &sc->vfactor); fimc_set_scaler_info()
288 sc->pre_dst_width = sx / sc->pre_hratio; fimc_set_scaler_info()
289 sc->pre_dst_height = sy / sc->pre_vratio; fimc_set_scaler_info()
292 sc->main_hratio = (sx << 14) / (tx << sc->hfactor); fimc_set_scaler_info()
293 sc->main_vratio = (sy << 14) / (ty << sc->vfactor); fimc_set_scaler_info()
295 sc->main_hratio = (sx << 8) / (tx << sc->hfactor); fimc_set_scaler_info()
296 sc->main_vratio = (sy << 8) / (ty << sc->vfactor); fimc_set_scaler_info()
300 sc->scaleup_h = (tx >= sx) ? 1 : 0; fimc_set_scaler_info()
301 sc->scaleup_v = (ty >= sy) ? 1 : 0; fimc_set_scaler_info()
307 sc->copy_mode = 1; fimc_set_scaler_info()
309 sc->copy_mode = 0; fimc_set_scaler_info()
/linux-4.1.27/fs/gfs2/
H A Dsuper.c451 void gfs2_statfs_change_in(struct gfs2_statfs_change_host *sc, const void *buf) gfs2_statfs_change_in() argument
455 sc->sc_total = be64_to_cpu(str->sc_total); gfs2_statfs_change_in()
456 sc->sc_free = be64_to_cpu(str->sc_free); gfs2_statfs_change_in()
457 sc->sc_dinodes = be64_to_cpu(str->sc_dinodes); gfs2_statfs_change_in()
460 static void gfs2_statfs_change_out(const struct gfs2_statfs_change_host *sc, void *buf) gfs2_statfs_change_out() argument
464 str->sc_total = cpu_to_be64(sc->sc_total); gfs2_statfs_change_out()
465 str->sc_free = cpu_to_be64(sc->sc_free); gfs2_statfs_change_out()
466 str->sc_dinodes = cpu_to_be64(sc->sc_dinodes); gfs2_statfs_change_out()
1044 * @sc: the sc structure
1050 struct gfs2_statfs_change_host *sc) statfs_slow_fill()
1053 sc->sc_total += rgd->rd_data; statfs_slow_fill()
1054 sc->sc_free += rgd->rd_free; statfs_slow_fill()
1055 sc->sc_dinodes += rgd->rd_dinodes; statfs_slow_fill()
1062 * @sc: the sc info that will be returned
1072 static int gfs2_statfs_slow(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc) gfs2_statfs_slow() argument
1081 memset(sc, 0, sizeof(struct gfs2_statfs_change_host)); gfs2_statfs_slow()
1102 gh->gh_gl->gl_object, sc); gfs2_statfs_slow()
1140 static int gfs2_statfs_i(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc) gfs2_statfs_i() argument
1147 *sc = *m_sc; gfs2_statfs_i()
1148 sc->sc_total += l_sc->sc_total; gfs2_statfs_i()
1149 sc->sc_free += l_sc->sc_free; gfs2_statfs_i()
1150 sc->sc_dinodes += l_sc->sc_dinodes; gfs2_statfs_i()
1154 if (sc->sc_free < 0) gfs2_statfs_i()
1155 sc->sc_free = 0; gfs2_statfs_i()
1156 if (sc->sc_free > sc->sc_total) gfs2_statfs_i()
1157 sc->sc_free = sc->sc_total; gfs2_statfs_i()
1158 if (sc->sc_dinodes < 0) gfs2_statfs_i()
1159 sc->sc_dinodes = 0; gfs2_statfs_i()
1176 struct gfs2_statfs_change_host sc; gfs2_statfs() local
1184 error = gfs2_statfs_slow(sdp, &sc); gfs2_statfs()
1186 error = gfs2_statfs_i(sdp, &sc); gfs2_statfs()
1193 buf->f_blocks = sc.sc_total; gfs2_statfs()
1194 buf->f_bfree = sc.sc_free; gfs2_statfs()
1195 buf->f_bavail = sc.sc_free; gfs2_statfs()
1196 buf->f_files = sc.sc_dinodes + sc.sc_free; gfs2_statfs()
1197 buf->f_ffree = sc.sc_free; gfs2_statfs()
1049 statfs_slow_fill(struct gfs2_rgrpd *rgd, struct gfs2_statfs_change_host *sc) statfs_slow_fill() argument
H A Dsuper.h43 extern void gfs2_statfs_change_in(struct gfs2_statfs_change_host *sc,
/linux-4.1.27/arch/openrisc/kernel/
H A Dsignal.c44 struct sigcontext __user *sc) restore_sigcontext()
52 * Restore the regs from &sc->regs. restore_sigcontext()
53 * (sc is already checked for VERIFY_READ since the sigframe was restore_sigcontext()
56 err |= __copy_from_user(regs, sc->regs.gpr, 32 * sizeof(unsigned long)); restore_sigcontext()
57 err |= __copy_from_user(&regs->pc, &sc->regs.pc, sizeof(unsigned long)); restore_sigcontext()
58 err |= __copy_from_user(&regs->sr, &sc->regs.sr, sizeof(unsigned long)); restore_sigcontext()
110 static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext() argument
118 err |= __copy_to_user(sc->regs.gpr, regs, 32 * sizeof(unsigned long)); setup_sigcontext()
119 err |= __copy_to_user(&sc->regs.pc, &regs->pc, sizeof(unsigned long)); setup_sigcontext()
120 err |= __copy_to_user(&sc->regs.sr, &regs->sr, sizeof(unsigned long)); setup_sigcontext()
43 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
/linux-4.1.27/drivers/net/
H A Deql.c267 static int eql_g_slave_cfg(struct net_device *dev, slave_config_t __user *sc);
268 static int eql_s_slave_cfg(struct net_device *dev, slave_config_t __user *sc);
484 slave_config_t sc; eql_g_slave_cfg() local
487 if (copy_from_user(&sc, scp, sizeof (slave_config_t))) eql_g_slave_cfg()
490 slave_dev = __dev_get_by_name(&init_net, sc.slave_name); eql_g_slave_cfg()
500 sc.priority = slave->priority; eql_g_slave_cfg()
506 if (!ret && copy_to_user(scp, &sc, sizeof (slave_config_t))) eql_g_slave_cfg()
517 slave_config_t sc; eql_s_slave_cfg() local
520 if (copy_from_user(&sc, scp, sizeof (slave_config_t))) eql_s_slave_cfg()
523 slave_dev = __dev_get_by_name(&init_net, sc.slave_name); eql_s_slave_cfg()
534 slave->priority = sc.priority; eql_s_slave_cfg()
535 slave->priority_bps = sc.priority; eql_s_slave_cfg()
536 slave->priority_Bps = sc.priority / 8; eql_s_slave_cfg()
/linux-4.1.27/tools/perf/
H A Dbuiltin-trace.c135 ({ struct syscall_tp *sc = evsel->priv;\
136 perf_evsel__init_tp_uint_field(evsel, &sc->name, #name); })
151 ({ struct syscall_tp *sc = evsel->priv;\
152 perf_evsel__init_tp_ptr_field(evsel, &sc->name, #name); })
1443 static int syscall__set_arg_fmts(struct syscall *sc) syscall__set_arg_fmts() argument
1448 sc->arg_scnprintf = calloc(sc->nr_args, sizeof(void *)); syscall__set_arg_fmts()
1449 if (sc->arg_scnprintf == NULL) syscall__set_arg_fmts()
1452 if (sc->fmt) syscall__set_arg_fmts()
1453 sc->arg_parm = sc->fmt->arg_parm; syscall__set_arg_fmts()
1455 for (field = sc->args; field; field = field->next) { syscall__set_arg_fmts()
1456 if (sc->fmt && sc->fmt->arg_scnprintf[idx]) syscall__set_arg_fmts()
1457 sc->arg_scnprintf[idx] = sc->fmt->arg_scnprintf[idx]; syscall__set_arg_fmts()
1459 sc->arg_scnprintf[idx] = syscall_arg__scnprintf_hex; syscall__set_arg_fmts()
1469 struct syscall *sc; trace__read_syscall_info() local
1476 struct syscall *nsyscalls = realloc(trace->syscalls.table, (id + 1) * sizeof(*sc)); trace__read_syscall_info()
1483 (id - trace->syscalls.max) * sizeof(*sc)); trace__read_syscall_info()
1485 memset(nsyscalls, 0, (id + 1) * sizeof(*sc)); trace__read_syscall_info()
1492 sc = trace->syscalls.table + id; trace__read_syscall_info()
1493 sc->name = name; trace__read_syscall_info()
1499 sc->filtered = true; trace__read_syscall_info()
1508 sc->fmt = syscall_fmt__find(sc->name); trace__read_syscall_info()
1510 snprintf(tp_name, sizeof(tp_name), "sys_enter_%s", sc->name); trace__read_syscall_info()
1511 sc->tp_format = trace_event__tp_format("syscalls", tp_name); trace__read_syscall_info()
1513 if (sc->tp_format == NULL && sc->fmt && sc->fmt->alias) { trace__read_syscall_info()
1514 snprintf(tp_name, sizeof(tp_name), "sys_enter_%s", sc->fmt->alias); trace__read_syscall_info()
1515 sc->tp_format = trace_event__tp_format("syscalls", tp_name); trace__read_syscall_info()
1518 if (sc->tp_format == NULL) trace__read_syscall_info()
1521 sc->args = sc->tp_format->format.fields; trace__read_syscall_info()
1522 sc->nr_args = sc->tp_format->format.nr_fields; trace__read_syscall_info()
1524 if (sc->args && strcmp(sc->args->name, "nr") == 0) { trace__read_syscall_info()
1525 sc->args = sc->args->next; trace__read_syscall_info()
1526 --sc->nr_args; trace__read_syscall_info()
1529 sc->is_exit = !strcmp(name, "exit_group") || !strcmp(name, "exit"); trace__read_syscall_info()
1531 return syscall__set_arg_fmts(sc); trace__read_syscall_info()
1543 static size_t syscall__scnprintf_args(struct syscall *sc, char *bf, size_t size, syscall__scnprintf_args() argument
1551 if (sc->args != NULL) { syscall__scnprintf_args()
1561 for (field = sc->args; field; syscall__scnprintf_args()
1576 !(sc->arg_scnprintf && syscall__scnprintf_args()
1577 sc->arg_scnprintf[arg.idx] == SCA_STRARRAY && syscall__scnprintf_args()
1578 sc->arg_parm[arg.idx])) syscall__scnprintf_args()
1583 if (sc->arg_scnprintf && sc->arg_scnprintf[arg.idx]) { syscall__scnprintf_args()
1585 if (sc->arg_parm) syscall__scnprintf_args()
1586 arg.parm = sc->arg_parm[arg.idx]; syscall__scnprintf_args()
1587 printed += sc->arg_scnprintf[arg.idx](bf + printed, syscall__scnprintf_args()
1716 struct syscall *sc = trace__syscall_info(trace, evsel, id); trace__sys_enter() local
1719 if (sc == NULL) trace__sys_enter()
1722 if (sc->filtered) trace__sys_enter()
1743 printed += scnprintf(msg + printed, 1024 - printed, "%s(", sc->name); trace__sys_enter()
1745 printed += syscall__scnprintf_args(sc, msg + printed, 1024 - printed, trace__sys_enter()
1748 if (sc->is_exit) { trace__sys_enter()
1772 struct syscall *sc = trace__syscall_info(trace, evsel, id); trace__sys_exit() local
1775 if (sc == NULL) trace__sys_exit()
1778 if (sc->filtered) trace__sys_exit()
1816 fprintf(trace->output, "]: %s()", sc->name); trace__sys_exit()
1819 if (sc->fmt == NULL) { trace__sys_exit()
1822 } else if (ret < 0 && sc->fmt->errmsg) { trace__sys_exit()
1828 } else if (ret == 0 && sc->fmt->timeout) trace__sys_exit()
1830 else if (sc->fmt->hexret) trace__sys_exit()
2457 struct syscall *sc; thread__dump_stats() local
2482 sc = &trace->syscalls.table[inode->i]; thread__dump_stats()
2483 printed += fprintf(fp, " %-15s", sc->name); thread__dump_stats()
/linux-4.1.27/include/linux/
H A Dlist_lru.h113 struct shrink_control *sc) list_lru_shrink_count()
115 return list_lru_count_one(lru, sc->nid, sc->memcg); list_lru_shrink_count()
167 list_lru_shrink_walk(struct list_lru *lru, struct shrink_control *sc, list_lru_shrink_walk() argument
170 return list_lru_walk_one(lru, sc->nid, sc->memcg, isolate, cb_arg, list_lru_shrink_walk()
171 &sc->nr_to_scan); list_lru_shrink_walk()
112 list_lru_shrink_count(struct list_lru *lru, struct shrink_control *sc) list_lru_shrink_count() argument
H A Dshrinker.h51 struct shrink_control *sc);
53 struct shrink_control *sc);
H A Ddio.h19 * The DIO board with select code sc is located at physical address
20 * 0x600000 + sc * 0x10000
26 * DIO-II boards are at 0x1000000 + (sc - 132) * 0x400000
/linux-4.1.27/drivers/s390/scsi/
H A Dzfcp_dbf.c399 * @sc: pointer to struct scsi_cmnd
402 void zfcp_dbf_scsi(char *tag, struct scsi_cmnd *sc, struct zfcp_fsf_req *fsf) zfcp_dbf_scsi() argument
405 (struct zfcp_adapter *) sc->device->host->hostdata[0]; zfcp_dbf_scsi()
417 rec->scsi_result = sc->result; zfcp_dbf_scsi()
418 rec->scsi_retries = sc->retries; zfcp_dbf_scsi()
419 rec->scsi_allowed = sc->allowed; zfcp_dbf_scsi()
420 rec->scsi_id = sc->device->id; zfcp_dbf_scsi()
422 rec->scsi_lun = (u32)sc->device->lun; zfcp_dbf_scsi()
423 rec->host_scribble = (unsigned long)sc->host_scribble; zfcp_dbf_scsi()
425 memcpy(rec->scsi_opcode, sc->cmnd, zfcp_dbf_scsi()
426 min((int)sc->cmd_len, ZFCP_DBF_SCSI_OPCODE)); zfcp_dbf_scsi()
440 zfcp_dbf_pl_write(dbf, sc->sense_buffer, rec->pl_len, zfcp_dbf_scsi()
/linux-4.1.27/drivers/net/ethernet/freescale/fs_enet/
H A Dfs_enet-main.c91 u16 pkt_len, sc; fs_enet_rx_napi() local
106 while (((sc = CBDR_SC(bdp)) & BD_ENET_RX_EMPTY) == 0) { fs_enet_rx_napi()
113 if ((sc & BD_ENET_RX_LAST) == 0) fs_enet_rx_napi()
119 if (sc & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_CL | fs_enet_rx_napi()
123 if (sc & (BD_ENET_RX_LG | BD_ENET_RX_SH)) fs_enet_rx_napi()
126 if (sc & (BD_ENET_RX_NO | BD_ENET_RX_CL)) fs_enet_rx_napi()
129 if (sc & BD_ENET_RX_CR) fs_enet_rx_napi()
132 if (sc & BD_ENET_RX_OV) fs_enet_rx_napi()
192 CBDW_SC(bdp, (sc & ~BD_ENET_RX_STATS) | BD_ENET_RX_EMPTY); fs_enet_rx_napi()
197 if ((sc & BD_ENET_RX_WRAP) == 0) fs_enet_rx_napi()
226 u16 sc; fs_enet_tx_napi() local
236 while (((sc = CBDR_SC(bdp)) & BD_ENET_TX_READY) == 0) { fs_enet_tx_napi()
247 if (sc & (BD_ENET_TX_HB | BD_ENET_TX_LC | fs_enet_tx_napi()
250 if (sc & BD_ENET_TX_HB) /* No heartbeat */ fs_enet_tx_napi()
252 if (sc & BD_ENET_TX_LC) /* Late collision */ fs_enet_tx_napi()
254 if (sc & BD_ENET_TX_RL) /* Retrans limit */ fs_enet_tx_napi()
256 if (sc & BD_ENET_TX_UN) /* Underrun */ fs_enet_tx_napi()
258 if (sc & BD_ENET_TX_CSL) /* Carrier lost */ fs_enet_tx_napi()
261 if (sc & (BD_ENET_TX_LC | BD_ENET_TX_RL | BD_ENET_TX_UN)) { fs_enet_tx_napi()
268 if (sc & BD_ENET_TX_READY) { fs_enet_tx_napi()
277 if (sc & BD_ENET_TX_DEF) fs_enet_tx_napi()
299 if ((sc & BD_ENET_TX_WRAP) == 0) fs_enet_tx_napi()
517 u16 sc; fs_enet_start_xmit() local
593 sc = BD_ENET_TX_READY | BD_ENET_TX_INTR | fs_enet_start_xmit()
600 sc |= BD_ENET_TX_PAD; fs_enet_start_xmit()
602 CBDS_SC(bdp, sc); fs_enet_start_xmit()
/linux-4.1.27/arch/mips/include/asm/mach-ath25/
H A Dcpu-feature-overrides.h37 * ll/sc instructions.
/linux-4.1.27/net/ipv4/
H A Dtcp_scalable.c5 * John Heffner <jheffner@sc.edu>
/linux-4.1.27/arch/parisc/lib/
H A Dmemset.c28 memset (void *dstpp, int sc, size_t len) memset() argument
30 unsigned int c = sc; memset()
/linux-4.1.27/drivers/media/usb/gspca/
H A Djpeg.h155 int i, sc; jpeg_set_qual() local
158 sc = 5000; jpeg_set_qual()
160 sc = 5000 / quality; jpeg_set_qual()
162 sc = 200 - quality * 2; jpeg_set_qual()
165 (jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100; jpeg_set_qual()
167 (jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100; jpeg_set_qual()
/linux-4.1.27/arch/blackfin/kernel/
H A Dsignal.c41 rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *pr0) rt_restore_sigcontext() argument
49 #define RESTORE(x) err |= __get_user(regs->x, &sc->sc_##x) rt_restore_sigcontext()
56 err |= __get_user(usp, &sc->sc_usp); rt_restore_sigcontext()
108 static inline int rt_setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs) rt_setup_sigcontext() argument
112 #define SETUP(x) err |= __put_user(regs->x, &sc->sc_##x) rt_setup_sigcontext()
118 err |= __put_user(rdusp(), &sc->sc_usp); rt_setup_sigcontext()
/linux-4.1.27/arch/m32r/kernel/
H A Dsignal.c45 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, restore_sigcontext() argument
53 #define COPY(x) err |= __get_user(regs->x, &sc->sc_##x) restore_sigcontext()
83 err |= __get_user(*r0_p, &sc->sc_r0); restore_sigcontext()
122 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
127 #define COPY(x) err |= __put_user(regs->x, &sc->sc_##x) setup_sigcontext()
156 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
/linux-4.1.27/drivers/scsi/aic94xx/
H A Daic94xx_task.c60 struct scatterlist *sc; asd_map_scatterlist() local
97 for_each_sg(task->scatter, sc, num_sg, i) { asd_map_scatterlist()
100 sg->bus_addr = cpu_to_le64((u64)sg_dma_address(sc)); asd_map_scatterlist()
101 sg->size = cpu_to_le32((u32)sg_dma_len(sc)); asd_map_scatterlist()
106 for_each_sg(task->scatter, sc, 2, i) { asd_map_scatterlist()
108 cpu_to_le64((u64)sg_dma_address(sc)); asd_map_scatterlist()
109 sg_arr[i].size = cpu_to_le32((u32)sg_dma_len(sc)); asd_map_scatterlist()
118 for_each_sg(task->scatter, sc, num_sg, i) { asd_map_scatterlist()
120 cpu_to_le64((u64)sg_dma_address(sc)); asd_map_scatterlist()
121 sg_arr[i].size = cpu_to_le32((u32)sg_dma_len(sc)); asd_map_scatterlist()
/linux-4.1.27/kernel/trace/
H A Dtrace_kprobe.c93 unsigned long update_symbol_cache(struct symbol_cache *sc) update_symbol_cache() argument
95 sc->addr = (unsigned long)kallsyms_lookup_name(sc->symbol); update_symbol_cache()
97 if (sc->addr) update_symbol_cache()
98 sc->addr += sc->offset; update_symbol_cache()
100 return sc->addr; update_symbol_cache()
103 void free_symbol_cache(struct symbol_cache *sc) free_symbol_cache() argument
105 kfree(sc->symbol); free_symbol_cache()
106 kfree(sc); free_symbol_cache()
111 struct symbol_cache *sc; alloc_symbol_cache() local
116 sc = kzalloc(sizeof(struct symbol_cache), GFP_KERNEL); alloc_symbol_cache()
117 if (!sc) alloc_symbol_cache()
120 sc->symbol = kstrdup(sym, GFP_KERNEL); alloc_symbol_cache()
121 if (!sc->symbol) { alloc_symbol_cache()
122 kfree(sc); alloc_symbol_cache()
125 sc->offset = offset; alloc_symbol_cache()
126 update_symbol_cache(sc); alloc_symbol_cache()
128 return sc; alloc_symbol_cache()
232 struct symbol_cache *sc = data; \
233 if (sc->addr) \
234 fetch_memory_##type(regs, (void *)sc->addr, dest); \
H A Dtrace_probe.h234 unsigned long update_symbol_cache(struct symbol_cache *sc);
235 void free_symbol_cache(struct symbol_cache *sc);
248 static inline unsigned long __used update_symbol_cache(struct symbol_cache *sc) update_symbol_cache() argument
253 static inline void __used free_symbol_cache(struct symbol_cache *sc) free_symbol_cache() argument
/linux-4.1.27/drivers/media/platform/exynos-gsc/
H A Dgsc-regs.c349 struct gsc_scaler *sc = &ctx->scaler; gsc_hw_set_prescaler() local
352 cfg = GSC_PRESC_SHFACTOR(sc->pre_shfactor); gsc_hw_set_prescaler()
353 cfg |= GSC_PRESC_H_RATIO(sc->pre_hratio); gsc_hw_set_prescaler()
354 cfg |= GSC_PRESC_V_RATIO(sc->pre_vratio); gsc_hw_set_prescaler()
361 struct gsc_scaler *sc = &ctx->scaler; gsc_hw_set_mainscaler() local
364 cfg = GSC_MAIN_H_RATIO_VALUE(sc->main_hratio); gsc_hw_set_mainscaler()
367 cfg = GSC_MAIN_V_RATIO_VALUE(sc->main_vratio); gsc_hw_set_mainscaler()
H A Dgsc-core.c637 struct gsc_scaler *sc = &ctx->scaler; gsc_set_scaler_info() local
668 tx, &sc->pre_hratio); gsc_set_scaler_info()
675 ty, &sc->pre_vratio); gsc_set_scaler_info()
681 gsc_check_src_scale_info(variant, s_frame, &sc->pre_hratio, gsc_set_scaler_info()
682 tx, ty, &sc->pre_vratio); gsc_set_scaler_info()
684 gsc_get_prescaler_shfactor(sc->pre_hratio, sc->pre_vratio, gsc_set_scaler_info()
685 &sc->pre_shfactor); gsc_set_scaler_info()
687 sc->main_hratio = (s_frame->crop.width << 16) / tx; gsc_set_scaler_info()
688 sc->main_vratio = (s_frame->crop.height << 16) / ty; gsc_set_scaler_info()
693 sc->pre_shfactor, sc->pre_hratio); gsc_set_scaler_info()
695 sc->pre_vratio, sc->main_hratio, sc->main_vratio); gsc_set_scaler_info()
/linux-4.1.27/arch/xtensa/kernel/
H A Dsignal.c137 struct sigcontext __user *sc = &frame->uc.uc_mcontext; setup_sigcontext() local
141 #define COPY(x) err |= __put_user(regs->x, &sc->sc_##x) setup_sigcontext()
151 err |= __copy_to_user (sc->sc_a, regs->areg, 16 * 4); setup_sigcontext()
152 err |= __put_user(0, &sc->sc_xtregs); setup_sigcontext()
168 err |= __put_user(err ? NULL : &frame->xtregs, &sc->sc_xtregs); setup_sigcontext()
176 struct sigcontext __user *sc = &frame->uc.uc_mcontext; restore_sigcontext() local
181 #define COPY(x) err |= __get_user(regs->x, &sc->sc_##x) restore_sigcontext()
201 err |= __get_user(ps, &sc->sc_ps); restore_sigcontext()
210 err |= __copy_from_user(regs->areg, sc->sc_a, 16 * 4); restore_sigcontext()
/linux-4.1.27/arch/s390/kernel/
H A Dsignal.c64 struct sigcontext sc; member in struct:sigframe
243 if (__copy_from_user(&set.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE)) SYSCALL_DEFINE0()
308 struct sigcontext sc; setup_frame() local
330 memcpy(&sc.oldmask, &set->sig, _SIGMASK_COPY_SIZE); setup_frame()
331 sc.sregs = (_sigregs __user __force *) &frame->sregs; setup_frame()
332 if (__copy_to_user(&frame->sc, &sc, sizeof(frame->sc))) setup_frame()
372 regs->gprs[3] = (unsigned long) &frame->sc; setup_frame()
H A Dcompat_signal.c36 struct sigcontext32 sc; member in struct:__anon2521
322 if (__copy_from_user(&cset.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE32)) COMPAT_SYSCALL_DEFINE0()
395 struct sigcontext32 sc; setup_frame32() local
417 sigset_to_sigset32(set->sig, sc.oldmask); setup_frame32()
418 sc.sregs = (__u32)(unsigned long __force) &frame->sregs; setup_frame32()
419 if (__copy_to_user(&frame->sc, &sc, sizeof(frame->sc))) setup_frame32()
460 regs->gprs[3] = (__force __u64) &frame->sc; setup_frame32()
/linux-4.1.27/drivers/staging/android/ion/
H A Dion_heap.c269 struct shrink_control *sc) ion_heap_shrink_count()
277 total += heap->ops->shrink(heap, sc->gfp_mask, 0); ion_heap_shrink_count()
282 struct shrink_control *sc) ion_heap_shrink_scan()
287 int to_scan = sc->nr_to_scan; ion_heap_shrink_scan()
305 freed += heap->ops->shrink(heap, sc->gfp_mask, to_scan); ion_heap_shrink_scan()
268 ion_heap_shrink_count(struct shrinker *shrinker, struct shrink_control *sc) ion_heap_shrink_count() argument
281 ion_heap_shrink_scan(struct shrinker *shrinker, struct shrink_control *sc) ion_heap_shrink_scan() argument
/linux-4.1.27/include/media/
H A Dmsp3400.h140 #define MSP_INPUT(sc, t, main_aux_src, sc_i2s_src) \
141 (MSP_SCART_TO_DSP(sc) | \
150 #define MSP_OUTPUT(sc) \
151 (MSP_SC_TO_SCART1(sc) | \
152 MSP_SC_TO_SCART2(sc))
/linux-4.1.27/arch/mips/include/asm/octeon/
H A Dcvmx-spinlock.h94 * due to the ll/sc not succeeding.
112 " sc %[tmp], %[val] \n" cvmx_spinlock_trylock()
136 " sc %[tmp], %[val] \n" cvmx_spinlock_lock()
172 " sc %[tmp], %[val] \n" cvmx_spinlock_bit_lock()
204 " sc %[tmp], %[val] \n" cvmx_spinlock_bit_trylock()
/linux-4.1.27/arch/alpha/boot/
H A Dstdio.c14 const char *sc; strnlen() local
16 for (sc = s; count-- && *sc != '\0'; ++sc) strnlen()
18 return sc - s; strnlen()
/linux-4.1.27/sound/pci/lola/
H A Dlola_clock.c195 struct lola_sample_clock *sc; lola_init_clock_widget() local
196 sc = &chip->clock.sample_clock[idx_list]; lola_init_clock_widget()
197 sc->type = type; lola_init_clock_widget()
198 sc->format = format; lola_init_clock_widget()
199 sc->freq = freq; lola_init_clock_widget()
/linux-4.1.27/net/tipc/
H A Daddr.c79 u32 addr_domain(struct net *net, u32 sc) addr_domain() argument
83 if (likely(sc == TIPC_NODE_SCOPE)) addr_domain()
85 if (sc == TIPC_CLUSTER_SCOPE) addr_domain()
H A Daddr.h62 u32 addr_domain(struct net *net, u32 sc);
/linux-4.1.27/arch/microblaze/kernel/
H A Dsignal.c48 struct sigcontext sc; member in struct:sigframe
60 struct sigcontext __user *sc, int *rval_p) restore_sigcontext()
64 #define COPY(x) {err |= __get_user(regs->x, &sc->regs.x); } restore_sigcontext()
120 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
125 #define COPY(x) {err |= __put_user(regs->x, &sc->regs.x); } setup_sigcontext()
139 err |= __put_user(mask, &sc->oldmask); setup_sigcontext()
59 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *rval_p) restore_sigcontext() argument
/linux-4.1.27/drivers/usb/storage/
H A Dusual-tables.c45 #define UNUSUAL_VENDOR_INTF(id_vendor, cl, sc, pr, \
53 .bInterfaceSubClass = (sc), \
/linux-4.1.27/fs/
H A Dinternal.h116 extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc);
133 extern long prune_dcache_sb(struct super_block *sb, struct shrink_control *sc);
H A Dsuper.c56 struct shrink_control *sc) super_cache_scan()
71 if (!(sc->gfp_mask & __GFP_FS)) super_cache_scan()
78 fs_objects = sb->s_op->nr_cached_objects(sb, sc); super_cache_scan()
80 inodes = list_lru_shrink_count(&sb->s_inode_lru, sc); super_cache_scan()
81 dentries = list_lru_shrink_count(&sb->s_dentry_lru, sc); super_cache_scan()
87 dentries = mult_frac(sc->nr_to_scan, dentries, total_objects); super_cache_scan()
88 inodes = mult_frac(sc->nr_to_scan, inodes, total_objects); super_cache_scan()
89 fs_objects = mult_frac(sc->nr_to_scan, fs_objects, total_objects); super_cache_scan()
98 sc->nr_to_scan = dentries + 1; super_cache_scan()
99 freed = prune_dcache_sb(sb, sc); super_cache_scan()
100 sc->nr_to_scan = inodes + 1; super_cache_scan()
101 freed += prune_icache_sb(sb, sc); super_cache_scan()
104 sc->nr_to_scan = fs_objects + 1; super_cache_scan()
105 freed += sb->s_op->free_cached_objects(sb, sc); super_cache_scan()
113 struct shrink_control *sc) super_cache_count()
129 total_objects = sb->s_op->nr_cached_objects(sb, sc); super_cache_count()
131 total_objects += list_lru_shrink_count(&sb->s_dentry_lru, sc); super_cache_count()
132 total_objects += list_lru_shrink_count(&sb->s_inode_lru, sc); super_cache_count()
55 super_cache_scan(struct shrinker *shrink, struct shrink_control *sc) super_cache_scan() argument
112 super_cache_count(struct shrinker *shrink, struct shrink_control *sc) super_cache_count() argument
H A Dmbcache.c243 * @sc: shrink_control passed from reclaim
248 mb_cache_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) mb_cache_shrink_scan() argument
252 int nr_to_scan = sc->nr_to_scan; mb_cache_shrink_scan()
253 gfp_t gfp_mask = sc->gfp_mask; mb_cache_shrink_scan()
291 mb_cache_shrink_count(struct shrinker *shrink, struct shrink_control *sc) mb_cache_shrink_count() argument
/linux-4.1.27/drivers/scsi/libsas/
H A Dsas_scsi_host.c53 static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task) sas_end_task() argument
72 scsi_set_resid(sc, ts->residual); sas_end_task()
73 if (scsi_bufflen(sc) - scsi_get_resid(sc) < sc->underflow) sas_end_task()
103 memcpy(sc->sense_buffer, ts->buf, sas_end_task()
113 sc->result = (hs << 16) | stat; sas_end_task()
114 ASSIGN_SAS_TASK(sc, NULL); sas_end_task()
120 struct scsi_cmnd *sc = task->uldd_task; sas_scsi_task_done() local
129 ASSIGN_SAS_TASK(sc, NULL); sas_scsi_task_done()
138 if (unlikely(!sc)) { sas_scsi_task_done()
144 sas_end_task(sc, task); sas_scsi_task_done()
145 sc->scsi_done(sc); sas_scsi_task_done()
927 struct scsi_cmnd *sc = task->uldd_task; sas_task_abort() local
930 if (!sc) { sas_task_abort()
944 struct request_queue *q = sc->device->request_queue; sas_task_abort()
948 blk_abort_request(sc->request); sas_task_abort()
/linux-4.1.27/include/trace/events/
H A Dvmscan.h183 TP_PROTO(struct shrinker *shr, struct shrink_control *sc,
188 TP_ARGS(shr, sc, nr_objects_to_shrink, pgs_scanned, lru_pgs,
207 __entry->nid = sc->nid;
209 __entry->gfp_flags = sc->gfp_mask;
/linux-4.1.27/arch/s390/include/asm/
H A Dnmi.h33 __u32 sc : 1; /* 17 storage error corrected */ member in struct:mci
/linux-4.1.27/arch/avr32/kernel/
H A Dsignal.c32 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
36 #define COPY(x) err |= __get_user(regs->x, &sc->x) restore_sigcontext()
102 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) setup_sigcontext() argument
106 #define COPY(x) err |= __put_user(regs->x, &sc->x) setup_sigcontext()
/linux-4.1.27/drivers/scsi/lpfc/
H A Dlpfc_scsi.c87 lpfc_prot_group_type(struct lpfc_hba *phba, struct scsi_cmnd *sc);
147 lpfc_cmd_blksize(struct scsi_cmnd *sc) lpfc_cmd_blksize() argument
149 return sc->device->sector_size; lpfc_cmd_blksize()
155 lpfc_cmd_protect(struct scsi_cmnd *sc, int flag) lpfc_cmd_protect() argument
161 lpfc_cmd_guard_csum(struct scsi_cmnd *sc) lpfc_cmd_guard_csum() argument
163 if (lpfc_prot_group_type(NULL, sc) == LPFC_PG_TYPE_NO_DIF) lpfc_cmd_guard_csum()
165 if (scsi_host_get_guard(sc->device->host) == SHOST_DIX_GUARD_IP) lpfc_cmd_guard_csum()
1284 * @sc: The SCSI command to examine
1292 lpfc_bg_err_inject(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_bg_err_inject() argument
1301 uint32_t op = scsi_get_prot_op(sc); lpfc_bg_err_inject()
1311 sgpe = scsi_prot_sglist(sc); lpfc_bg_err_inject()
1312 sgde = scsi_sglist(sc); lpfc_bg_err_inject()
1313 lba = scsi_get_lba(sc); lpfc_bg_err_inject()
1317 blksize = lpfc_cmd_blksize(sc); lpfc_bg_err_inject()
1318 numblks = (scsi_bufflen(sc) + blksize - 1) / blksize; lpfc_bg_err_inject()
1334 rdata = lpfc_rport_data_from_scsi_device(sc->device); lpfc_bg_err_inject()
1357 lpfc_cmd = (struct lpfc_scsi_buf *)sc->host_scribble; lpfc_bg_err_inject()
1691 * @sc: The SCSI command to examine
1699 lpfc_sc_to_bg_opcodes(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_sc_to_bg_opcodes() argument
1704 if (lpfc_cmd_guard_csum(sc)) { lpfc_sc_to_bg_opcodes()
1705 switch (scsi_get_prot_op(sc)) { lpfc_sc_to_bg_opcodes()
1728 scsi_get_prot_op(sc)); lpfc_sc_to_bg_opcodes()
1734 switch (scsi_get_prot_op(sc)) { lpfc_sc_to_bg_opcodes()
1757 scsi_get_prot_op(sc)); lpfc_sc_to_bg_opcodes()
1771 * @sc: The SCSI command to examine
1779 lpfc_bg_err_opcodes(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_bg_err_opcodes() argument
1784 if (lpfc_cmd_guard_csum(sc)) { lpfc_bg_err_opcodes()
1785 switch (scsi_get_prot_op(sc)) { lpfc_bg_err_opcodes()
1810 switch (scsi_get_prot_op(sc)) { lpfc_bg_err_opcodes()
1842 * @sc: pointer to scsi command we're working on
1871 lpfc_bg_setup_bpl(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_bg_setup_bpl() argument
1879 int datadir = sc->sc_data_direction; lpfc_bg_setup_bpl()
1888 status = lpfc_sc_to_bg_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_bpl()
1893 blksize = lpfc_cmd_blksize(sc); lpfc_bg_setup_bpl()
1894 reftag = (uint32_t)scsi_get_lba(sc); /* Truncate LBA */ lpfc_bg_setup_bpl()
1897 rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1); lpfc_bg_setup_bpl()
1900 lpfc_bg_err_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_bpl()
1931 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD)) lpfc_bg_setup_bpl()
1936 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF)) lpfc_bg_setup_bpl()
1955 scsi_for_each_sg(sc, sgde, datasegcnt, i) { scsi_for_each_sg()
1976 * @sc: pointer to scsi command we're working on
2013 lpfc_bg_setup_bpl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_bg_setup_bpl_prot() argument
2028 int datadir = sc->sc_data_direction; lpfc_bg_setup_bpl_prot()
2039 sgpe = scsi_prot_sglist(sc); lpfc_bg_setup_bpl_prot()
2040 sgde = scsi_sglist(sc); lpfc_bg_setup_bpl_prot()
2049 status = lpfc_sc_to_bg_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_bpl_prot()
2054 blksize = lpfc_cmd_blksize(sc); lpfc_bg_setup_bpl_prot()
2055 reftag = (uint32_t)scsi_get_lba(sc); /* Truncate LBA */ lpfc_bg_setup_bpl_prot()
2058 rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1); lpfc_bg_setup_bpl_prot()
2061 lpfc_bg_err_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_bpl_prot()
2093 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD)) lpfc_bg_setup_bpl_prot()
2098 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF)) lpfc_bg_setup_bpl_prot()
2231 * @sc: pointer to scsi command we're working on
2258 lpfc_bg_setup_sgl(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_bg_setup_sgl() argument
2275 status = lpfc_sc_to_bg_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_sgl()
2280 blksize = lpfc_cmd_blksize(sc); lpfc_bg_setup_sgl()
2281 reftag = (uint32_t)scsi_get_lba(sc); /* Truncate LBA */ lpfc_bg_setup_sgl()
2284 rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1); lpfc_bg_setup_sgl()
2287 lpfc_bg_err_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_sgl()
2306 if (sc->sc_data_direction == DMA_FROM_DEVICE) { lpfc_bg_setup_sgl()
2307 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD)) lpfc_bg_setup_sgl()
2312 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF)) lpfc_bg_setup_sgl()
2334 scsi_for_each_sg(sc, sgde, datasegcnt, i) { scsi_for_each_sg()
2360 * @sc: pointer to scsi command we're working on
2395 lpfc_bg_setup_sgl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc, lpfc_bg_setup_sgl_prot() argument
2420 sgpe = scsi_prot_sglist(sc); lpfc_bg_setup_sgl_prot()
2421 sgde = scsi_sglist(sc); lpfc_bg_setup_sgl_prot()
2430 status = lpfc_sc_to_bg_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_sgl_prot()
2435 blksize = lpfc_cmd_blksize(sc); lpfc_bg_setup_sgl_prot()
2436 reftag = (uint32_t)scsi_get_lba(sc); /* Truncate LBA */ lpfc_bg_setup_sgl_prot()
2439 rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1); lpfc_bg_setup_sgl_prot()
2442 lpfc_bg_err_opcodes(phba, sc, &txop, &rxop); lpfc_bg_setup_sgl_prot()
2463 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD)) { lpfc_bg_setup_sgl_prot()
2482 if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF)) lpfc_bg_setup_sgl_prot()
2619 * @sc: pointer to scsi command we're working on
2628 lpfc_prot_group_type(struct lpfc_hba *phba, struct scsi_cmnd *sc) lpfc_prot_group_type() argument
2631 unsigned char op = scsi_get_prot_op(sc); lpfc_prot_group_type()
2668 struct scsi_cmnd *sc = lpfc_cmd->pCmd; lpfc_bg_scsi_adjust_dl() local
2671 fcpdl = scsi_bufflen(sc); lpfc_bg_scsi_adjust_dl()
2674 if (sc->sc_data_direction == DMA_FROM_DEVICE) { lpfc_bg_scsi_adjust_dl()
2676 if (scsi_get_prot_op(sc) == SCSI_PROT_READ_INSERT) lpfc_bg_scsi_adjust_dl()
2681 if (scsi_get_prot_op(sc) == SCSI_PROT_WRITE_STRIP) lpfc_bg_scsi_adjust_dl()
2690 fcpdl += (fcpdl / lpfc_cmd_blksize(sc)) * 8; lpfc_bg_scsi_adjust_dl()
/linux-4.1.27/drivers/media/platform/s3c-camif/
H A Dcamif-regs.c367 struct camif_scaler *sc = &vp->scaler; camif_hw_set_prescaler() local
372 shfactor = 10 - (sc->h_shift + sc->v_shift); camif_hw_set_prescaler()
375 cfg |= (sc->pre_h_ratio << 16) | sc->pre_v_ratio; camif_hw_set_prescaler()
378 cfg = (sc->pre_dst_width << 16) | sc->pre_dst_height; camif_hw_set_prescaler()
/linux-4.1.27/lib/
H A Dstring.c390 const char *sc; strlen() local
392 for (sc = s; *sc != '\0'; ++sc) strlen()
394 return sc - s; strlen()
407 const char *sc; strnlen() local
409 for (sc = s; count-- && *sc != '\0'; ++sc) strnlen()
411 return sc - s; strnlen()
/linux-4.1.27/drivers/gpu/drm/i915/
H A Di915_gem_shrinker.c195 i915_gem_shrinker_count(struct shrinker *shrinker, struct shrink_control *sc) i915_gem_shrinker_count() argument
225 i915_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc) i915_gem_shrinker_scan() argument
237 sc->nr_to_scan, i915_gem_shrinker_scan()
241 if (freed < sc->nr_to_scan) i915_gem_shrinker_scan()
243 sc->nr_to_scan - freed, i915_gem_shrinker_scan()
/linux-4.1.27/arch/c6x/kernel/
H A Dsignal.c38 struct sigcontext __user *sc) restore_sigcontext()
43 #define COPY(x) (err |= __get_user(regs->x, &sc->sc_##x)) restore_sigcontext()
100 static int setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, setup_sigcontext() argument
105 err |= __put_user(mask, &sc->sc_mask); setup_sigcontext()
108 #define COPY(x) (err |= __put_user(regs->x, &sc->sc_##x)) setup_sigcontext()
37 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
/linux-4.1.27/sound/isa/
H A Dsc6000.c62 MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard.");
64 MODULE_PARM_DESC(id, "ID string for sc-6000 based soundcard.");
66 MODULE_PARM_DESC(enable, "Enable sc-6000 based soundcard.");
68 MODULE_PARM_DESC(port, "Port # for sc-6000 driver.");
70 MODULE_PARM_DESC(mss_port, "MSS Port # for sc-6000 driver.");
72 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for sc-6000 driver.");
74 MODULE_PARM_DESC(irq, "IRQ # for sc-6000 driver.");
76 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver.");
78 MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver.");
/linux-4.1.27/drivers/isdn/hardware/mISDN/
H A DmISDNinfineon.c120 struct inf_hw *sc[3]; /* slave cards */ member in struct:inf_hw
886 if (card->sc[i]) release_card()
887 release_card(card->sc[i]); release_card()
888 card->sc[i] = NULL; release_card()
1113 struct inf_hw *sc; inf_probe() local
1116 sc = kzalloc(sizeof(struct inf_hw), GFP_KERNEL); inf_probe()
1117 if (!sc) { inf_probe()
1122 sc->irq = card->irq; inf_probe()
1123 sc->pdev = card->pdev; inf_probe()
1124 sc->ci = card->ci + i; inf_probe()
1125 err = setup_instance(sc); inf_probe()
1128 kfree(sc); inf_probe()
1132 card->sc[i - 1] = sc; inf_probe()
/linux-4.1.27/drivers/gpu/drm/qxl/
H A Dqxl_release.c63 int count = 0, sc = 0; qxl_fence_wait() local
72 sc++; qxl_fence_wait()
90 if (have_drawable_releases || sc < 4) { qxl_fence_wait()
91 if (sc > 2) qxl_fence_wait()
98 if (have_drawable_releases && sc > 300) { qxl_fence_wait()
101 fence->context & ~0xf0000000, sc); qxl_fence_wait()
/linux-4.1.27/include/scsi/
H A Dlibiscsi.h129 struct scsi_cmnd *sc; /* associated SCSI cmd*/ member in struct:iscsi_task
381 extern int iscsi_eh_abort(struct scsi_cmnd *sc);
382 extern int iscsi_eh_recover_target(struct scsi_cmnd *sc);
383 extern int iscsi_eh_session_reset(struct scsi_cmnd *sc);
384 extern int iscsi_eh_device_reset(struct scsi_cmnd *sc);
385 extern int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc);
/linux-4.1.27/drivers/irqchip/
H A Dirq-sunxi-nmi.c201 IRQCHIP_DECLARE(sun6i_sc_nmi, "allwinner,sun6i-a31-sc-nmi", sun6i_sc_nmi_irq_init);
208 IRQCHIP_DECLARE(sun7i_sc_nmi, "allwinner,sun7i-a20-sc-nmi", sun7i_sc_nmi_irq_init);
/linux-4.1.27/drivers/staging/lustre/lustre/ptlrpc/
H A Dsec_bulk.c223 struct shrink_control *sc) enc_pools_shrink_count()
245 struct shrink_control *sc) enc_pools_shrink_scan()
248 sc->nr_to_scan = min_t(unsigned long, sc->nr_to_scan, enc_pools_shrink_scan()
250 if (sc->nr_to_scan > 0) { enc_pools_shrink_scan()
251 enc_pools_release_free_pages(sc->nr_to_scan); enc_pools_shrink_scan()
253 (long)sc->nr_to_scan, page_pools.epp_free_pages); enc_pools_shrink_scan()
272 return sc->nr_to_scan; enc_pools_shrink_scan()
222 enc_pools_shrink_count(struct shrinker *s, struct shrink_control *sc) enc_pools_shrink_count() argument
244 enc_pools_shrink_scan(struct shrinker *s, struct shrink_control *sc) enc_pools_shrink_scan() argument
/linux-4.1.27/arch/x86/mm/
H A Dpageattr-test.c113 struct split_state sa, sb, sc; pageattr_test() local
221 failed += print_split(&sc); pageattr_test()
/linux-4.1.27/arch/blackfin/include/asm/
H A Dipipe.h174 #define __ipipe_syscall_watched_p(p, sc) \
175 (ipipe_notifier_enabled_p(p) || (unsigned long)sc >= NR_syscalls)
/linux-4.1.27/drivers/scsi/bnx2i/
H A Dbnx2i_iscsi.c145 struct scsi_cmnd *sc = cmd->scsi_cmd; bnx2i_map_scsi_sg() local
155 BUG_ON(scsi_sg_count(sc) > ISCSI_MAX_BDS_PER_CMD); bnx2i_map_scsi_sg()
157 sg_count = scsi_dma_map(sc); bnx2i_map_scsi_sg()
159 scsi_for_each_sg(sc, sg, sg_count, i) { scsi_for_each_sg()
176 BUG_ON(byte_count != scsi_bufflen(sc));
209 struct scsi_cmnd *sc = cmd->scsi_cmd; bnx2i_iscsi_unmap_sg_list() local
211 if (cmd->io_tbl.bd_valid && sc) { bnx2i_iscsi_unmap_sg_list()
212 scsi_dma_unmap(sc); bnx2i_iscsi_unmap_sg_list()
1128 * @sc: SCSI-ML command pointer
1131 static void bnx2i_cpy_scsi_cdb(struct scsi_cmnd *sc, struct bnx2i_cmd *cmd) bnx2i_cpy_scsi_cdb() argument
1139 int_to_scsilun(sc->device->lun, (struct scsi_lun *) scsi_lun); bnx2i_cpy_scsi_cdb()
1144 srcp = (u8 *) sc->cmnd; bnx2i_cpy_scsi_cdb()
1152 if (sc->cmd_len & 0x3) { bnx2i_cpy_scsi_cdb()
1167 if (!task->sc || task->state == ISCSI_TASK_PENDING) bnx2i_cleanup_task()
1228 struct scsi_cmnd *sc = task->sc; bnx2i_task_xmit() local
1239 if (!sc) bnx2i_task_xmit()
1245 cmd->scsi_cmd = sc; bnx2i_task_xmit()
1246 cmd->req.total_data_transfer_length = scsi_bufflen(sc); bnx2i_task_xmit()
1250 bnx2i_cpy_scsi_cdb(sc, cmd); bnx2i_task_xmit()
1253 if (sc->sc_data_direction == DMA_TO_DEVICE) { bnx2i_task_xmit()
1259 if (scsi_bufflen(sc)) bnx2i_task_xmit()
/linux-4.1.27/arch/tile/kernel/
H A Dsignal.c46 struct sigcontext __user *sc) restore_sigcontext()
59 err = __copy_from_user(regs, sc, sizeof(*regs)); restore_sigcontext()
108 int setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) setup_sigcontext() argument
110 return __copy_to_user(sc, regs, sizeof(*regs)); setup_sigcontext()
45 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) restore_sigcontext() argument
/linux-4.1.27/drivers/net/wireless/hostap/
H A Dhostap_80211_rx.c255 u16 sc; prism2_frag_cache_get() local
259 sc = le16_to_cpu(hdr->seq_ctrl); prism2_frag_cache_get()
260 frag = sc & IEEE80211_SCTL_FRAG; prism2_frag_cache_get()
261 seq = (sc & IEEE80211_SCTL_SEQ) >> 4; prism2_frag_cache_get()
306 u16 sc; prism2_frag_cache_invalidate() local
310 sc = le16_to_cpu(hdr->seq_ctrl); prism2_frag_cache_invalidate()
311 seq = (sc & IEEE80211_SCTL_SEQ) >> 4; prism2_frag_cache_invalidate()
724 u16 fc, type, stype, sc; hostap_80211_rx() local
756 sc = le16_to_cpu(hdr->seq_ctrl); hostap_80211_rx()
757 frag = sc & IEEE80211_SCTL_FRAG; hostap_80211_rx()
928 (sc & IEEE80211_SCTL_SEQ) >> 4, frag); hostap_80211_rx()
/linux-4.1.27/drivers/tty/serial/
H A Dioc3_serial.c267 char sc[4]; /* status/control */ member in struct:ring_entry::__anon10357::__anon10359
272 /* Test the valid bits in any of the 4 sc chars using "allsc" member */
276 #define ring_sc u.s.sc
1125 char *sc; do_read() local
1242 sc = &(entry->ring_sc[byte_num]); do_read()
1245 if ((*sc & RXSB_MODEM_VALID) do_read()
1249 && !(*sc & RXSB_DCD)) { do_read()
1267 *sc &= ~RXSB_MODEM_VALID; do_read()
1303 if (*sc & RXSB_MODEM_VALID) { do_read()
1305 if ((*sc & RXSB_OVERRUN) do_read()
1310 *sc &= ~RXSB_MODEM_VALID; do_read()
1314 if ((*sc & RXSB_DATA_VALID) && do_read()
1315 ((*sc & (RXSB_PAR_ERR do_read()
1331 if ((*sc & RXSB_PAR_ERR) && do_read()
1337 if ((*sc & RXSB_FRAME_ERR) && do_read()
1343 if ((*sc & RXSB_BREAK) do_read()
1351 if (*sc & RXSB_DATA_VALID) { do_read()
1352 *sc &= ~RXSB_DATA_VALID; do_read()
/linux-4.1.27/drivers/net/wireless/ipw2x00/
H A Dlibipw_rx.c93 u16 sc; libipw_frag_cache_get() local
97 sc = le16_to_cpu(hdr->seq_ctl); libipw_frag_cache_get()
98 frag = WLAN_GET_SEQ_FRAG(sc); libipw_frag_cache_get()
99 seq = WLAN_GET_SEQ_SEQ(sc); libipw_frag_cache_get()
143 u16 sc; libipw_frag_cache_invalidate() local
147 sc = le16_to_cpu(hdr->seq_ctl); libipw_frag_cache_invalidate()
148 seq = WLAN_GET_SEQ_SEQ(sc); libipw_frag_cache_invalidate()
338 u16 fc, type, stype, sc; libipw_rx() local
365 sc = le16_to_cpu(hdr->seq_ctl); libipw_rx()
366 frag = WLAN_GET_SEQ_FRAG(sc); libipw_rx()
486 if (sc == ieee->prev_seq_ctl) libipw_rx()
489 ieee->prev_seq_ctl = sc; libipw_rx()
592 WLAN_GET_SEQ_SEQ(sc), frag); libipw_rx()
/linux-4.1.27/drivers/net/wireless/ath/ath6kl/
H A Dwmi.c1957 struct wmi_start_scan_cmd *sc; ath6kl_wmi_startscan_cmd() local
1976 sc = (struct wmi_start_scan_cmd *) skb->data; ath6kl_wmi_startscan_cmd()
1977 sc->scan_type = scan_type; ath6kl_wmi_startscan_cmd()
1978 sc->force_fg_scan = cpu_to_le32(force_fgscan); ath6kl_wmi_startscan_cmd()
1979 sc->is_legacy = cpu_to_le32(is_legacy); ath6kl_wmi_startscan_cmd()
1980 sc->home_dwell_time = cpu_to_le32(home_dwell_time); ath6kl_wmi_startscan_cmd()
1981 sc->force_scan_intvl = cpu_to_le32(force_scan_interval); ath6kl_wmi_startscan_cmd()
1982 sc->num_ch = num_chan; ath6kl_wmi_startscan_cmd()
1985 sc->ch_list[i] = cpu_to_le16(ch_list[i]); ath6kl_wmi_startscan_cmd()
2006 struct wmi_begin_scan_cmd *sc; ath6kl_wmi_beginscan_cmd() local
2037 sc = (struct wmi_begin_scan_cmd *) skb->data; ath6kl_wmi_beginscan_cmd()
2038 sc->scan_type = scan_type; ath6kl_wmi_beginscan_cmd()
2039 sc->force_fg_scan = cpu_to_le32(force_fgscan); ath6kl_wmi_beginscan_cmd()
2040 sc->is_legacy = cpu_to_le32(is_legacy); ath6kl_wmi_beginscan_cmd()
2041 sc->home_dwell_time = cpu_to_le32(home_dwell_time); ath6kl_wmi_beginscan_cmd()
2042 sc->force_scan_intvl = cpu_to_le32(force_scan_interval); ath6kl_wmi_beginscan_cmd()
2043 sc->no_cck = cpu_to_le32(no_cck); ath6kl_wmi_beginscan_cmd()
2044 sc->num_ch = num_chan; ath6kl_wmi_beginscan_cmd()
2056 supp_rates = sc->supp_rates[band].rates; ath6kl_wmi_beginscan_cmd()
2065 sc->supp_rates[band].nrates = num_rates; ath6kl_wmi_beginscan_cmd()
2069 sc->ch_list[i] = cpu_to_le16(ch_list[i]); ath6kl_wmi_beginscan_cmd()
2080 struct wmi_enable_sched_scan_cmd *sc; ath6kl_wmi_enable_sched_scan_cmd() local
2083 skb = ath6kl_wmi_get_new_buf(sizeof(*sc)); ath6kl_wmi_enable_sched_scan_cmd()
2089 sc = (struct wmi_enable_sched_scan_cmd *) skb->data; ath6kl_wmi_enable_sched_scan_cmd()
2090 sc->enable = enable ? 1 : 0; ath6kl_wmi_enable_sched_scan_cmd()
2107 struct wmi_scan_params_cmd *sc; ath6kl_wmi_scanparams_cmd() local
2110 skb = ath6kl_wmi_get_new_buf(sizeof(*sc)); ath6kl_wmi_scanparams_cmd()
2114 sc = (struct wmi_scan_params_cmd *) skb->data; ath6kl_wmi_scanparams_cmd()
2115 sc->fg_start_period = cpu_to_le16(fg_start_sec); ath6kl_wmi_scanparams_cmd()
2116 sc->fg_end_period = cpu_to_le16(fg_end_sec); ath6kl_wmi_scanparams_cmd()
2117 sc->bg_period = cpu_to_le16(bg_sec); ath6kl_wmi_scanparams_cmd()
2118 sc->minact_chdwell_time = cpu_to_le16(minact_chdw_msec); ath6kl_wmi_scanparams_cmd()
2119 sc->maxact_chdwell_time = cpu_to_le16(maxact_chdw_msec); ath6kl_wmi_scanparams_cmd()
2120 sc->pas_chdwell_time = cpu_to_le16(pas_chdw_msec); ath6kl_wmi_scanparams_cmd()
2121 sc->short_scan_ratio = short_scan_ratio; ath6kl_wmi_scanparams_cmd()
2122 sc->scan_ctrl_flags = scan_ctrl_flag; ath6kl_wmi_scanparams_cmd()
2123 sc->max_dfsch_act_time = cpu_to_le32(max_dfsch_act_time); ath6kl_wmi_scanparams_cmd()
2124 sc->maxact_scan_per_ssid = cpu_to_le16(maxact_scan_per_ssid); ath6kl_wmi_scanparams_cmd()
/linux-4.1.27/crypto/
H A Dtwofish_common.c500 ctx->s[2][i] = mds[2][q1[(a) ^ sc] ^ sg]; \
508 ctx->s[2][i] = mds[2][q1[q0[(a) ^ sc] ^ sg] ^ sk]; \
516 ctx->s[2][i] = mds[2][q1[q0[q0[(a) ^ sc] ^ sg] ^ sk] ^ so]; \
593 u8 sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0, sg = 0, sh = 0; __twofish_setkey() local
610 CALC_S (sa, sb, sc, sd, 0, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */ __twofish_setkey()
611 CALC_S (sa, sb, sc, sd, 1, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */ __twofish_setkey()
612 CALC_S (sa, sb, sc, sd, 2, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */ __twofish_setkey()
613 CALC_S (sa, sb, sc, sd, 3, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */ __twofish_setkey()
614 CALC_S (sa, sb, sc, sd, 4, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */ __twofish_setkey()
615 CALC_S (sa, sb, sc, sd, 5, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */ __twofish_setkey()
616 CALC_S (sa, sb, sc, sd, 6, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */ __twofish_setkey()
617 CALC_S (sa, sb, sc, sd, 7, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */ __twofish_setkey()
/linux-4.1.27/fs/ubifs/
H A Dshrinker.c280 struct shrink_control *sc) ubifs_shrink_count()
292 struct shrink_control *sc) ubifs_shrink_scan()
294 unsigned long nr = sc->nr_to_scan; ubifs_shrink_scan()
279 ubifs_shrink_count(struct shrinker *shrink, struct shrink_control *sc) ubifs_shrink_count() argument
291 ubifs_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) ubifs_shrink_scan() argument
/linux-4.1.27/arch/arm/mach-omap2/
H A Dclockdomains3xxx_data.c500 struct clockdomain **sc; omap3xxx_clockdomains_init() local
517 sc = (rev == OMAP3430_REV_ES1_0) ? omap3xxx_clockdomains_init()
520 clkdm_register_clkdms(sc); omap3xxx_clockdomains_init()
/linux-4.1.27/drivers/md/bcache/
H A Dsysfs.c621 struct shrink_control sc; SHOW_LOCKED() local
622 sc.gfp_mask = GFP_KERNEL; SHOW_LOCKED()
623 sc.nr_to_scan = strtoul_or_return(buf); SHOW_LOCKED()
624 c->shrink.scan_objects(&c->shrink, &sc); SHOW_LOCKED()
/linux-4.1.27/drivers/scsi/bnx2fc/
H A Dbnx2fc_io.c235 BNX2FC_IO_DBG(io_req, "sc=%p, result=0x%x, retries=%d, allowed=%d\n", bnx2fc_scsi_done()
1646 struct scsi_cmnd *sc = io_req->sc_cmd; bnx2fc_map_sg() local
1661 sg_count = dma_map_sg(&hba->pcidev->dev, scsi_sglist(sc), bnx2fc_map_sg()
1662 scsi_sg_count(sc), sc->sc_data_direction); scsi_for_each_sg()
1663 scsi_for_each_sg(sc, sg, sg_count, i) { scsi_for_each_sg()
1680 if (byte_count != scsi_bufflen(sc))
1682 "task_id = 0x%x\n", byte_count, scsi_bufflen(sc),
1689 struct scsi_cmnd *sc = io_req->sc_cmd; bnx2fc_build_bd_list_from_sg() local
1693 if (scsi_sg_count(sc)) { bnx2fc_build_bd_list_from_sg()
1709 struct scsi_cmnd *sc = io_req->sc_cmd; bnx2fc_unmap_sg_list() local
1717 if (io_req->bd_tbl->bd_valid && sc && scsi_sg_count(sc)) { bnx2fc_unmap_sg_list()
1718 dma_unmap_sg(&hba->pcidev->dev, scsi_sglist(sc), bnx2fc_unmap_sg_list()
1719 scsi_sg_count(sc), sc->sc_data_direction); bnx2fc_unmap_sg_list()
/linux-4.1.27/drivers/staging/speakup/
H A Dspeakup.h50 void spk_reset_index_count(int sc);
/linux-4.1.27/arch/mips/mm/
H A Dsc-ip22.c2 * sc-ip22.c: Indy cache management functions.
/linux-4.1.27/arch/arm/mach-w90x900/
H A Dirq.c54 static DEFINE_GROUP(sc, 24, 2);
/linux-4.1.27/drivers/scsi/cxgbi/
H A Dlibcxgbi.c1686 struct scsi_cmnd *sc = task->sc; task_release_itt() local
1695 if (sc && task_release_itt()
1696 (scsi_bidi_cmnd(sc) || sc->sc_data_direction == DMA_FROM_DEVICE) && task_release_itt()
1703 struct scsi_cmnd *sc = task->sc; task_reserve_itt() local
1714 if (sc && task_reserve_itt()
1715 (scsi_bidi_cmnd(sc) || sc->sc_data_direction == DMA_FROM_DEVICE)) { task_reserve_itt()
1717 scsi_in(sc)->length, task_reserve_itt()
1718 scsi_in(sc)->table.sgl, task_reserve_itt()
1719 scsi_in(sc)->table.nents, task_reserve_itt()
1724 cconn->cep->csk, task, scsi_in(sc)->length, task_reserve_itt()
1725 scsi_in(sc)->table.nents); task_reserve_itt()
2096 struct scsi_cmnd *sc = task->sc; cxgbi_conn_alloc_pdu() local
2105 (scsi_bidi_cmnd(sc) || sc->sc_data_direction == DMA_TO_DEVICE)))) cxgbi_conn_alloc_pdu()
2162 task, task->sc, skb, (*skb->data) & ISCSI_OPCODE_MASK, cxgbi_conn_init_pdu()
2170 if (task->sc) { cxgbi_conn_init_pdu()
2171 struct scsi_data_buffer *sdb = scsi_out(task->sc); cxgbi_conn_init_pdu()
2276 task, task->sc, skb, skb->len, skb->data_len, err); cxgbi_conn_xmit_pdu()
/linux-4.1.27/net/netfilter/ipvs/
H A Dip_vs_sync.c784 ip_vs_conn_fill_param_sync(struct net *net, int af, union ip_vs_sync_conn *sc, ip_vs_conn_fill_param_sync() argument
791 ip_vs_conn_fill_param(net, af, sc->v6.protocol, ip_vs_conn_fill_param_sync()
792 (const union nf_inet_addr *)&sc->v6.caddr, ip_vs_conn_fill_param_sync()
793 sc->v6.cport, ip_vs_conn_fill_param_sync()
794 (const union nf_inet_addr *)&sc->v6.vaddr, ip_vs_conn_fill_param_sync()
795 sc->v6.vport, p); ip_vs_conn_fill_param_sync()
798 ip_vs_conn_fill_param(net, af, sc->v4.protocol, ip_vs_conn_fill_param_sync()
799 (const union nf_inet_addr *)&sc->v4.caddr, ip_vs_conn_fill_param_sync()
800 sc->v4.cport, ip_vs_conn_fill_param_sync()
801 (const union nf_inet_addr *)&sc->v4.vaddr, ip_vs_conn_fill_param_sync()
802 sc->v4.vport, p); ip_vs_conn_fill_param_sync()
/linux-4.1.27/include/net/nfc/
H A Ddigital.h81 u16 sc; member in struct:digital_tg_mdaa_params
126 * tech. NFCID2 and system code (sc) for 212F and 424F. The driver returns
/linux-4.1.27/arch/powerpc/kernel/vdso32/
H A Dgettimeofday.S142 sc
177 sc
H A Dsigtramp.S29 sc
37 sc
/linux-4.1.27/net/ieee802154/
H A Dheader_ops.c206 static int ieee802154_hdr_sechdr_len(u8 sc) ieee802154_hdr_sechdr_len() argument
208 return ieee802154_sechdr_lengths[IEEE802154_SCF_KEY_ID_MODE(sc)]; ieee802154_hdr_sechdr_len()
/linux-4.1.27/include/linux/ceph/
H A Dlibceph.h166 struct ceph_snap_context *sc);
167 extern void ceph_put_snap_context(struct ceph_snap_context *sc);
/linux-4.1.27/drivers/staging/rtl8192e/
H A Drtllib_rx.c96 u16 sc = le16_to_cpu(hdr->seq_ctl); rtllib_frag_cache_get() local
97 unsigned int frag = WLAN_GET_SEQ_FRAG(sc); rtllib_frag_cache_get()
98 unsigned int seq = WLAN_GET_SEQ_SEQ(sc); rtllib_frag_cache_get()
165 u16 sc = le16_to_cpu(hdr->seq_ctl); rtllib_frag_cache_invalidate() local
166 unsigned int seq = WLAN_GET_SEQ_SEQ(sc); rtllib_frag_cache_invalidate()
362 u16 sc = le16_to_cpu(header->seq_ctl); is_duplicate_packet() local
363 u16 seq = WLAN_GET_SEQ_SEQ(sc); is_duplicate_packet()
364 u16 frag = WLAN_GET_SEQ_FRAG(sc); is_duplicate_packet()
886 u16 fc, sc; rtllib_rx_check_duplicate() local
892 sc = le16_to_cpu(hdr->seq_ctl); rtllib_rx_check_duplicate()
893 frag = WLAN_GET_SEQ_FRAG(sc); rtllib_rx_check_duplicate()
909 (WLAN_GET_SEQ_SEQ(sc) == pRxTS->RxLastSeqNum)) rtllib_rx_check_duplicate()
912 pRxTS->RxLastSeqNum = WLAN_GET_SEQ_SEQ(sc); rtllib_rx_check_duplicate()
1049 u16 fc, sc; rtllib_rx_decrypt() local
1054 sc = le16_to_cpu(hdr->seq_ctl); rtllib_rx_decrypt()
1055 frag = WLAN_GET_SEQ_FRAG(sc); rtllib_rx_decrypt()
1079 WLAN_GET_SEQ_SEQ(sc), frag); rtllib_rx_decrypt()
1259 u16 fc, sc, SeqNum = 0; rtllib_rx_InfraAdhoc() local
1270 sc = le16_to_cpu(hdr->seq_ctl); rtllib_rx_InfraAdhoc()
1358 SeqNum = WLAN_GET_SEQ_SEQ(sc); rtllib_rx_InfraAdhoc()
/linux-4.1.27/drivers/scsi/be2iscsi/
H A Dbe_main.c218 static int beiscsi_eh_abort(struct scsi_cmnd *sc) beiscsi_eh_abort() argument
221 struct iscsi_task *aborted_task = (struct iscsi_task *)sc->SCp.ptr; beiscsi_eh_abort()
232 cls_session = starget_to_session(scsi_target(sc->device)); beiscsi_eh_abort()
236 if (!aborted_task || !aborted_task->sc) { beiscsi_eh_abort()
293 return iscsi_eh_abort(sc); beiscsi_eh_abort()
296 static int beiscsi_eh_device_reset(struct scsi_cmnd *sc) beiscsi_eh_device_reset() argument
311 cls_session = starget_to_session(scsi_target(sc->device)); beiscsi_eh_device_reset()
328 if (!abrt_task->sc || abrt_task->state == ISCSI_TASK_FREE) beiscsi_eh_device_reset()
331 if (sc->device->lun != abrt_task->sc->device->lun) beiscsi_eh_device_reset()
373 return iscsi_eh_device_reset(sc); beiscsi_eh_device_reset()
1319 if (!task->sc) { be_complete_io()
1327 task->sc->result = (DID_OK << 16) | status; be_complete_io()
1329 task->sc->result = DID_ERROR << 16; be_complete_io()
1336 task->sc->result = DID_ERROR << 16; be_complete_io()
1339 scsi_set_resid(task->sc, resid); be_complete_io()
1340 if (!status && (scsi_bufflen(task->sc) - resid < be_complete_io()
1341 task->sc->underflow)) be_complete_io()
1342 task->sc->result = DID_ERROR << 16; be_complete_io()
1352 memcpy(task->sc->sense_buffer, sense, be_complete_io()
4617 if (task->sc) { beiscsi_cleanup_task()
4724 if (task->sc) { beiscsi_alloc_pdu()
5069 struct scsi_cmnd *sc = task->sc; beiscsi_task_xmit() local
5077 if (!sc) beiscsi_task_xmit()
5080 io_task->scsi_cmnd = sc; beiscsi_task_xmit()
5081 num_sg = scsi_dma_map(sc); beiscsi_task_xmit()
5092 io_task->libiscsi_itt, scsi_bufflen(sc)); beiscsi_task_xmit()
5096 xferlen = scsi_bufflen(sc); beiscsi_task_xmit()
5097 sg = scsi_sglist(sc); beiscsi_task_xmit()
5098 if (sc->sc_data_direction == DMA_TO_DEVICE) beiscsi_task_xmit()

Completed in 4714 milliseconds

12