*len = IPW_ORD_TAB_1_ENTRY_SIZE;
 
                        IPW_DEBUG_WARNING(DRV_NAME
-                              ": ordinal buffer length too small, need %d\n",
+                              ": ordinal buffer length too small, need %zd\n",
                               IPW_ORD_TAB_1_ENTRY_SIZE);
 
                        return -EINVAL;
 #endif
 
        IPW_DEBUG_INFO(DRV_NAME ": PCI latency error detected at "
-                      "0x%04X.\n", i * sizeof(struct ipw2100_status));
+                      "0x%04zX.\n", i * sizeof(struct ipw2100_status));
 
 #ifdef ACPI_CSTATE_LIMIT_DEFINED
        IPW_DEBUG_INFO(DRV_NAME ": Disabling C3 transitions.\n");
        /* Make a copy of the frame so we can dump it to the logs if
         * ieee80211_rx fails */
        memcpy(packet_data, packet->skb->data,
-              min(status->frame_size, IPW_RX_NIC_BUFFER_LENGTH));
+              min_t(u32, status->frame_size, IPW_RX_NIC_BUFFER_LENGTH));
 #endif
 
        if (!ieee80211_rx(priv->ieee, packet->skb, stats)) {
        {
                int i = txq->oldest;
                IPW_DEBUG_TX(
-                       "TX%d V=%p P=%p T=%p L=%d\n", i,
+                       "TX%d V=%p P=%04X T=%04X L=%d\n", i,
                        &txq->drv[i],
-                       (void*)txq->nic + i * sizeof(struct ipw2100_bd),
-                       (void*)txq->drv[i].host_addr,
+                       (u32)(txq->nic + i * sizeof(struct ipw2100_bd)),
+                       txq->drv[i].host_addr,
                        txq->drv[i].buf_length);
 
                if (packet->type == DATA) {
                        i = (i + 1) % txq->entries;
 
                        IPW_DEBUG_TX(
-                               "TX%d V=%p P=%p T=%p L=%d\n", i,
+                               "TX%d V=%p P=%04X T=%04X L=%d\n", i,
                                &txq->drv[i],
-                               (void*)txq->nic + i *
-                               sizeof(struct ipw2100_bd),
-                               (void*)txq->drv[i].host_addr,
+                               (u32)(txq->nic + i *
+                               sizeof(struct ipw2100_bd)),
+                               (u32)txq->drv[i].host_addr,
                                txq->drv[i].buf_length);
                }
        }
 {
        IPW_DEBUG_INFO("enter\n");
 
-       IPW_DEBUG_INFO("initializing bd queue at virt=%p, phys=%08x\n", q->drv, q->nic);
+       IPW_DEBUG_INFO("initializing bd queue at virt=%p, phys=%08x\n", q->drv, (u32)q->nic);
 
        write_register(priv->net_dev, base, q->nic);
        write_register(priv->net_dev, size, q->entries);
                       priv->net_dev->name, fw_name);
                return rc;
        }
-       IPW_DEBUG_INFO("firmware data %p size %d\n", fw->fw_entry->data,
+       IPW_DEBUG_INFO("firmware data %p size %zd\n", fw->fw_entry->data,
                           fw->fw_entry->size);
 
        ipw2100_mod_firmware_load(fw);
 
        IPW_DEBUG_IO(" reg = 0x%8X : value = 0x%8X\n", reg, value);
        _ipw_write32(priv, CX2_INDIRECT_ADDR, reg & CX2_INDIRECT_ADDR_MASK);
        _ipw_write8(priv, CX2_INDIRECT_DATA, value);
-       IPW_DEBUG_IO(" reg = 0x%8X : value = 0x%8X\n", 
-                    (unsigned)(priv->hw_base + CX2_INDIRECT_DATA),
+       IPW_DEBUG_IO(" reg = 0x%8lX : value = 0x%8X\n", 
+                    (unsigned long)(priv->hw_base + CX2_INDIRECT_DATA),
                     value);
 }
 
                /* verify we have enough room to store the value */
                if (*len < sizeof(u32)) {
                        IPW_DEBUG_ORD("ordinal buffer length too small, "
-                                     "need %d\n", sizeof(u32));
+                                     "need %zd\n", sizeof(u32));
                        return -EINVAL;
                }
 
                /* verify we have enough room to store the value */
                if (*len < sizeof(u32)) {
                        IPW_DEBUG_ORD("ordinal buffer length too small, "
-                                     "need %d\n", sizeof(u32));
+                                     "need %zd\n", sizeof(u32));
                        return -EINVAL;
                }
 
        u32 address = CX2_SHARED_SRAM_DMA_CONTROL + (sizeof(struct command_block) * index); 
        IPW_DEBUG_FW(">> :\n");
 
-       ipw_write_indirect(priv, address, (u8*)cb, sizeof(struct command_block));
+       ipw_write_indirect(priv, address, (u8*)cb, (int)sizeof(struct command_block));
 
        IPW_DEBUG_FW("<< :\n");
        return 0;
                return -EINVAL;
        }
 
-       IPW_DEBUG_INFO("Loading firmware '%s' file v%d.%d (%d bytes)\n",
+       IPW_DEBUG_INFO("Loading firmware '%s' file v%d.%d (%zd bytes)\n",
                       name,
                       IPW_FW_MAJOR(header->version),
                       IPW_FW_MINOR(header->version),
 
        q->bd = pci_alloc_consistent(dev,sizeof(q->bd[0])*count, &q->q.dma_addr);
        if (!q->bd) {
-               IPW_ERROR("pci_alloc_consistent(%d) failed\n",
+               IPW_ERROR("pci_alloc_consistent(%zd) failed\n",
                                sizeof(q->bd[0]) * count);
                kfree(q->txb);
                q->txb = NULL;
                                       x->channel_num);
                } else {
                        IPW_DEBUG_SCAN("Scan result of wrong size %d "
-                                      "(should be %d)\n",
-                                      notif->size,sizeof(*x));
+                                      "(should be %zd)\n",
+                                      notif->size, sizeof(*x));
                }
                break;
        }
                                       x->status);
                } else {
                        IPW_ERROR("Scan completed of wrong size %d "
-                                 "(should be %d)\n",
-                                 notif->size,sizeof(*x));
+                                 "(should be %zd)\n",
+                                 notif->size, sizeof(*x));
                }
        
                priv->status &= ~(STATUS_SCANNING | STATUS_SCAN_ABORTING);
                        IPW_ERROR("Frag length: %d\n", x->frag_length);
                } else {
                        IPW_ERROR("Frag length of wrong size %d "
-                                 "(should be %d)\n",
+                                 "(should be %zd)\n",
                                  notif->size, sizeof(*x));
                }
                break;
                        memcpy(&priv->last_link_deterioration, x, sizeof(*x));
                } else {
                        IPW_ERROR("Link Deterioration of wrong size %d "
-                                 "(should be %d)\n",
-                                 notif->size,sizeof(*x));
+                                 "(should be %zd)\n",
+                                 notif->size, sizeof(*x));
                }
                break;
        }
                struct notif_beacon_state *x = ¬if->u.beacon_state;
                if (notif->size != sizeof(*x)) {
                        IPW_ERROR("Beacon state of wrong size %d (should "
-                                 "be %d)\n", notif->size, sizeof(*x));
+                                 "be %zd)\n", notif->size, sizeof(*x));
                        break;
                }
 
                        break;
                } 
 
-               IPW_ERROR("TGi Tx Key of wrong size %d (should be %d)\n",
-                         notif->size,sizeof(*x));
+               IPW_ERROR("TGi Tx Key of wrong size %d (should be %zd)\n",
+                         notif->size, sizeof(*x));
                break;
        }
 
                        break;
                } 
                
-               IPW_ERROR("Calibration of wrong size %d (should be %d)\n",
-                         notif->size,sizeof(*x));
+               IPW_ERROR("Calibration of wrong size %d (should be %zd)\n",
+                         notif->size, sizeof(*x));
                break;
        }
 
                        break;
                }
 
-               IPW_ERROR("Noise stat is wrong size %d (should be %d)\n",
+               IPW_ERROR("Noise stat is wrong size %d (should be %zd)\n",
                          notif->size, sizeof(u32));
                break;
        }
        }
 
        /* Advance skb->data to the start of the actual payload */
-       skb_reserve(rxb->skb, (u32)&pkt->u.frame.data[0] - (u32)pkt);
+       skb_reserve(rxb->skb, offsetof(struct ipw_rx_packet, u.frame.data));
 
        /* Set the size of the skb to the size of the frame */
        skb_put(rxb->skb, pkt->u.frame.length);