From: Olof Johansson <olof@lixom.net>
To: jgarzik@pobox.com
Cc: netdev@vger.kernel.org, pasemi-linux@ozlabs.org, linuxppc-dev@ozlabs.org
Subject: [patch 3/6] [POWERPC] pasemi: Add function engine management functions to dma_lib
Date: Wed, 20 Feb 2008 20:57:56 -0600 [thread overview]
Message-ID: <20080221025929.670289000@lixom.net> (raw)
In-Reply-To: 20080221025753.903665000@lixom.net
Used to allocate functions for crypto/checksum offload.
Signed-off-by: Olof Johansson <olof@lixom.net>
Index: k.org/arch/powerpc/platforms/pasemi/dma_lib.c
===================================================================
--- k.org.orig/arch/powerpc/platforms/pasemi/dma_lib.c
+++ k.org/arch/powerpc/platforms/pasemi/dma_lib.c
@@ -27,6 +27,7 @@
#define MAX_TXCH 64
#define MAX_RXCH 64
#define MAX_FLAGS 64
+#define MAX_FUN 8
static struct pasdma_status *dma_status;
@@ -45,6 +46,7 @@ static struct pci_dev *dma_pdev;
static DECLARE_BITMAP(txch_free, MAX_TXCH);
static DECLARE_BITMAP(rxch_free, MAX_RXCH);
static DECLARE_BITMAP(flags_free, MAX_FLAGS);
+static DECLARE_BITMAP(fun_free, MAX_FUN);
/* pasemi_read_iob_reg - read IOB register
* @reg: Register to read (offset into PCI CFG space)
@@ -440,6 +442,41 @@ void pasemi_dma_clear_flag(int flag)
}
EXPORT_SYMBOL(pasemi_dma_clear_flag);
+/* pasemi_dma_alloc_fun - Allocate a function engine
+ *
+ * Allocates a function engine to use for crypto/checksum offload
+ * Returns allocated engine (0-8), < 0 on error.
+ */
+int pasemi_dma_alloc_fun(void)
+{
+ int bit;
+
+retry:
+ bit = find_next_bit(fun_free, MAX_FLAGS, 0);
+ if (bit >= MAX_FLAGS)
+ return -ENOSPC;
+ if (!test_and_clear_bit(bit, fun_free))
+ goto retry;
+
+ return bit;
+}
+EXPORT_SYMBOL(pasemi_dma_alloc_fun);
+
+
+/* pasemi_dma_free_fun - Deallocates a function engine
+ * @flag: Engine number to deallocate
+ *
+ * Frees up a function engine so it can be used for other purposes.
+ */
+void pasemi_dma_free_fun(int fun)
+{
+ BUG_ON(test_bit(fun, fun_free));
+ BUG_ON(fun >= MAX_FLAGS);
+ set_bit(fun, fun_free);
+}
+EXPORT_SYMBOL(pasemi_dma_free_fun);
+
+
static void *map_onedev(struct pci_dev *p, int index)
{
struct device_node *dn;
@@ -572,6 +609,9 @@ int pasemi_dma_init(void)
for (i = 0; i < MAX_FLAGS; i++)
__set_bit(i, flags_free);
+ for (i = 0; i < MAX_FUN; i++)
+ __set_bit(i, fun_free);
+
/* clear all status flags */
pasemi_write_dma_reg(PAS_DMA_TXF_CFLG0, 0xffffffff);
pasemi_write_dma_reg(PAS_DMA_TXF_CFLG1, 0xffffffff);
Index: k.org/include/asm-powerpc/pasemi_dma.h
===================================================================
--- k.org.orig/include/asm-powerpc/pasemi_dma.h
+++ k.org/include/asm-powerpc/pasemi_dma.h
@@ -472,6 +472,10 @@ extern void pasemi_dma_free_flag(int fla
extern void pasemi_dma_set_flag(int flag);
extern void pasemi_dma_clear_flag(int flag);
+/* Routines to allocate function engines */
+extern int pasemi_dma_alloc_fun(void);
+extern void pasemi_dma_free_fun(int fun);
+
/* Initialize the library, must be called before any other functions */
extern int pasemi_dma_init(void);
--
WARNING: multiple messages have this Message-ID (diff)
From: Olof Johansson <olof@lixom.net>
To: jgarzik@pobox.com
Cc: netdev@vger.kernel.org, linuxppc-dev@ozlabs.org, pasemi-linux@ozlabs.org
Subject: [patch 3/6] [POWERPC] pasemi: Add function engine management functions to dma_lib
Date: Wed, 20 Feb 2008 20:57:56 -0600 [thread overview]
Message-ID: <20080221025929.670289000@lixom.net> (raw)
In-Reply-To: 20080221025753.903665000@lixom.net
[-- Attachment #1: in-progress/pasemi_mac-add-fun-alloc --]
[-- Type: text/plain, Size: 2707 bytes --]
Used to allocate functions for crypto/checksum offload.
Signed-off-by: Olof Johansson <olof@lixom.net>
Index: k.org/arch/powerpc/platforms/pasemi/dma_lib.c
===================================================================
--- k.org.orig/arch/powerpc/platforms/pasemi/dma_lib.c
+++ k.org/arch/powerpc/platforms/pasemi/dma_lib.c
@@ -27,6 +27,7 @@
#define MAX_TXCH 64
#define MAX_RXCH 64
#define MAX_FLAGS 64
+#define MAX_FUN 8
static struct pasdma_status *dma_status;
@@ -45,6 +46,7 @@ static struct pci_dev *dma_pdev;
static DECLARE_BITMAP(txch_free, MAX_TXCH);
static DECLARE_BITMAP(rxch_free, MAX_RXCH);
static DECLARE_BITMAP(flags_free, MAX_FLAGS);
+static DECLARE_BITMAP(fun_free, MAX_FUN);
/* pasemi_read_iob_reg - read IOB register
* @reg: Register to read (offset into PCI CFG space)
@@ -440,6 +442,41 @@ void pasemi_dma_clear_flag(int flag)
}
EXPORT_SYMBOL(pasemi_dma_clear_flag);
+/* pasemi_dma_alloc_fun - Allocate a function engine
+ *
+ * Allocates a function engine to use for crypto/checksum offload
+ * Returns allocated engine (0-8), < 0 on error.
+ */
+int pasemi_dma_alloc_fun(void)
+{
+ int bit;
+
+retry:
+ bit = find_next_bit(fun_free, MAX_FLAGS, 0);
+ if (bit >= MAX_FLAGS)
+ return -ENOSPC;
+ if (!test_and_clear_bit(bit, fun_free))
+ goto retry;
+
+ return bit;
+}
+EXPORT_SYMBOL(pasemi_dma_alloc_fun);
+
+
+/* pasemi_dma_free_fun - Deallocates a function engine
+ * @flag: Engine number to deallocate
+ *
+ * Frees up a function engine so it can be used for other purposes.
+ */
+void pasemi_dma_free_fun(int fun)
+{
+ BUG_ON(test_bit(fun, fun_free));
+ BUG_ON(fun >= MAX_FLAGS);
+ set_bit(fun, fun_free);
+}
+EXPORT_SYMBOL(pasemi_dma_free_fun);
+
+
static void *map_onedev(struct pci_dev *p, int index)
{
struct device_node *dn;
@@ -572,6 +609,9 @@ int pasemi_dma_init(void)
for (i = 0; i < MAX_FLAGS; i++)
__set_bit(i, flags_free);
+ for (i = 0; i < MAX_FUN; i++)
+ __set_bit(i, fun_free);
+
/* clear all status flags */
pasemi_write_dma_reg(PAS_DMA_TXF_CFLG0, 0xffffffff);
pasemi_write_dma_reg(PAS_DMA_TXF_CFLG1, 0xffffffff);
Index: k.org/include/asm-powerpc/pasemi_dma.h
===================================================================
--- k.org.orig/include/asm-powerpc/pasemi_dma.h
+++ k.org/include/asm-powerpc/pasemi_dma.h
@@ -472,6 +472,10 @@ extern void pasemi_dma_free_flag(int fla
extern void pasemi_dma_set_flag(int flag);
extern void pasemi_dma_clear_flag(int flag);
+/* Routines to allocate function engines */
+extern int pasemi_dma_alloc_fun(void);
+extern void pasemi_dma_free_fun(int fun);
+
/* Initialize the library, must be called before any other functions */
extern int pasemi_dma_init(void);
--
next prev parent reply other threads:[~2008-02-21 2:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-21 2:57 [patch 0/6] pasemi_mac updates for 2.6.26 Olof Johansson
2008-02-21 2:57 ` Olof Johansson
2008-02-21 2:57 ` [patch 1/6] pasemi_mac: Move RX/TX section enablement to dma_lib Olof Johansson
2008-02-21 2:57 ` Olof Johansson
2008-02-26 11:46 ` Michael Ellerman
2008-02-26 11:46 ` Michael Ellerman
2008-02-26 14:14 ` Olof Johansson
2008-03-05 18:21 ` [Pasemi-linux] " Olof Johansson
2008-03-06 0:47 ` Michael Ellerman
2008-02-21 2:57 ` [patch 2/6] [POWERPC] pasemi: Add flag management functions " Olof Johansson
2008-02-21 2:57 ` Olof Johansson
2008-02-21 2:57 ` Olof Johansson [this message]
2008-02-21 2:57 ` [patch 3/6] [POWERPC] pasemi: Add function engine " Olof Johansson
2008-02-21 2:57 ` [patch 4/6] pasemi_mac: jumbo frame support Olof Johansson
2008-02-21 2:57 ` Olof Johansson
2008-02-21 2:57 ` [patch 5/6] pasemi_mac: Enable GSO by default Olof Johansson
2008-02-21 2:57 ` Olof Johansson
2008-02-21 2:57 ` [patch 6/6] pasemi_mac: basic ethtool support Olof Johansson
2008-02-21 2:57 ` Olof Johansson
2008-02-26 9:49 ` [patch 0/6] pasemi_mac updates for 2.6.26 Paul Mackerras
2008-02-26 9:49 ` Paul Mackerras
2008-02-26 14:16 ` Olof Johansson
2008-02-26 18:21 ` Jeff Garzik
2008-02-26 18:21 ` Jeff Garzik
2008-02-26 18:33 ` Olof Johansson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080221025929.670289000@lixom.net \
--to=olof@lixom.net \
--cc=jgarzik@pobox.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=netdev@vger.kernel.org \
--cc=pasemi-linux@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.