[PATCH v2 1/6] net: add promiscuous mode configuration support

Ahmad Fatoum a.fatoum at pengutronix.de
Fri Nov 4 01:37:16 PDT 2022


Hello Oleksij,

On 03.11.22 14:13, Oleksij Rempel wrote:
> This configuration is mostly needed for controllers attached to switches
> with different MAC address configurations.

I think all interfaces should have a promisc parameter to be able to
configure this. This can be added in future, but for now it would be
great if ethlog could have an optional parameter to enable promisc
on the interface it's listening at. Should be useful for future
debugging.

> 
> Signed-off-by: Oleksij Rempel <o.rempel at pengutronix.de>
> ---
>  include/net.h |  3 +++
>  net/eth.c     | 10 ++++++++++
>  2 files changed, 13 insertions(+)
> 
> diff --git a/include/net.h b/include/net.h
> index 338033d698..96c2ed1d11 100644
> --- a/include/net.h
> +++ b/include/net.h
> @@ -49,6 +49,8 @@ struct eth_device {
>  				 int *length);
>  	void (*rx_monitor) (struct eth_device*, void *packet, int length);
>  	void (*tx_monitor) (struct eth_device*, void *packet, int length);
> +	/* Set promiscuous mode */
> +	int  (*set_promiscuous_mode) (struct eth_device*, bool enable);
>  
>  	struct eth_device *next;
>  	void *priv;
> @@ -113,6 +115,7 @@ int eth_send(struct eth_device *edev, void *packet, int length);	   /* Send a pa
>  int eth_rx(void);			/* Check for received packets	*/
>  void eth_open_all(void);
>  struct eth_device *of_find_eth_device_by_node(struct device_node *np);
> +int eth_set_promiscuous_mode(struct eth_device *edev, bool enable);
>  
>  /* associate a MAC address to a ethernet device. Should be called by
>   * board code for boards which store their MAC address at some unusual
> diff --git a/net/eth.c b/net/eth.c
> index 8f6ff7db3a..ad4b9d5987 100644
> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -31,6 +31,16 @@ struct eth_ethaddr {
>  
>  static LIST_HEAD(ethaddr_list);
>  
> +int eth_set_promiscuous_mode(struct eth_device *edev, bool enable)
> +{
> +	int ret = 0;
> +
> +	if (edev->set_promiscuous_mode)
> +		ret = edev->set_promiscuous_mode(edev, enable);
> +
> +	return ret;
> +}
> +
>  int eth_set_ethaddr(struct eth_device *edev, const char *ethaddr)
>  {
>  	int ret;

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




More information about the barebox mailing list