• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7800-V1.0.2.28/target/linux/generic/files/crypto/ocf/hifn/

Lines Matching refs:cmd

1481 hifn_write_command(struct hifn_command *cmd, u_int8_t *buf)
1494 using_mac = cmd->base_masks & HIFN_BASE_CMD_MAC;
1495 using_crypt = cmd->base_masks & HIFN_BASE_CMD_CRYPT;
1498 base_cmd->masks = htole16(cmd->base_masks);
1499 slen = cmd->src_mapsize;
1500 if (cmd->sloplen)
1501 dlen = cmd->dst_mapsize - cmd->sloplen + sizeof(u_int32_t);
1503 dlen = cmd->dst_mapsize;
1515 dlen = cmd->maccrd->crd_len;
1518 mac_cmd->masks = htole16(cmd->mac_masks |
1520 mac_cmd->header_skip = htole16(cmd->maccrd->crd_skip);
1527 dlen = cmd->enccrd->crd_len;
1530 cry_cmd->masks = htole16(cmd->cry_masks |
1532 cry_cmd->header_skip = htole16(cmd->enccrd->crd_skip);
1537 if (using_mac && cmd->mac_masks & HIFN_MAC_CMD_NEW_KEY) {
1538 bcopy(cmd->mac, buf_pos, HIFN_MAC_KEY_LENGTH);
1542 if (using_crypt && cmd->cry_masks & HIFN_CRYPT_CMD_NEW_KEY) {
1543 switch (cmd->cry_masks & HIFN_CRYPT_CMD_ALG_MASK) {
1545 bcopy(cmd->ck, buf_pos, HIFN_3DES_KEY_LENGTH);
1549 bcopy(cmd->ck, buf_pos, HIFN_DES_KEY_LENGTH);
1557 clen = MIN(cmd->cklen, len);
1558 bcopy(cmd->ck, buf_pos, clen);
1570 bcopy(cmd->ck, buf_pos, cmd->cklen);
1571 buf_pos += cmd->cklen;
1576 if (using_crypt && cmd->cry_masks & HIFN_CRYPT_CMD_NEW_IV) {
1577 switch (cmd->cry_masks & HIFN_CRYPT_CMD_ALG_MASK) {
1585 bcopy(cmd->iv, buf_pos, ivlen);
1589 if ((cmd->base_masks & (HIFN_BASE_CMD_MAC|HIFN_BASE_CMD_CRYPT)) == 0) {
1630 hifn_dmamap_load_dst(struct hifn_softc *sc, struct hifn_command *cmd)
1633 struct hifn_operand *dst = &cmd->dst;
1652 if (cmd->sloplen == 0) {
1658 offsetof(struct hifn_dma, slop[cmd->slopidx]);
1662 if ((dst->segs[i].ds_len - cmd->sloplen) != 0) {
1665 (dst->segs[i].ds_len - cmd->sloplen));
1705 hifn_dmamap_load_src(struct hifn_softc *sc, struct hifn_command *cmd)
1708 struct hifn_operand *src = &cmd->src;
1738 struct hifn_command *cmd,
1750 * need 1 cmd, and 1 res
1760 "cmd/result exhaustion, cmdu %u resu %u\n",
1771 if (pci_map_skb(sc, &cmd->src, cmd->src_skb)) {
1777 if (pci_map_uio(sc, &cmd->src, cmd->src_io)) {
1783 if (pci_map_buf(sc, &cmd->src, cmd->src_buf, crp->crp_ilen)) {
1790 if (hifn_dmamap_aligned(&cmd->src)) {
1791 cmd->sloplen = cmd->src_mapsize & 3;
1792 cmd->dst = cmd->src;
1803 KASSERT(cmd->dst_m == cmd->src_m,
1815 totlen = cmd->src_mapsize;
1816 if (cmd->src_m->m_flags & M_PKTHDR) {
1819 if (m0 && !m_dup_pkthdr(m0, cmd->src_m, M_DONTWAIT)) {
1874 cmd->dst_m = m0;
1891 if (cmd->dst_map == NULL) {
1893 if (pci_map_skb(sc, &cmd->dst, cmd->dst_skb)) {
1899 if (pci_map_uio(sc, &cmd->dst, cmd->dst_io)) {
1905 if (pci_map_buf(sc, &cmd->dst, cmd->dst_buf, crp->crp_ilen)) {
1916 "Entering cmd: stat %8x ien %8x u %d/%d/%d/%d n %d/%d\n",
1920 cmd->src_nsegs, cmd->dst_nsegs);
1925 if (cmd->src_map == cmd->dst_map) {
1926 bus_dmamap_sync(sc->sc_dmat, cmd->src_map,
1929 bus_dmamap_sync(sc->sc_dmat, cmd->src_map,
1931 bus_dmamap_sync(sc->sc_dmat, cmd->dst_map,
1939 if ((dma->srcu + cmd->src_nsegs) > HIFN_D_SRC_RSIZE ||
1940 (dma->dstu + cmd->dst_nsegs + 1) > HIFN_D_DST_RSIZE) {
1945 dma->srcu, cmd->src_nsegs,
1946 dma->dstu, cmd->dst_nsegs);
1963 cmdlen = hifn_write_command(cmd, dma->command_bufs[cmdi]);
1986 hifnstats.hst_ibytes += cmd->src_mapsize;
1988 hifn_dmamap_load_src(sc, cmd);
2009 dma->hifn_commands[resi] = cmd;
2030 if (cmd->sloplen)
2031 cmd->slopidx = resi;
2033 hifn_dmamap_load_dst(sc, cmd);
2069 if (cmd->src_map != cmd->dst_map)
2070 pci_unmap_buf(sc, &cmd->dst);
2074 if (cmd->src_skb != cmd->dst_skb)
2076 m_freem(cmd->dst_m);
2083 pci_unmap_buf(sc, &cmd->src);
2214 struct hifn_command *cmd;
2218 cmd = dma->hifn_commands[i];
2219 KASSERT(cmd != NULL,
2223 if (cmd->base_masks & HIFN_BASE_CMD_MAC) {
2228 hifn_callback(sc, cmd, macbuf);
2439 struct hifn_command *cmd = NULL;
2458 cmd = kmalloc(sizeof(struct hifn_command), SLAB_ATOMIC);
2459 if (cmd == NULL) {
2464 memset(cmd, 0, sizeof(*cmd));
2467 cmd->src_skb = (struct sk_buff *)crp->crp_buf;
2468 cmd->dst_skb = (struct sk_buff *)crp->crp_buf;
2470 cmd->src_io = (struct uio *)crp->crp_buf;
2471 cmd->dst_io = (struct uio *)crp->crp_buf;
2473 cmd->src_buf = crp->crp_buf;
2474 cmd->dst_buf = crp->crp_buf;
2497 cmd->base_masks |= HIFN_BASE_CMD_DECODE;
2515 cmd->base_masks = HIFN_BASE_CMD_DECODE;
2540 cmd->enccrd = enccrd;
2541 cmd->base_masks |= HIFN_BASE_CMD_CRYPT;
2544 cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_RC4;
2547 cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_DES |
2552 cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_3DES |
2557 cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_AES |
2571 bcopy(enccrd->crd_iv, cmd->iv, ivlen);
2573 read_random(cmd->iv, ivlen);
2579 ivlen, cmd->iv);
2583 bcopy(enccrd->crd_iv, cmd->iv, ivlen);
2587 ivlen, cmd->iv);
2593 cmd->cry_masks |= HIFN_CRYPT_CMD_NEW_KEY;
2594 cmd->ck = enccrd->crd_key;
2595 cmd->cklen = enccrd->crd_klen >> 3;
2596 cmd->cry_masks |= HIFN_CRYPT_CMD_NEW_KEY;
2601 if ((cmd->cry_masks & HIFN_CRYPT_CMD_ALG_MASK) ==
2603 switch (cmd->cklen) {
2605 cmd->cry_masks |= HIFN_CRYPT_CMD_KSZ_128;
2608 cmd->cry_masks |= HIFN_CRYPT_CMD_KSZ_192;
2611 cmd->cry_masks |= HIFN_CRYPT_CMD_KSZ_256;
2622 cmd->maccrd = maccrd;
2623 cmd->base_masks |= HIFN_BASE_CMD_MAC;
2627 cmd->mac_masks |= HIFN_MAC_CMD_ALG_MD5 |
2632 cmd->mac_masks |= HIFN_MAC_CMD_ALG_MD5 |
2637 cmd->mac_masks |= HIFN_MAC_CMD_ALG_SHA1 |
2642 cmd->mac_masks |= HIFN_MAC_CMD_ALG_SHA1 |
2650 cmd->mac_masks |= HIFN_MAC_CMD_NEW_KEY;
2651 bcopy(maccrd->crd_key, cmd->mac, maccrd->crd_klen >> 3);
2652 bzero(cmd->mac + (maccrd->crd_klen >> 3),
2657 cmd->crp = crp;
2658 cmd->session_num = session;
2659 cmd->softc = sc;
2661 err = hifn_crypto(sc, cmd, crp, hint);
2674 kfree(cmd);
2680 if (cmd != NULL)
2681 kfree(cmd);
2695 struct hifn_command *cmd;
2703 cmd = dma->hifn_commands[i];
2704 KASSERT(cmd != NULL, ("hifn_abort: null command slot %u", i));
2706 crp = cmd->crp;
2712 if (cmd->base_masks & HIFN_BASE_CMD_MAC) {
2718 hifn_callback(sc, cmd, macbuf);
2721 if (cmd->src_map == cmd->dst_map) {
2722 bus_dmamap_sync(sc->sc_dmat, cmd->src_map,
2725 bus_dmamap_sync(sc->sc_dmat, cmd->src_map,
2727 bus_dmamap_sync(sc->sc_dmat, cmd->dst_map,
2732 if (cmd->src_skb != cmd->dst_skb) {
2734 m_freem(cmd->src_m);
2735 crp->crp_buf = (caddr_t)cmd->dst_m;
2744 if (cmd->src_map != cmd->dst_map) {
2750 pci_unmap_buf(sc, &cmd->dst);
2754 pci_unmap_buf(sc, &cmd->src);
2756 kfree(cmd);
2773 hifn_callback(struct hifn_softc *sc, struct hifn_command *cmd, u_int8_t *macbuf)
2776 struct cryptop *crp = cmd->crp;
2783 if (cmd->src_map == cmd->dst_map) {
2784 bus_dmamap_sync(sc->sc_dmat, cmd->src_map,
2787 bus_dmamap_sync(sc->sc_dmat, cmd->src_map,
2789 bus_dmamap_sync(sc->sc_dmat, cmd->dst_map,
2795 if (cmd->src_skb != cmd->dst_skb) {
2797 crp->crp_buf = (caddr_t)cmd->dst_m;
2798 totlen = cmd->src_mapsize;
2799 for (m = cmd->dst_m; m != NULL; m = m->m_next) {
2806 cmd->dst_m->m_pkthdr.len = cmd->src_m->m_pkthdr.len;
2807 m_freem(cmd->src_m);
2816 if (cmd->sloplen != 0) {
2818 cmd->src_mapsize - cmd->sloplen, cmd->sloplen,
2819 (caddr_t)&dma->slop[cmd->slopidx]);
2841 hifnstats.hst_obytes += cmd->dst_mapsize;
2853 len = cmd->softc->sc_sessions[cmd->session_num].hs_mlen;
2860 if (cmd->src_map != cmd->dst_map)
2861 pci_unmap_buf(sc, &cmd->dst);
2862 pci_unmap_buf(sc, &cmd->src);
2863 kfree(cmd);