Fixed bug #1083.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13543 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
241799921e
commit
8acdaf5d31
|
@ -427,15 +427,12 @@ msg_t mac_lld_get_transmit_descriptor(MACDriver *macp,
|
|||
if (!macp->link_up)
|
||||
return MSG_TIMEOUT;
|
||||
|
||||
osalSysLock();
|
||||
|
||||
/* Get Current TX descriptor.*/
|
||||
tdes = macp->txptr;
|
||||
|
||||
/* Ensure that descriptor isn't owned by the Ethernet DMA or locked by
|
||||
another thread.*/
|
||||
if (tdes->tdes0 & (STM32_TDES0_OWN | STM32_TDES0_LOCKED)) {
|
||||
osalSysUnlock();
|
||||
return MSG_TIMEOUT;
|
||||
}
|
||||
|
||||
|
@ -445,8 +442,6 @@ msg_t mac_lld_get_transmit_descriptor(MACDriver *macp,
|
|||
/* Next TX descriptor to use.*/
|
||||
macp->txptr = (stm32_eth_tx_descriptor_t *)tdes->tdes3;
|
||||
|
||||
osalSysUnlock();
|
||||
|
||||
/* Set the buffer size and configuration.*/
|
||||
tdp->offset = 0;
|
||||
tdp->size = STM32_MAC_BUFFERS_SIZE;
|
||||
|
@ -503,8 +498,6 @@ msg_t mac_lld_get_receive_descriptor(MACDriver *macp,
|
|||
MACReceiveDescriptor *rdp) {
|
||||
stm32_eth_rx_descriptor_t *rdes;
|
||||
|
||||
osalSysLock();
|
||||
|
||||
/* Get Current RX descriptor.*/
|
||||
rdes = macp->rxptr;
|
||||
|
||||
|
@ -523,7 +516,6 @@ msg_t mac_lld_get_receive_descriptor(MACDriver *macp,
|
|||
rdp->physdesc = rdes;
|
||||
macp->rxptr = (stm32_eth_rx_descriptor_t *)rdes->rdes3;
|
||||
|
||||
osalSysUnlock();
|
||||
return MSG_OK;
|
||||
}
|
||||
/* Invalid frame found, purging.*/
|
||||
|
@ -534,7 +526,6 @@ msg_t mac_lld_get_receive_descriptor(MACDriver *macp,
|
|||
/* Next descriptor to check.*/
|
||||
macp->rxptr = rdes;
|
||||
|
||||
osalSysUnlock();
|
||||
return MSG_TIMEOUT;
|
||||
}
|
||||
|
||||
|
|
|
@ -155,16 +155,18 @@ msg_t macWaitTransmitDescriptor(MACDriver *macp,
|
|||
osalDbgCheck((macp != NULL) && (tdp != NULL));
|
||||
osalDbgAssert(macp->state == MAC_ACTIVE, "not active");
|
||||
|
||||
osalSysLock();
|
||||
|
||||
while (((msg = mac_lld_get_transmit_descriptor(macp, tdp)) != MSG_OK) &&
|
||||
(timeout > (sysinterval_t)0)) {
|
||||
osalSysLock();
|
||||
msg = osalThreadEnqueueTimeoutS(&macp->tdqueue, timeout);
|
||||
if (msg == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
break;
|
||||
}
|
||||
osalSysUnlock();
|
||||
}
|
||||
|
||||
osalSysUnlock();
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -210,15 +212,17 @@ msg_t macWaitReceiveDescriptor(MACDriver *macp,
|
|||
osalDbgCheck((macp != NULL) && (rdp != NULL));
|
||||
osalDbgAssert(macp->state == MAC_ACTIVE, "not active");
|
||||
|
||||
while (((msg = mac_lld_get_receive_descriptor(macp, rdp)) != MSG_OK)) {
|
||||
osalSysLock();
|
||||
|
||||
while (((msg = mac_lld_get_receive_descriptor(macp, rdp)) != MSG_OK)) {
|
||||
msg = osalThreadEnqueueTimeoutS(&macp->rdqueue, timeout);
|
||||
if (msg == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
break;
|
||||
}
|
||||
osalSysUnlock();
|
||||
}
|
||||
|
||||
osalSysUnlock();
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
|
|
@ -83,6 +83,8 @@
|
|||
MEMS Accelerometers.
|
||||
- NEW: Safer messages mechanism for sandboxes (to be backported to 20.3.1).
|
||||
- NEW: Added latency measurement test application.
|
||||
- FIX: Fixed race condition in HAL MAC driver (bug #1083)
|
||||
(backported to 20.3.1)(backported to 19.1.4).
|
||||
- FIX: Fixed early interrupts enable in ARMv7-M port (bug #1081)
|
||||
(backported to 20.3.1).
|
||||
- FIX: Fixed I2CD4 interrupt vectors are swapped versus I2CD1-I2CD3 (bug #1080)
|
||||
|
|
Loading…
Reference in New Issue