ehea: Fixed wrong jumbo frames status query
authorThomas Klein <osstklei@de.ibm.com>
Mon, 29 Jan 2007 17:44:01 +0000 (18:44 +0100)
committerJeff Garzik <jeff@garzik.org>
Tue, 30 Jan 2007 14:36:02 +0000 (09:36 -0500)
This patch fixes the wrong query and logging of the per interface jumbo frames
enabled/disabled status.

Signed-off-by: Thomas Klein <tklein@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/ehea/ehea.h
drivers/net/ehea/ehea_main.c

index be10a3a26b5b4c04f0ffaf11bebad3d97436f797..272e1ec51aa2b4202c5ea93980d9026039ef6a05 100644 (file)
@@ -39,7 +39,7 @@
 #include <asm/io.h>
 
 #define DRV_NAME       "ehea"
-#define DRV_VERSION    "EHEA_0044"
+#define DRV_VERSION    "EHEA_0045"
 
 #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \
        | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR)
index 1072e69ef85de679c9ac4517a3b8a3f05d34636c..d4635bf3128c9fecd22e75d249ea72a926993d10 100644 (file)
@@ -2316,6 +2316,7 @@ static int ehea_setup_single_port(struct ehea_port *port,
        struct ehea_adapter *adapter = port->adapter;
        struct hcp_ehea_port_cb4 *cb4;
        u32 *dn_log_port_id;
+       int jumbo = 0;
 
        sema_init(&port->port_lock, 1);
        port->state = EHEA_PORT_DOWN;
@@ -2357,13 +2358,25 @@ static int ehea_setup_single_port(struct ehea_port *port,
        if (!cb4) {
                ehea_error("no mem for cb4");
        } else {
-               cb4->jumbo_frame = 1;
-               hret = ehea_h_modify_ehea_port(adapter->handle,
-                                              port->logical_port_id,
-                                              H_PORT_CB4, H_PORT_CB4_JUMBO,
-                                              cb4);
-               if (hret != H_SUCCESS) {
-                       ehea_info("Jumbo frames not activated");
+               hret = ehea_h_query_ehea_port(adapter->handle,
+                                             port->logical_port_id,
+                                             H_PORT_CB4,
+                                             H_PORT_CB4_JUMBO, cb4);
+
+               if (hret == H_SUCCESS) {
+                       if (cb4->jumbo_frame)
+                               jumbo = 1;
+                       else {
+                               cb4->jumbo_frame = 1;
+                               hret = ehea_h_modify_ehea_port(adapter->handle,
+                                                              port->
+                                                               logical_port_id,
+                                                              H_PORT_CB4,
+                                                              H_PORT_CB4_JUMBO,
+                                                              cb4);
+                               if (hret == H_SUCCESS)
+                                       jumbo = 1;
+                       }
                }
                kfree(cb4);
        }
@@ -2402,6 +2415,9 @@ static int ehea_setup_single_port(struct ehea_port *port,
                goto out_free;
        }
 
+       ehea_info("%s: Jumbo frames are %sabled", dev->name,
+                 jumbo == 1 ? "en" : "dis");
+
        port->netdev = dev;
        ret = 0;
        goto out;