Skip to content

Commit 5c49dba

Browse files
Merge pull request #4513 from mikaleppanen/mult_filter_disable
Disabled lwip ethernet ipv6 multicast filter for STM boards
2 parents 7611513 + ee30df9 commit 5c49dba

File tree

4 files changed

+188
-0
lines changed

4 files changed

+188
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/* mbed Microcontroller Library
2+
* Copyright (c) 2017 ARM Limited
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#include "stm32f2xx_hal.h"
18+
19+
void _eth_config_mac(ETH_HandleTypeDef *heth)
20+
{
21+
ETH_MACInitTypeDef macconf =
22+
{
23+
.Watchdog = ETH_WATCHDOG_ENABLE,
24+
.Jabber = ETH_JABBER_ENABLE,
25+
.InterFrameGap = ETH_INTERFRAMEGAP_96BIT,
26+
.CarrierSense = ETH_CARRIERSENCE_ENABLE,
27+
.ReceiveOwn = ETH_RECEIVEOWN_ENABLE,
28+
.LoopbackMode = ETH_LOOPBACKMODE_DISABLE,
29+
.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE,
30+
.RetryTransmission = ETH_RETRYTRANSMISSION_DISABLE,
31+
.AutomaticPadCRCStrip = ETH_AUTOMATICPADCRCSTRIP_DISABLE,
32+
.BackOffLimit = ETH_BACKOFFLIMIT_10,
33+
.DeferralCheck = ETH_DEFFERRALCHECK_DISABLE,
34+
.ReceiveAll = ETH_RECEIVEAll_DISABLE,
35+
.SourceAddrFilter = ETH_SOURCEADDRFILTER_DISABLE,
36+
.PassControlFrames = ETH_PASSCONTROLFRAMES_BLOCKALL,
37+
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
38+
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
39+
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
41+
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
42+
.HashTableHigh = 0x0U,
43+
.HashTableLow = 0x0U,
44+
.PauseTime = 0x0U,
45+
.ZeroQuantaPause = ETH_ZEROQUANTAPAUSE_DISABLE,
46+
.PauseLowThreshold = ETH_PAUSELOWTHRESHOLD_MINUS4,
47+
.UnicastPauseFrameDetect = ETH_UNICASTPAUSEFRAMEDETECT_DISABLE,
48+
.ReceiveFlowControl = ETH_RECEIVEFLOWCONTROL_DISABLE,
49+
.TransmitFlowControl = ETH_TRANSMITFLOWCONTROL_DISABLE,
50+
.VLANTagComparison = ETH_VLANTAGCOMPARISON_16BIT,
51+
.VLANTagIdentifier = 0x0U
52+
};
53+
54+
if (heth->Init.ChecksumMode == ETH_CHECKSUM_BY_HARDWARE) {
55+
macconf.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE;
56+
} else {
57+
macconf.ChecksumOffload = ETH_CHECKSUMOFFLAOD_DISABLE;
58+
}
59+
60+
(void) HAL_ETH_ConfigMAC(heth, &macconf);
61+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/* mbed Microcontroller Library
2+
* Copyright (c) 2017 ARM Limited
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#include "stm32f4xx_hal.h"
18+
19+
void _eth_config_mac(ETH_HandleTypeDef *heth)
20+
{
21+
ETH_MACInitTypeDef macconf =
22+
{
23+
.Watchdog = ETH_WATCHDOG_ENABLE,
24+
.Jabber = ETH_JABBER_ENABLE,
25+
.InterFrameGap = ETH_INTERFRAMEGAP_96BIT,
26+
.CarrierSense = ETH_CARRIERSENCE_ENABLE,
27+
.ReceiveOwn = ETH_RECEIVEOWN_ENABLE,
28+
.LoopbackMode = ETH_LOOPBACKMODE_DISABLE,
29+
.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE,
30+
.RetryTransmission = ETH_RETRYTRANSMISSION_DISABLE,
31+
.AutomaticPadCRCStrip = ETH_AUTOMATICPADCRCSTRIP_DISABLE,
32+
.BackOffLimit = ETH_BACKOFFLIMIT_10,
33+
.DeferralCheck = ETH_DEFFERRALCHECK_DISABLE,
34+
.ReceiveAll = ETH_RECEIVEAll_DISABLE,
35+
.SourceAddrFilter = ETH_SOURCEADDRFILTER_DISABLE,
36+
.PassControlFrames = ETH_PASSCONTROLFRAMES_BLOCKALL,
37+
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
38+
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
39+
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
41+
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
42+
.HashTableHigh = 0x0U,
43+
.HashTableLow = 0x0U,
44+
.PauseTime = 0x0U,
45+
.ZeroQuantaPause = ETH_ZEROQUANTAPAUSE_DISABLE,
46+
.PauseLowThreshold = ETH_PAUSELOWTHRESHOLD_MINUS4,
47+
.UnicastPauseFrameDetect = ETH_UNICASTPAUSEFRAMEDETECT_DISABLE,
48+
.ReceiveFlowControl = ETH_RECEIVEFLOWCONTROL_DISABLE,
49+
.TransmitFlowControl = ETH_TRANSMITFLOWCONTROL_DISABLE,
50+
.VLANTagComparison = ETH_VLANTAGCOMPARISON_16BIT,
51+
.VLANTagIdentifier = 0x0U,
52+
};
53+
54+
if (heth->Init.ChecksumMode == ETH_CHECKSUM_BY_HARDWARE) {
55+
macconf.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE;
56+
} else {
57+
macconf.ChecksumOffload = ETH_CHECKSUMOFFLAOD_DISABLE;
58+
}
59+
60+
(void) HAL_ETH_ConfigMAC(heth, &macconf);
61+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/* mbed Microcontroller Library
2+
* Copyright (c) 2017 ARM Limited
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#include "stm32f7xx_hal.h"
18+
19+
void _eth_config_mac(ETH_HandleTypeDef *heth)
20+
{
21+
ETH_MACInitTypeDef macconf =
22+
{
23+
.Watchdog = ETH_WATCHDOG_ENABLE,
24+
.Jabber = ETH_JABBER_ENABLE,
25+
.InterFrameGap = ETH_INTERFRAMEGAP_96BIT,
26+
.CarrierSense = ETH_CARRIERSENCE_ENABLE,
27+
.ReceiveOwn = ETH_RECEIVEOWN_ENABLE,
28+
.LoopbackMode = ETH_LOOPBACKMODE_DISABLE,
29+
.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE,
30+
.RetryTransmission = ETH_RETRYTRANSMISSION_DISABLE,
31+
.AutomaticPadCRCStrip = ETH_AUTOMATICPADCRCSTRIP_DISABLE,
32+
.BackOffLimit = ETH_BACKOFFLIMIT_10,
33+
.DeferralCheck = ETH_DEFFERRALCHECK_DISABLE,
34+
.ReceiveAll = ETH_RECEIVEAll_DISABLE,
35+
.SourceAddrFilter = ETH_SOURCEADDRFILTER_DISABLE,
36+
.PassControlFrames = ETH_PASSCONTROLFRAMES_BLOCKALL,
37+
.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE,
38+
.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL,
39+
.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE,
40+
.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_NONE, // Disable multicast filter
41+
.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT,
42+
.HashTableHigh = 0x0,
43+
.HashTableLow = 0x0,
44+
.PauseTime = 0x0,
45+
.ZeroQuantaPause = ETH_ZEROQUANTAPAUSE_DISABLE,
46+
.PauseLowThreshold = ETH_PAUSELOWTHRESHOLD_MINUS4,
47+
.UnicastPauseFrameDetect = ETH_UNICASTPAUSEFRAMEDETECT_DISABLE,
48+
.ReceiveFlowControl = ETH_RECEIVEFLOWCONTROL_DISABLE,
49+
.TransmitFlowControl = ETH_TRANSMITFLOWCONTROL_DISABLE,
50+
.VLANTagComparison = ETH_VLANTAGCOMPARISON_16BIT,
51+
.VLANTagIdentifier = 0x0
52+
};
53+
54+
if (heth->Init.ChecksumMode == ETH_CHECKSUM_BY_HARDWARE) {
55+
macconf.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE;
56+
} else {
57+
macconf.ChecksumOffload = ETH_CHECKSUMOFFLAOD_DISABLE;
58+
}
59+
60+
(void) HAL_ETH_ConfigMAC(heth, &macconf);
61+
}

features/FEATURE_LWIP/lwip-interface/lwip-eth/arch/TARGET_STM/stm32xx_emac.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ static struct pbuf * _eth_arch_low_level_input(struct netif *netif);
5959
__weak uint8_t mbed_otp_mac_address(char *mac);
6060
void mbed_default_mac_address(char *mac);
6161

62+
void _eth_config_mac(ETH_HandleTypeDef *heth);
63+
6264
/**
6365
* Ethernet Rx Transfer completed callback
6466
*
@@ -144,6 +146,9 @@ static void _eth_arch_low_level_init(struct netif *netif)
144146
/* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
145147
netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
146148

149+
/* Configure MAC */
150+
_eth_config_mac(&EthHandle);
151+
147152
/* Enable MAC and DMA transmission and reception */
148153
HAL_ETH_Start(&EthHandle);
149154
#endif

0 commit comments

Comments
 (0)