Re: [PATCH 2.6.19-rc1] ehea firmware interface based on Anton Blanchard's new hvcall interface

2006-09-25 Thread Benjamin Herrenschmidt
On Mon, 2006-09-25 at 20:07 -0400, Jeff Garzik wrote:
> patch does not apply.
> 
> also, it would seem like varargs would be appropriate here.

Not really... these are hypervisor calls, their calling convention is
not varargs, thus we would need some conversion layer if using them,
with possible performance loss (it's also hard to do right as we are
passing args by registers, not stack).

Ben.


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2.6.19-rc1] ehea firmware interface based on Anton Blanchard's new hvcall interface

2006-09-25 Thread Jeff Garzik

patch does not apply.

also, it would seem like varargs would be appropriate here.


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2.6.19-rc1] ehea firmware interface based on Anton Blanchard's new hvcall interface

2006-09-25 Thread Jan-Bernd Themann
Hello Jeff,

this eHEA patch reflects changes according to Anton's new hvcall interface
which has been commited in Paul's git tree:

git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git

Thanks to this change our pHYP interface needs less lines of code.
In addition to the above changes the patch includes a bug fix (port state
notification) and minor changes (default queue length, coding style updates).


Thanks,
Jan-Bernd Themann

Signed-off-by: Jan-Bernd Themann <[EMAIL PROTECTED]>
---

 drivers/net/ehea/ehea.h  |   13 -
 drivers/net/ehea/ehea_main.c |   12
 drivers/net/ehea/ehea_phyp.c |  559 +--
 3 files changed, 244 insertions(+), 340 deletions(-)


diff -Nurp -X dontdiff kernel_ehea_28/drivers/net/ehea/ehea.h 
patched_kernel/drivers/net/ehea/ehea.h
--- kernel_ehea_28/drivers/net/ehea/ehea.h  2006-09-25 06:53:20.937708434 
-0700
+++ patched_kernel/drivers/net/ehea/ehea.h  2006-09-25 06:16:39.152956418 
-0700
@@ -39,7 +39,7 @@
 #include 
 
 #define DRV_NAME   "ehea"
-#define DRV_VERSION"EHEA_0028"
+#define DRV_VERSION"EHEA_0033"
 
 #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \
| NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR)
@@ -50,6 +50,7 @@
 #define EHEA_MAX_ENTRIES_SQ  32767
 #define EHEA_MIN_ENTRIES_QP  127
 
+#define EHEA_SMALL_QUEUES
 #define EHEA_NUM_TX_QP 1
 
 #ifdef EHEA_SMALL_QUEUES
@@ -59,11 +60,11 @@
 #define EHEA_DEF_ENTRIES_RQ21023
 #define EHEA_DEF_ENTRIES_RQ31023
 #else
-#define EHEA_MAX_CQE_COUNT 32000
-#define EHEA_DEF_ENTRIES_SQ16000
-#define EHEA_DEF_ENTRIES_RQ1   32080
-#define EHEA_DEF_ENTRIES_RQ24020
-#define EHEA_DEF_ENTRIES_RQ34020
+#define EHEA_MAX_CQE_COUNT  4080
+#define EHEA_DEF_ENTRIES_SQ 4080
+#define EHEA_DEF_ENTRIES_RQ18160
+#define EHEA_DEF_ENTRIES_RQ22040
+#define EHEA_DEF_ENTRIES_RQ32040
 #endif
 
 #define EHEA_MAX_ENTRIES_EQ 20
diff -Nurp -X dontdiff kernel_ehea_28/drivers/net/ehea/ehea_main.c 
patched_kernel/drivers/net/ehea/ehea_main.c
--- kernel_ehea_28/drivers/net/ehea/ehea_main.c 2006-09-25 06:53:20.938708444 
-0700
+++ patched_kernel/drivers/net/ehea/ehea_main.c 2006-09-25 06:16:39.153956426 
-0700
@@ -544,7 +544,7 @@ static irqreturn_t ehea_send_irq_handler
return IRQ_HANDLED;
 }
 
-static irqreturn_t ehea_recv_irq_handler(int irq, void *param, 
+static irqreturn_t ehea_recv_irq_handler(int irq, void *param,
 struct pt_regs *regs)
 {
struct ehea_port_res *pr = param;
@@ -553,7 +553,7 @@ static irqreturn_t ehea_recv_irq_handler
return IRQ_HANDLED;
 }
 
-static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param, 
+static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param,
   struct pt_regs *regs)
 {
struct ehea_port *port = param;
@@ -769,7 +769,7 @@ static void ehea_parse_eqe(struct ehea_a
if (EHEA_BMASK_GET(NEQE_PORT_UP, eqe)) {
if (!netif_carrier_ok(port->netdev)) {
ret = ehea_sense_port_attr(
-   adapter->port[portnum]);
+   port);
if (ret) {
ehea_error("failed resensing port "
   "attributes");
@@ -821,7 +821,7 @@ static void ehea_parse_eqe(struct ehea_a
netif_stop_queue(port->netdev);
break;
default:
-   ehea_error("unknown event code %x", ec);
+   ehea_error("unknown event code %x, eqe=0x%lX", ec, eqe);
break;
}
 }
@@ -850,7 +850,7 @@ static void ehea_neq_tasklet(unsigned lo
adapter->neq->fw_handle, event_mask);
 }
 
-static irqreturn_t ehea_interrupt_neq(int irq, void *param, 
+static irqreturn_t ehea_interrupt_neq(int irq, void *param,
  struct pt_regs *regs)
 {
struct ehea_adapter *adapter = param;
@@ -1845,7 +1845,7 @@ static int ehea_start_xmit(struct sk_buf
 
if (netif_msg_tx_queued(port)) {
ehea_info("post swqe on QP %d", pr->qp->init_attr.qp_nr);
-   ehea_dump(swqe, sizeof(*swqe), "swqe");
+   ehea_dump(swqe, 512, "swqe");
}
 
ehea_post_swqe(pr->qp, swqe);
diff -Nurp -X dontdiff kernel_ehea_28/drivers/net/ehea/ehea_phyp.c 
patched_kernel/drivers/net/ehea/ehea_phyp.c
--- kernel_ehea_28/drivers/net/ehea/ehea_phyp.c 2006-09-25 06:53:20.939708454 
-0700
+++ patched_kernel/drivers/net/ehea/ehea_phyp.c 2006-09-25 06:16:39.153956426 
-0700
@@ -44,71 +44,99 @@ static inline u16 get_order_of_qentries(
 #define H_ALL_RES_TYPE_MR5
 #define H_ALL_RES_TYPE_MW6
 
-static long ehea_hcall_9arg_9ret(unsigned long opcode,
-unsigned long arg1, unsigned long arg2,
-