svn commit: r261076 - head/sys/dev/usb/wlan
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Jan 23 10:18:29 UTC 2014
Author: hselasky
Date: Thu Jan 23 10:18:28 2014
New Revision: 261076
URL: http://svnweb.freebsd.org/changeset/base/261076
Log:
Revert r261014. Let Kevin fix it.
MFC after: 1 week
Modified:
head/sys/dev/usb/wlan/if_run.c
head/sys/dev/usb/wlan/if_runvar.h
Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c Thu Jan 23 09:37:03 2014 (r261075)
+++ head/sys/dev/usb/wlan/if_run.c Thu Jan 23 10:18:28 2014 (r261076)
@@ -1356,22 +1356,11 @@ run_efuse_read(struct run_softc *sc, uin
uint16_t reg;
int error, ntries;
- switch (count) {
- case 1:
- *val = 0xff; /* address not found */
- break;
- case 2:
- *val = 0xffff; /* address not found */
- addr *= 2;
- break;
- default:
- *val = 0xffff; /* address not found */
- return (USB_ERR_INVAL);
- }
-
if ((error = run_read(sc, RT3070_EFUSE_CTRL, &tmp)) != 0)
return (error);
+ if (count == 2)
+ addr *= 2;
/*-
* Read one 16-byte block into registers EFUSE_DATA[0-3]:
* DATA0: F E D C
@@ -1392,21 +1381,21 @@ run_efuse_read(struct run_softc *sc, uin
if (ntries == 100)
return (ETIMEDOUT);
- if ((tmp & RT3070_EFUSE_AOUT_MASK) == RT3070_EFUSE_AOUT_MASK)
+ if ((tmp & RT3070_EFUSE_AOUT_MASK) == RT3070_EFUSE_AOUT_MASK) {
+ *val = 0xffff; /* address not found */
return (0);
-
+ }
/* determine to which 32-bit register our 16-bit word belongs */
reg = RT3070_EFUSE_DATA3 - (addr & 0xc);
if ((error = run_read(sc, reg, &tmp)) != 0)
return (error);
- /* get correct bytes */
- *val = (uint16_t)(tmp >> (8 * (addr & 0x3)));
-
- /* mask for byte read, if any */
- if (count == 1)
- *val &= 0xff;
-
+ if (count == 2)
+ *val = (addr & 2) ? tmp >> 16 : tmp & 0xffff;
+ else {
+ tmp >>= (8 *(addr & 0x3));
+ memmove(val, &tmp, sizeof(*val));
+ }
return (0);
}
@@ -3094,9 +3083,10 @@ tr_setup:
STAILQ_REMOVE_HEAD(&pq->tx_qh, next);
m = data->m;
- size = (sc->mac_ver == 0x5592) ?
- sizeof(data->desc) + sizeof(uint32_t) : sizeof(data->desc);
- if ((m->m_pkthdr.len + size + 3 + 8) > RUN_MAX_TXSZ) {
+ size = (sc->mac_ver == 0x5592) ?
+ RUN_MAX_TXSZ + sizeof(uint32_t) : RUN_MAX_TXSZ;
+ if ((m->m_pkthdr.len +
+ sizeof(data->desc) + 3 + 8) > size) {
DPRINTF("data overflow, %u bytes\n",
m->m_pkthdr.len);
@@ -3108,6 +3098,8 @@ tr_setup:
}
pc = usbd_xfer_get_frame(xfer, 0);
+ size = (sc->mac_ver == 0x5592) ?
+ sizeof(data->desc) + sizeof(uint32_t) : sizeof(data->desc);
usbd_copy_in(pc, 0, &data->desc, size);
usbd_m_copy_in(pc, size, m, 0, m->m_pkthdr.len);
size += m->m_pkthdr.len;
Modified: head/sys/dev/usb/wlan/if_runvar.h
==============================================================================
--- head/sys/dev/usb/wlan/if_runvar.h Thu Jan 23 09:37:03 2014 (r261075)
+++ head/sys/dev/usb/wlan/if_runvar.h Thu Jan 23 10:18:28 2014 (r261076)
@@ -89,7 +89,6 @@ struct run_tx_data {
uint32_t align[0]; /* dummy field */
uint8_t desc[sizeof(struct rt2870_txd) +
sizeof(struct rt2860_txwi)];
- uint8_t desc_extra[4]; /* used by v5592 */
uint8_t ridx;
};
STAILQ_HEAD(run_tx_data_head, run_tx_data);
More information about the svn-src-head
mailing list