+++ /dev/null
---- zd1211-4916-r0/src/zd1205.h.orig 2005-01-28 22:55:15.000000000 -0800
-+++ zd1211-4916-r0/src/zd1205.h 2005-03-04 13:41:16.879006208 -0800
-@@ -611,6 +611,9 @@
- ***************************************************************************/\r
- struct driver_stats {\r
- struct net_device_stats net_stats;\r
-+#ifdef CONFIG_NET_WIRELESS
-+ struct iw_statistics iw_stats;
-+#endif
- unsigned long tx_late_col;\r
- unsigned long tx_ok_defrd;\r
- unsigned long tx_one_retry;\r
---- zd1211-4916-r0/src/zd1205.c.orig 2005-03-03 18:43:48.000000000 -0800
-+++ zd1211-4916-r0/src/zd1205.c 2005-03-04 13:45:07.134002128 -0800
-@@ -4196,6 +4196,42 @@
- return &(macp->drv_stats.net_stats);\r
- }\r
- \r
-+/**
-+ * zd1205wext_iw_get_stats - get driver statistics
-+
-+ * @dev: adapter's net_device struct
-+ *
-+ * This routine is called when the OS wants the adapter's wireless
-+ * stats returned. It returns the address of the iw_statistics
-+ * stucture for the device. If the statistics are currently being
-+ * updated, then they might be incorrect for a short while. However,
-+ * since this cannot actually cause damage, no locking is used.
-+ */
-+#if WIRELESS_EXT > 12
-+struct iw_statistics *
-+zd1205wext_iw_get_stats(struct net_device *dev)
-+{
-+ struct zd1205_private *macp = dev->priv;
-+ struct iw_statistics *iw_stats = &macp->drv_stats.iw_stats;
-+
-+ iw_stats->qual.noise = 161;
-+ iw_stats->qual.qual = 0;//macp->rxInfo.rxSignalQuality;
-+ iw_stats->qual.level = 0;//macp->rxInfo.rxSignalStrength;
-+ iw_stats->qual.updated = 7;
-+
-+ iw_stats->discard.nwid = 0;
-+ iw_stats->discard.code = 0;
-+ iw_stats->discard.fragment = 0;
-+ iw_stats->discard.retries = macp->retryFailCnt;
-+ iw_stats->discard.misc = macp->DropFirstFragCnt + macp->ErrLongFrmCnt +
-+ macp->ErrShortFrmCnt + macp->ErrZeroLenFrmCnt;
-+
-+ iw_stats->miss.beacon = 0;
-+
-+ return iw_stats;
-+}
-+#endif
-+
- \r
- /**\r
- * zd1205_set_mac - set the MAC address\r
---- zd1211-4916-r0/src/zd1211.c.orig 2005-03-03 18:43:49.000000000 -0800
-+++ zd1211-4916-r0/src/zd1211.c 2005-03-04 13:44:31.122476712 -0800
-@@ -1873,6 +1873,9 @@
- #define ZD1211_TX_TIMEOUT (HZ*10)\r
- #define ZD1211_MTU 1500\r
- extern struct iw_handler_def p80211wext_handler_def;\r
-+#ifdef CONFIG_NET_WIRELESS
-+extern struct iw_statistics *zd1205wext_iw_get_stats(struct net_device *);
-+#endif
- \r
- u8 zd1211_InitSetup(struct net_device *dev, struct zd1205_private *macp)\r
- \r
-@@ -1964,6 +1967,7 @@
- \r
- #if WIRELESS_EXT > 12\r
- dev->wireless_handlers = (struct iw_handler_def *)&p80211wext_handler_def;\r
-+ dev->get_wireless_stats = &zd1205wext_iw_get_stats;
- #endif\r
- \r
- dev->hard_start_xmit = zd1205_xmit_frame;\r
+++ /dev/null
-diff -ur zdold/Makefile zd1211-4916-r0/Makefile
---- zdold/Makefile 2005-02-18 21:58:36.000000000 -0800
-+++ zd1211-4916-r0/Makefile 2005-02-28 17:59:05.000000000 -0800
-@@ -149,7 +149,7 @@
- CFLAGS += -DfNEW_CODE_MAP=1\r
- CFLAGS += -DfWRITE_WORD_REG=1\r
- CFLAGS += -DfREAD_MUL_REG=1\r
--#CFLAGS += -DENHANCE_RX=1\r
-+CFLAGS += -DENHANCE_RX=1\r
- \r
- all: $(MODULE)\r
- \r
-diff -ur zdold/src/zd1211.c zd1211-4916-r0/src/zd1211.c
---- zdold/src/zd1211.c 2005-01-28 22:55:15.000000000 -0800
-+++ zd1211-4916-r0/src/zd1211.c 2005-03-01 14:41:07.003613776 -0800
-@@ -429,16 +429,16 @@
- memset(pRegBuffer, 0x0, size); \r
- \r
- \r
-- ((PUSB_WRITE_REG)pRegBuffer)->RequestID = REGID_PROG_FLSH;\r
-- ((PUSB_SET_RF) pRegBuffer)->Value = Value[0];\r
-- ((PUSB_SET_RF) pRegBuffer)->Index = Value[1];\r
-+ ((PUSB_WRITE_REG)pRegBuffer)->RequestID = cpu_to_le16(REGID_PROG_FLSH);\r
-+ ((PUSB_SET_RF) pRegBuffer)->Value = cpu_to_le16(Value[0]);\r
-+ ((PUSB_SET_RF) pRegBuffer)->Index = cpu_to_le16(Value[1]);\r
- \r
- \r
- \r
- \r
- \r
- for (ii = 2; ii < RegCount; ii ++)\r
-- ((PUSB_SET_RF)pRegBuffer)->Data[ii - 2] = Value[ii];\r
-+ ((PUSB_SET_RF)pRegBuffer)->Data[ii - 2] = cpu_to_le16(Value[ii]);\r
- \r
- \r
- bufSize = sizeof(u16) * (1+RegCount);\r
-@@ -513,7 +513,7 @@
- }else\r
- memset(pRegBuffer, 0x0, size);\r
- \r
-- ((PUSB_READ_REG_REQ)pRegBuffer)->RequestID = REGID_READ;\r
-+ ((PUSB_READ_REG_REQ)pRegBuffer)->RequestID = cpu_to_le16(REGID_READ);\r
- \r
- \r
- \r
-@@ -526,7 +526,7 @@
- else if ((Address[ii] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_EEPROM)\r
- Address[ii] = ((Address[ii] - USB_BASE_ADDR_EEPROM) / 2) + cFIRMWARE_EEPROM_OFFSET;\r
- //0x9900 //0xF817\r
-- ((PUSB_READ_REG_REQ) pRegBuffer)->Address[ii] = Address[ii];\r
-+ ((PUSB_READ_REG_REQ) pRegBuffer)->Address[ii] = cpu_to_le16(Address[ii]);\r
- \r
- }\r
- \r
-@@ -608,7 +608,7 @@
- } \r
- else {\r
- for (ii = 0; ii < (macp->ReadRegCount-2) / 4; ii++){\r
-- pValue[ii] = *((u16 *) macp->IntEPBuffer2 + 1 + ii * 2 + 1);\r
-+ pValue[ii] = le16_to_cpu(*((u16 *) macp->IntEPBuffer2 + 1 + ii * 2 + 1));
- } \r
- ret = 0; \r
- \r
-@@ -686,7 +686,7 @@
- } \r
- \r
- down(&macp->reg_sem); \r
-- \r
-+\r
- \r
- \r
- if ((RegCount == 0) || (!macp->bUSBDeveiceAttached) || !test_bit(ZD1211_RUNNING, &macp->flags)) { \r
-@@ -712,7 +712,7 @@
- \r
- \r
- \r
-- ((PUSB_WRITE_REG)pRegBuffer)->RequestID = REGID_WRITE;\r
-+ ((PUSB_WRITE_REG)pRegBuffer)->RequestID = cpu_to_le16(REGID_WRITE);\r
- \r
- if (RegCount > cMIN_MULTI_WRITE_REG_NUM){\r
- for (i=cMIN_MULTI_WRITE_REG_NUM; i<RegCount; i++){\r
-@@ -724,8 +724,8 @@
- else if ((Address[i] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_EEPROM)\r
- Address[i] = ((Address[i] - USB_BASE_ADDR_EEPROM) / 2) + cFIRMWARE_EEPROM_OFFSET;\r
- \r
-- ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].Address = Address[i];\r
-- ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].WriteData_low = Value[i];\r
-+ ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].Address = cpu_to_le16(Address[i]);\r
-+ ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].WriteData_low = cpu_to_le16(Value[i]);\r
- }\r
- }\r
- \r
-@@ -1726,17 +1726,17 @@
- \r
- \r
- \r
-- ((PUSB_SET_RF)pRegBuffer)->RequestID = REGID_RFOFDMSET;\r
-+ ((PUSB_SET_RF)pRegBuffer)->RequestID = cpu_to_le16(REGID_RFOFDMSET);\r
- \r
- if (bIs3683A)\r
-- ((PUSB_SET_RF)pRegBuffer)->Value = 1;\r
-+ ((PUSB_SET_RF)pRegBuffer)->Value = cpu_to_le16(1);\r
- else\r
-- ((PUSB_SET_RF)pRegBuffer)->Value = 2;\r
-+ ((PUSB_SET_RF)pRegBuffer)->Value = cpu_to_le16(2);\r
- \r
-- ((PUSB_SET_RF)pRegBuffer)->Index = (u16)S_bit_cnt;\r
-+ ((PUSB_SET_RF)pRegBuffer)->Index = cpu_to_le16((u16)S_bit_cnt);\r
- \r
- for (i = 0; i < S_bit_cnt; i ++)\r
-- ((PUSB_SET_RF)pRegBuffer)->Data[i] = InputValue[i];\r
-+ ((PUSB_SET_RF)pRegBuffer)->Data[i] = cpu_to_le16(InputValue[i]);\r
- \r
- \r
- bufSize = sizeof(u16) * (3+S_bit_cnt);\r
-@@ -2229,7 +2229,7 @@
- \r
- \r
- \r
-- ZD1211DEBUG(4, "actual_length = %x\n", urb->actual_length);\r
-+ ZD1211DEBUG(2, "actual_length = %x\n", urb->actual_length);\r
- \r
- \r
- rx_struct = list_entry(macp->active_rx_list.next,\r
-@@ -2266,7 +2266,7 @@
- if (last_pkt_len <= (macp->wMaxPacketSize - 4)){\r
- \r
- \r
-- if (((u16 *) pRxBuffer)[TotalLength / sizeof(u16) - 1] == 0x697E){\r
-+ if (le16_to_cpu(((u16 *) pRxBuffer)[TotalLength / sizeof(u16) - 1]) == 0x697E){\r
- \r
- total_rx_struct = 3;\r
- //ZD1211DEBUG(0, "Got merged Rx Frames!!\n");\r
-@@ -2288,8 +2288,8 @@
- int CurFrmLen;\r
- \r
- if (total_rx_struct> 1){\r
-- CurFrmLen = ((u16 *) pRxBuffer)[TotalLength / sizeof(u16) + i - 4];\r
-- //ZD1211DEBUG(2, "CurFrmLen = %x\n", CurFrmLen);\r
-+ CurFrmLen = le16_to_cpu(((u16 *) pRxBuffer)[TotalLength / sizeof(u16) + i - 4]);\r
-+ //ZD1211DEBUG(2, "[RX] CurFrmLen = %x\n", CurFrmLen);\r
- } \r
- \r
- else\r
-@@ -2316,22 +2316,22 @@
- \r
- \r
- \r
-- rfd->CbStatus = RFD_STATUS_COMPLETE;\r
-- rfd->ActualCount = CurFrmLen;\r
-+ rfd->CbStatus = cpu_to_le32(RFD_STATUS_COMPLETE);\r
-+ rfd->ActualCount = cpu_to_le32(CurFrmLen);\r
- \r
- \r
- if (i > 0){\r
- memcpy(&rfd->RxBuffer[macp->rxOffset],\r
- pRxBuffer + tmpLen,\r
-- rfd->ActualCount);\r
-+ CurFrmLen);\r
- \r
- } \r
- \r
- \r
-- tmpLen += (rfd->ActualCount & ~0x03);\r
-+ tmpLen += (CurFrmLen & ~0x03);\r
- \r
- \r
-- if (rfd->ActualCount & 0x03)\r
-+ if (CurFrmLen & 0x03)\r
- tmpLen += 4;\r
- \r
- }\r
-@@ -2361,8 +2361,8 @@
- \r
- #else\r
- \r
-- rfd->CbStatus = RFD_STATUS_COMPLETE;\r
-- rfd->ActualCount = TotalLength;\r
-+ rfd->CbStatus = cpu_to_le32(RFD_STATUS_COMPLETE);\r
-+ rfd->ActualCount = cpu_to_le32(TotalLength);\r
- zd1205_rx_isr(macp);\r
- #endif\r
- \r
-@@ -2521,8 +2521,8 @@
- // this is USB_READ_REGISTER response\r
- macp->ReadRegCount = (u16)actual_length;\r
- \r
-- intNum = *(u16 *)(macp->IntEPBuffer+2);\r
-- //intNum = macp->IntEPBuffer[2] + (((u16)macp->IntEPBuffer[3]) << 8);\r
-+ //intNum = *(u16 *)(macp->IntEPBuffer+2);\r
-+ intNum = macp->IntEPBuffer[2] + (((u16)macp->IntEPBuffer[3]) << 8);\r
- \r
- if (intNum == (InterruptCtrl | macp->USBCSRAddress)){ \r
- // Handle non-RxTx interrupt\r
-@@ -2549,8 +2549,8 @@
- case EPINT_RetryFial_Event:\r
- {\r
- u8 *pMacAddr = macp->IntEPBuffer + 4;\r
-- u8 NewRate = (u8)(*(u16 *)(macp->IntEPBuffer + 2));\r
-- //u8 NewRate = macp->IntEPBuffer[2];\r
-+ //u8 NewRate = (u8)(*(u16 *)(macp->IntEPBuffer + 2));\r
-+ u8 NewRate = (u8)macp->IntEPBuffer[2];\r
- u16 aid;\r
- \r
- \r
-@@ -2568,7 +2568,7 @@
- //ZD1211DEBUG(2, "NewRate = %x\n", NewRate);\r
- aid = zd_AidLookUp(pMacAddr);\r
- zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, 0xff, (U32)aid);\r
-- macp->retryFailCnt += *(u16 *)(macp->IntEPBuffer + 10);\r
-+ macp->retryFailCnt += le16_to_cpu(*(u16 *)(macp->IntEPBuffer + 10));\r
- break;\r
- \r
- }\r
-@@ -2634,7 +2634,7 @@
- // in current design, no need to use spinlock\r
- \r
- \r
-- intr_status = *(u16 *)(macp->IntEPBuffer3+4);\r
-+ intr_status = le16_to_cpu(*(u16 *)(macp->IntEPBuffer3+4));\r
- //ZD1211DEBUG(2, "intr_status = %x\n", intr_status);\r
- \r
- if (!intr_status)\r
-@@ -2765,7 +2765,7 @@
- \r
- sw_tcb = macp->activeTxQ->first;\r
- if (sw_tcb) \r
-- sw_tcb->pTcb->CbStatus = CB_STATUS_COMPLETE;\r
-+ sw_tcb->pTcb->CbStatus = cpu_to_le32(CB_STATUS_COMPLETE);\r
- \r
- zd1205_tx_isr(macp);\r
- \r
-@@ -2889,23 +2889,25 @@
- Tbd++;\r
- \r
- //Mac Header\r
-- memcpy(dst, (u8 *)Tbd->TbdBufferAddrLowPart, Tbd->TbdCount);\r
-+ memcpy(dst, (u8 *)le32_to_cpu(Tbd->TbdBufferAddrLowPart),
-+ le32_to_cpu(Tbd->TbdCount));\r
- \r
- ZD1211DEBUG(2, "MAC Header Length = %x\n", Tbd->TbdCount);\r
-- dst += Tbd->TbdCount;\r
-+ dst += le32_to_cpu(Tbd->TbdCount);\r
- \r
-- TotalLength += Tbd->TbdCount;\r
-+ TotalLength += le32_to_cpu(Tbd->TbdCount);\r
- \r
- Tbd++;\r
- \r
- //MAC Body\r
-- memcpy(dst, (u8 *)Tbd->TbdBufferAddrLowPart, Tbd->TbdCount);\r
-+ memcpy(dst, (u8 *)le32_to_cpu(Tbd->TbdBufferAddrLowPart),
-+ le32_to_cpu(Tbd->TbdCount));
- \r
- ZD1211DEBUG(2, "Tx DATA Length = %x\n", Tbd->TbdCount);\r
-- dst += Tbd->TbdCount;\r
-+ dst += le32_to_cpu(Tbd->TbdCount);\r
- \r
- \r
-- TotalLength += Tbd->TbdCount;\r
-+ TotalLength += le32_to_cpu(Tbd->TbdCount);\r
- Tbd++;\r
- \r
- ZD1211DEBUG(2, "TotalLength = %x\n", TotalLength);\r
-@@ -2914,7 +2916,7 @@
- \r
- \r
- // write down total length\r
-- *((u16 *)(macp->tx_buff+4)) = (u16)TotalLength + 14;\r
-+ *((u16 *)(macp->tx_buff+4)) = cpu_to_le16((u16)TotalLength + 14);\r
- \r
- ZD1211DEBUG(2, "macp->tx_buff+4 = %x\n", *((u16 *)(macp->tx_buff+4)));\r
- \r
-diff -ur zdold/src/zd1211.h zd1211-4916-r0/src/zd1211.h
---- zdold/src/zd1211.h 2005-01-28 22:55:14.000000000 -0800
-+++ zd1211-4916-r0/src/zd1211.h 2005-03-01 14:12:15.023914712 -0800
-@@ -146,7 +146,9 @@
- typedef struct _USB_WRITE_REG {\r
- u16 RequestID;\r
- USB_WRITE_REG_PACKAGE WritePackage[cMAX_MULTI_WRITE_REG_NUM];\r
--} USB_WRITE_REG, * PUSB_WRITE_REG;\r
-+} __attribute__((__packed__));\r
-+\r
-+typedef struct _USB_WRITE_REG USB_WRITE_REG, * PUSB_WRITE_REG;\r
- \r
- \r
- typedef struct _USB_SET_RF {\r
-diff -ur zdold/src/zdshared.c zd1211-4916-r0/src/zdshared.c
---- zdold/src/zdshared.c 2005-01-28 22:55:15.000000000 -0800
-+++ zd1211-4916-r0/src/zdshared.c 2005-03-01 14:43:35.078103032 -0800
-@@ -416,6 +416,7 @@
- U16 len;\r
- Frame_t *pf = pfrmDesc->mpdu;\r
- \r
-+ pf->header[2] = pf->header[3] = 0; // Initialize them to something?
- setFrameType(pf, ST_PROBE_REQ);\r
- pf->body = pfrmDesc->buffer;\r
- body = pf->body;\r