Re: [B.A.T.M.A.N.] [RFC 18/23] batman-adv: ELP - use phydev to determine link characteristics

Antonio Quartulli
2014-02-13T08:17:48Z

[-- Attachment #1: Type: text/plain, Size: 1391 bytes --]

On 11/02/14 13:48, Antonio Quartulli wrote:
> @@ -297,6 +299,7 @@ void batadv_update_min_mtu(struct net_device *soft_iface)
> static void
> batadv_hardif_activate_interface(struct batadv_hard_iface *hard_iface)
> {
> + struct net_device *dev = hard_iface->net_dev;
> struct batadv_priv *bat_priv;
> struct batadv_hard_iface *primary_if = NULL;
>
> @@ -315,6 +318,22 @@ batadv_hardif_activate_interface(struct batadv_hard_iface *hard_iface)
> if (!primary_if)
> batadv_primary_if_select(bat_priv, hard_iface);
>
> + /* set the default values */
> + hard_iface->bat_v.flags &= ~BATADV_FULL_DUPLEX;
> + hard_iface->bat_v.eth_throughput = 0;
> + if (dev->phydev) {
> + if (dev->phydev->duplex == DUPLEX_FULL)
> + hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX;
> +
> + /* set the speed according to the phydev setting. Store the
> + * value in Kbps (as done for the other throughput variables)
> + */
> + if (dev->phydev->speed != SPEED_UNKNOWN) {
> + hard_iface->bat_v.eth_throughput = dev->phydev->speed;
> + hard_iface->bat_v.eth_throughput *= 10;
> + }
> + }
> +

For the record: I just moved this chunk into a proper
bat_algo_ops->bat_iface_activate() API.

This initialisation is obviously B.A.T.M.A.N. V specific and cannot live
in the batadv_hardif_activate_interface() function.

Cheers,

--
Antonio Quartulli

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]