Skip to content

Commit 86f430b

Browse files
author
Jamie Smith
authored
Fix multicast filtering on STM32 (#431)
1 parent de95a07 commit 86f430b

File tree

6 files changed

+9
-12
lines changed

6 files changed

+9
-12
lines changed

connectivity/drivers/emac/TARGET_STM/TARGET_STM32F2/stm32f2_eth_conf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void _eth_config_mac(ETH_HandleTypeDef *heth)
3737
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
3838
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
3939
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40-
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE,
4141
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
4242
.HashTableHigh = 0x0U,
4343
.HashTableLow = 0x0U,

connectivity/drivers/emac/TARGET_STM/TARGET_STM32F4/TARGET_ARCH_MAX/stm32f4_eth_conf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void _eth_config_mac(ETH_HandleTypeDef *heth)
3737
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
3838
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
3939
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40-
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE,
4141
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
4242
.HashTableHigh = 0x0U,
4343
.HashTableLow = 0x0U,

connectivity/drivers/emac/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F429ZI/stm32f4_eth_conf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void _eth_config_mac(ETH_HandleTypeDef *heth)
3737
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
3838
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
3939
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40-
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE,
4141
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
4242
.HashTableHigh = 0x0U,
4343
.HashTableLow = 0x0U,

connectivity/drivers/emac/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F439ZI/stm32f4_eth_conf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void _eth_config_mac(ETH_HandleTypeDef *heth)
3737
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
3838
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
3939
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40-
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE,
4141
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
4242
.HashTableHigh = 0x0U,
4343
.HashTableLow = 0x0U,

connectivity/drivers/emac/TARGET_STM/TARGET_STM32F7/stm32f7_eth_conf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ void _eth_config_mac(ETH_HandleTypeDef *heth)
3939
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
4040
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
4141
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
42-
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
42+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE,
4343
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
4444
.HashTableHigh = 0x0,
4545
.HashTableLow = 0x0,

connectivity/drivers/emac/TARGET_STM/stm32xx_emac.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,6 @@ bool STM32_EMAC::low_level_init_successful()
299299
// Set MAC address
300300
writeMACAddress(MACAddr, &EthHandle.Instance->MACA0HR, &EthHandle.Instance->MACA0LR);
301301

302-
// Enable multicast hash and perfect filter
303-
EthHandle.Instance->MACFFR = ETH_MACFFR_HM | ETH_MACFFR_HPF;
304-
305302
uint32_t TempRegisterValue;
306303
if (HAL_ETH_ReadPHYRegister(&EthHandle, 2, &TempRegisterValue) != HAL_OK) {
307304
tr_error("HAL_ETH_ReadPHYRegister 2 issue");
@@ -1076,13 +1073,13 @@ void STM32_EMAC::populateMcastFilterRegs() {
10761073

10771074
#if defined(ETH_IP_VERSION_V2)
10781075
uint32_t volatile * hashRegs[] = {
1079-
&EthHandle.Instance->MACHT1R,
1080-
&EthHandle.Instance->MACHT0R
1076+
&EthHandle.Instance->MACHT0R,
1077+
&EthHandle.Instance->MACHT1R
10811078
};
10821079
#else
10831080
uint32_t volatile * hashRegs[] = {
1084-
&EthHandle.Instance->MACHTHR,
1085-
&EthHandle.Instance->MACHTLR
1081+
&EthHandle.Instance->MACHTLR,
1082+
&EthHandle.Instance->MACHTHR
10861083
};
10871084
#endif
10881085

0 commit comments

Comments
 (0)