}
 EXPORT_SYMBOL_GPL(qeth_get_setassparms_cmd);
 
-static int qeth_send_setassparms(struct qeth_card *card,
-                                struct qeth_cmd_buffer *iob, u16 len,
-                                long data, int (*reply_cb)(struct qeth_card *,
-                                                           struct qeth_reply *,
-                                                           unsigned long),
-                                void *reply_param)
-{
-       int rc;
-       struct qeth_ipa_cmd *cmd;
-
-       QETH_CARD_TEXT(card, 4, "sendassp");
-
-       cmd = __ipa_cmd(iob);
-       if (len <= sizeof(__u32))
-               cmd->data.setassparms.data.flags_32bit = (__u32) data;
-       else   /* (len > sizeof(__u32)) */
-               memcpy(&cmd->data.setassparms.data, (void *) data, len);
-
-       rc = qeth_send_ipa_cmd(card, iob, reply_cb, reply_param);
-       return rc;
-}
-
 int qeth_send_simple_setassparms_prot(struct qeth_card *card,
                                      enum qeth_ipa_funcs ipa_func,
                                      u16 cmd_code, long data,
                                      enum qeth_prot_versions prot)
 {
-       int rc;
        int length = 0;
        struct qeth_cmd_buffer *iob;
 
        iob = qeth_get_setassparms_cmd(card, ipa_func, cmd_code, length, prot);
        if (!iob)
                return -ENOMEM;
-       rc = qeth_send_setassparms(card, iob, length, data,
-                                  qeth_setassparms_cb, NULL);
-       return rc;
+
+       __ipa_cmd(iob)->data.setassparms.data.flags_32bit = (__u32) data;
+       return qeth_send_ipa_cmd(card, iob, qeth_setassparms_cb, NULL);
 }
 EXPORT_SYMBOL_GPL(qeth_send_simple_setassparms_prot);
 
                                     enum qeth_prot_versions prot)
 {
        struct qeth_cmd_buffer *iob;
-       int rc = -ENOMEM;
 
        QETH_CARD_TEXT(card, 4, "chkdocmd");
        iob = qeth_get_setassparms_cmd(card, ipa_func, cmd_code,
                                       sizeof(__u32), prot);
-       if (iob)
-               rc = qeth_send_setassparms(card, iob, sizeof(__u32), data,
-                                          qeth_ipa_checksum_run_cmd_cb,
-                                          chksum_cb);
-       return rc;
+       if (!iob)
+               return -ENOMEM;
+
+       __ipa_cmd(iob)->data.setassparms.data.flags_32bit = (__u32) data;
+       return qeth_send_ipa_cmd(card, iob, qeth_ipa_checksum_run_cmd_cb,
+                                chksum_cb);
 }
 
 static int qeth_send_checksum_on(struct qeth_card *card, int cstype,
        if (!iob)
                return -ENOMEM;
 
-       rc = qeth_send_setassparms(card, iob, 0, 0 /* unused */,
-                                  qeth_start_tso_cb, &tso_data);
+       rc = qeth_send_ipa_cmd(card, iob, qeth_start_tso_cb, &tso_data);
        if (rc)
                return rc;
 
        }
 
        /* enable TSO capability */
-       caps.supported = 0;
-       caps.enabled = QETH_IPA_LARGE_SEND_TCP;
-       rc = qeth_send_setassparms(card, iob, sizeof(caps), (long) &caps,
-                                  qeth_setassparms_get_caps_cb, &caps);
+       __ipa_cmd(iob)->data.setassparms.data.caps.enabled =
+               QETH_IPA_LARGE_SEND_TCP;
+       rc = qeth_send_ipa_cmd(card, iob, qeth_setassparms_get_caps_cb, &caps);
        if (rc) {
                qeth_set_tso_off(card, prot);
                return rc;
 
        return 0;
 }
 
-static int qeth_l3_send_ipa_arp_cmd(struct qeth_card *card,
-               struct qeth_cmd_buffer *iob, int len,
-               int (*reply_cb)(struct qeth_card *, struct qeth_reply *,
-                       unsigned long),
-               void *reply_param)
-{
-       QETH_CARD_TEXT(card, 4, "sendarp");
-
-       return qeth_send_control_data(card, IPA_PDU_HEADER_SIZE + len, iob,
-                                     reply_cb, reply_param);
-}
-
 static int qeth_l3_query_arp_cache_info(struct qeth_card *card,
        enum qeth_prot_versions prot,
        struct qeth_arp_query_info *qinfo)
                return -ENOMEM;
        cmd = __ipa_cmd(iob);
        cmd->data.setassparms.data.query_arp.request_bits = 0x000F;
-       cmd->data.setassparms.data.query_arp.reply_bits = 0;
-       cmd->data.setassparms.data.query_arp.no_entries = 0;
-       rc = qeth_l3_send_ipa_arp_cmd(card, iob,
-                          QETH_SETASS_BASE_LEN+QETH_ARP_CMD_LEN,
-                          qeth_l3_arp_query_cb, (void *)qinfo);
+       rc = qeth_send_control_data(card,
+                                   QETH_SETASS_BASE_LEN + QETH_ARP_CMD_LEN,
+                                   iob, qeth_l3_arp_query_cb, qinfo);
        if (rc)
                QETH_DBF_MESSAGE(2, "Error while querying ARP cache on device %x: %#x\n",
                                 CARD_DEVID(card), rc);