~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise-security

« back to all changes in this revision

Viewing changes to drivers/staging/rtl8192e/ieee80211/ieee80211_crypt.h

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati
  • Date: 2011-12-06 15:56:07 UTC
  • Revision ID: package-import@ubuntu.com-20111206155607-pcf44kv5fmhk564f
Tags: 3.2.0-1401.1
[ Paolo Pisati ]

* Rebased on top of Ubuntu-3.2.0-3.8
* Tilt-tracking @ ef2487af4bb15bdd0689631774b5a5e3a59f74e2
* Delete debian.ti-omap4/control, it shoudln't be tracked
* Fix architecture spelling (s/armel/armhf/)
* [Config] Update configs following 3.2 import
* [Config] Fix compilation: disable CODA and ARCH_OMAP3
* [Config] Fix compilation: disable Ethernet Faraday
* Update series to precise

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Original code based on Host AP (software wireless LAN access point) driver
3
 
 * for Intersil Prism2/2.5/3.
4
 
 *
5
 
 * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen
6
 
 * <jkmaline@cc.hut.fi>
7
 
 * Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi>
8
 
 *
9
 
 * Adaption to a generic IEEE 802.11 stack by James Ketrenos
10
 
 * <jketreno@linux.intel.com>
11
 
 *
12
 
 * Copyright (c) 2004, Intel Corporation
13
 
 *
14
 
 * This program is free software; you can redistribute it and/or modify
15
 
 * it under the terms of the GNU General Public License version 2 as
16
 
 * published by the Free Software Foundation. See README and COPYING for
17
 
 * more details.
18
 
 */
19
 
 
20
 
/*
21
 
 * This file defines the interface to the ieee80211 crypto module.
22
 
 */
23
 
#ifndef IEEE80211_CRYPT_H
24
 
#define IEEE80211_CRYPT_H
25
 
 
26
 
#include <linux/skbuff.h>
27
 
 
28
 
struct ieee80211_crypto_ops {
29
 
        const char *name;
30
 
 
31
 
        /* init new crypto context (e.g., allocate private data space,
32
 
         * select IV, etc.); returns NULL on failure or pointer to allocated
33
 
         * private data on success */
34
 
        void * (*init)(int keyidx);
35
 
 
36
 
        /* deinitialize crypto context and free allocated private data */
37
 
        void (*deinit)(void *priv);
38
 
 
39
 
        /* encrypt/decrypt return < 0 on error or >= 0 on success. The return
40
 
         * value from decrypt_mpdu is passed as the keyidx value for
41
 
         * decrypt_msdu. skb must have enough head and tail room for the
42
 
         * encryption; if not, error will be returned; these functions are
43
 
         * called for all MPDUs (i.e., fragments).
44
 
         */
45
 
        int (*encrypt_mpdu)(struct sk_buff *skb, int hdr_len, void *priv);
46
 
        int (*decrypt_mpdu)(struct sk_buff *skb, int hdr_len, void *priv);
47
 
 
48
 
        /* These functions are called for full MSDUs, i.e. full frames.
49
 
         * These can be NULL if full MSDU operations are not needed. */
50
 
        int (*encrypt_msdu)(struct sk_buff *skb, int hdr_len, void *priv);
51
 
        int (*decrypt_msdu)(struct sk_buff *skb, int keyidx, int hdr_len,
52
 
                            void *priv);
53
 
 
54
 
        int (*set_key)(void *key, int len, u8 *seq, void *priv);
55
 
        int (*get_key)(void *key, int len, u8 *seq, void *priv);
56
 
 
57
 
        /* procfs handler for printing out key information and possible
58
 
         * statistics */
59
 
        char * (*print_stats)(char *p, void *priv);
60
 
 
61
 
        /* maximum number of bytes added by encryption; encrypt buf is
62
 
         * allocated with extra_prefix_len bytes, copy of in_buf, and
63
 
         * extra_postfix_len; encrypt need not use all this space, but
64
 
         * the result must start at the beginning of the buffer and correct
65
 
         * length must be returned */
66
 
        int extra_prefix_len, extra_postfix_len;
67
 
 
68
 
        struct module *owner;
69
 
};
70
 
 
71
 
struct ieee80211_crypt_data {
72
 
        struct list_head list; /* delayed deletion list */
73
 
        struct ieee80211_crypto_ops *ops;
74
 
        void *priv;
75
 
        atomic_t refcnt;
76
 
};
77
 
 
78
 
int ieee80211_register_crypto_ops(struct ieee80211_crypto_ops *ops);
79
 
int ieee80211_unregister_crypto_ops(struct ieee80211_crypto_ops *ops);
80
 
struct ieee80211_crypto_ops * ieee80211_get_crypto_ops(const char *name);
81
 
void ieee80211_crypt_deinit_entries(struct ieee80211_device *, int);
82
 
void ieee80211_crypt_deinit_handler(unsigned long);
83
 
void ieee80211_crypt_delayed_deinit(struct ieee80211_device *ieee,
84
 
                                    struct ieee80211_crypt_data **crypt);
85
 
#endif