Searched refs:ai (Results 1 - 96 of 96) sorted by relevance

/linux-4.1.27/drivers/uwb/
H A Dallocator.c24 static void uwb_rsv_fill_column_alloc(struct uwb_rsv_alloc_info *ai) uwb_rsv_fill_column_alloc() argument
27 unsigned char *bm = ai->bm; uwb_rsv_fill_column_alloc()
28 struct uwb_rsv_col_info *ci = ai->ci; uwb_rsv_fill_column_alloc()
54 static void uwb_rsv_fill_row_alloc(struct uwb_rsv_alloc_info *ai) uwb_rsv_fill_row_alloc() argument
57 unsigned char *bm = ai->bm; uwb_rsv_fill_row_alloc()
58 struct uwb_rsv_row_info *ri = &ai->ri; uwb_rsv_fill_row_alloc()
76 ai->safe_allocated_mases++; uwb_rsv_fill_row_alloc()
78 ai->unsafe_allocated_mases++; uwb_rsv_fill_row_alloc()
84 ai->total_allocated_mases = ai->safe_allocated_mases + ai->unsafe_allocated_mases; uwb_rsv_fill_row_alloc()
137 static int uwb_rsv_find_best_column_set(struct uwb_rsv_alloc_info *ai, int interval, uwb_rsv_find_best_column_set() argument
140 struct uwb_rsv_col_info *ci = ai->ci; uwb_rsv_find_best_column_set()
196 ai->safe_allocated_mases = (UWB_NUM_ZONES / interval) * num_safe_mas; uwb_rsv_find_best_column_set()
197 ai->unsafe_allocated_mases = (UWB_NUM_ZONES / interval) * num_unsafe_mas; uwb_rsv_find_best_column_set()
198 ai->total_allocated_mases = ai->safe_allocated_mases + ai->unsafe_allocated_mases; uwb_rsv_find_best_column_set()
199 ai->interval = interval; uwb_rsv_find_best_column_set()
204 static void get_row_descriptors(struct uwb_rsv_alloc_info *ai) get_row_descriptors() argument
206 unsigned char *bm = ai->bm; get_row_descriptors()
207 struct uwb_rsv_row_info *ri = &ai->ri; get_row_descriptors()
260 static void get_column_descriptors(struct uwb_rsv_alloc_info *ai) get_column_descriptors() argument
262 unsigned char *bm = ai->bm; get_column_descriptors()
263 struct uwb_rsv_col_info *ci = ai->ci; get_column_descriptors()
271 static int uwb_rsv_find_best_row_alloc(struct uwb_rsv_alloc_info *ai) uwb_rsv_find_best_row_alloc() argument
274 int max_rows = ai->max_mas / UWB_USABLE_MAS_PER_ROW; uwb_rsv_find_best_row_alloc()
275 int min_rows = ai->min_mas / UWB_USABLE_MAS_PER_ROW; uwb_rsv_find_best_row_alloc()
276 if (ai->min_mas % UWB_USABLE_MAS_PER_ROW) uwb_rsv_find_best_row_alloc()
279 if (n_rows <= ai->ri.free_rows) { uwb_rsv_find_best_row_alloc()
280 ai->ri.used_rows = n_rows; uwb_rsv_find_best_row_alloc()
281 ai->interval = 1; /* row reservation */ uwb_rsv_find_best_row_alloc()
282 uwb_rsv_fill_row_alloc(ai); uwb_rsv_find_best_row_alloc()
289 static int uwb_rsv_find_best_col_alloc(struct uwb_rsv_alloc_info *ai, int interval) uwb_rsv_find_best_col_alloc() argument
293 int max_per_zone = ai->max_mas / n_column; uwb_rsv_find_best_col_alloc()
294 int min_per_zone = ai->min_mas / n_column; uwb_rsv_find_best_col_alloc()
296 if (ai->min_mas % n_column) uwb_rsv_find_best_col_alloc()
308 if (uwb_rsv_find_best_column_set(ai, interval, 0, n_mas) == UWB_RSV_ALLOC_NOT_FOUND) uwb_rsv_find_best_col_alloc()
312 if (uwb_rsv_find_best_column_set(ai, interval, n_safe, n_unsafe) == UWB_RSV_ALLOC_FOUND) { uwb_rsv_find_best_col_alloc()
313 uwb_rsv_fill_column_alloc(ai); uwb_rsv_find_best_col_alloc()
324 struct uwb_rsv_alloc_info *ai; uwb_rsv_find_best_allocation() local
328 ai = kzalloc(sizeof(struct uwb_rsv_alloc_info), GFP_KERNEL); uwb_rsv_find_best_allocation()
329 if (!ai) uwb_rsv_find_best_allocation()
331 ai->min_mas = rsv->min_mas; uwb_rsv_find_best_allocation()
332 ai->max_mas = rsv->max_mas; uwb_rsv_find_best_allocation()
333 ai->max_interval = rsv->max_interval; uwb_rsv_find_best_allocation()
338 ai->bm[bit_index] = UWB_RSV_MAS_NOT_AVAIL; uwb_rsv_find_best_allocation()
340 if (ai->max_interval == 1) { uwb_rsv_find_best_allocation()
341 get_row_descriptors(ai); uwb_rsv_find_best_allocation()
342 if (uwb_rsv_find_best_row_alloc(ai) == UWB_RSV_ALLOC_FOUND) uwb_rsv_find_best_allocation()
348 get_column_descriptors(ai); uwb_rsv_find_best_allocation()
351 if (interval > ai->max_interval) uwb_rsv_find_best_allocation()
353 if (uwb_rsv_find_best_col_alloc(ai, interval) == UWB_RSV_ALLOC_FOUND) uwb_rsv_find_best_allocation()
358 get_row_descriptors(ai); uwb_rsv_find_best_allocation()
359 if (uwb_rsv_find_best_row_alloc(ai) == UWB_RSV_ALLOC_FOUND) uwb_rsv_find_best_allocation()
369 if (ai->bm[bit_index] == UWB_RSV_MAS_SAFE) uwb_rsv_find_best_allocation()
371 else if (ai->bm[bit_index] == UWB_RSV_MAS_UNSAFE) uwb_rsv_find_best_allocation()
376 result->safe = ai->safe_allocated_mases; uwb_rsv_find_best_allocation()
377 result->unsafe = ai->unsafe_allocated_mases; uwb_rsv_find_best_allocation()
379 kfree(ai); uwb_rsv_find_best_allocation()
383 kfree(ai); uwb_rsv_find_best_allocation()
/linux-4.1.27/net/ipv4/
H A Dtcp_highspeed.c96 u32 ai; member in struct:hstcp
104 ca->ai = 0; hstcp_init()
125 * hstcp_aimd_vals[ca->ai-1].cwnd < hstcp_cong_avoid()
127 * hstcp_aimd_vals[ca->ai].cwnd hstcp_cong_avoid()
129 if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { hstcp_cong_avoid()
130 while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && hstcp_cong_avoid()
131 ca->ai < HSTCP_AIMD_MAX - 1) hstcp_cong_avoid()
132 ca->ai++; hstcp_cong_avoid()
133 } else if (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) { hstcp_cong_avoid()
134 while (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) hstcp_cong_avoid()
135 ca->ai--; hstcp_cong_avoid()
141 tp->snd_cwnd_cnt += ca->ai + 1; hstcp_cong_avoid()
156 return max(tp->snd_cwnd - ((tp->snd_cwnd * hstcp_aimd_vals[ca->ai].md) >> 8), 2U); hstcp_ssthresh()
/linux-4.1.27/drivers/net/wireless/
H A Dairo.c1108 static int enable_MAC(struct airo_info *ai, int lock);
1109 static void disable_MAC(struct airo_info *ai, int lock);
1132 static void mpi_receive_802_3(struct airo_info *ai);
1133 static void mpi_receive_802_11(struct airo_info *ai);
1134 static int waitbusy (struct airo_info *ai);
1147 static void micinit(struct airo_info *ai);
1148 static int micsetup(struct airo_info *ai);
1149 static int encapsulate(struct airo_info *ai, etherHead *pPacket, MICBuffer *buffer, int len);
1150 static int decapsulate(struct airo_info *ai, MICBuffer *mic, etherHead *pPacket, u16 payLen);
1155 static void airo_networks_free(struct airo_info *ai);
1251 static inline int bap_read(struct airo_info *ai, __le16 *pu16Dst, int bytelen, bap_read() argument
1254 return ai->bap_read(ai, pu16Dst, bytelen, whichbap); bap_read()
1262 static int cmdreset(struct airo_info *ai);
1263 static int setflashmode (struct airo_info *ai);
1264 static int flashgchar(struct airo_info *ai,int matchbyte,int dwelltime);
1265 static int flashputbuf(struct airo_info *ai);
1266 static int flashrestart(struct airo_info *ai,struct net_device *dev);
1290 static int RxSeqValid (struct airo_info *ai,miccntx *context,int mcast,u32 micSeq);
1297 static int flashpchar(struct airo_info *ai,int byte,int dwelltime);
1324 static void micinit(struct airo_info *ai) micinit() argument
1328 clear_bit(JOB_MIC, &ai->jobs); micinit()
1329 PC4500_readrid(ai, RID_MIC, &mic_rid, sizeof(mic_rid), 0); micinit()
1330 up(&ai->sem); micinit()
1332 ai->micstats.enabled = (le16_to_cpu(mic_rid.state) & 0x00FF) ? 1 : 0; micinit()
1333 if (!ai->micstats.enabled) { micinit()
1337 ai->mod[0].uCtx.valid = 0; micinit()
1338 ai->mod[0].mCtx.valid = 0; micinit()
1343 age_mic_context(&ai->mod[0].mCtx, &ai->mod[1].mCtx, micinit()
1345 ai->tfm); micinit()
1349 age_mic_context(&ai->mod[0].uCtx, &ai->mod[1].uCtx, micinit()
1351 ai->tfm); micinit()
1357 static int micsetup(struct airo_info *ai) { micsetup() argument
1360 if (ai->tfm == NULL) micsetup()
1361 ai->tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); micsetup()
1363 if (IS_ERR(ai->tfm)) { micsetup()
1364 airo_print_err(ai->dev->name, "failed to load transform for AES"); micsetup()
1365 ai->tfm = NULL; micsetup()
1370 memset(&ai->mod[i].mCtx,0,sizeof(miccntx)); micsetup()
1371 memset(&ai->mod[i].uCtx,0,sizeof(miccntx)); micsetup()
1394 static int encapsulate(struct airo_info *ai ,etherHead *frame, MICBuffer *mic, int payLen) encapsulate()
1401 if (test_bit(FLAG_ADHOC, &ai->flags) && (frame->da[0] & 0x1)) encapsulate()
1402 context = &ai->mod[0].mCtx; encapsulate()
1404 context = &ai->mod[0].uCtx; encapsulate()
1450 static int decapsulate(struct airo_info *ai, MICBuffer *mic, etherHead *eth, u16 payLen) decapsulate() argument
1460 if (!ai->micstats.enabled) { decapsulate()
1463 ai->micstats.rxMICPlummed++; decapsulate()
1474 ai->micstats.rxMICPlummed++; decapsulate()
1485 ai->micstats.rxWrongSequence++; decapsulate()
1492 context = mcast ? &ai->mod[i].mCtx : &ai->mod[i].uCtx; decapsulate()
1521 if (RxSeqValid(ai, context, mcast, micSEQ) == SUCCESS) { decapsulate()
1522 ai->micstats.rxSuccess++; decapsulate()
1531 case NOMICPLUMMED: ai->micstats.rxMICPlummed++; break; decapsulate()
1532 case SEQUENCE: ai->micstats.rxWrongSequence++; break; decapsulate()
1533 case INCORRECTMIC: ai->micstats.rxIncorrectMIC++; break; decapsulate()
1554 static int RxSeqValid (struct airo_info *ai,miccntx *context,int mcast,u32 micSeq) RxSeqValid() argument
1562 if (test_bit(FLAG_UPDATE_MULTI, &ai->flags)) { RxSeqValid()
1563 clear_bit (FLAG_UPDATE_MULTI, &ai->flags); RxSeqValid()
1567 } else if (test_bit(FLAG_UPDATE_UNI, &ai->flags)) { RxSeqValid()
1568 clear_bit (FLAG_UPDATE_UNI, &ai->flags); RxSeqValid()
1743 static int readBSSListRid(struct airo_info *ai, int first, readBSSListRid() argument
1750 if (ai->flags & FLAG_RADIO_MASK) return -ENETDOWN; readBSSListRid()
1753 if (down_interruptible(&ai->sem)) readBSSListRid()
1755 ai->list_bss_task = current; readBSSListRid()
1756 issuecommand(ai, &cmd, &rsp); readBSSListRid()
1757 up(&ai->sem); readBSSListRid()
1760 ai->list_bss_task = NULL; readBSSListRid()
1762 return PC4500_readrid(ai, first ? ai->bssListFirst : ai->bssListNext, readBSSListRid()
1763 list, ai->bssListRidLen, 1); readBSSListRid()
1766 static int readWepKeyRid(struct airo_info *ai, WepKeyRid *wkr, int temp, int lock) readWepKeyRid() argument
1768 return PC4500_readrid(ai, temp ? RID_WEP_TEMP : RID_WEP_PERM, readWepKeyRid()
1772 static int writeWepKeyRid(struct airo_info *ai, WepKeyRid *wkr, int perm, int lock) writeWepKeyRid() argument
1775 rc = PC4500_writerid(ai, RID_WEP_TEMP, wkr, sizeof(*wkr), lock); writeWepKeyRid()
1777 airo_print_err(ai->dev->name, "WEP_TEMP set %x", rc); writeWepKeyRid()
1779 rc = PC4500_writerid(ai, RID_WEP_PERM, wkr, sizeof(*wkr), lock); writeWepKeyRid()
1781 airo_print_err(ai->dev->name, "WEP_PERM set %x", rc); writeWepKeyRid()
1786 static int readSsidRid(struct airo_info*ai, SsidRid *ssidr) readSsidRid()
1788 return PC4500_readrid(ai, RID_SSID, ssidr, sizeof(*ssidr), 1); readSsidRid()
1791 static int writeSsidRid(struct airo_info*ai, SsidRid *pssidr, int lock) writeSsidRid()
1793 return PC4500_writerid(ai, RID_SSID, pssidr, sizeof(*pssidr), lock); writeSsidRid()
1796 static int readConfigRid(struct airo_info *ai, int lock) readConfigRid() argument
1801 if (ai->config.len) readConfigRid()
1804 rc = PC4500_readrid(ai, RID_ACTUALCONFIG, &cfg, sizeof(cfg), lock); readConfigRid()
1808 ai->config = cfg; readConfigRid()
1812 static inline void checkThrottle(struct airo_info *ai) checkThrottle() argument
1816 if (ai->config.authType != AUTH_OPEN && maxencrypt) { checkThrottle()
1818 if (ai->config.rates[i] > maxencrypt) { checkThrottle()
1819 ai->config.rates[i] = 0; checkThrottle()
1825 static int writeConfigRid(struct airo_info *ai, int lock) writeConfigRid() argument
1829 if (!test_bit (FLAG_COMMIT, &ai->flags)) writeConfigRid()
1832 clear_bit (FLAG_COMMIT, &ai->flags); writeConfigRid()
1833 clear_bit (FLAG_RESET, &ai->flags); writeConfigRid()
1834 checkThrottle(ai); writeConfigRid()
1835 cfgr = ai->config; writeConfigRid()
1838 set_bit(FLAG_ADHOC, &ai->flags); writeConfigRid()
1840 clear_bit(FLAG_ADHOC, &ai->flags); writeConfigRid()
1842 return PC4500_writerid( ai, RID_CONFIG, &cfgr, sizeof(cfgr), lock); writeConfigRid()
1845 static int readStatusRid(struct airo_info *ai, StatusRid *statr, int lock) readStatusRid() argument
1847 return PC4500_readrid(ai, RID_STATUS, statr, sizeof(*statr), lock); readStatusRid()
1850 static int readAPListRid(struct airo_info *ai, APListRid *aplr) readAPListRid() argument
1852 return PC4500_readrid(ai, RID_APLIST, aplr, sizeof(*aplr), 1); readAPListRid()
1855 static int writeAPListRid(struct airo_info *ai, APListRid *aplr, int lock) writeAPListRid() argument
1857 return PC4500_writerid(ai, RID_APLIST, aplr, sizeof(*aplr), lock); writeAPListRid()
1860 static int readCapabilityRid(struct airo_info *ai, CapabilityRid *capr, int lock) readCapabilityRid() argument
1862 return PC4500_readrid(ai, RID_CAPABILITIES, capr, sizeof(*capr), lock); readCapabilityRid()
1865 static int readStatsRid(struct airo_info*ai, StatsRid *sr, int rid, int lock) readStatsRid()
1867 return PC4500_readrid(ai, rid, sr, sizeof(*sr), lock); readStatsRid()
1870 static void try_auto_wep(struct airo_info *ai) try_auto_wep() argument
1872 if (auto_wep && !test_bit(FLAG_RADIO_DOWN, &ai->flags)) { try_auto_wep()
1873 ai->expires = RUN_AT(3*HZ); try_auto_wep()
1874 wake_up_interruptible(&ai->thr_wait); try_auto_wep()
1879 struct airo_info *ai = dev->ml_priv; airo_open() local
1882 if (test_bit(FLAG_FLASHING, &ai->flags)) airo_open()
1889 if (test_bit(FLAG_COMMIT, &ai->flags)) { airo_open()
1890 disable_MAC(ai, 1); airo_open()
1891 writeConfigRid(ai, 1); airo_open()
1894 if (ai->wifidev != dev) { airo_open()
1895 clear_bit(JOB_DIE, &ai->jobs); airo_open()
1896 ai->airo_thread_task = kthread_run(airo_thread, dev, "%s", airo_open()
1898 if (IS_ERR(ai->airo_thread_task)) airo_open()
1899 return (int)PTR_ERR(ai->airo_thread_task); airo_open()
1907 set_bit(JOB_DIE, &ai->jobs); airo_open()
1908 kthread_stop(ai->airo_thread_task); airo_open()
1913 clear_bit(FLAG_RADIO_DOWN, &ai->flags); airo_open()
1914 enable_interrupts(ai); airo_open()
1916 try_auto_wep(ai); airo_open()
1918 enable_MAC(ai, 1); airo_open()
1929 struct airo_info *ai = dev->ml_priv; mpi_start_xmit() local
1935 npacks = skb_queue_len (&ai->txq); mpi_start_xmit()
1943 skb_queue_tail (&ai->txq, skb); mpi_start_xmit()
1947 spin_lock_irqsave(&ai->aux_lock, flags); mpi_start_xmit()
1948 skb_queue_tail (&ai->txq, skb); mpi_start_xmit()
1949 pending = test_bit(FLAG_PENDING_XMIT, &ai->flags); mpi_start_xmit()
1950 spin_unlock_irqrestore(&ai->aux_lock,flags); mpi_start_xmit()
1954 set_bit(FLAG_PENDING_XMIT, &ai->flags); mpi_start_xmit()
1973 struct airo_info *ai = dev->ml_priv; mpi_send_packet() local
1978 if ((skb = skb_dequeue(&ai->txq)) == NULL) { mpi_send_packet()
1989 ai->txfids[0].tx_desc.offset = 0; mpi_send_packet()
1990 ai->txfids[0].tx_desc.valid = 1; mpi_send_packet()
1991 ai->txfids[0].tx_desc.eoc = 1; mpi_send_packet()
1992 ai->txfids[0].tx_desc.len =len+sizeof(WifiHdr); mpi_send_packet()
2002 memcpy(ai->txfids[0].virtual_host_addr, mpi_send_packet()
2005 payloadLen = (__le16 *)(ai->txfids[0].virtual_host_addr + mpi_send_packet()
2007 sendbuf = ai->txfids[0].virtual_host_addr + mpi_send_packet()
2014 if (test_bit(FLAG_MIC_CAPABLE, &ai->flags) && ai->micstats.enabled && mpi_send_packet()
2018 if (encapsulate(ai, (etherHead *)buffer, &pMic, len - sizeof(etherHead)) != SUCCESS) mpi_send_packet()
2022 ai->txfids[0].tx_desc.len += sizeof(pMic); mpi_send_packet()
2039 memcpy_toio(ai->txfids[0].card_ram_off, mpi_send_packet()
2040 &ai->txfids[0].tx_desc, sizeof(TxFid)); mpi_send_packet()
2042 OUT4500(ai, EVACK, 8); mpi_send_packet()
2048 static void get_tx_error(struct airo_info *ai, s32 fid) get_tx_error() argument
2053 status = ((WifiCtlHdr *)ai->txfids[0].virtual_host_addr)->ctlhdr.status; get_tx_error()
2055 if (bap_setup(ai, ai->fids[fid] & 0xffff, 4, BAP0) != SUCCESS) get_tx_error()
2057 bap_read(ai, &status, 2, BAP0); get_tx_error()
2060 ai->dev->stats.tx_aborted_errors++; get_tx_error()
2062 ai->dev->stats.tx_heartbeat_errors++; get_tx_error()
2066 ai->dev->stats.tx_carrier_errors++; get_tx_error()
2081 bap_read(ai, (__le16 *) junk, 0x18, BAP0); get_tx_error()
2095 wireless_send_event(ai->dev, IWEVTXDROP, &wrqu, NULL); get_tx_error()
2242 struct airo_info *ai = dev->ml_priv; airo_read_stats() local
2246 clear_bit(JOB_STATS, &ai->jobs); airo_read_stats()
2247 if (ai->power.event) { airo_read_stats()
2248 up(&ai->sem); airo_read_stats()
2251 readStatsRid(ai, &stats_rid, RID_STATS, 0); airo_read_stats()
2252 up(&ai->sem); airo_read_stats()
2290 static void airo_set_promisc(struct airo_info *ai) { airo_set_promisc() argument
2296 clear_bit(JOB_PROMISC, &ai->jobs); airo_set_promisc()
2297 cmd.parm0=(ai->flags&IFF_PROMISC) ? PROMISC : NOPROMISC; airo_set_promisc()
2298 issuecommand(ai, &cmd, &rsp); airo_set_promisc()
2299 up(&ai->sem); airo_set_promisc()
2303 struct airo_info *ai = dev->ml_priv; airo_set_multicast_list() local
2305 if ((dev->flags ^ ai->flags) & IFF_PROMISC) { airo_set_multicast_list()
2306 change_bit(FLAG_PROMISC, &ai->flags); airo_set_multicast_list()
2307 if (down_trylock(&ai->sem) != 0) { airo_set_multicast_list()
2308 set_bit(JOB_PROMISC, &ai->jobs); airo_set_multicast_list()
2309 wake_up_interruptible(&ai->thr_wait); airo_set_multicast_list()
2311 airo_set_promisc(ai); airo_set_multicast_list()
2321 struct airo_info *ai = dev->ml_priv; airo_set_mac_address() local
2324 readConfigRid(ai, 1); airo_set_mac_address()
2325 memcpy (ai->config.macAddr, addr->sa_data, dev->addr_len); airo_set_mac_address()
2326 set_bit (FLAG_COMMIT, &ai->flags); airo_set_mac_address()
2327 disable_MAC(ai, 1); airo_set_mac_address()
2328 writeConfigRid (ai, 1); airo_set_mac_address()
2329 enable_MAC(ai, 1); airo_set_mac_address()
2330 memcpy (ai->dev->dev_addr, addr->sa_data, dev->addr_len); airo_set_mac_address()
2331 if (ai->wifidev) airo_set_mac_address()
2332 memcpy (ai->wifidev->dev_addr, addr->sa_data, dev->addr_len); airo_set_mac_address()
2346 static void add_airo_dev(struct airo_info *ai) add_airo_dev() argument
2350 if (!ai->pci) add_airo_dev()
2351 list_add_tail(&ai->dev_list, &airo_devices); add_airo_dev()
2354 static void del_airo_dev(struct airo_info *ai) del_airo_dev() argument
2356 if (!ai->pci) del_airo_dev()
2357 list_del(&ai->dev_list); del_airo_dev()
2361 struct airo_info *ai = dev->ml_priv; airo_close() local
2365 if (ai->wifidev != dev) { airo_close()
2372 set_bit(FLAG_RADIO_DOWN, &ai->flags); airo_close()
2373 disable_MAC(ai, 1); airo_close()
2375 disable_interrupts( ai ); airo_close()
2379 set_bit(JOB_DIE, &ai->jobs); airo_close()
2380 kthread_stop(ai->airo_thread_task); airo_close()
2387 struct airo_info *ai = dev->ml_priv; stop_airo_card() local
2389 set_bit(FLAG_RADIO_DOWN, &ai->flags); stop_airo_card()
2390 disable_MAC(ai, 1); stop_airo_card()
2391 disable_interrupts(ai); stop_airo_card()
2392 takedown_proc_entry( dev, ai ); stop_airo_card()
2393 if (test_bit(FLAG_REGISTERED, &ai->flags)) { stop_airo_card()
2395 if (ai->wifidev) { stop_airo_card()
2396 unregister_netdev(ai->wifidev); stop_airo_card()
2397 free_netdev(ai->wifidev); stop_airo_card()
2398 ai->wifidev = NULL; stop_airo_card()
2400 clear_bit(FLAG_REGISTERED, &ai->flags); stop_airo_card()
2405 if (test_bit(FLAG_MPI, &ai->flags) && !skb_queue_empty(&ai->txq)) { stop_airo_card()
2407 for (;(skb = skb_dequeue(&ai->txq));) stop_airo_card()
2411 airo_networks_free (ai); stop_airo_card()
2413 kfree(ai->flash); stop_airo_card()
2414 kfree(ai->rssi); stop_airo_card()
2415 kfree(ai->APList); stop_airo_card()
2416 kfree(ai->SSID); stop_airo_card()
2420 if (test_bit(FLAG_MPI, &ai->flags)) { stop_airo_card()
2421 if (ai->pci) stop_airo_card()
2422 mpi_unmap_card(ai->pci); stop_airo_card()
2423 if (ai->pcimem) stop_airo_card()
2424 iounmap(ai->pcimem); stop_airo_card()
2425 if (ai->pciaux) stop_airo_card()
2426 iounmap(ai->pciaux); stop_airo_card()
2427 pci_free_consistent(ai->pci, PCI_SHARED_LEN, stop_airo_card()
2428 ai->shared, ai->shared_dma); stop_airo_card()
2431 crypto_free_cipher(ai->tfm); stop_airo_card()
2432 del_airo_dev(ai); stop_airo_card()
2462 static int mpi_init_descriptors (struct airo_info *ai) mpi_init_descriptors() argument
2470 netif_stop_queue(ai->dev); mpi_init_descriptors()
2477 cmd.parm1 = (ai->rxfids[0].card_ram_off - ai->pciaux); mpi_init_descriptors()
2479 rc=issuecommand(ai, &cmd, &rsp); mpi_init_descriptors()
2481 airo_print_err(ai->dev->name, "Couldn't allocate RX FID"); mpi_init_descriptors()
2486 memcpy_toio(ai->rxfids[i].card_ram_off, mpi_init_descriptors()
2487 &ai->rxfids[i].rx_desc, sizeof(RxFid)); mpi_init_descriptors()
2497 cmd.parm1 = (ai->txfids[0].card_ram_off - ai->pciaux); mpi_init_descriptors()
2501 ai->txfids[i].tx_desc.valid = 1; mpi_init_descriptors()
2502 memcpy_toio(ai->txfids[i].card_ram_off, mpi_init_descriptors()
2503 &ai->txfids[i].tx_desc, sizeof(TxFid)); mpi_init_descriptors()
2505 ai->txfids[i-1].tx_desc.eoc = 1; /* Last descriptor has EOC set */ mpi_init_descriptors()
2507 rc=issuecommand(ai, &cmd, &rsp); mpi_init_descriptors()
2509 airo_print_err(ai->dev->name, "Couldn't allocate TX FID"); mpi_init_descriptors()
2519 cmd.parm1 = (ai->config_desc.card_ram_off - ai->pciaux); mpi_init_descriptors()
2521 rc=issuecommand(ai, &cmd, &rsp); mpi_init_descriptors()
2523 airo_print_err(ai->dev->name, "Couldn't allocate RID"); mpi_init_descriptors()
2527 memcpy_toio(ai->config_desc.card_ram_off, mpi_init_descriptors()
2528 &ai->config_desc.rid_desc, sizeof(Rid)); mpi_init_descriptors()
2539 static int mpi_map_card(struct airo_info *ai, struct pci_dev *pci) mpi_map_card() argument
2564 ai->pcimem = ioremap(mem_start, mem_len); mpi_map_card()
2565 if (!ai->pcimem) { mpi_map_card()
2570 ai->pciaux = ioremap(aux_start, aux_len); mpi_map_card()
2571 if (!ai->pciaux) { mpi_map_card()
2578 ai->shared = pci_alloc_consistent(pci, PCI_SHARED_LEN, &ai->shared_dma); mpi_map_card()
2579 if (!ai->shared) { mpi_map_card()
2588 busaddroff = ai->shared_dma; mpi_map_card()
2589 pciaddroff = ai->pciaux + AUX_OFFSET; mpi_map_card()
2590 vpackoff = ai->shared; mpi_map_card()
2594 ai->rxfids[i].pending = 0; mpi_map_card()
2595 ai->rxfids[i].card_ram_off = pciaddroff; mpi_map_card()
2596 ai->rxfids[i].virtual_host_addr = vpackoff; mpi_map_card()
2597 ai->rxfids[i].rx_desc.host_addr = busaddroff; mpi_map_card()
2598 ai->rxfids[i].rx_desc.valid = 1; mpi_map_card()
2599 ai->rxfids[i].rx_desc.len = PKTSIZE; mpi_map_card()
2600 ai->rxfids[i].rx_desc.rdy = 0; mpi_map_card()
2609 ai->txfids[i].card_ram_off = pciaddroff; mpi_map_card()
2610 ai->txfids[i].virtual_host_addr = vpackoff; mpi_map_card()
2611 ai->txfids[i].tx_desc.valid = 1; mpi_map_card()
2612 ai->txfids[i].tx_desc.host_addr = busaddroff; mpi_map_card()
2613 memcpy(ai->txfids[i].virtual_host_addr, mpi_map_card()
2620 ai->txfids[i-1].tx_desc.eoc = 1; /* Last descriptor has EOC set */ mpi_map_card()
2623 ai->config_desc.card_ram_off = pciaddroff; mpi_map_card()
2624 ai->config_desc.virtual_host_addr = vpackoff; mpi_map_card()
2625 ai->config_desc.rid_desc.host_addr = busaddroff; mpi_map_card()
2626 ai->ridbus = busaddroff; mpi_map_card()
2627 ai->config_desc.rid_desc.rid = 0; mpi_map_card()
2628 ai->config_desc.rid_desc.len = RIDSIZE; mpi_map_card()
2629 ai->config_desc.rid_desc.valid = 1; mpi_map_card()
2635 if (mpi_init_descriptors (ai) != SUCCESS) mpi_map_card()
2640 pci_free_consistent(pci, PCI_SHARED_LEN, ai->shared, ai->shared_dma); mpi_map_card()
2642 iounmap(ai->pciaux); mpi_map_card()
2644 iounmap(ai->pcimem); mpi_map_card()
2684 static struct net_device *init_wifidev(struct airo_info *ai, init_wifidev() argument
2707 struct airo_info *ai = dev->ml_priv; reset_card() local
2709 if (lock && down_interruptible(&ai->sem)) reset_card()
2711 waitbusy (ai); reset_card()
2712 OUT4500(ai,COMMAND,CMD_SOFTRESET); reset_card()
2714 waitbusy (ai); reset_card()
2717 up(&ai->sem); reset_card()
2722 static int airo_networks_allocate(struct airo_info *ai) airo_networks_allocate() argument
2724 if (ai->networks) airo_networks_allocate()
2727 ai->networks = kcalloc(AIRO_MAX_NETWORK_COUNT, sizeof(BSSListElement), airo_networks_allocate()
2729 if (!ai->networks) { airo_networks_allocate()
2737 static void airo_networks_free(struct airo_info *ai) airo_networks_free() argument
2739 kfree(ai->networks); airo_networks_free()
2740 ai->networks = NULL; airo_networks_free()
2743 static void airo_networks_initialize(struct airo_info *ai) airo_networks_initialize() argument
2747 INIT_LIST_HEAD(&ai->network_free_list); airo_networks_initialize()
2748 INIT_LIST_HEAD(&ai->network_list); airo_networks_initialize()
2750 list_add_tail(&ai->networks[i].list, airo_networks_initialize()
2751 &ai->network_free_list); airo_networks_initialize()
2784 struct airo_info *ai; _init_airo_card() local
2789 dev = alloc_netdev(sizeof(*ai), "", NET_NAME_UNKNOWN, ether_setup); _init_airo_card()
2795 ai = dev->ml_priv = netdev_priv(dev); _init_airo_card()
2796 ai->wifidev = NULL; _init_airo_card()
2797 ai->flags = 1 << FLAG_RADIO_DOWN; _init_airo_card()
2798 ai->jobs = 0; _init_airo_card()
2799 ai->dev = dev; _init_airo_card()
2802 set_bit(FLAG_MPI, &ai->flags); _init_airo_card()
2804 spin_lock_init(&ai->aux_lock); _init_airo_card()
2805 sema_init(&ai->sem, 1); _init_airo_card()
2806 ai->config.len = 0; _init_airo_card()
2807 ai->pci = pci; _init_airo_card()
2808 init_waitqueue_head (&ai->thr_wait); _init_airo_card()
2809 ai->tfm = NULL; _init_airo_card()
2810 add_airo_dev(ai); _init_airo_card()
2812 if (airo_networks_allocate (ai)) _init_airo_card()
2814 airo_networks_initialize (ai); _init_airo_card()
2816 skb_queue_head_init (&ai->txq); _init_airo_card()
2819 if (test_bit(FLAG_MPI,&ai->flags)) _init_airo_card()
2824 ai->wireless_data.spy_data = &ai->spy_data; _init_airo_card()
2825 dev->wireless_data = &ai->wireless_data; _init_airo_card()
2843 if (test_bit(FLAG_MPI,&ai->flags)) { _init_airo_card()
2844 if (mpi_map_card(ai, pci)) { _init_airo_card()
2851 if (setup_card(ai, dev->dev_addr, 1) != SUCCESS) { _init_airo_card()
2856 } else if (!test_bit(FLAG_MPI,&ai->flags)) { _init_airo_card()
2857 ai->bap_read = fast_bap_read; _init_airo_card()
2858 set_bit(FLAG_FLASHING, &ai->flags); _init_airo_card()
2867 ai->wifidev = init_wifidev(ai, dev); _init_airo_card()
2868 if (!ai->wifidev) _init_airo_card()
2871 rc = readCapabilityRid(ai, &cap_rid, 1); _init_airo_card()
2877 ai->wep_capable = (cap_rid.softCap & cpu_to_le16(0x02)) ? 1 : 0; _init_airo_card()
2878 ai->max_wep_idx = (cap_rid.softCap & cpu_to_le16(0x80)) ? 3 : 0; _init_airo_card()
2890 airo_print_info(ai->dev->name, "WPA supported."); _init_airo_card()
2892 set_bit(FLAG_WPA_CAPABLE, &ai->flags); _init_airo_card()
2893 ai->bssListFirst = RID_WPA_BSSLISTFIRST; _init_airo_card()
2894 ai->bssListNext = RID_WPA_BSSLISTNEXT; _init_airo_card()
2895 ai->bssListRidLen = sizeof(BSSListRid); _init_airo_card()
2897 airo_print_info(ai->dev->name, "WPA unsupported with firmware " _init_airo_card()
2900 ai->bssListFirst = RID_BSSLISTFIRST; _init_airo_card()
2901 ai->bssListNext = RID_BSSLISTNEXT; _init_airo_card()
2902 ai->bssListRidLen = sizeof(BSSListRid) - sizeof(BSSListRidExtra); _init_airo_card()
2905 set_bit(FLAG_REGISTERED,&ai->flags); _init_airo_card()
2909 if (probe && !test_bit(FLAG_MPI,&ai->flags)) _init_airo_card()
2911 ai->fids[i] = transmit_allocate(ai,AIRO_DEF_MTU,i>=MAX_FIDS/2); _init_airo_card()
2919 unregister_netdev(ai->wifidev); _init_airo_card()
2920 free_netdev(ai->wifidev); _init_airo_card()
2924 if (test_bit(FLAG_MPI,&ai->flags) && pci) { _init_airo_card()
2925 pci_free_consistent(pci, PCI_SHARED_LEN, ai->shared, ai->shared_dma); _init_airo_card()
2926 iounmap(ai->pciaux); _init_airo_card()
2927 iounmap(ai->pcimem); _init_airo_card()
2928 mpi_unmap_card(ai->pci); _init_airo_card()
2934 airo_networks_free(ai); _init_airo_card()
2936 del_airo_dev(ai); _init_airo_card()
2949 static int waitbusy (struct airo_info *ai) { waitbusy() argument
2951 while ((IN4500(ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) { waitbusy()
2954 OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY); waitbusy()
2962 struct airo_info *ai = dev->ml_priv; reset_airo_card() local
2967 if ( setup_card(ai, dev->dev_addr, 1 ) != SUCCESS ) { reset_airo_card()
2973 if (!test_bit(FLAG_MPI,&ai->flags)) reset_airo_card()
2975 ai->fids[i] = transmit_allocate (ai,AIRO_DEF_MTU,i>=MAX_FIDS/2); reset_airo_card()
2977 enable_interrupts( ai ); reset_airo_card()
2985 struct airo_info *ai = dev->ml_priv; airo_send_event() local
2989 clear_bit(JOB_EVENT, &ai->jobs); airo_send_event()
2990 PC4500_readrid(ai, RID_STATUS, &status_rid, sizeof(status_rid), 0); airo_send_event()
2991 up(&ai->sem); airo_send_event()
3001 static void airo_process_scan_results (struct airo_info *ai) { airo_process_scan_results() argument
3009 list_for_each_entry_safe (loop_net, tmp_net, &ai->network_list, list) { airo_process_scan_results()
3010 list_move_tail (&loop_net->list, &ai->network_free_list); airo_process_scan_results()
3016 rc = PC4500_readrid(ai, ai->bssListFirst, &bss, ai->bssListRidLen, 0); airo_process_scan_results()
3026 if (!list_empty(&ai->network_free_list)) { airo_process_scan_results()
3027 tmp_net = list_entry(ai->network_free_list.next, airo_process_scan_results()
3029 list_del(ai->network_free_list.next); airo_process_scan_results()
3034 list_add_tail(&tmp_net->list, &ai->network_list); airo_process_scan_results()
3039 rc = PC4500_readrid(ai, ai->bssListNext, airo_process_scan_results()
3040 &bss, ai->bssListRidLen, 0); airo_process_scan_results()
3044 ai->scan_timeout = 0; airo_process_scan_results()
3045 clear_bit(JOB_SCAN_RESULTS, &ai->jobs); airo_process_scan_results()
3046 up(&ai->sem); airo_process_scan_results()
3057 wireless_send_event(ai->dev, SIOCGIWSCAN, &wrqu, NULL); airo_process_scan_results()
3062 struct airo_info *ai = dev->ml_priv; airo_thread() local
3070 if (test_bit(JOB_DIE, &ai->jobs)) airo_thread()
3073 if (ai->jobs) { airo_thread()
3074 locked = down_interruptible(&ai->sem); airo_thread()
3079 add_wait_queue(&ai->thr_wait, &wait); airo_thread()
3082 if (ai->jobs) airo_thread()
3084 if (ai->expires || ai->scan_timeout) { airo_thread()
3085 if (ai->scan_timeout && airo_thread()
3086 time_after_eq(jiffies,ai->scan_timeout)){ airo_thread()
3087 set_bit(JOB_SCAN_RESULTS, &ai->jobs); airo_thread()
3089 } else if (ai->expires && airo_thread()
3090 time_after_eq(jiffies,ai->expires)){ airo_thread()
3091 set_bit(JOB_AUTOWEP, &ai->jobs); airo_thread()
3097 if (!ai->expires || !ai->scan_timeout) { airo_thread()
3098 wake_at = max(ai->expires, airo_thread()
3099 ai->scan_timeout); airo_thread()
3101 wake_at = min(ai->expires, airo_thread()
3102 ai->scan_timeout); airo_thread()
3115 remove_wait_queue(&ai->thr_wait, &wait); airo_thread()
3122 if (test_bit(JOB_DIE, &ai->jobs)) { airo_thread()
3123 up(&ai->sem); airo_thread()
3127 if (ai->power.event || test_bit(FLAG_FLASHING, &ai->flags)) { airo_thread()
3128 up(&ai->sem); airo_thread()
3132 if (test_bit(JOB_XMIT, &ai->jobs)) airo_thread()
3134 else if (test_bit(JOB_XMIT11, &ai->jobs)) airo_thread()
3136 else if (test_bit(JOB_STATS, &ai->jobs)) airo_thread()
3138 else if (test_bit(JOB_WSTATS, &ai->jobs)) airo_thread()
3139 airo_read_wireless_stats(ai); airo_thread()
3140 else if (test_bit(JOB_PROMISC, &ai->jobs)) airo_thread()
3141 airo_set_promisc(ai); airo_thread()
3142 else if (test_bit(JOB_MIC, &ai->jobs)) airo_thread()
3143 micinit(ai); airo_thread()
3144 else if (test_bit(JOB_EVENT, &ai->jobs)) airo_thread()
3146 else if (test_bit(JOB_AUTOWEP, &ai->jobs)) airo_thread()
3148 else if (test_bit(JOB_SCAN_RESULTS, &ai->jobs)) airo_thread()
3149 airo_process_scan_results(ai); airo_thread()
3151 up(&ai->sem); airo_thread()
3172 static void airo_handle_cisco_mic(struct airo_info *ai) airo_handle_cisco_mic() argument
3174 if (test_bit(FLAG_MIC_CAPABLE, &ai->flags)) { airo_handle_cisco_mic()
3175 set_bit(JOB_MIC, &ai->jobs); airo_handle_cisco_mic()
3176 wake_up_interruptible(&ai->thr_wait); airo_handle_cisco_mic()
3241 static void airo_handle_link(struct airo_info *ai) airo_handle_link() argument
3248 status = le16_to_cpu(IN4500(ai, LINKSTAT)); airo_handle_link()
3249 OUT4500(ai, EVACK, EV_LINK); airo_handle_link()
3251 if ((status == STAT_FORCELOSS) && (ai->scan_timeout > 0)) airo_handle_link()
3254 airo_print_status(ai->dev->name, status); airo_handle_link()
3258 ai->expires = 0; airo_handle_link()
3259 if (ai->list_bss_task) airo_handle_link()
3260 wake_up_process(ai->list_bss_task); airo_handle_link()
3261 set_bit(FLAG_UPDATE_UNI, &ai->flags); airo_handle_link()
3262 set_bit(FLAG_UPDATE_MULTI, &ai->flags); airo_handle_link()
3264 if (down_trylock(&ai->sem) != 0) { airo_handle_link()
3265 set_bit(JOB_EVENT, &ai->jobs); airo_handle_link()
3266 wake_up_interruptible(&ai->thr_wait); airo_handle_link()
3268 airo_send_event(ai->dev); airo_handle_link()
3270 if (auto_wep && !ai->expires) { airo_handle_link()
3271 ai->expires = RUN_AT(3*HZ); airo_handle_link()
3272 wake_up_interruptible(&ai->thr_wait); airo_handle_link()
3278 wireless_send_event(ai->dev, SIOCGIWAP, &wrqu, NULL); airo_handle_link()
3282 static void airo_handle_rx(struct airo_info *ai) airo_handle_rx() argument
3290 if (test_bit(FLAG_MPI, &ai->flags)) { airo_handle_rx()
3291 if (test_bit(FLAG_802_11, &ai->flags)) airo_handle_rx()
3292 mpi_receive_802_11(ai); airo_handle_rx()
3294 mpi_receive_802_3(ai); airo_handle_rx()
3295 OUT4500(ai, EVACK, EV_RX); airo_handle_rx()
3299 fid = IN4500(ai, RXFID); airo_handle_rx()
3302 if (test_bit(FLAG_802_11, &ai->flags)) { airo_handle_rx()
3303 bap_setup (ai, fid, 4, BAP0); airo_handle_rx()
3304 bap_read (ai, (__le16*)&hdr, sizeof(hdr), BAP0); airo_handle_rx()
3308 if (ai->wifidev == NULL) airo_handle_rx()
3311 bap_setup(ai, fid, 0x36, BAP0); airo_handle_rx()
3312 bap_read(ai, &hdr.len, 2, BAP0); airo_handle_rx()
3317 airo_print_err(ai->dev->name, "Bad size %d", len); airo_handle_rx()
3323 if (test_bit(FLAG_802_11, &ai->flags)) { airo_handle_rx()
3324 bap_read(ai, &fc, sizeof (fc), BAP0); airo_handle_rx()
3331 ai->dev->stats.rx_dropped++; airo_handle_rx()
3337 if (test_bit(FLAG_802_11, &ai->flags)) { airo_handle_rx()
3339 bap_read(ai, buffer + 1, hdrlen - 2, BAP0); airo_handle_rx()
3341 bap_read(ai, tmpbuf, 6, BAP0); airo_handle_rx()
3343 bap_read(ai, &v, sizeof(v), BAP0); airo_handle_rx()
3347 bap_read(ai, tmpbuf, gap, BAP0); airo_handle_rx()
3349 airo_print_err(ai->dev->name, "gaplen too " airo_handle_rx()
3353 bap_read(ai, buffer + hdrlen/2, len, BAP0); airo_handle_rx()
3357 bap_read(ai, buffer, ETH_ALEN * 2, BAP0); airo_handle_rx()
3358 if (ai->micstats.enabled) { airo_handle_rx()
3359 bap_read(ai, (__le16 *) &micbuf, sizeof (micbuf), BAP0); airo_handle_rx()
3361 bap_setup(ai, fid, 0x44, BAP0); airo_handle_rx()
3373 bap_read(ai, buffer + ETH_ALEN, len, BAP0); airo_handle_rx()
3374 if (decapsulate(ai, &micbuf, (etherHead*) buffer, len)) airo_handle_rx()
3381 if (success && (ai->spy_data.spy_number > 0)) { airo_handle_rx()
3386 if (!test_bit(FLAG_802_11, &ai->flags)) { airo_handle_rx()
3388 bap_setup(ai, fid, 8, BAP0); airo_handle_rx()
3389 bap_read(ai, (__le16 *) hdr.rssi, 2, BAP0); airo_handle_rx()
3393 if (ai->rssi) airo_handle_rx()
3394 wstats.level = 0x100 - ai->rssi[hdr.rssi[1]].rssidBm; airo_handle_rx()
3397 wstats.noise = ai->wstats.qual.noise; airo_handle_rx()
3402 wireless_spy_update(ai->dev, sa, &wstats); airo_handle_rx()
3407 OUT4500(ai, EVACK, EV_RX); airo_handle_rx()
3410 if (test_bit(FLAG_802_11, &ai->flags)) { airo_handle_rx()
3413 skb->dev = ai->wifidev; airo_handle_rx()
3416 skb->protocol = eth_type_trans(skb, ai->dev); airo_handle_rx()
3423 static void airo_handle_tx(struct airo_info *ai, u16 status) airo_handle_tx() argument
3428 if (test_bit(FLAG_MPI, &ai->flags)) { airo_handle_tx()
3432 get_tx_error(ai, -1); airo_handle_tx()
3434 spin_lock_irqsave(&ai->aux_lock, flags); airo_handle_tx()
3435 if (!skb_queue_empty(&ai->txq)) { airo_handle_tx()
3436 spin_unlock_irqrestore(&ai->aux_lock,flags); airo_handle_tx()
3437 mpi_send_packet(ai->dev); airo_handle_tx()
3439 clear_bit(FLAG_PENDING_XMIT, &ai->flags); airo_handle_tx()
3440 spin_unlock_irqrestore(&ai->aux_lock,flags); airo_handle_tx()
3441 netif_wake_queue(ai->dev); airo_handle_tx()
3443 OUT4500(ai, EVACK, status & (EV_TX | EV_TXCPY | EV_TXEXC)); airo_handle_tx()
3447 fid = IN4500(ai, TXCOMPLFID); airo_handle_tx()
3450 if ((ai->fids[i] & 0xffff) == fid) { airo_handle_tx()
3451 len = ai->fids[i] >> 16; airo_handle_tx()
3458 get_tx_error(ai, index); airo_handle_tx()
3460 OUT4500(ai, EVACK, status & (EV_TX | EV_TXEXC)); airo_handle_tx()
3463 ai->fids[index] &= 0xffff; airo_handle_tx()
3465 if (!test_bit(FLAG_PENDING_XMIT, &ai->flags)) airo_handle_tx()
3466 netif_wake_queue(ai->dev); airo_handle_tx()
3468 if (!test_bit(FLAG_PENDING_XMIT11, &ai->flags)) airo_handle_tx()
3469 netif_wake_queue(ai->wifidev); airo_handle_tx()
3472 OUT4500(ai, EVACK, status & (EV_TX | EV_TXCPY | EV_TXEXC)); airo_handle_tx()
3473 airo_print_err(ai->dev->name, "Unallocated FID was used to xmit"); airo_handle_tx()
3481 struct airo_info *ai = dev->ml_priv; airo_interrupt() local
3488 status = IN4500(ai, EVSTAT); airo_interrupt()
3495 OUT4500(ai, EVACK, EV_AWAKE); airo_interrupt()
3496 OUT4500(ai, EVACK, EV_AWAKE); airo_interrupt()
3500 savedInterrupts = IN4500(ai, EVINTEN); airo_interrupt()
3501 OUT4500(ai, EVINTEN, 0); airo_interrupt()
3505 OUT4500(ai, EVACK, EV_MIC); airo_interrupt()
3506 airo_handle_cisco_mic(ai); airo_interrupt()
3511 airo_handle_link(ai); airo_interrupt()
3516 airo_handle_rx(ai); airo_interrupt()
3520 airo_handle_tx(ai, status); airo_interrupt()
3523 airo_print_warn(ai->dev->name, "Got weird status %x", airo_interrupt()
3529 OUT4500(ai, EVINTEN, savedInterrupts); airo_interrupt()
3543 static void OUT4500( struct airo_info *ai, u16 reg, u16 val ) { OUT4500() argument
3544 if (test_bit(FLAG_MPI,&ai->flags)) OUT4500()
3547 outw( val, ai->dev->base_addr + reg ); OUT4500()
3549 outb( val & 0xff, ai->dev->base_addr + reg ); OUT4500()
3550 outb( val >> 8, ai->dev->base_addr + reg + 1 ); OUT4500()
3554 static u16 IN4500( struct airo_info *ai, u16 reg ) { IN4500() argument
3557 if (test_bit(FLAG_MPI,&ai->flags)) IN4500()
3560 rc = inw( ai->dev->base_addr + reg ); IN4500()
3562 rc = inb( ai->dev->base_addr + reg ); IN4500()
3563 rc += ((int)inb( ai->dev->base_addr + reg + 1 )) << 8; IN4500()
3568 static int enable_MAC(struct airo_info *ai, int lock) enable_MAC() argument
3580 if (ai->flags & FLAG_RADIO_MASK) return SUCCESS; enable_MAC()
3582 if (lock && down_interruptible(&ai->sem)) enable_MAC()
3585 if (!test_bit(FLAG_ENABLED, &ai->flags)) { enable_MAC()
3588 rc = issuecommand(ai, &cmd, &rsp); enable_MAC()
3590 set_bit(FLAG_ENABLED, &ai->flags); enable_MAC()
3595 up(&ai->sem); enable_MAC()
3598 airo_print_err(ai->dev->name, "Cannot enable MAC"); enable_MAC()
3600 airo_print_err(ai->dev->name, "Bad MAC enable reason=%x, " enable_MAC()
3607 static void disable_MAC( struct airo_info *ai, int lock ) { disable_MAC() argument
3611 if (lock && down_interruptible(&ai->sem)) disable_MAC()
3614 if (test_bit(FLAG_ENABLED, &ai->flags)) { disable_MAC()
3617 issuecommand(ai, &cmd, &rsp); disable_MAC()
3618 clear_bit(FLAG_ENABLED, &ai->flags); disable_MAC()
3621 up(&ai->sem); disable_MAC()
3624 static void enable_interrupts( struct airo_info *ai ) { enable_interrupts()
3626 OUT4500( ai, EVINTEN, STATUS_INTS ); enable_interrupts()
3629 static void disable_interrupts( struct airo_info *ai ) { disable_interrupts()
3630 OUT4500( ai, EVINTEN, 0 ); disable_interrupts()
3633 static void mpi_receive_802_3(struct airo_info *ai) mpi_receive_802_3() argument
3642 memcpy_fromio(&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd)); mpi_receive_802_3()
3651 ai->dev->stats.rx_dropped++; mpi_receive_802_3()
3655 memcpy(buffer, ai->rxfids[0].virtual_host_addr, ETH_ALEN * 2); mpi_receive_802_3()
3656 if (ai->micstats.enabled) { mpi_receive_802_3()
3658 ai->rxfids[0].virtual_host_addr + ETH_ALEN * 2, mpi_receive_802_3()
3669 ai->rxfids[0].virtual_host_addr + ETH_ALEN * 2 + off, mpi_receive_802_3()
3671 if (decapsulate (ai, &micbuf, (etherHead*)buffer, len - off - ETH_ALEN * 2)) { mpi_receive_802_3()
3677 if (ai->spy_data.spy_number > 0) { mpi_receive_802_3()
3686 wireless_spy_update(ai->dev, sa, &wstats); mpi_receive_802_3()
3691 skb->protocol = eth_type_trans(skb, ai->dev); mpi_receive_802_3()
3699 memcpy_toio(ai->rxfids[0].card_ram_off, &rxd, sizeof(rxd)); mpi_receive_802_3()
3703 static void mpi_receive_802_11(struct airo_info *ai) mpi_receive_802_11() argument
3712 char *ptr = ai->rxfids[0].virtual_host_addr + 4; mpi_receive_802_11()
3714 memcpy_fromio(&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd)); mpi_receive_802_11()
3720 if (ai->wifidev == NULL) mpi_receive_802_11()
3724 airo_print_err(ai->dev->name, "Bad size %d", len); mpi_receive_802_11()
3735 ai->dev->stats.rx_dropped++; mpi_receive_802_11()
3749 airo_print_err(ai->dev->name, mpi_receive_802_11()
3755 if (ai->spy_data.spy_number > 0) { mpi_receive_802_11()
3761 if (ai->rssi) mpi_receive_802_11()
3762 wstats.level = 0x100 - ai->rssi[hdr.rssi[1]].rssidBm; mpi_receive_802_11()
3765 wstats.noise = ai->wstats.qual.noise; mpi_receive_802_11()
3770 wireless_spy_update(ai->dev, sa, &wstats); mpi_receive_802_11()
3775 skb->dev = ai->wifidev; mpi_receive_802_11()
3785 memcpy_toio(ai->rxfids[0].card_ram_off, &rxd, sizeof(rxd)); mpi_receive_802_11()
3789 static u16 setup_card(struct airo_info *ai, u8 *mac, int lock) setup_card() argument
3800 kfree (ai->flash); setup_card()
3801 ai->flash = NULL; setup_card()
3806 if (lock && down_interruptible(&ai->sem)) setup_card()
3808 if ( issuecommand( ai, &cmd, &rsp ) != SUCCESS ) { setup_card()
3810 up(&ai->sem); setup_card()
3813 disable_MAC( ai, 0); setup_card()
3816 if (!test_bit(FLAG_MPI,&ai->flags)) { setup_card()
3818 if (issuecommand(ai, &cmd, &rsp) != SUCCESS) { setup_card()
3820 up(&ai->sem); setup_card()
3821 airo_print_err(ai->dev->name, "Error checking for AUX port"); setup_card()
3825 ai->bap_read = fast_bap_read; setup_card()
3826 airo_print_dbg(ai->dev->name, "Doing fast bap_reads"); setup_card()
3828 ai->bap_read = aux_bap_read; setup_card()
3829 airo_print_dbg(ai->dev->name, "Doing AUX bap_reads"); setup_card()
3833 up(&ai->sem); setup_card()
3834 if (ai->config.len == 0) { setup_card()
3839 kfree(ai->APList); setup_card()
3840 ai->APList = NULL; setup_card()
3841 kfree(ai->SSID); setup_card()
3842 ai->SSID = NULL; setup_card()
3844 status = readConfigRid(ai, lock); setup_card()
3847 status = readCapabilityRid(ai, &cap_rid, lock); setup_card()
3850 status = PC4500_readrid(ai,RID_RSSI,&rssi_rid,sizeof(rssi_rid),lock); setup_card()
3852 if (ai->rssi || (ai->rssi = kmalloc(512, GFP_KERNEL)) != NULL) setup_card()
3853 memcpy(ai->rssi, (u8*)&rssi_rid + 2, 512); /* Skip RID length member */ setup_card()
3856 kfree(ai->rssi); setup_card()
3857 ai->rssi = NULL; setup_card()
3859 ai->config.rmode |= RXMODE_NORMALIZED_RSSI; setup_card()
3861 airo_print_warn(ai->dev->name, "unknown received signal " setup_card()
3864 ai->config.opmode = adhoc ? MODE_STA_IBSS : MODE_STA_ESS; setup_card()
3865 ai->config.authType = AUTH_OPEN; setup_card()
3866 ai->config.modulation = MOD_CCK; setup_card()
3870 micsetup(ai) == SUCCESS) { setup_card()
3871 ai->config.opmode |= MODE_MIC; setup_card()
3872 set_bit(FLAG_MIC_CAPABLE, &ai->flags); setup_card()
3877 mac[i] = ai->config.macAddr[i]; setup_card()
3883 memset(ai->config.rates,0,sizeof(ai->config.rates)); setup_card()
3885 ai->config.rates[i] = rates[i]; setup_card()
3888 set_bit (FLAG_COMMIT, &ai->flags); setup_card()
3904 status = writeConfigRid(ai, lock); setup_card()
3909 status = writeSsidRid(ai, &mySsid, lock); setup_card()
3913 status = enable_MAC(ai, lock); setup_card()
3918 rc = readWepKeyRid(ai, &wkr, 1, lock); setup_card()
3922 ai->defindex = wkr.mac[0]; setup_card()
3924 rc = readWepKeyRid(ai, &wkr, 0, lock); setup_card()
3927 try_auto_wep(ai); setup_card()
3932 static u16 issuecommand(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) { issuecommand() argument
3936 if (IN4500(ai, EVSTAT) & EV_CMD) issuecommand()
3937 OUT4500(ai, EVACK, EV_CMD); issuecommand()
3939 OUT4500(ai, PARAM0, pCmd->parm0); issuecommand()
3940 OUT4500(ai, PARAM1, pCmd->parm1); issuecommand()
3941 OUT4500(ai, PARAM2, pCmd->parm2); issuecommand()
3942 OUT4500(ai, COMMAND, pCmd->cmd); issuecommand()
3944 while (max_tries-- && (IN4500(ai, EVSTAT) & EV_CMD) == 0) { issuecommand()
3945 if ((IN4500(ai, COMMAND)) == pCmd->cmd) issuecommand()
3947 OUT4500(ai, COMMAND, pCmd->cmd); issuecommand()
3953 airo_print_err(ai->dev->name, issuecommand()
3955 if (IN4500(ai, COMMAND) & COMMAND_BUSY) issuecommand()
3956 OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY); issuecommand()
3961 pRsp->status = IN4500(ai, STATUS); issuecommand()
3962 pRsp->rsp0 = IN4500(ai, RESP0); issuecommand()
3963 pRsp->rsp1 = IN4500(ai, RESP1); issuecommand()
3964 pRsp->rsp2 = IN4500(ai, RESP2); issuecommand()
3966 airo_print_err(ai->dev->name, issuecommand()
3972 if (IN4500(ai, COMMAND) & COMMAND_BUSY) { issuecommand()
3973 OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY); issuecommand()
3976 OUT4500(ai, EVACK, EV_CMD); issuecommand()
3984 static int bap_setup(struct airo_info *ai, u16 rid, u16 offset, int whichbap ) bap_setup() argument
3989 OUT4500(ai, SELECT0+whichbap, rid); bap_setup()
3990 OUT4500(ai, OFFSET0+whichbap, offset); bap_setup()
3992 int status = IN4500(ai, OFFSET0+whichbap); bap_setup()
4001 airo_print_err(ai->dev->name, "BAP error %x %d", bap_setup()
4008 airo_print_err(ai->dev->name, bap_setup()
4013 OUT4500(ai, SELECT0+whichbap, rid); bap_setup()
4014 OUT4500(ai, OFFSET0+whichbap, offset); bap_setup()
4022 static u16 aux_setup(struct airo_info *ai, u16 page, aux_setup() argument
4027 OUT4500(ai, AUXPAGE, page); aux_setup()
4028 OUT4500(ai, AUXOFF, 0); aux_setup()
4029 next = IN4500(ai, AUXDATA); aux_setup()
4030 *len = IN4500(ai, AUXDATA)&0xff; aux_setup()
4031 if (offset != 4) OUT4500(ai, AUXOFF, offset); aux_setup()
4036 static int aux_bap_read(struct airo_info *ai, __le16 *pu16Dst, aux_bap_read() argument
4047 spin_lock_irqsave(&ai->aux_lock, flags); aux_bap_read()
4048 page = IN4500(ai, SWS0+whichbap); aux_bap_read()
4049 offset = IN4500(ai, SWS2+whichbap); aux_bap_read()
4050 next = aux_setup(ai, page, offset, &len); aux_bap_read()
4057 insw( ai->dev->base_addr+DATA0+whichbap, aux_bap_read()
4060 insb( ai->dev->base_addr+DATA0+whichbap, aux_bap_read()
4064 next = aux_setup(ai, next, 4, &len); aux_bap_read()
4067 spin_unlock_irqrestore(&ai->aux_lock, flags); aux_bap_read()
4073 static int fast_bap_read(struct airo_info *ai, __le16 *pu16Dst, fast_bap_read() argument
4078 insw( ai->dev->base_addr+DATA0+whichbap, pu16Dst, bytelen>>1 ); fast_bap_read()
4080 insb( ai->dev->base_addr+DATA0+whichbap, pu16Dst, bytelen ); fast_bap_read()
4085 static int bap_write(struct airo_info *ai, const __le16 *pu16Src, bap_write() argument
4090 outsw( ai->dev->base_addr+DATA0+whichbap, bap_write()
4093 outsb( ai->dev->base_addr+DATA0+whichbap, pu16Src, bytelen ); bap_write()
4097 static int PC4500_accessrid(struct airo_info *ai, u16 rid, u16 accmd) PC4500_accessrid() argument
4106 status = issuecommand(ai, &cmd, &rsp); PC4500_accessrid()
4116 static int PC4500_readrid(struct airo_info *ai, u16 rid, void *pBuf, int len, int lock) PC4500_readrid() argument
4122 if (down_interruptible(&ai->sem)) PC4500_readrid()
4125 if (test_bit(FLAG_MPI,&ai->flags)) { PC4500_readrid()
4131 ai->config_desc.rid_desc.valid = 1; PC4500_readrid()
4132 ai->config_desc.rid_desc.len = RIDSIZE; PC4500_readrid()
4133 ai->config_desc.rid_desc.rid = 0; PC4500_readrid()
4134 ai->config_desc.rid_desc.host_addr = ai->ridbus; PC4500_readrid()
4139 memcpy_toio(ai->config_desc.card_ram_off, PC4500_readrid()
4140 &ai->config_desc.rid_desc, sizeof(Rid)); PC4500_readrid()
4142 rc = issuecommand(ai, &cmd, &rsp); PC4500_readrid()
4147 memcpy(pBuf, ai->config_desc.virtual_host_addr, len); PC4500_readrid()
4150 if ((status = PC4500_accessrid(ai, rid, CMD_ACCESS))!=SUCCESS) { PC4500_readrid()
4154 if (bap_setup(ai, rid, 0, BAP1) != SUCCESS) { PC4500_readrid()
4159 bap_read(ai, pBuf, 2, BAP1); PC4500_readrid()
4164 airo_print_err(ai->dev->name, PC4500_readrid()
4171 rc = bap_read(ai, ((__le16*)pBuf)+1, len, BAP1); PC4500_readrid()
4175 up(&ai->sem); PC4500_readrid()
4181 static int PC4500_writerid(struct airo_info *ai, u16 rid, PC4500_writerid() argument
4190 if (down_interruptible(&ai->sem)) PC4500_writerid()
4193 if (test_bit(FLAG_MPI,&ai->flags)) { PC4500_writerid()
4197 if (test_bit(FLAG_ENABLED, &ai->flags) && (RID_WEP_TEMP != rid)) PC4500_writerid()
4198 airo_print_err(ai->dev->name, PC4500_writerid()
4204 ai->config_desc.rid_desc.valid = 1; PC4500_writerid()
4205 ai->config_desc.rid_desc.len = *((u16 *)pBuf); PC4500_writerid()
4206 ai->config_desc.rid_desc.rid = 0; PC4500_writerid()
4211 memcpy_toio(ai->config_desc.card_ram_off, PC4500_writerid()
4212 &ai->config_desc.rid_desc, sizeof(Rid)); PC4500_writerid()
4215 airo_print_err(ai->dev->name, "%s: len=%d", __func__, len); PC4500_writerid()
4218 memcpy(ai->config_desc.virtual_host_addr, PC4500_writerid()
4221 rc = issuecommand(ai, &cmd, &rsp); PC4500_writerid()
4223 airo_print_err(ai->dev->name, "%s: Write rid Error %d", PC4500_writerid()
4225 airo_print_err(ai->dev->name, "%s: Cmd=%04x", PC4500_writerid()
4234 if ( (status = PC4500_accessrid(ai, rid, CMD_ACCESS)) != 0) { PC4500_writerid()
4239 if (bap_setup(ai, rid, 0, BAP1) != SUCCESS) { PC4500_writerid()
4243 bap_write(ai, pBuf, len, BAP1); PC4500_writerid()
4245 rc = PC4500_accessrid(ai, rid, 0x100|CMD_ACCESS); PC4500_writerid()
4249 up(&ai->sem); PC4500_writerid()
4255 static u16 transmit_allocate(struct airo_info *ai, int lenPayload, int raw) transmit_allocate() argument
4265 if (down_interruptible(&ai->sem)) transmit_allocate()
4267 if (issuecommand(ai, &cmd, &rsp) != SUCCESS) { transmit_allocate()
4278 while (((IN4500(ai, EVSTAT) & EV_ALLOC) == 0) && --loop); transmit_allocate()
4285 txFid = IN4500(ai, TXALLOCFID); transmit_allocate()
4286 OUT4500(ai, EVACK, EV_ALLOC); transmit_allocate()
4299 if (bap_setup(ai, txFid, 0x0008, BAP1) != SUCCESS) transmit_allocate()
4302 bap_write(ai, &txControl, sizeof(txControl), BAP1); transmit_allocate()
4305 up(&ai->sem); transmit_allocate()
4313 static int transmit_802_3_packet(struct airo_info *ai, int len, char *pPacket) transmit_802_3_packet() argument
4325 airo_print_warn(ai->dev->name, "Short packet %d", len); transmit_802_3_packet()
4330 if (test_bit(FLAG_MIC_CAPABLE, &ai->flags) && ai->micstats.enabled && transmit_802_3_packet()
4332 if (encapsulate(ai,(etherHead *)pPacket,&pMic,len) != SUCCESS) transmit_802_3_packet()
4338 if (bap_setup(ai, txFid, 0x0036, BAP1) != SUCCESS) return ERROR; transmit_802_3_packet()
4342 bap_write(ai, &payloadLen, sizeof(payloadLen),BAP1); transmit_802_3_packet()
4343 bap_write(ai, (__le16*)pPacket, sizeof(etherHead), BAP1); transmit_802_3_packet()
4345 bap_write(ai, (__le16*)&pMic, miclen, BAP1); transmit_802_3_packet()
4346 bap_write(ai, (__le16*)(pPacket + sizeof(etherHead)), len, BAP1); transmit_802_3_packet()
4351 if (issuecommand(ai, &cmd, &rsp) != SUCCESS) return ERROR; transmit_802_3_packet()
4356 static int transmit_802_11_packet(struct airo_info *ai, int len, char *pPacket) transmit_802_11_packet() argument
4371 airo_print_warn(ai->dev->name, "Short packet %d", len); transmit_802_11_packet()
4377 if (bap_setup(ai, txFid, 6, BAP1) != SUCCESS) return ERROR; transmit_802_11_packet()
4381 bap_write(ai, &payloadLen, sizeof(payloadLen),BAP1); transmit_802_11_packet()
4382 if (bap_setup(ai, txFid, 0x0014, BAP1) != SUCCESS) return ERROR; transmit_802_11_packet()
4383 bap_write(ai, (__le16 *)pPacket, hdrlen, BAP1); transmit_802_11_packet()
4384 bap_write(ai, (__le16 *)(tail + (hdrlen - 10)), 38 - hdrlen, BAP1); transmit_802_11_packet()
4386 bap_write(ai, (__le16 *)(pPacket + hdrlen), len - hdrlen, BAP1); transmit_802_11_packet()
4391 if (issuecommand(ai, &cmd, &rsp) != SUCCESS) return ERROR; transmit_802_11_packet()
4770 static inline int sniffing_mode(struct airo_info *ai) sniffing_mode() argument
4772 return (le16_to_cpu(ai->config.rmode) & le16_to_cpu(RXMODE_MASK)) >= sniffing_mode()
4780 struct airo_info *ai = dev->ml_priv; proc_config_on_close() local
4785 readConfigRid(ai, 1); proc_config_on_close()
4786 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4793 if (sniffing_mode(ai)) proc_config_on_close()
4794 set_bit (FLAG_RESET, &ai->flags); proc_config_on_close()
4795 ai->config.rmode &= ~RXMODE_FULL_MASK; proc_config_on_close()
4796 clear_bit (FLAG_802_11, &ai->flags); proc_config_on_close()
4797 ai->config.opmode &= ~MODE_CFG_MASK; proc_config_on_close()
4798 ai->config.scanMode = SCANMODE_ACTIVE; proc_config_on_close()
4800 ai->config.opmode |= MODE_STA_IBSS; proc_config_on_close()
4802 ai->config.opmode |= MODE_STA_ESS; proc_config_on_close()
4804 ai->config.rmode |= RXMODE_RFMON | RXMODE_DISABLE_802_3_HEADER; proc_config_on_close()
4805 ai->config.scanMode = SCANMODE_PASSIVE; proc_config_on_close()
4806 set_bit (FLAG_802_11, &ai->flags); proc_config_on_close()
4808 ai->config.rmode |= RXMODE_RFMON_ANYBSS | RXMODE_DISABLE_802_3_HEADER; proc_config_on_close()
4809 ai->config.scanMode = SCANMODE_PASSIVE; proc_config_on_close()
4810 set_bit (FLAG_802_11, &ai->flags); proc_config_on_close()
4812 ai->config.rmode |= RXMODE_LANMON; proc_config_on_close()
4814 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4821 set_bit (FLAG_RADIO_OFF, &ai->flags); proc_config_on_close()
4823 clear_bit (FLAG_RADIO_OFF, &ai->flags); proc_config_on_close()
4831 memset( ai->config.nodeName, 0, 16 ); proc_config_on_close()
4834 ai->config.nodeName[j] = line[j]; proc_config_on_close()
4836 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4843 ai->config.powerSaveMode = POWERSAVE_PSPCAM; proc_config_on_close()
4844 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4846 ai->config.powerSaveMode = POWERSAVE_PSP; proc_config_on_close()
4847 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4849 ai->config.powerSaveMode = POWERSAVE_CAM; proc_config_on_close()
4850 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4858 ai->config.rates[k++] = (u8)v; proc_config_on_close()
4862 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4868 ai->config.channelSet = cpu_to_le16(v); proc_config_on_close()
4869 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4876 ai->config.txPower = cpu_to_le16(v); proc_config_on_close()
4877 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4883 ai->config.authType = AUTH_SHAREDKEY; proc_config_on_close()
4886 ai->config.authType = AUTH_ENCRYPT; proc_config_on_close()
4889 ai->config.authType = AUTH_OPEN; proc_config_on_close()
4892 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4899 ai->config.longRetryLimit = cpu_to_le16(v); proc_config_on_close()
4900 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4907 ai->config.shortRetryLimit = cpu_to_le16(v); proc_config_on_close()
4908 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4915 ai->config.rtsThres = cpu_to_le16(v); proc_config_on_close()
4916 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4923 ai->config.txLifetime = cpu_to_le16(v); proc_config_on_close()
4924 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4931 ai->config.rxLifetime = cpu_to_le16(v); proc_config_on_close()
4932 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4934 ai->config.txDiversity = proc_config_on_close()
4937 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4939 ai->config.rxDiversity = proc_config_on_close()
4942 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4950 ai->config.fragThresh = cpu_to_le16(v); proc_config_on_close()
4951 set_bit (FLAG_COMMIT, &ai->flags); proc_config_on_close()
4955 case 'd': ai->config.modulation=MOD_DEFAULT; set_bit(FLAG_COMMIT, &ai->flags); break; proc_config_on_close()
4956 case 'c': ai->config.modulation=MOD_CCK; set_bit(FLAG_COMMIT, &ai->flags); break; proc_config_on_close()
4957 case 'm': ai->config.modulation=MOD_MOK; set_bit(FLAG_COMMIT, &ai->flags); break; proc_config_on_close()
4958 default: airo_print_warn(ai->dev->name, "Unknown modulation"); proc_config_on_close()
4963 case 'a': ai->config.preamble=PREAMBLE_AUTO; set_bit(FLAG_COMMIT, &ai->flags); break; proc_config_on_close()
4964 case 'l': ai->config.preamble=PREAMBLE_LONG; set_bit(FLAG_COMMIT, &ai->flags); break; proc_config_on_close()
4965 case 's': ai->config.preamble=PREAMBLE_SHORT; set_bit(FLAG_COMMIT, &ai->flags); break; proc_config_on_close()
4966 default: airo_print_warn(ai->dev->name, "Unknown preamble"); proc_config_on_close()
4969 airo_print_warn(ai->dev->name, "Couldn't figure out %s", line); proc_config_on_close()
4991 struct airo_info *ai = dev->ml_priv; proc_config_open() local
5010 readConfigRid(ai, 1); proc_config_open()
5012 mode = ai->config.opmode & MODE_CFG_MASK; proc_config_open()
5022 mode == MODE_STA_ESS ? get_rmode(ai->config.rmode): proc_config_open()
5025 test_bit(FLAG_RADIO_OFF, &ai->flags) ? "off" : "on", proc_config_open()
5026 ai->config.nodeName, proc_config_open()
5027 ai->config.powerSaveMode == POWERSAVE_CAM ? "CAM" : proc_config_open()
5028 ai->config.powerSaveMode == POWERSAVE_PSP ? "PSP" : proc_config_open()
5029 ai->config.powerSaveMode == POWERSAVE_PSPCAM ? "PSPCAM" : proc_config_open()
5031 (int)ai->config.rates[0], proc_config_open()
5032 (int)ai->config.rates[1], proc_config_open()
5033 (int)ai->config.rates[2], proc_config_open()
5034 (int)ai->config.rates[3], proc_config_open()
5035 (int)ai->config.rates[4], proc_config_open()
5036 (int)ai->config.rates[5], proc_config_open()
5037 (int)ai->config.rates[6], proc_config_open()
5038 (int)ai->config.rates[7], proc_config_open()
5039 le16_to_cpu(ai->config.channelSet), proc_config_open()
5040 le16_to_cpu(ai->config.txPower) proc_config_open()
5054 le16_to_cpu(ai->config.longRetryLimit), proc_config_open()
5055 le16_to_cpu(ai->config.shortRetryLimit), proc_config_open()
5056 le16_to_cpu(ai->config.rtsThres), proc_config_open()
5057 le16_to_cpu(ai->config.txLifetime), proc_config_open()
5058 le16_to_cpu(ai->config.rxLifetime), proc_config_open()
5059 ai->config.txDiversity == 1 ? "left" : proc_config_open()
5060 ai->config.txDiversity == 2 ? "right" : "both", proc_config_open()
5061 ai->config.rxDiversity == 1 ? "left" : proc_config_open()
5062 ai->config.rxDiversity == 2 ? "right" : "both", proc_config_open()
5063 le16_to_cpu(ai->config.fragThresh), proc_config_open()
5064 ai->config.authType == AUTH_ENCRYPT ? "encrypt" : proc_config_open()
5065 ai->config.authType == AUTH_SHAREDKEY ? "shared" : "open", proc_config_open()
5066 ai->config.modulation == MOD_DEFAULT ? "default" : proc_config_open()
5067 ai->config.modulation == MOD_CCK ? "cck" : proc_config_open()
5068 ai->config.modulation == MOD_MOK ? "mok" : "error", proc_config_open()
5069 ai->config.preamble == PREAMBLE_AUTO ? "auto" : proc_config_open()
5070 ai->config.preamble == PREAMBLE_LONG ? "long" : proc_config_open()
5071 ai->config.preamble == PREAMBLE_SHORT ? "short" : "error" proc_config_open()
5081 struct airo_info *ai = dev->ml_priv; proc_SSID_on_close() local
5108 disable_MAC(ai, 1); proc_SSID_on_close()
5109 writeSsidRid(ai, &SSID_rid, 1); proc_SSID_on_close()
5110 enable_MAC(ai, 1); proc_SSID_on_close()
5116 struct airo_info *ai = dev->ml_priv; proc_APList_on_close() local
5140 disable_MAC(ai, 1); proc_APList_on_close()
5141 writeAPListRid(ai, &APList_rid, 1); proc_APList_on_close()
5142 enable_MAC(ai, 1); proc_APList_on_close()
5146 static int do_writerid( struct airo_info *ai, u16 rid, const void *rid_data, do_writerid() argument
5150 disable_MAC(ai, 1); do_writerid()
5151 rc = PC4500_writerid(ai, rid, rid_data, len, 1); do_writerid()
5152 enable_MAC(ai, 1); do_writerid()
5159 static int get_wep_key(struct airo_info *ai, u16 index, char *buf, u16 buflen) get_wep_key() argument
5165 rc = readWepKeyRid(ai, &wkr, 1, 1); get_wep_key()
5175 rc = readWepKeyRid(ai, &wkr, 0, 1); get_wep_key()
5182 static int get_wep_tx_idx(struct airo_info *ai) get_wep_tx_idx() argument
5188 rc = readWepKeyRid(ai, &wkr, 1, 1); get_wep_tx_idx()
5195 rc = readWepKeyRid(ai, &wkr, 0, 1); get_wep_tx_idx()
5202 static int set_wep_key(struct airo_info *ai, u16 index, const char *key, set_wep_key() argument
5219 if (perm) disable_MAC(ai, lock); set_wep_key()
5220 rc = writeWepKeyRid(ai, &wkr, perm, lock); set_wep_key()
5221 if (perm) enable_MAC(ai, lock); set_wep_key()
5225 static int set_wep_tx_idx(struct airo_info *ai, u16 index, int perm, int lock) set_wep_tx_idx() argument
5236 ai->defindex = (char)index; set_wep_tx_idx()
5237 disable_MAC(ai, lock); set_wep_tx_idx()
5240 rc = writeWepKeyRid(ai, &wkr, perm, lock); set_wep_tx_idx()
5243 enable_MAC(ai, lock); set_wep_tx_idx()
5250 struct airo_info *ai = dev->ml_priv; proc_wepkey_on_close() local
5265 rc = set_wep_tx_idx(ai, index, 1, 1); proc_wepkey_on_close()
5267 airo_print_err(ai->dev->name, "failed to set " proc_wepkey_on_close()
5275 airo_print_err(ai->dev->name, "WepKey passed invalid key index"); proc_wepkey_on_close()
5290 rc = set_wep_key(ai, index, key, i/3, 1, 1); proc_wepkey_on_close()
5292 airo_print_err(ai->dev->name, "failed to set WEP key at index " proc_wepkey_on_close()
5301 struct airo_info *ai = dev->ml_priv; proc_wepkey_open() local
5327 rc = readWepKeyRid(ai, &wkr, 1, 1); proc_wepkey_open()
5338 readWepKeyRid(ai, &wkr, 0, 1); proc_wepkey_open()
5349 struct airo_info *ai = dev->ml_priv; proc_SSID_open() local
5371 readSsidRid(ai, &SSID_rid); proc_SSID_open()
5392 struct airo_info *ai = dev->ml_priv; proc_APList_open() local
5413 readAPListRid(ai, &APList_rid); proc_APList_open()
5431 struct airo_info *ai = dev->ml_priv; proc_BSSList_open() local
5455 if (ai->flags & FLAG_RADIO_MASK) return -ENETDOWN; proc_BSSList_open()
5458 if (down_interruptible(&ai->sem)) proc_BSSList_open()
5460 issuecommand(ai, &cmd, &rsp); proc_BSSList_open()
5461 up(&ai->sem); proc_BSSList_open()
5471 rc = readBSSListRid(ai, doLoseSync, &BSSList_rid); proc_BSSList_open()
5484 rc = readBSSListRid(ai, 0, &BSSList_rid); proc_BSSList_open()
5579 struct airo_info *ai = dev->ml_priv; airo_pci_suspend() local
5583 if (!ai->APList) airo_pci_suspend()
5584 ai->APList = kmalloc(sizeof(APListRid), GFP_KERNEL); airo_pci_suspend()
5585 if (!ai->APList) airo_pci_suspend()
5587 if (!ai->SSID) airo_pci_suspend()
5588 ai->SSID = kmalloc(sizeof(SsidRid), GFP_KERNEL); airo_pci_suspend()
5589 if (!ai->SSID) airo_pci_suspend()
5591 readAPListRid(ai, ai->APList); airo_pci_suspend()
5592 readSsidRid(ai, ai->SSID); airo_pci_suspend()
5595 if (down_interruptible(&ai->sem)) airo_pci_suspend()
5597 disable_MAC(ai, 0); airo_pci_suspend()
5599 ai->power = state; airo_pci_suspend()
5601 issuecommand(ai, &cmd, &rsp); airo_pci_suspend()
5612 struct airo_info *ai = dev->ml_priv; airo_pci_resume() local
5621 mpi_init_descriptors(ai); airo_pci_resume()
5622 setup_card(ai, dev->dev_addr, 0); airo_pci_resume()
5623 clear_bit(FLAG_RADIO_OFF, &ai->flags); airo_pci_resume()
5624 clear_bit(FLAG_PENDING_XMIT, &ai->flags); airo_pci_resume()
5626 OUT4500(ai, EVACK, EV_AWAKEN); airo_pci_resume()
5627 OUT4500(ai, EVACK, EV_AWAKEN); airo_pci_resume()
5631 set_bit(FLAG_COMMIT, &ai->flags); airo_pci_resume()
5632 disable_MAC(ai, 0); airo_pci_resume()
5634 if (ai->SSID) { airo_pci_resume()
5635 writeSsidRid(ai, ai->SSID, 0); airo_pci_resume()
5636 kfree(ai->SSID); airo_pci_resume()
5637 ai->SSID = NULL; airo_pci_resume()
5639 if (ai->APList) { airo_pci_resume()
5640 writeAPListRid(ai, ai->APList, 0); airo_pci_resume()
5641 kfree(ai->APList); airo_pci_resume()
5642 ai->APList = NULL; airo_pci_resume()
5644 writeConfigRid(ai, 0); airo_pci_resume()
5645 enable_MAC(ai, 0); airo_pci_resume()
5646 ai->power = PMSG_ON; airo_pci_resume()
5649 enable_interrupts(ai); airo_pci_resume()
5650 up(&ai->sem); airo_pci_resume()
5695 struct airo_info *ai; airo_cleanup_module() local
5697 ai = list_entry(airo_devices.next, struct airo_info, dev_list); airo_cleanup_module()
5698 airo_print_info(ai->dev->name, "Unregistering..."); airo_cleanup_module()
5699 stop_airo_card(ai->dev, 1); airo_cleanup_module()
6299 static inline int valid_index(struct airo_info *ai, int index) valid_index() argument
6301 return (index >= 0) && (index <= ai->max_wep_idx); valid_index()
7216 struct airo_info *ai = dev->ml_priv; airo_set_scan() local
7227 if (ai->flags & FLAG_RADIO_MASK) return -ENETDOWN; airo_set_scan()
7229 if (down_interruptible(&ai->sem)) airo_set_scan()
7234 if (ai->scan_timeout > 0) airo_set_scan()
7238 ai->scan_timeout = RUN_AT(3*HZ); airo_set_scan()
7241 issuecommand(ai, &cmd, &rsp); airo_set_scan()
7245 up(&ai->sem); airo_set_scan()
7247 wake_up_interruptible(&ai->thr_wait); airo_set_scan()
7262 struct airo_info *ai = dev->ml_priv; airo_translate_scan() local
7313 if (ai->rssi) { airo_translate_scan()
7315 iwe.u.qual.qual = airo_dbm_to_pct(ai->rssi, dBm); airo_translate_scan()
7326 iwe.u.qual.noise = ai->wstats.qual.noise; airo_translate_scan()
7375 if (test_bit(FLAG_WPA_CAPABLE, &ai->flags)) { airo_translate_scan()
7439 struct airo_info *ai = dev->ml_priv; airo_get_scan() local
7445 if (ai->scan_timeout > 0) airo_get_scan()
7448 if (down_interruptible(&ai->sem)) airo_get_scan()
7451 list_for_each_entry (net, &ai->network_list, list) { airo_get_scan()
7470 up(&ai->sem); airo_get_scan()
7628 struct airo_info *ai = dev->ml_priv; airo_ioctl() local
7630 if (ai->power.event) airo_ioctl()
7781 struct airo_info *ai = dev->ml_priv; readrids() local
7783 if (test_bit(FLAG_FLASHING, &ai->flags)) readrids()
7790 if (test_bit(FLAG_COMMIT, &ai->flags)) { readrids()
7791 disable_MAC (ai, 1); readrids()
7792 writeConfigRid (ai, 1); readrids()
7793 enable_MAC(ai, 1); readrids()
7814 if (copy_to_user(comp->data, &ai->micstats, readrids()
7815 min((int)comp->len,(int)sizeof(ai->micstats)))) readrids()
7826 PC4500_readrid(ai,ridcode,iobuf,RIDSIZE, 1); readrids()
7846 struct airo_info *ai = dev->ml_priv; writerids() local
7856 if (test_bit(FLAG_FLASHING, &ai->flags)) writerids()
7867 case AIROPCFG: ai->config.len = 0; writerids()
7868 clear_bit(FLAG_COMMIT, &ai->flags); writerids()
7882 if (enable_MAC(ai, 1) != 0) writerids()
7891 disable_MAC(ai, 1); writerids()
7902 PC4500_readrid(ai,RID_STATSDELTACLEAR,iobuf,RIDSIZE, 1); writerids()
7904 enabled = ai->micstats.enabled; writerids()
7905 memset(&ai->micstats,0,sizeof(ai->micstats)); writerids()
7906 ai->micstats.enabled = enabled; writerids()
7933 if (test_bit(FLAG_MIC_CAPABLE, &ai->flags)) writerids()
7937 set_bit (FLAG_ADHOC, &ai->flags); writerids()
7939 clear_bit (FLAG_ADHOC, &ai->flags); writerids()
7942 if((*writer)(ai, ridcode, iobuf,comp->len,1)) { writerids()
8018 static int cmdreset(struct airo_info *ai) { cmdreset() argument
8019 disable_MAC(ai, 1); cmdreset()
8021 if(!waitbusy (ai)){ cmdreset()
8022 airo_print_info(ai->dev->name, "Waitbusy hang before RESET"); cmdreset()
8026 OUT4500(ai,COMMAND,CMD_SOFTRESET); cmdreset()
8030 if(!waitbusy (ai)){ cmdreset()
8031 airo_print_info(ai->dev->name, "Waitbusy hang AFTER RESET"); cmdreset()
8042 static int setflashmode (struct airo_info *ai) { setflashmode() argument
8043 set_bit (FLAG_FLASHING, &ai->flags); setflashmode()
8045 OUT4500(ai, SWS0, FLASH_COMMAND); setflashmode()
8046 OUT4500(ai, SWS1, FLASH_COMMAND); setflashmode()
8048 OUT4500(ai, SWS0, FLASH_COMMAND); setflashmode()
8049 OUT4500(ai, COMMAND,0x10); setflashmode()
8051 OUT4500(ai, SWS2, FLASH_COMMAND); setflashmode()
8052 OUT4500(ai, SWS3, FLASH_COMMAND); setflashmode()
8053 OUT4500(ai, COMMAND,0); setflashmode()
8057 if(!waitbusy(ai)) { setflashmode()
8058 clear_bit (FLAG_FLASHING, &ai->flags); setflashmode()
8059 airo_print_info(ai->dev->name, "Waitbusy hang after setflash mode"); setflashmode()
8069 static int flashpchar(struct airo_info *ai,int byte,int dwelltime) { flashpchar() argument
8081 while ((IN4500 (ai, SWS0) & 0x8000) && waittime > 0) { flashpchar()
8088 airo_print_info(ai->dev->name, "flash putchar busywait timeout!"); flashpchar()
8094 OUT4500(ai,SWS0,byte); flashpchar()
8097 echo = IN4500(ai,SWS1); flashpchar()
8100 OUT4500(ai,SWS1,0); flashpchar()
8109 static int flashgchar(struct airo_info *ai,int matchbyte,int dwelltime){ flashgchar() argument
8114 rchar = IN4500(ai,SWS1); flashgchar()
8124 OUT4500(ai,SWS1,0); flashgchar()
8129 OUT4500(ai,SWS1,0); flashgchar()
8140 static int flashputbuf(struct airo_info *ai){ flashputbuf() argument
8144 if (test_bit(FLAG_MPI,&ai->flags)) flashputbuf()
8145 memcpy_toio(ai->pciaux + 0x8000, ai->flash, FLASHSIZE); flashputbuf()
8147 OUT4500(ai,AUXPAGE,0x100); flashputbuf()
8148 OUT4500(ai,AUXOFF,0); flashputbuf()
8151 OUT4500(ai,AUXDATA,ai->flash[nwords] & 0xffff); flashputbuf()
8154 OUT4500(ai,SWS0,0x8000); flashputbuf()
8162 static int flashrestart(struct airo_info *ai,struct net_device *dev){ flashrestart() argument
8166 clear_bit (FLAG_FLASHING, &ai->flags); flashrestart()
8167 if (test_bit(FLAG_MPI, &ai->flags)) { flashrestart()
8168 status = mpi_init_descriptors(ai); flashrestart()
8172 status = setup_card(ai, dev->dev_addr, 1); flashrestart()
8174 if (!test_bit(FLAG_MPI,&ai->flags)) flashrestart()
8176 ai->fids[i] = transmit_allocate flashrestart()
8177 ( ai, AIRO_DEF_MTU, i >= MAX_FIDS / 2 ); flashrestart()
/linux-4.1.27/drivers/mtd/ubi/
H A Dattach.c92 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai);
100 * @ai: attaching information
119 static int add_to_list(struct ubi_attach_info *ai, int pnum, int vol_id, add_to_list() argument
124 if (list == &ai->free) { add_to_list()
126 } else if (list == &ai->erase) { add_to_list()
128 } else if (list == &ai->alien) { add_to_list()
130 ai->alien_peb_count += 1; add_to_list()
134 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); add_to_list()
151 * @ai: attaching information
160 static int add_corrupted(struct ubi_attach_info *ai, int pnum, int ec) add_corrupted() argument
166 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); add_corrupted()
170 ai->corr_peb_count += 1; add_corrupted()
173 list_add(&aeb->u.list, &ai->corr); add_corrupted()
247 * @ai: attaching information
258 static struct ubi_ainf_volume *add_volume(struct ubi_attach_info *ai, add_volume() argument
263 struct rb_node **p = &ai->volumes.rb_node, *parent = NULL; add_volume()
294 if (vol_id > ai->highest_vol_id) add_volume()
295 ai->highest_vol_id = vol_id; add_volume()
298 rb_insert_color(&av->rb, &ai->volumes); add_volume()
299 ai->vols_found += 1; add_volume()
436 * @ai: attaching information
449 int ubi_add_to_av(struct ubi_device *ubi, struct ubi_attach_info *ai, int pnum, ubi_add_to_av() argument
465 av = add_volume(ai, vol_id, pnum, vid_hdr); ubi_add_to_av()
469 if (ai->max_sqnum < sqnum) ubi_add_to_av()
470 ai->max_sqnum = sqnum; ubi_add_to_av()
536 err = add_to_list(ai, aeb->pnum, aeb->vol_id, ubi_add_to_av()
538 &ai->erase); ubi_add_to_av()
560 return add_to_list(ai, pnum, vol_id, lnum, ec, ubi_add_to_av()
561 cmp_res & 4, &ai->erase); ubi_add_to_av()
574 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); ubi_add_to_av()
599 * @ai: attaching information
605 struct ubi_ainf_volume *ubi_find_av(const struct ubi_attach_info *ai, ubi_find_av() argument
609 struct rb_node *p = ai->volumes.rb_node; ubi_find_av()
628 * @ai: attaching information
631 void ubi_remove_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) ubi_remove_av() argument
641 list_add_tail(&aeb->u.list, &ai->erase); ubi_remove_av()
644 rb_erase(&av->rb, &ai->volumes); ubi_remove_av()
646 ai->vols_found -= 1; ubi_remove_av()
652 * @ai: attaching information
663 const struct ubi_attach_info *ai, int pnum, int ec) early_erase_peb()
698 * @ai: attaching information
710 struct ubi_attach_info *ai) ubi_early_get_peb()
715 if (!list_empty(&ai->free)) { ubi_early_get_peb()
716 aeb = list_entry(ai->free.next, struct ubi_ainf_peb, u.list); ubi_early_get_peb()
728 list_for_each_entry_safe(aeb, tmp_aeb, &ai->erase, u.list) { ubi_early_get_peb()
730 aeb->ec = ai->mean_ec; ubi_early_get_peb()
732 err = early_erase_peb(ubi, ai, aeb->pnum, aeb->ec+1); ubi_early_get_peb()
809 * @ai: attaching information
819 static int scan_peb(struct ubi_device *ubi, struct ubi_attach_info *ai, scan_peb() argument
832 ai->bad_peb_count += 1; scan_peb()
846 ai->empty_peb_count += 1; scan_peb()
847 return add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, scan_peb()
848 UBI_UNKNOWN, 0, &ai->erase); scan_peb()
850 ai->empty_peb_count += 1; scan_peb()
851 return add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, scan_peb()
852 UBI_UNKNOWN, 1, &ai->erase); scan_peb()
936 ai->maybe_bad_peb_count += 1; scan_peb()
963 err = add_to_list(ai, pnum, UBI_UNKNOWN, scan_peb()
964 UBI_UNKNOWN, ec, 1, &ai->erase); scan_peb()
967 err = add_corrupted(ai, pnum, ec); scan_peb()
972 err = add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, scan_peb()
973 ec, 1, &ai->erase); scan_peb()
979 err = add_to_list(ai, pnum, UBI_UNKNOWN, scan_peb()
980 UBI_UNKNOWN, ec, 1, &ai->erase); scan_peb()
982 err = add_to_list(ai, pnum, UBI_UNKNOWN, scan_peb()
983 UBI_UNKNOWN, ec, 0, &ai->free); scan_peb()
1009 err = add_to_list(ai, pnum, vol_id, lnum, scan_peb()
1010 ec, 1, &ai->erase); scan_peb()
1024 err = add_to_list(ai, pnum, vol_id, lnum, scan_peb()
1025 ec, 0, &ai->alien); scan_peb()
1040 err = ubi_add_to_av(ubi, ai, pnum, ec, vidh, bitflips); scan_peb()
1046 ai->ec_sum += ec; scan_peb()
1047 ai->ec_count += 1; scan_peb()
1048 if (ec > ai->max_ec) scan_peb()
1049 ai->max_ec = ec; scan_peb()
1050 if (ec < ai->min_ec) scan_peb()
1051 ai->min_ec = ec; scan_peb()
1060 * @ai: attaching information
1063 * gather information about all of them ("ai" is compete). It decides whether
1068 static int late_analysis(struct ubi_device *ubi, struct ubi_attach_info *ai) late_analysis() argument
1073 peb_count = ubi->peb_count - ai->bad_peb_count - ai->alien_peb_count; late_analysis()
1081 if (ai->corr_peb_count) { late_analysis()
1083 ai->corr_peb_count); late_analysis()
1085 list_for_each_entry(aeb, &ai->corr, u.list) late_analysis()
1093 if (ai->corr_peb_count >= max_corr) { late_analysis()
1099 if (ai->empty_peb_count + ai->maybe_bad_peb_count == peb_count) { late_analysis()
1115 if (ai->maybe_bad_peb_count <= 2) { late_analysis()
1116 ai->is_empty = 1; late_analysis()
1133 * @ai: attaching information
1137 static void destroy_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) destroy_av() argument
1157 kmem_cache_free(ai->aeb_slab_cache, aeb); destroy_av()
1165 * @ai: attaching information
1167 static void destroy_ai(struct ubi_attach_info *ai) destroy_ai() argument
1173 list_for_each_entry_safe(aeb, aeb_tmp, &ai->alien, u.list) { destroy_ai()
1175 kmem_cache_free(ai->aeb_slab_cache, aeb); destroy_ai()
1177 list_for_each_entry_safe(aeb, aeb_tmp, &ai->erase, u.list) { destroy_ai()
1179 kmem_cache_free(ai->aeb_slab_cache, aeb); destroy_ai()
1181 list_for_each_entry_safe(aeb, aeb_tmp, &ai->corr, u.list) { destroy_ai()
1183 kmem_cache_free(ai->aeb_slab_cache, aeb); destroy_ai()
1185 list_for_each_entry_safe(aeb, aeb_tmp, &ai->free, u.list) { destroy_ai()
1187 kmem_cache_free(ai->aeb_slab_cache, aeb); destroy_ai()
1191 rb = ai->volumes.rb_node; destroy_ai()
1208 destroy_av(ai, av); destroy_ai()
1212 if (ai->aeb_slab_cache) destroy_ai()
1213 kmem_cache_destroy(ai->aeb_slab_cache); destroy_ai()
1215 kfree(ai); destroy_ai()
1221 * @ai: attach info object
1228 static int scan_all(struct ubi_device *ubi, struct ubi_attach_info *ai, scan_all() argument
1250 err = scan_peb(ubi, ai, pnum, NULL, NULL); scan_all()
1258 if (ai->ec_count) scan_all()
1259 ai->mean_ec = div_u64(ai->ec_sum, ai->ec_count); scan_all()
1261 err = late_analysis(ubi, ai); scan_all()
1269 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { scan_all()
1272 aeb->ec = ai->mean_ec; scan_all()
1275 list_for_each_entry(aeb, &ai->free, u.list) { scan_all()
1277 aeb->ec = ai->mean_ec; scan_all()
1280 list_for_each_entry(aeb, &ai->corr, u.list) scan_all()
1282 aeb->ec = ai->mean_ec; scan_all()
1284 list_for_each_entry(aeb, &ai->erase, u.list) scan_all()
1286 aeb->ec = ai->mean_ec; scan_all()
1288 err = self_check_ai(ubi, ai); scan_all()
1306 struct ubi_attach_info *ai; alloc_ai() local
1308 ai = kzalloc(sizeof(struct ubi_attach_info), GFP_KERNEL); alloc_ai()
1309 if (!ai) alloc_ai()
1310 return ai; alloc_ai()
1312 INIT_LIST_HEAD(&ai->corr); alloc_ai()
1313 INIT_LIST_HEAD(&ai->free); alloc_ai()
1314 INIT_LIST_HEAD(&ai->erase); alloc_ai()
1315 INIT_LIST_HEAD(&ai->alien); alloc_ai()
1316 ai->volumes = RB_ROOT; alloc_ai()
1317 ai->aeb_slab_cache = kmem_cache_create("ubi_aeb_slab_cache", alloc_ai()
1320 if (!ai->aeb_slab_cache) { alloc_ai()
1321 kfree(ai); alloc_ai()
1322 ai = NULL; alloc_ai()
1325 return ai; alloc_ai()
1333 * @ai: attach info object
1340 static int scan_fast(struct ubi_device *ubi, struct ubi_attach_info **ai) scan_fast() argument
1361 err = scan_peb(ubi, *ai, pnum, &vol_id, &sqnum); scan_fast()
1377 destroy_ai(*ai); scan_fast()
1378 *ai = alloc_ai(); scan_fast()
1379 if (!*ai) scan_fast()
1382 return ubi_scan_fastmap(ubi, *ai, fm_anchor); scan_fast()
1405 struct ubi_attach_info *ai; ubi_attach() local
1407 ai = alloc_ai(); ubi_attach()
1408 if (!ai) ubi_attach()
1419 err = scan_all(ubi, ai, 0); ubi_attach()
1421 err = scan_fast(ubi, &ai); ubi_attach()
1424 destroy_ai(ai); ubi_attach()
1425 ai = alloc_ai(); ubi_attach()
1426 if (!ai) ubi_attach()
1429 err = scan_all(ubi, ai, 0); ubi_attach()
1431 err = scan_all(ubi, ai, UBI_FM_MAX_START); ubi_attach()
1436 err = scan_all(ubi, ai, 0); ubi_attach()
1441 ubi->bad_peb_count = ai->bad_peb_count; ubi_attach()
1443 ubi->corr_peb_count = ai->corr_peb_count; ubi_attach()
1444 ubi->max_ec = ai->max_ec; ubi_attach()
1445 ubi->mean_ec = ai->mean_ec; ubi_attach()
1446 dbg_gen("max. sequence number: %llu", ai->max_sqnum); ubi_attach()
1448 err = ubi_read_volume_table(ubi, ai); ubi_attach()
1452 err = ubi_wl_init(ubi, ai); ubi_attach()
1456 err = ubi_eba_init(ubi, ai); ubi_attach()
1476 err = self_check_eba(ubi, ai, scan_ai); ubi_attach()
1484 destroy_ai(ai); ubi_attach()
1493 destroy_ai(ai); ubi_attach()
1500 * @ai: attaching information
1505 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai) self_check_ai() argument
1519 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { self_check_ai()
1526 if (ai->is_empty) { self_check_ai()
1544 if (av->vol_id > ai->highest_vol_id) { self_check_ai()
1546 ai->highest_vol_id, av->vol_id); self_check_ai()
1573 if (aeb->ec < ai->min_ec) { self_check_ai()
1574 ubi_err(ubi, "bad ai->min_ec (%d), %d found", self_check_ai()
1575 ai->min_ec, aeb->ec); self_check_ai()
1579 if (aeb->ec > ai->max_ec) { self_check_ai()
1580 ubi_err(ubi, "bad ai->max_ec (%d), %d found", self_check_ai()
1581 ai->max_ec, aeb->ec); self_check_ai()
1626 if (vols_found != ai->vols_found) { self_check_ai()
1627 ubi_err(ubi, "bad ai->vols_found %d, should be %d", self_check_ai()
1628 ai->vols_found, vols_found); self_check_ai()
1633 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { self_check_ai()
1721 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) self_check_ai()
1725 list_for_each_entry(aeb, &ai->free, u.list) self_check_ai()
1728 list_for_each_entry(aeb, &ai->corr, u.list) self_check_ai()
1731 list_for_each_entry(aeb, &ai->erase, u.list) self_check_ai()
1734 list_for_each_entry(aeb, &ai->alien, u.list) self_check_ai()
662 early_erase_peb(struct ubi_device *ubi, const struct ubi_attach_info *ai, int pnum, int ec) early_erase_peb() argument
709 ubi_early_get_peb(struct ubi_device *ubi, struct ubi_attach_info *ai) ubi_early_get_peb() argument
H A Dfastmap.c133 * @ai: UBI attach info object
141 static int add_aeb(struct ubi_attach_info *ai, struct list_head *list, add_aeb() argument
146 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); add_aeb()
156 ai->ec_sum += aeb->ec; add_aeb()
157 ai->ec_count++; add_aeb()
159 if (ai->max_ec < aeb->ec) add_aeb()
160 ai->max_ec = aeb->ec; add_aeb()
162 if (ai->min_ec > aeb->ec) add_aeb()
163 ai->min_ec = aeb->ec; add_aeb()
172 * @ai: ubi_attach_info object
182 static struct ubi_ainf_volume *add_vol(struct ubi_attach_info *ai, int vol_id, add_vol() argument
187 struct rb_node **p = &ai->volumes.rb_node, *parent = NULL; add_vol()
216 rb_insert_color(&av->rb, &ai->volumes); add_vol()
225 * @ai: ubi_attach_info object
229 static void assign_aeb_to_av(struct ubi_attach_info *ai, assign_aeb_to_av() argument
234 struct rb_node **p = &ai->volumes.rb_node, *parent = NULL; assign_aeb_to_av()
262 * @ai: attach info object
269 static int update_vol(struct ubi_device *ubi, struct ubi_attach_info *ai, update_vol() argument
296 kmem_cache_free(ai->aeb_slab_cache, new_aeb); update_vol()
307 victim = kmem_cache_alloc(ai->aeb_slab_cache, update_vol()
314 list_add_tail(&victim->u.list, &ai->erase); update_vol()
327 kmem_cache_free(ai->aeb_slab_cache, new_aeb); update_vol()
333 list_add_tail(&new_aeb->u.list, &ai->erase); update_vol()
359 * @ai: attach info object
365 static int process_pool_aeb(struct ubi_device *ubi, struct ubi_attach_info *ai, process_pool_aeb() argument
370 struct rb_node **p = &ai->volumes.rb_node, *parent = NULL; process_pool_aeb()
375 kmem_cache_free(ai->aeb_slab_cache, new_aeb); process_pool_aeb()
399 kmem_cache_free(ai->aeb_slab_cache, new_aeb); process_pool_aeb()
405 return update_vol(ubi, ai, av, new_vh, new_aeb); process_pool_aeb()
413 * @ai: UBI attach info object
416 static void unmap_peb(struct ubi_attach_info *ai, int pnum) unmap_peb() argument
422 for (node = rb_first(&ai->volumes); node; node = rb_next(node)) { unmap_peb()
431 kmem_cache_free(ai->aeb_slab_cache, aeb); unmap_peb()
441 * @ai: attach info object
445 * @free: list of PEBs which are most likely free (and go into @ai->free)
450 static int scan_pool(struct ubi_device *ubi, struct ubi_attach_info *ai, scan_pool() argument
512 unmap_peb(ai, pnum); scan_pool()
515 add_aeb(ai, free, pnum, ec, 1); scan_pool()
517 add_aeb(ai, free, pnum, ec, 0); scan_pool()
525 new_aeb = kmem_cache_alloc(ai->aeb_slab_cache, scan_pool()
542 err = process_pool_aeb(ubi, ai, vh, new_aeb); scan_pool()
564 * @ai: The UBI attach info object
566 static int count_fastmap_pebs(struct ubi_attach_info *ai) count_fastmap_pebs() argument
573 list_for_each_entry(aeb, &ai->erase, u.list) count_fastmap_pebs()
576 list_for_each_entry(aeb, &ai->free, u.list) count_fastmap_pebs()
579 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) count_fastmap_pebs()
589 * @ai: UBI attach info object
596 struct ubi_attach_info *ai, ubi_attach_fastmap()
615 ai->min_ec = UBI_MAX_ERASECOUNTER; ubi_attach_fastmap()
618 ai->max_sqnum = fmsb->sqnum; ubi_attach_fastmap()
690 add_aeb(ai, &ai->free, be32_to_cpu(fmec->pnum), ubi_attach_fastmap()
701 add_aeb(ai, &used, be32_to_cpu(fmec->pnum), ubi_attach_fastmap()
712 add_aeb(ai, &used, be32_to_cpu(fmec->pnum), ubi_attach_fastmap()
723 add_aeb(ai, &ai->erase, be32_to_cpu(fmec->pnum), ubi_attach_fastmap()
727 ai->mean_ec = div_u64(ai->ec_sum, ai->ec_count); ubi_attach_fastmap()
728 ai->bad_peb_count = be32_to_cpu(fmhdr->bad_peb_count); ubi_attach_fastmap()
743 av = add_vol(ai, be32_to_cpu(fmvhdr->vol_id), ubi_attach_fastmap()
752 ai->vols_found++; ubi_attach_fastmap()
753 if (ai->highest_vol_id < be32_to_cpu(fmvhdr->vol_id)) ubi_attach_fastmap()
754 ai->highest_vol_id = be32_to_cpu(fmvhdr->vol_id); ubi_attach_fastmap()
792 assign_aeb_to_av(ai, aeb, av); ubi_attach_fastmap()
799 ret = scan_pool(ubi, ai, fmpl1->pebs, pool_size, &max_sqnum, &free); ubi_attach_fastmap()
803 ret = scan_pool(ubi, ai, fmpl2->pebs, wl_pool_size, &max_sqnum, &free); ubi_attach_fastmap()
807 if (max_sqnum > ai->max_sqnum) ubi_attach_fastmap()
808 ai->max_sqnum = max_sqnum; ubi_attach_fastmap()
811 list_move_tail(&tmp_aeb->u.list, &ai->free); ubi_attach_fastmap()
814 list_move_tail(&tmp_aeb->u.list, &ai->erase); ubi_attach_fastmap()
824 if (WARN_ON(count_fastmap_pebs(ai) != ubi->peb_count - ubi_attach_fastmap()
825 ai->bad_peb_count - fm->used_blocks)) ubi_attach_fastmap()
835 kmem_cache_free(ai->aeb_slab_cache, tmp_aeb); ubi_attach_fastmap()
839 kmem_cache_free(ai->aeb_slab_cache, tmp_aeb); ubi_attach_fastmap()
848 * @ai: UBI attach info to be filled
855 int ubi_scan_fastmap(struct ubi_device *ubi, struct ubi_attach_info *ai, ubi_scan_fastmap() argument
1022 ret = ubi_attach_fastmap(ubi, ai, fm); ubi_scan_fastmap()
595 ubi_attach_fastmap(struct ubi_device *ubi, struct ubi_attach_info *ai, struct ubi_fastmap_layout *fm) ubi_attach_fastmap() argument
H A Dvtbl.c288 * @ai: attaching information
295 static int create_vtbl(struct ubi_device *ubi, struct ubi_attach_info *ai, create_vtbl() argument
309 new_aeb = ubi_early_get_peb(ubi, ai); create_vtbl()
321 vid_hdr->sqnum = cpu_to_be64(++ai->max_sqnum); create_vtbl()
337 err = ubi_add_to_av(ubi, ai, new_aeb->pnum, new_aeb->ec, vid_hdr, 0); create_vtbl()
338 kmem_cache_free(ai->aeb_slab_cache, new_aeb); create_vtbl()
348 list_add(&new_aeb->u.list, &ai->erase); create_vtbl()
351 kmem_cache_free(ai->aeb_slab_cache, new_aeb); create_vtbl()
361 * @ai: attaching information
369 struct ubi_attach_info *ai, process_lvol()
445 err = create_vtbl(ubi, ai, 1, leb[0]); process_lvol()
468 err = create_vtbl(ubi, ai, 0, leb[1]); process_lvol()
486 * @ai: attaching information
492 struct ubi_attach_info *ai) create_empty_lvol()
507 err = create_vtbl(ubi, ai, i, vtbl); create_empty_lvol()
520 * @ai: scanning information
528 const struct ubi_attach_info *ai, init_volumes()
588 av = ubi_find_av(ai, i); init_volumes()
702 * @ai: attaching information
710 struct ubi_attach_info *ai) check_attaching_info()
716 if (ai->vols_found > UBI_INT_VOL_COUNT + ubi->vtbl_slots) { check_attaching_info()
718 ai->vols_found, UBI_INT_VOL_COUNT, ubi->vtbl_slots); check_attaching_info()
722 if (ai->highest_vol_id >= ubi->vtbl_slots + UBI_INT_VOL_COUNT && check_attaching_info()
723 ai->highest_vol_id < UBI_INTERNAL_VOL_START) { check_attaching_info()
725 ai->highest_vol_id); check_attaching_info()
732 av = ubi_find_av(ai, i); check_attaching_info()
736 ubi_remove_av(ai, av); check_attaching_info()
754 ubi_remove_av(ai, av); check_attaching_info()
768 * @ai: attaching information
774 int ubi_read_volume_table(struct ubi_device *ubi, struct ubi_attach_info *ai) ubi_read_volume_table() argument
792 av = ubi_find_av(ai, UBI_LAYOUT_VOLUME_ID); ubi_read_volume_table()
802 if (ai->is_empty) { ubi_read_volume_table()
803 ubi->vtbl = create_empty_lvol(ubi, ai); ubi_read_volume_table()
818 ubi->vtbl = process_lvol(ubi, ai, av); ubi_read_volume_table()
829 err = init_volumes(ubi, ai, ubi->vtbl); ubi_read_volume_table()
837 err = check_attaching_info(ubi, ai); ubi_read_volume_table()
368 process_lvol(struct ubi_device *ubi, struct ubi_attach_info *ai, struct ubi_ainf_volume *av) process_lvol() argument
491 create_empty_lvol(struct ubi_device *ubi, struct ubi_attach_info *ai) create_empty_lvol() argument
527 init_volumes(struct ubi_device *ubi, const struct ubi_attach_info *ai, const struct ubi_vtbl_record *vtbl) init_volumes() argument
709 check_attaching_info(const struct ubi_device *ubi, struct ubi_attach_info *ai) check_attaching_info() argument
H A Dubi.h785 int ubi_add_to_av(struct ubi_device *ubi, struct ubi_attach_info *ai, int pnum,
787 struct ubi_ainf_volume *ubi_find_av(const struct ubi_attach_info *ai,
789 void ubi_remove_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av);
791 struct ubi_attach_info *ai);
793 void ubi_destroy_ai(struct ubi_attach_info *ai);
800 int ubi_read_volume_table(struct ubi_device *ubi, struct ubi_attach_info *ai);
844 int ubi_eba_init(struct ubi_device *ubi, struct ubi_attach_info *ai);
855 int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai);
909 int ubi_scan_fastmap(struct ubi_device *ubi, struct ubi_attach_info *ai,
H A Deba.c1281 struct ubi_attach_info *ai) print_rsvd_warning()
1287 if (ai->max_sqnum > (1 << 18)) { print_rsvd_warning()
1402 * @ai: attaching information
1407 int ubi_eba_init(struct ubi_device *ubi, struct ubi_attach_info *ai) ubi_eba_init() argument
1421 ubi->global_sqnum = ai->max_sqnum + 1; ubi_eba_init()
1441 av = ubi_find_av(ai, idx2vol_id(ubi, i)); ubi_eba_init()
1451 ubi_move_aeb_to_list(av, aeb, &ai->erase); ubi_eba_init()
1475 print_rsvd_warning(ubi, ai); ubi_eba_init()
1280 print_rsvd_warning(struct ubi_device *ubi, struct ubi_attach_info *ai) print_rsvd_warning() argument
H A Dwl.c1486 * @ai: attaching information
1491 int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai) ubi_wl_init() argument
1503 ubi->max_ec = ai->max_ec; ubi_wl_init()
1517 list_for_each_entry_safe(aeb, tmp, &ai->erase, u.list) { ubi_wl_init()
1536 list_for_each_entry(aeb, &ai->free, u.list) { ubi_wl_init()
1555 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { ubi_wl_init()
/linux-4.1.27/drivers/media/dvb-core/
H A Ddvb_filter.c290 static int get_ainfo(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr)
313 ai->layer = (headr[1] & 0x06) >> 1;
316 printk("Audiostream: Layer: %d", 4-ai->layer);
319 ai->bit_rate = bitrates[(3-ai->layer)][(headr[2] >> 4 )]*1000;
322 if (ai->bit_rate == 0)
324 else if (ai->bit_rate == 0xf)
327 printk(" BRate: %d kb/s", ai->bit_rate/1000);
331 ai->frequency = freq[fr]*100;
333 if (ai->frequency == 3)
336 printk(" Freq: %d kHz\n",ai->frequency);
339 ai->off = c;
345 int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr) dvb_filter_get_ac3info() argument
367 ai->off = c; dvb_filter_get_ac3info()
370 ai->layer = 0; // 0 for AC3 dvb_filter_get_ac3info()
374 ai->bit_rate = ac3_bitrates[frame >> 1]*1000; dvb_filter_get_ac3info()
377 printk(" BRate: %d kb/s", (int) ai->bit_rate/1000); dvb_filter_get_ac3info()
379 ai->frequency = (headr[2] & 0xc0 ) >> 6; dvb_filter_get_ac3info()
381 ai->frequency = freq[fr]*100; dvb_filter_get_ac3info()
382 if (pr) printk (" Freq: %d Hz\n", (int) ai->frequency); dvb_filter_get_ac3info()
385 ai->framesize = ac3_frames[fr][frame >> 1]; dvb_filter_get_ac3info()
386 if ((frame & 1) && (fr == 1)) ai->framesize++; dvb_filter_get_ac3info()
387 ai->framesize = ai->framesize << 1; dvb_filter_get_ac3info()
388 if (pr) printk (" Framesize %d\n",(int) ai->framesize); dvb_filter_get_ac3info()
H A Ddvb_filter.h243 int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr);
/linux-4.1.27/mm/
H A Dpercpu.c824 static int __init pcpu_verify_alloc_info(const struct pcpu_alloc_info *ai);
1365 * Allocate ai which is large enough for @nr_groups groups containing
1366 * @nr_units units. The returned ai's groups[0].cpu_map points to the
1378 struct pcpu_alloc_info *ai; pcpu_alloc_alloc_info() local
1383 base_size = ALIGN(sizeof(*ai) + nr_groups * sizeof(ai->groups[0]), pcpu_alloc_alloc_info()
1384 __alignof__(ai->groups[0].cpu_map[0])); pcpu_alloc_alloc_info()
1385 ai_size = base_size + nr_units * sizeof(ai->groups[0].cpu_map[0]); pcpu_alloc_alloc_info()
1390 ai = ptr; pcpu_alloc_alloc_info()
1393 ai->groups[0].cpu_map = ptr; pcpu_alloc_alloc_info()
1396 ai->groups[0].cpu_map[unit] = NR_CPUS; pcpu_alloc_alloc_info()
1398 ai->nr_groups = nr_groups; pcpu_alloc_alloc_info()
1399 ai->__ai_size = PFN_ALIGN(ai_size); pcpu_alloc_alloc_info()
1401 return ai; pcpu_alloc_alloc_info()
1406 * @ai: pcpu_alloc_info to free
1408 * Free @ai which was allocated by pcpu_alloc_alloc_info().
1410 void __init pcpu_free_alloc_info(struct pcpu_alloc_info *ai) pcpu_free_alloc_info() argument
1412 memblock_free_early(__pa(ai), ai->__ai_size); pcpu_free_alloc_info()
1418 * @ai: allocation info to dump
1420 * Print out information about @ai using loglevel @lvl.
1423 const struct pcpu_alloc_info *ai) pcpu_dump_alloc_info()
1431 v = ai->nr_groups; pcpu_dump_alloc_info()
1440 upa = ai->alloc_size / ai->unit_size; pcpu_dump_alloc_info()
1445 lvl, ai->static_size, ai->reserved_size, ai->dyn_size, pcpu_dump_alloc_info()
1446 ai->unit_size, ai->alloc_size / ai->atom_size, ai->atom_size); pcpu_dump_alloc_info()
1448 for (group = 0; group < ai->nr_groups; group++) { pcpu_dump_alloc_info()
1449 const struct pcpu_group_info *gi = &ai->groups[group]; pcpu_dump_alloc_info()
1474 * @ai: pcpu_alloc_info describing how to percpu area is shaped
1481 * @ai contains all information necessary to initialize the first
1484 * @ai->static_size is the size of static percpu area.
1486 * @ai->reserved_size, if non-zero, specifies the amount of bytes to
1494 * @ai->dyn_size determines the number of bytes available for dynamic
1495 * allocation in the first chunk. The area between @ai->static_size +
1496 * @ai->reserved_size + @ai->dyn_size and @ai->unit_size is unused.
1498 * @ai->unit_size specifies unit size and must be aligned to PAGE_SIZE
1499 * and equal to or larger than @ai->static_size + @ai->reserved_size +
1500 * @ai->dyn_size.
1502 * @ai->atom_size is the allocation atom size and used as alignment
1505 * @ai->alloc_size is the allocation size and always multiple of
1506 * @ai->atom_size. This is larger than @ai->atom_size if
1507 * @ai->unit_size is larger than @ai->atom_size.
1509 * @ai->nr_groups and @ai->groups describe virtual memory layout of
1512 * groupings. If @ai->nr_groups is zero, a single group containing
1528 int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_setup_first_chunk() argument
1533 size_t dyn_size = ai->dyn_size; pcpu_setup_first_chunk()
1534 size_t size_sum = ai->static_size + ai->reserved_size + dyn_size; pcpu_setup_first_chunk()
1548 pcpu_dump_alloc_info(KERN_EMERG, ai); \ pcpu_setup_first_chunk()
1554 PCPU_SETUP_BUG_ON(ai->nr_groups <= 0); pcpu_setup_first_chunk()
1556 PCPU_SETUP_BUG_ON(!ai->static_size); pcpu_setup_first_chunk()
1561 PCPU_SETUP_BUG_ON(ai->unit_size < size_sum); pcpu_setup_first_chunk()
1562 PCPU_SETUP_BUG_ON(ai->unit_size & ~PAGE_MASK); pcpu_setup_first_chunk()
1563 PCPU_SETUP_BUG_ON(ai->unit_size < PCPU_MIN_UNIT_SIZE); pcpu_setup_first_chunk()
1564 PCPU_SETUP_BUG_ON(ai->dyn_size < PERCPU_DYNAMIC_EARLY_SIZE); pcpu_setup_first_chunk()
1565 PCPU_SETUP_BUG_ON(pcpu_verify_alloc_info(ai) < 0); pcpu_setup_first_chunk()
1568 group_offsets = memblock_virt_alloc(ai->nr_groups * pcpu_setup_first_chunk()
1570 group_sizes = memblock_virt_alloc(ai->nr_groups * pcpu_setup_first_chunk()
1581 for (group = 0, unit = 0; group < ai->nr_groups; group++, unit += i) { pcpu_setup_first_chunk()
1582 const struct pcpu_group_info *gi = &ai->groups[group]; pcpu_setup_first_chunk()
1585 group_sizes[group] = gi->nr_units * ai->unit_size; pcpu_setup_first_chunk()
1597 unit_off[cpu] = gi->base_offset + i * ai->unit_size; pcpu_setup_first_chunk()
1615 pcpu_dump_alloc_info(KERN_DEBUG, ai); pcpu_setup_first_chunk()
1617 pcpu_nr_groups = ai->nr_groups; pcpu_setup_first_chunk()
1624 pcpu_unit_pages = ai->unit_size >> PAGE_SHIFT; pcpu_setup_first_chunk()
1626 pcpu_atom_size = ai->atom_size; pcpu_setup_first_chunk()
1657 if (ai->reserved_size) { pcpu_setup_first_chunk()
1658 schunk->free_size = ai->reserved_size; pcpu_setup_first_chunk()
1660 pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; pcpu_setup_first_chunk()
1668 schunk->map[1] = ai->static_size; pcpu_setup_first_chunk()
1671 schunk->map[++schunk->map_used] = 1 | (ai->static_size + schunk->free_size); pcpu_setup_first_chunk()
1788 struct pcpu_alloc_info *ai; pcpu_build_alloc_info() local
1871 ai = pcpu_alloc_alloc_info(nr_groups, nr_units);
1872 if (!ai)
1874 cpu_map = ai->groups[0].cpu_map;
1877 ai->groups[group].cpu_map = cpu_map;
1881 ai->static_size = static_size;
1882 ai->reserved_size = reserved_size;
1883 ai->dyn_size = dyn_size;
1884 ai->unit_size = alloc_size / upa;
1885 ai->atom_size = atom_size;
1886 ai->alloc_size = alloc_size;
1889 struct pcpu_group_info *gi = &ai->groups[group];
1896 gi->base_offset = unit * ai->unit_size;
1906 return ai;
1951 struct pcpu_alloc_info *ai; pcpu_embed_first_chunk() local
1955 ai = pcpu_build_alloc_info(reserved_size, dyn_size, atom_size, pcpu_embed_first_chunk()
1957 if (IS_ERR(ai)) pcpu_embed_first_chunk()
1958 return PTR_ERR(ai); pcpu_embed_first_chunk()
1960 size_sum = ai->static_size + ai->reserved_size + ai->dyn_size; pcpu_embed_first_chunk()
1961 areas_size = PFN_ALIGN(ai->nr_groups * sizeof(void *)); pcpu_embed_first_chunk()
1970 for (group = 0; group < ai->nr_groups; group++) { pcpu_embed_first_chunk()
1971 struct pcpu_group_info *gi = &ai->groups[group]; pcpu_embed_first_chunk()
1980 ptr = alloc_fn(cpu, gi->nr_units * ai->unit_size, atom_size); pcpu_embed_first_chunk()
1997 for (group = 0; group < ai->nr_groups; group++) { pcpu_embed_first_chunk()
1998 struct pcpu_group_info *gi = &ai->groups[group]; pcpu_embed_first_chunk()
2001 for (i = 0; i < gi->nr_units; i++, ptr += ai->unit_size) { pcpu_embed_first_chunk()
2004 free_fn(ptr, ai->unit_size); pcpu_embed_first_chunk()
2008 memcpy(ptr, __per_cpu_load, ai->static_size); pcpu_embed_first_chunk()
2009 free_fn(ptr + size_sum, ai->unit_size - size_sum); pcpu_embed_first_chunk()
2015 for (group = 0; group < ai->nr_groups; group++) { pcpu_embed_first_chunk()
2016 ai->groups[group].base_offset = areas[group] - base; pcpu_embed_first_chunk()
2018 ai->groups[group].base_offset); pcpu_embed_first_chunk()
2020 max_distance += ai->unit_size; pcpu_embed_first_chunk()
2035 PFN_DOWN(size_sum), base, ai->static_size, ai->reserved_size, pcpu_embed_first_chunk()
2036 ai->dyn_size, ai->unit_size); pcpu_embed_first_chunk()
2038 rc = pcpu_setup_first_chunk(ai, base); pcpu_embed_first_chunk()
2042 for (group = 0; group < ai->nr_groups; group++) pcpu_embed_first_chunk()
2045 ai->groups[group].nr_units * ai->unit_size); pcpu_embed_first_chunk()
2047 pcpu_free_alloc_info(ai); pcpu_embed_first_chunk()
2077 struct pcpu_alloc_info *ai; pcpu_page_first_chunk() local
2086 ai = pcpu_build_alloc_info(reserved_size, 0, PAGE_SIZE, NULL); pcpu_page_first_chunk()
2087 if (IS_ERR(ai)) pcpu_page_first_chunk()
2088 return PTR_ERR(ai); pcpu_page_first_chunk()
2089 BUG_ON(ai->nr_groups != 1); pcpu_page_first_chunk()
2090 BUG_ON(ai->groups[0].nr_units != num_possible_cpus()); pcpu_page_first_chunk()
2092 unit_pages = ai->unit_size >> PAGE_SHIFT; pcpu_page_first_chunk()
2103 unsigned int cpu = ai->groups[0].cpu_map[unit]; pcpu_page_first_chunk()
2119 vm.size = num_possible_cpus() * ai->unit_size; pcpu_page_first_chunk()
2124 (unsigned long)vm.addr + unit * ai->unit_size; pcpu_page_first_chunk()
2144 memcpy((void *)unit_addr, __per_cpu_load, ai->static_size); pcpu_page_first_chunk()
2149 unit_pages, psize_str, vm.addr, ai->static_size, pcpu_page_first_chunk()
2150 ai->reserved_size, ai->dyn_size); pcpu_page_first_chunk()
2152 rc = pcpu_setup_first_chunk(ai, vm.addr); pcpu_page_first_chunk()
2161 pcpu_free_alloc_info(ai); pcpu_page_first_chunk()
2230 struct pcpu_alloc_info *ai; setup_per_cpu_areas() local
2233 ai = pcpu_alloc_alloc_info(1, 1); setup_per_cpu_areas()
2237 if (!ai || !fc) setup_per_cpu_areas()
2242 ai->dyn_size = unit_size; setup_per_cpu_areas()
2243 ai->unit_size = unit_size; setup_per_cpu_areas()
2244 ai->atom_size = unit_size; setup_per_cpu_areas()
2245 ai->alloc_size = unit_size; setup_per_cpu_areas()
2246 ai->groups[0].nr_units = 1; setup_per_cpu_areas()
2247 ai->groups[0].cpu_map[0] = 0; setup_per_cpu_areas()
2249 if (pcpu_setup_first_chunk(ai, fc) < 0) setup_per_cpu_areas()
1422 pcpu_dump_alloc_info(const char *lvl, const struct pcpu_alloc_info *ai) pcpu_dump_alloc_info() argument
H A Dpercpu-km.c92 static int __init pcpu_verify_alloc_info(const struct pcpu_alloc_info *ai) pcpu_verify_alloc_info() argument
97 if (ai->nr_groups != 1) { pcpu_verify_alloc_info()
102 nr_pages = (ai->groups[0].nr_units * ai->unit_size) >> PAGE_SHIFT; pcpu_verify_alloc_info()
H A Dpercpu-vm.c362 static int __init pcpu_verify_alloc_info(const struct pcpu_alloc_info *ai) pcpu_verify_alloc_info() argument
/linux-4.1.27/include/uapi/linux/
H A Dudf_fs_i.h9 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dkvm.h477 #define KVM_S390_INT_IO(ai,cssid,ssid,schid) \
481 ((ai) << 26))
/linux-4.1.27/net/ceph/
H A Dauth_none.c69 struct ceph_auth_none_info *ai = ac->private; ceph_auth_none_create_authorizer() local
70 struct ceph_none_authorizer *au = &ai->au; ceph_auth_none_create_authorizer()
74 if (!ai->built_authorizer) { ceph_auth_none_create_authorizer()
84 ai->built_authorizer = true; ceph_auth_none_create_authorizer()
/linux-4.1.27/arch/ia64/mm/
H A Dcontig.c150 struct pcpu_alloc_info *ai; setup_per_cpu_areas() local
156 ai = pcpu_alloc_alloc_info(1, num_possible_cpus()); setup_per_cpu_areas()
157 if (!ai) setup_per_cpu_areas()
159 gi = &ai->groups[0]; setup_per_cpu_areas()
173 ai->static_size = static_size; setup_per_cpu_areas()
174 ai->reserved_size = reserved_size; setup_per_cpu_areas()
175 ai->dyn_size = dyn_size; setup_per_cpu_areas()
176 ai->unit_size = PERCPU_PAGE_SIZE; setup_per_cpu_areas()
177 ai->atom_size = PAGE_SIZE; setup_per_cpu_areas()
178 ai->alloc_size = PERCPU_PAGE_SIZE; setup_per_cpu_areas()
180 rc = pcpu_setup_first_chunk(ai, __per_cpu_start + __per_cpu_offset[0]); setup_per_cpu_areas()
184 pcpu_free_alloc_info(ai); setup_per_cpu_areas()
H A Ddiscontig.c186 struct pcpu_alloc_info *ai; setup_per_cpu_areas() local
195 ai = pcpu_alloc_alloc_info(MAX_NUMNODES, nr_cpu_ids); setup_per_cpu_areas()
196 if (!ai) setup_per_cpu_areas()
198 cpu_map = ai->groups[0].cpu_map; setup_per_cpu_areas()
223 ai->static_size = static_size; setup_per_cpu_areas()
224 ai->reserved_size = reserved_size; setup_per_cpu_areas()
225 ai->dyn_size = dyn_size; setup_per_cpu_areas()
226 ai->unit_size = PERCPU_PAGE_SIZE; setup_per_cpu_areas()
227 ai->atom_size = PAGE_SIZE; setup_per_cpu_areas()
228 ai->alloc_size = PERCPU_PAGE_SIZE; setup_per_cpu_areas()
235 ai->nr_groups = 0; setup_per_cpu_areas()
246 gi = &ai->groups[ai->nr_groups++]; setup_per_cpu_areas()
252 rc = pcpu_setup_first_chunk(ai, base); setup_per_cpu_areas()
256 pcpu_free_alloc_info(ai); setup_per_cpu_areas()
/linux-4.1.27/arch/powerpc/platforms/cell/spufs/
H A Dspu_save_crt0.S60 ai $4, $4, 4
69 ai $3, $3, 64
85 ai $SP, $SP, -160
H A Dspu_restore_crt0.S51 ai $SP, $SP, -160
65 ai $4, $4, 4
74 ai $3, $3, 64
/linux-4.1.27/tools/usb/usbip/src/
H A Dusbipd.c346 static void addrinfo_to_text(struct addrinfo *ai, char buf[], addrinfo_to_text() argument
355 rc = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), addrinfo_to_text()
366 struct addrinfo *ai; listen_all_addrinfo() local
371 for (ai = ai_head; ai && nsockfd < maxsockfd; ai = ai->ai_next) { listen_all_addrinfo()
374 addrinfo_to_text(ai, ai_buf, ai_buf_size); listen_all_addrinfo()
376 sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); listen_all_addrinfo()
396 ret = bind(sock, ai->ai_addr, ai->ai_addrlen); listen_all_addrinfo()
/linux-4.1.27/drivers/media/pci/ttpci/
H A Dav7110_ipack.c47 struct dvb_audio_info ai; send_ipack() local
64 ai.off = 0; send_ipack()
69 p->count - ac3_off, &ai, 0); send_ipack()
72 ai.framesize + 1; send_ipack()
76 ac3_off += nframes * ai.framesize - p->count; send_ipack()
/linux-4.1.27/drivers/staging/comedi/drivers/
H A Dni_mio_cs.c52 .name = "DAQCard-ai-16xe-50",
61 .name = "DAQCard-ai-16e-4",
208 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010d), /* DAQCard-ai-16xe-50 */
209 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010c), /* DAQCard-ai-16e-4 */
H A Ddas08.h22 /* different ways ai data is encoded in first two registers */
H A Dni_labpc.c21 * Lab-PC-1200AI (lab-pc-1200ai), Lab-PC+ (lab-pc+)
74 .name = "lab-pc-1200ai",
H A Dni_labpc.h32 unsigned ai_scan_up:1; /* can auto scan up in ai channels */
H A Ddas08.c41 requires hard-wiring for async ai
261 dev_err(dev->class_dev, "bug! unknown ai encoding\n"); das08_ai_rinsn()
379 /* ai */ das08_common_attach()
H A Dicp_multi.c395 "Incorrect differential ai ch-nr\n");
401 "Incorrect ai channel number\n");
H A Dcb_pcidas64.c71 make it return error if user attempts an ai command that uses the
80 make ao fifo size adjustable like ai fifo
626 int ai_se_chans; /* number of ai inputs in single-ended mode */
1132 /* physical addresses of ai dma buffers */
1134 /* array of ai dma descriptors read by plx9080,
1137 /* physical address of ai dma descriptor array */
1139 /* index of the ai dma descriptor/buffer
1164 /* index of calibration source readable through ai ch0 */
2288 dev_err(dev->class_dev, "bug! failed to set ai pacing!\n"); ai_convert_counter_4020()
2656 /* read num_samples from 16 bit wide ai fifo */ pio_drain_ai_fifo_16()
2709 /* Read from 32 bit wide ai fifo of 4020 - deal with insane grey coding of
H A Dmultiq3.c225 /* ai subdevice */ multiq3_attach()
H A Dni_atmio.c212 .name = "at-ai-16xe-10",
H A Dni_daq_700.c246 /* DAQCard-700 ai */ daq700_auto_attach()
H A Drti800.c288 /* ai subdevice */ rti800_attach()
H A Ddt2801.c574 /* ai subdevice */ dt2801_attach()
H A Ddas16m1.c571 /* ai */ das16m1_attach()
H A Ddmm32at.c365 /* enable the ai conversion interrupt and the clock to start scans */ dmm32at_setaitimer()
H A Ddt3000.c674 /* ai subdevice */ dt3000_auto_attach()
H A Ddt282x.c1094 5 ai 0=straight binary, 1=2's comp
1097 8 ai 0=±10 V, 1=0-10 V, 2=±5 V, 3=0-5 V
H A Dni_labpc_common.c765 /* read all available samples from ai fifo */ labpc_drain_fifo()
790 dev_err(dev->class_dev, "ai timeout, fifo never empties\n"); labpc_drain_fifo()
H A Dusbduxfast.c298 "non-zero urb status received in ai intr context: %d\n", usbduxfast_ai_interrupt()
452 dev_err(dev->class_dev, "ai is already running\n"); usbduxfast_ai_inttrig()
H A Ddaqboard2000.c694 /* ai subdevice */ daqboard2000_auto_attach()
H A Dni_atmio16d.c644 /* ai subdevice */ atmio16d_attach()
H A Dusbdux.c45 * sanity checks in ai/ao_cmd
336 "Non-zero urb status received in ai intr context: %d\n", usbduxsub_ai_isoc_irq()
H A Dni_mio_common.c737 under the assumption the cdio dma selection works just like ai/ao/gpct. ni_set_cdo_dma_channel()
1466 /* 67xx boards don't have ai subdevice, but their gpct0 might generate an a interrupt */ handle_a_interrupt()
1500 dev_err(dev->class_dev, "ai error a_status=%04x\n", handle_a_interrupt()
1723 /* ai configuration */ ni_ai_reset()
2446 start_stop_select |= AI_STOP_Select(19); /* ai configuration memory */ ni_ai_cmd()
H A Daddi_apci_3120.c419 /* a dummy read of APCI3120_TIMER_MODE_REG resets the ai FIFO */ apci3120_set_chanlist()
H A Ddas16.c977 /* initialize ai range */ das16_ai_range()
H A Ddas1800.c208 int resolution; /* bits of ai resolution */
H A Dcb_pcidas.c74 #define AI_BUFFER_SIZE 1024 /* max ai fifo size */
H A Ds626.c1354 /* check if interrupt is an ai acquisition start trigger */ s626_handle_dio_interrupt()
/linux-4.1.27/arch/s390/kernel/
H A Dcache.c102 static inline unsigned long ecag(int ai, int li, int ti) ecag() argument
106 cmd = ai << 4 | li << 1 | ti; ecag()
/linux-4.1.27/fs/udf/
H A Dlowlevel.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dialloc.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dsymlink.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Ddir.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Ddirectory.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dfile.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dmisc.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dpartition.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dtruncate.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dunicode.c17 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dballoc.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dnamei.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dinode.c10 * ftp://prep.ai.mit.edu/pub/gnu/GPL
H A Dsuper.c20 * ftp://prep.ai.mit.edu/pub/gnu/GPL
/linux-4.1.27/net/netfilter/
H A Dxt_TCPMSS.c51 const struct nf_afinfo *ai; tcpmss_reverse_mtu() local
66 ai = nf_get_afinfo(family); tcpmss_reverse_mtu()
67 if (ai != NULL) tcpmss_reverse_mtu()
68 ai->route(net, (struct dst_entry **)&rt, &fl, false); tcpmss_reverse_mtu()
/linux-4.1.27/arch/arm/mach-omap2/
H A Ddpll3xxx.c137 u8 ai; _omap3_noncore_dpll_lock() local
150 ai = omap3_dpll_autoidle_read(clk); _omap3_noncore_dpll_lock()
152 if (ai) _omap3_noncore_dpll_lock()
159 if (ai) _omap3_noncore_dpll_lock()
182 u8 ai; _omap3_noncore_dpll_bypass() local
190 ai = omap3_dpll_autoidle_read(clk); _omap3_noncore_dpll_bypass()
196 if (ai) _omap3_noncore_dpll_bypass()
213 u8 ai; _omap3_noncore_dpll_stop() local
220 ai = omap3_dpll_autoidle_read(clk); _omap3_noncore_dpll_stop()
224 if (ai) _omap3_noncore_dpll_stop()
/linux-4.1.27/include/linux/
H A Dpercpu.h98 extern void __init pcpu_free_alloc_info(struct pcpu_alloc_info *ai);
100 extern int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai,
/linux-4.1.27/arch/s390/pci/
H A Dpci.c354 unsigned long si, ai; zpci_irq_handler() local
374 for (ai = 0;;) { zpci_irq_handler()
375 ai = airq_iv_scan(aibv, ai, airq_iv_end(aibv)); zpci_irq_handler()
376 if (ai == -1UL) zpci_irq_handler()
379 airq_iv_lock(aibv, ai); zpci_irq_handler()
380 generic_handle_irq(airq_iv_get_data(aibv, ai)); zpci_irq_handler()
381 airq_iv_unlock(aibv, ai); zpci_irq_handler()
/linux-4.1.27/drivers/s390/kvm/
H A Dvirtio_ccw.c187 unsigned long ai; virtio_airq_handler() local
192 for (ai = 0;;) { virtio_airq_handler()
193 ai = airq_iv_scan(info->aiv, ai, airq_iv_end(info->aiv)); virtio_airq_handler()
194 if (ai == -1UL) virtio_airq_handler()
196 vring_interrupt(0, (void *)airq_iv_get_ptr(info->aiv, ai)); virtio_airq_handler()
201 for (ai = 0;;) { virtio_airq_handler()
202 ai = airq_iv_scan(info->aiv, ai, airq_iv_end(info->aiv)); virtio_airq_handler()
203 if (ai == -1UL) virtio_airq_handler()
205 vring_interrupt(0, (void *)airq_iv_get_ptr(info->aiv, ai)); virtio_airq_handler()
/linux-4.1.27/drivers/cdrom/
H A Dcdrom.c1640 static int dvd_do_auth(struct cdrom_device_info *cdi, dvd_authinfo *ai) dvd_do_auth() argument
1651 switch (ai->type) { dvd_do_auth()
1656 setup_report_key(&cgc, ai->lsa.agid, 0); dvd_do_auth()
1661 ai->lsa.agid = buf[7] >> 6; dvd_do_auth()
1667 setup_report_key(&cgc, ai->lsk.agid, 2); dvd_do_auth()
1672 copy_key(ai->lsk.key, &buf[4]); dvd_do_auth()
1678 setup_report_key(&cgc, ai->lsc.agid, 1); dvd_do_auth()
1683 copy_chal(ai->lsc.chal, &buf[4]); dvd_do_auth()
1691 setup_report_key(&cgc, ai->lstk.agid, 4); dvd_do_auth()
1692 cgc.cmd[5] = ai->lstk.lba; dvd_do_auth()
1693 cgc.cmd[4] = ai->lstk.lba >> 8; dvd_do_auth()
1694 cgc.cmd[3] = ai->lstk.lba >> 16; dvd_do_auth()
1695 cgc.cmd[2] = ai->lstk.lba >> 24; dvd_do_auth()
1700 ai->lstk.cpm = (buf[4] >> 7) & 1; dvd_do_auth()
1701 ai->lstk.cp_sec = (buf[4] >> 6) & 1; dvd_do_auth()
1702 ai->lstk.cgms = (buf[4] >> 4) & 3; dvd_do_auth()
1703 copy_key(ai->lstk.title_key, &buf[5]); dvd_do_auth()
1709 setup_report_key(&cgc, ai->lsasf.agid, 5); dvd_do_auth()
1714 ai->lsasf.asf = buf[7] & 1; dvd_do_auth()
1720 setup_send_key(&cgc, ai->hsc.agid, 1); dvd_do_auth()
1722 copy_chal(&buf[4], ai->hsc.chal); dvd_do_auth()
1727 ai->type = DVD_LU_SEND_KEY1; dvd_do_auth()
1732 setup_send_key(&cgc, ai->hsk.agid, 3); dvd_do_auth()
1734 copy_key(&buf[4], ai->hsk.key); dvd_do_auth()
1737 ai->type = DVD_AUTH_FAILURE; dvd_do_auth()
1740 ai->type = DVD_AUTH_ESTABLISHED; dvd_do_auth()
1747 setup_report_key(&cgc, ai->lsa.agid, 0x3f); dvd_do_auth()
1762 ai->lrpcs.type = rpc_state.type_code; dvd_do_auth()
1763 ai->lrpcs.vra = rpc_state.vra; dvd_do_auth()
1764 ai->lrpcs.ucca = rpc_state.ucca; dvd_do_auth()
1765 ai->lrpcs.region_mask = rpc_state.region_mask; dvd_do_auth()
1766 ai->lrpcs.rpc_scheme = rpc_state.rpc_scheme; dvd_do_auth()
1774 buf[4] = ai->hrpcs.pdrc; dvd_do_auth()
1781 cd_dbg(CD_WARNING, "Invalid DVD key ioctl (%d)\n", ai->type); dvd_do_auth()
3213 dvd_authinfo ai; mmc_ioctl_dvd_auth() local
3217 if (copy_from_user(&ai, (dvd_authinfo __user *)arg, sizeof(ai))) mmc_ioctl_dvd_auth()
3219 ret = dvd_do_auth(cdi, &ai); mmc_ioctl_dvd_auth()
3222 if (copy_to_user((dvd_authinfo __user *)arg, &ai, sizeof(ai))) mmc_ioctl_dvd_auth()
/linux-4.1.27/arch/mips/bcm47xx/
H A Dprom.c105 * for sb (ssb) and ai (bcma) bus.
/linux-4.1.27/drivers/isdn/hisax/
H A Dl3dss1.c1048 EncodeSyncParams(u_char si2, u_char ai) EncodeSyncParams() argument
1053 return ai + 2; // 1200 bit/s EncodeSyncParams()
1056 return ai + 24; // 1200/75 bit/s EncodeSyncParams()
1059 return ai + 23; // 75/1200 bit/s EncodeSyncParams()
1062 return ai + 3; // 2400 bit/s EncodeSyncParams()
1065 return ai + 5; // 4800 bit/s EncodeSyncParams()
1068 return ai + 8; // 9600 bit/s EncodeSyncParams()
1071 return ai + 9; // 14400 bit/s EncodeSyncParams()
1074 return ai + 11; // 19200 bit/s EncodeSyncParams()
1077 return ai + 14; // 48000 bit/s EncodeSyncParams()
1080 return ai + 15; // 56000 bit/s EncodeSyncParams()
1083 return ai + 40; // negotiate bit/s EncodeSyncParams()
1088 return ai; EncodeSyncParams()
1154 case 40: // bit/s negotiation failed ai := 165 not 175! DecodeSyncParams()
1157 case 15: // 56000 bit/s failed, ai := 0 not 169 ! DecodeSyncParams()
H A Dl3ni1.c998 EncodeSyncParams(u_char si2, u_char ai) EncodeSyncParams() argument
1003 return ai + 2; // 1200 bit/s EncodeSyncParams()
1006 return ai + 24; // 1200/75 bit/s EncodeSyncParams()
1009 return ai + 23; // 75/1200 bit/s EncodeSyncParams()
1012 return ai + 3; // 2400 bit/s EncodeSyncParams()
1015 return ai + 5; // 4800 bit/s EncodeSyncParams()
1018 return ai + 8; // 9600 bit/s EncodeSyncParams()
1021 return ai + 9; // 14400 bit/s EncodeSyncParams()
1024 return ai + 11; // 19200 bit/s EncodeSyncParams()
1027 return ai + 14; // 48000 bit/s EncodeSyncParams()
1030 return ai + 15; // 56000 bit/s EncodeSyncParams()
1033 return ai + 40; // negotiate bit/s EncodeSyncParams()
1038 return ai; EncodeSyncParams()
1104 case 40: // bit/s negotiation failed ai := 165 not 175! DecodeSyncParams()
1107 case 15: // 56000 bit/s failed, ai := 0 not 169 ! DecodeSyncParams()
/linux-4.1.27/drivers/net/ethernet/marvell/
H A Dmvpp2.c1135 /* Update ai bits in tcam sw entry */ mvpp2_prs_tcam_ai_update()
1155 /* Get ai bits from tcam sw entry */ mvpp2_prs_tcam_ai_get()
1210 /* Update ai bits in sram sw entry */ mvpp2_prs_sram_ai_update()
1231 /* Read ai bits from sram sw entry */ mvpp2_prs_sram_ai_get()
1548 /* Clear all ai bits for next iteration */ mvpp2_prs_dsa_tag_set()
1618 /* Clear all ai bits for next iteration */ mvpp2_prs_dsa_tag_ethertype_set()
1641 unsigned short tpid, int ai) mvpp2_prs_vlan_find()
1672 /* Get current ai value from tcam */ mvpp2_prs_vlan_find()
1677 if (ai != ai_bits) mvpp2_prs_vlan_find()
1690 static int mvpp2_prs_vlan_add(struct mvpp2 *priv, unsigned short tpid, int ai, mvpp2_prs_vlan_add() argument
1697 pe = mvpp2_prs_vlan_find(priv, tpid, ai); mvpp2_prs_vlan_add()
1742 /* Clear all ai bits for next iteration */ mvpp2_prs_vlan_add()
1745 if (ai == MVPP2_PRS_SINGLE_VLAN_AI) { mvpp2_prs_vlan_add()
1749 ai |= MVPP2_PRS_DBL_VLAN_AI_BIT; mvpp2_prs_vlan_add()
1753 mvpp2_prs_tcam_ai_update(pe, ai, MVPP2_PRS_SRAM_AI_MASK); mvpp2_prs_vlan_add()
1768 /* Get first free double vlan ai number */ mvpp2_prs_double_vlan_ai_free_get()
1828 int tid_aux, tid, ai, ret = 0; mvpp2_prs_double_vlan_add() local
1843 /* Set ai value for new double vlan entry */ mvpp2_prs_double_vlan_add()
1844 ai = mvpp2_prs_double_vlan_ai_free_get(priv); mvpp2_prs_double_vlan_add()
1845 if (ai < 0) { mvpp2_prs_double_vlan_add()
1846 ret = ai; mvpp2_prs_double_vlan_add()
1877 priv->prs_double_vlans[ai] = true; mvpp2_prs_double_vlan_add()
1888 mvpp2_prs_sram_ai_update(pe, ai | MVPP2_PRS_DBL_VLAN_AI_BIT, mvpp2_prs_double_vlan_add()
2248 /* Clear all sram ai bits for next iteration */ mvpp2_prs_dsa_init()
2526 /* Clear ai for next iterations */ mvpp2_prs_vlan_init()
1640 mvpp2_prs_vlan_find(struct mvpp2 *priv, unsigned short tpid, int ai) mvpp2_prs_vlan_find() argument
/linux-4.1.27/drivers/staging/ozwpan/
H A Dozpd.c870 const struct oz_app_if *ai = &g_app_if[OZ_APPID_USB]; oz_pd_indicate_farewells() local
882 if (ai->farewell) oz_pd_indicate_farewells()
883 ai->farewell(pd, f->ep_num, f->report, f->len); oz_pd_indicate_farewells()
/linux-4.1.27/sound/pci/hda/
H A Dpatch_hdmi.c651 * spk_mask => (channel_allocations[]) => ai->CA
1071 union audio_infoframe ai; hdmi_pin_setup_infoframe() local
1073 memset(&ai, 0, sizeof(ai)); hdmi_pin_setup_infoframe()
1075 struct hdmi_audio_infoframe *hdmi_ai = &ai.hdmi; hdmi_pin_setup_infoframe()
1084 struct dp_audio_infoframe *dp_ai = &ai.dp; hdmi_pin_setup_infoframe()
1098 * sizeof(ai) is used instead of sizeof(*hdmi_ai) or hdmi_pin_setup_infoframe()
1102 if (!hdmi_infoframe_uptodate(codec, pin_nid, ai.bytes, hdmi_pin_setup_infoframe()
1103 sizeof(ai))) { hdmi_pin_setup_infoframe()
1110 ai.bytes, sizeof(ai)); hdmi_pin_setup_infoframe()
/linux-4.1.27/drivers/net/ethernet/chelsio/cxgb3/
H A Dt3_hw.c196 static void mi1_init(struct adapter *adap, const struct adapter_info *ai) mi1_init() argument
3452 * @ai: information about the current card
3526 const struct adapter_info *ai) early_hw_init()
3530 mi1_init(adapter, ai); early_hw_init()
3534 ai->gpio_out | F_GPIO0_OEN | F_GPIO0_OUT_VAL); early_hw_init()
3621 int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai, t3_prep_adapter() argument
3629 adapter->params.info = ai; t3_prep_adapter()
3630 adapter->params.nports = ai->nports0 + ai->nports1; t3_prep_adapter()
3631 adapter->params.chan_map = (!!ai->nports0) | (!!ai->nports1 << 1); t3_prep_adapter()
3691 early_hw_init(adapter, ai); t3_prep_adapter()
3712 ret = pti->phy_prep(&p->phy, adapter, ai->phy_base_addr + j, for_each_port()
3713 ai->mdio_ops); for_each_port()
3752 const struct adapter_info *ai = adapter->params.info; t3_replay_prep_adapter() local
3756 early_hw_init(adapter, ai); t3_replay_prep_adapter()
3525 early_hw_init(struct adapter *adapter, const struct adapter_info *ai) early_hw_init() argument
H A Dcxgb3_main.c3109 static void print_port_info(struct adapter *adap, const struct adapter_info *ai) print_port_info() argument
3134 ai->desc, pi->phy.desc, for_each_port()
3179 const struct adapter_info *ai; init_one() local
3224 ai = t3_get_adapter_info(ent->driver_data); init_one()
3266 for (i = 0; i < ai->nports0 + ai->nports1; ++i) { init_one()
3298 if (t3_prep_adapter(adapter, ai, 1) < 0) { init_one()
3353 print_port_info(adapter, ai);
3358 for (i = ai->nports0 + ai->nports1 - 1; i >= 0; --i)
H A Dcommon.h692 int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai,
/linux-4.1.27/drivers/input/keyboard/
H A Dhilkbd.c5 * Copyright (C) 1999 Matthew Wilcox <willy@bofh.ai>
/linux-4.1.27/drivers/gpu/drm/qxl/
H A Dqxl_drv.c1 /* vim: set ts=8 sw=8 tw=78 ai noexpandtab */
/linux-4.1.27/drivers/usb/misc/
H A Demi26.c261 /* vi:ai:syntax=c:sw=8:ts=8:tw=80
H A Demi62.c274 /* vi:ai:syntax=c:sw=8:ts=8:tw=80
/linux-4.1.27/fs/isofs/
H A Ddir.c48 /* Acorn extensions written by Matthew Wilcox <willy@bofh.ai> 1998 */ get_acorn_filename()
/linux-4.1.27/fs/gfs2/
H A Dlog.c88 * @ai: The ail structure
186 * @ai: the AIL entry
260 * @ai: the AIL entry
H A Dlops.c93 * @ai:
/linux-4.1.27/drivers/isdn/hardware/eicon/
H A Dmessage.c1202 API_PARSE *ai; connect_req() local
1245 ai = &parms[9]; connect_req()
1250 if (ai->length) connect_req()
1253 if (!api_parse(&ai->info[1], (word)ai->length, "ssss", ai_parms)) connect_req()
1418 API_PARSE *ai; connect_res() local
1429 ai = &parms[5]; connect_res()
1430 dbug(1, dprintf("ai->length=%d", ai->length)); connect_res()
1432 if (ai->length) connect_res()
1434 if (!api_parse(&ai->info[1], (word)ai->length, "ssss", ai_parms)) connect_res()
1713 API_PARSE *ai; info_req() local
1721 ai = &msg[1]; info_req()
1723 if (ai->length) info_req()
1725 if (api_parse(&ai->info[1], (word)ai->length, "ssss", ai_parms)) info_req()
7447 static void add_ai(PLCI *plci, API_PARSE *ai) add_ai() argument
7454 if (!ai->length) add_ai()
7456 if (api_parse(&ai->info[1], (word)ai->length, "ssss", ai_parms)) add_ai()
/linux-4.1.27/sound/pci/asihpi/
H A Dhpi_internal.h128 #define HPI_CTL_ATTR(ctl, ai) ((HPI_CONTROL_##ctl << 8) + ai)
/linux-4.1.27/drivers/scsi/
H A Dncr53c8xx.h38 ** Charles M. Hannum <mycroft@gnu.ai.mit.edu>
H A Dscsi.c17 * Modified by Eric Youngdale eric@andante.org or ericy@gnu.ai.mit.edu to
H A Dncr53c8xx.c37 ** Charles M. Hannum <mycroft@gnu.ai.mit.edu>
/linux-4.1.27/arch/powerpc/xmon/
H A Dspu-insns.h226 APUOP(M_AI, RI10, 0x0e0, "ai", _A3(A_T,A_A,A_S10), 00012, FX2) /* Add%Immed RT<-RA+I10 */
H A Dppc-opc.c2537 { "ai", OP(12), OP_MASK, PWRCOM, { RT, RA, SI } },
2541 { "ai.", OP(13), OP_MASK, PWRCOM, { RT, RA, SI } },
/linux-4.1.27/arch/parisc/kernel/
H A Dsyscall.S5 * Copyright (c) Matthew Wilcox 1999 <willy@bofh.ai>
/linux-4.1.27/drivers/scsi/megaraid/
H A Dmegaraid_mbox.c4145 /* vim: set ts=8 sw=8 tw=78 ai si: */

Completed in 2353 milliseconds