/linux-4.1.27/drivers/net/wan/lmc/ |
H A D | lmc_media.c | 157 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 D | lmc_proto.h | 6 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 D | lmc_main.c | 98 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 D | lmc_proto.c | 50 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 D | lmc.h | 10 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 D | lmc_var.h | 33 #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 D | channel.c | 23 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 D | main.c | 57 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 D | tx99.c | 19 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 D | gpio.c | 27 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 D | debug.c | 29 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 D | recv.c | 23 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 D | beacon.c | 22 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 D | init.c | 93 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 D | wow.c | 33 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 D | link.c | 25 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 D | dfs.c | 51 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 D | xmit.c | 50 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 D | ath9k.h | 74 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 D | mci.c | 119 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 D | dfs_debug.c | 29 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 D | ahb.c | 61 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 D | debug.h | 28 #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 D | mci.h | 154 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 D | dfs_debug.h | 58 #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 D | pci.c | 771 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 D | debug_sta.c | 27 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 D | dfs.h | 25 * @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 D | antenna.c | 721 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 D | Makefile | 1 # 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 D | init.c | 85 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 D | dm-stripe.c | 52 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 D | Makefile | 3 ti-vpe-y := vpe.o sc.o csc.o vpdma.o
|
H A D | sc.c | 20 #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 D | sc.h | 198 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 D | vpe.c | 48 #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 D | simscsi.c | 68 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 D | sudmac.c | 54 #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 D | rcar-hpbdma.c | 125 #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 D | signal.c | 125 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 D | ueagle-atm.c | 296 #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 D | tcp.c | 77 #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 D | netdebug.c | 152 " 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 D | tcp_internal.h | 92 /* 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 D | tcp.h | 131 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 D | fnic_scsi.c | 107 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 D | signal.c | 44 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 D | signal32.c | 39 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 D | syscall.c | 117 "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 D | signal.c | 47 static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) setup_sigcontext() argument 52 err |= copy_to_user(&sc->sc_regs.r0, ®s->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(®s->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 D | hid-sony.c | 891 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 D | cx18-alsa-main.c | 89 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 D | cx18-alsa-mixer.c | 164 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 D | cx18-av-core.c | 299 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 D | cx18-alsa.h | 26 struct snd_card *sc; member in struct:snd_cx18_card
|
H A D | cx18-alsa-pcm.c | 329 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 D | ivtv-alsa-main.c | 89 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 D | ivtv-alsa-mixer.c | 164 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 D | ivtv-alsa.h | 27 struct snd_card *sc; member in struct:snd_ivtv_card
|
H A D | ivtv-alsa-pcm.c | 336 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 D | snapshot.c | 61 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 D | ceph_fs.c | 13 __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 D | signal32.c | 63 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 D | signal.c | 71 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 D | signal32.h | 84 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 D | sb1250-mac.c | 286 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 D | signal.c | 43 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 D | sigframe.h | 22 struct sigcontext sc; member in struct:sigframe
|
/linux-4.1.27/arch/x86/include/asm/ |
H A D | sighandling.h | 16 int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc); 17 int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
|
H A D | sigframe.h | 26 struct sigcontext_ia32 sc; member in struct:sigframe_ia32
|
/linux-4.1.27/drivers/scsi/ |
H A D | virtio_scsi.c | 39 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 D | libiscsi.c | 185 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 D | xen-scsifront.c | 96 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 D | libiscsi_tcp.c | 457 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 D | string.h | 10 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 D | tcm_loop.c | 117 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 D | tcm_loop.h | 16 struct scsi_cmnd *sc; member in struct:tcm_loop_cmd
|
/linux-4.1.27/arch/score/kernel/ |
H A D | signal.c | 44 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 D | ia32_signal.c | 142 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 D | swap_cgroup.c | 67 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 D | vmscan.c | 153 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 D | workingset.c | 270 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 D | signal.c | 47 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 D | signal.c | 199 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 D | dec_and_lock.c | 4 * ll/sc version of atomic_dec_and_lock()
|
/linux-4.1.27/arch/arm/boot/compressed/ |
H A D | string.c | 61 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 D | switch_endian_test.S | 64 sc 69 .long 0x02000044 /* sc */ 77 sc 80 sc
|
/linux-4.1.27/drivers/message/fusion/ |
H A D | mptscsih.c | 89 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 D | signal_64.c | 80 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(¤t->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 D | signal_32.c | 494 /* 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 D | spinlock.h | 70 " 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 D | edac.h | 26 " sc %0, %1 \n" atomic_scrub()
|
H A D | cmpxchg.h | 31 " sc %2, %1 \n" __xchg_u32() 47 " sc %2, %1 \n" __xchg_u32() 211 __res = __cmpxchg_asm("ll", "sc", __ptr, __old, __new); \
|
H A D | atomic.h | 54 " 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 D | futex.h | 32 "2: sc $1, %2 \n" \ 163 "2: sc $1, %2 \n" futex_atomic_cmpxchg_inatomic()
|
H A D | asm-eva.h | 19 #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 D | lowmemorykiller.c | 70 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 D | cpu-feature-overrides.h | 14 * 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 D | signal.c | 156 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(¤t->thread.regs, sc)) sys_sigreturn()
|
/linux-4.1.27/arch/sh/kernel/ |
H A D | signal_32.c | 63 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 D | signal_64.c | 130 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(¤t->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], ¤t->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 D | string.c | 130 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 D | cpm-serial.c | 65 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 D | stdio.c | 17 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 D | aic7770.c | 278 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 D | aic7xxx_pci.c | 612 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 D | aic79xx_pci.c | 517 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 D | aic7xxx_93cx6.c | 305 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 D | aic7xxx_93cx6.h | 100 int ahc_verify_cksum(struct seeprom_config *sc);
|
/linux-4.1.27/arch/mn10300/kernel/ |
H A D | signal.c | 38 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 D | sigframe.h | 17 struct sigcontext sc; member in struct:sigframe
|
/linux-4.1.27/drivers/mmc/host/ |
H A D | sdhci-s3c.c | 451 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 D | exynos_drm_gsc.c | 131 * @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 D | exynos_drm_fimc.c | 151 * @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 D | msp_regops.h | 5 * - 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 D | signal.c | 49 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 D | iser_memory.c | 574 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 D | iser_initiator.c | 65 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 D | iscsi_iser.c | 186 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 D | signal.c | 46 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 D | signal.c | 38 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 D | signal.c | 43 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 D | fimc-reg.c | 237 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 D | fimc-core.c | 253 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 D | super.c | 451 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 D | super.h | 43 extern void gfs2_statfs_change_in(struct gfs2_statfs_change_host *sc,
|
/linux-4.1.27/arch/openrisc/kernel/ |
H A D | signal.c | 44 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(®s->pc, &sc->regs.pc, sizeof(unsigned long)); restore_sigcontext() 58 err |= __copy_from_user(®s->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, ®s->pc, sizeof(unsigned long)); setup_sigcontext() 120 err |= __copy_to_user(&sc->regs.sr, ®s->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 D | eql.c | 267 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 D | builtin-trace.c | 135 ({ 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 D | list_lru.h | 113 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 D | shrinker.h | 51 struct shrink_control *sc); 53 struct shrink_control *sc);
|
H A D | dio.h | 19 * 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 D | zfcp_dbf.c | 399 * @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 D | fs_enet-main.c | 91 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 D | cpu-feature-overrides.h | 37 * ll/sc instructions.
|
/linux-4.1.27/net/ipv4/ |
H A D | tcp_scalable.c | 5 * John Heffner <jheffner@sc.edu>
|
/linux-4.1.27/arch/parisc/lib/ |
H A D | memset.c | 28 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 D | jpeg.h | 155 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 D | signal.c | 41 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 D | signal.c | 45 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 D | aic94xx_task.c | 60 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 D | trace_kprobe.c | 93 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 D | trace_probe.h | 234 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 D | gsc-regs.c | 349 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 D | gsc-core.c | 637 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 D | signal.c | 137 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 D | signal.c | 64 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 D | compat_signal.c | 36 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 D | ion_heap.c | 269 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 D | msp3400.h | 140 #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 D | cvmx-spinlock.h | 94 * 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 D | stdio.c | 14 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 D | lola_clock.c | 195 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 D | addr.c | 79 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 D | addr.h | 62 u32 addr_domain(struct net *net, u32 sc);
|
/linux-4.1.27/arch/microblaze/kernel/ |
H A D | signal.c | 48 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 D | usual-tables.c | 45 #define UNUSUAL_VENDOR_INTF(id_vendor, cl, sc, pr, \ 53 .bInterfaceSubClass = (sc), \
|
/linux-4.1.27/fs/ |
H A D | internal.h | 116 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 D | super.c | 56 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 D | mbcache.c | 243 * @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 D | sas_scsi_host.c | 53 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 D | vmscan.h | 183 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 D | nmi.h | 33 __u32 sc : 1; /* 17 storage error corrected */ member in struct:mci
|
/linux-4.1.27/arch/avr32/kernel/ |
H A D | signal.c | 32 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 D | lpfc_scsi.c | 87 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 D | camif-regs.c | 367 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 D | string.c | 390 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 D | i915_gem_shrinker.c | 195 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 D | signal.c | 38 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 D | sc6000.c | 62 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 D | mISDNinfineon.c | 120 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 D | qxl_release.c | 63 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 D | libiscsi.h | 129 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 D | irq-sunxi-nmi.c | 201 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 D | sec_bulk.c | 223 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 D | pageattr-test.c | 113 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 D | ipipe.h | 174 #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 D | bnx2i_iscsi.c | 145 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 D | signal.c | 46 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 D | hostap_80211_rx.c | 255 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 D | ioc3_serial.c | 267 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 D | libipw_rx.c | 93 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 D | wmi.c | 1957 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 D | twofish_common.c | 500 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 D | shrinker.c | 280 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 D | clockdomains3xxx_data.c | 500 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 D | sysfs.c | 621 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 D | bnx2fc_io.c | 235 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 D | speakup.h | 50 void spk_reset_index_count(int sc);
|
/linux-4.1.27/arch/mips/mm/ |
H A D | sc-ip22.c | 2 * sc-ip22.c: Indy cache management functions.
|
/linux-4.1.27/arch/arm/mach-w90x900/ |
H A D | irq.c | 54 static DEFINE_GROUP(sc, 24, 2);
|
/linux-4.1.27/drivers/scsi/cxgbi/ |
H A D | libcxgbi.c | 1686 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 D | ip_vs_sync.c | 784 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 D | digital.h | 81 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 D | gettimeofday.S | 142 sc 177 sc
|
H A D | sigtramp.S | 29 sc 37 sc
|
/linux-4.1.27/net/ieee802154/ |
H A D | header_ops.c | 206 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 D | libceph.h | 166 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 D | rtllib_rx.c | 96 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 D | be_main.c | 218 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()
|