On 11/19/2020 4:30 PM, Andrew Lunn wrote:
>> +static struct dsa_lag *dsa_lag_get(struct dsa_switch_tree *dst,
>> + struct net_device *dev)
>> +{
>> + unsigned long busy = 0;
>> + struct dsa_lag *lag;
>> + int id;
>> +
>> + list_for_each_entry(lag, &dst->lags, list) {
>> + set_bit(lag->id, &busy);
>> +
>> + if (lag->dev == dev) {
>> + kref_get(&lag->refcount);
>> + return lag;
>> + }
>> + }
>> +
>> + id = find_first_zero_bit(&busy, BITS_PER_LONG);
>> + if (id >= BITS_PER_LONG)
>> + return ERR_PTR(-ENOSPC);
>> +
>> + lag = kzalloc(sizeof(*lag), GFP_KERNEL);
>> + if (!lag)
>> + return ERR_PTR(-ENOMEM);
>
> Hi Tobias
>
> My comment last time was to statically allocated them at probe
> time. Worse case scenario is each port is alone in a LAG. Pointless,
> but somebody could configure it. In dsa_tree_setup_switches() you can
> count the number of ports and then allocate an array, or while setting
> up a port, add one more lag to the list of lags.
The allocation is allowed to sleep (have not checked the calling context
of dsa_lag_get() whether this is OK) so what would be the upside of
doing upfront dsa_lag allocation which could be wasteful?
--
Florian
- [PATCH net-next 0/4] net: dsa: Link aggregation support Tobias Waldekranz
- [PATCH net-next 1/4] net: bonding: Notify ports abo... Tobias Waldekranz
- Re: [PATCH net-next 1/4] net: bonding: Notify p... Jay Vosburgh
- Re: [PATCH net-next 1/4] net: bonding: Noti... Tobias Waldekranz
- [PATCH net-next 3/4] net: dsa: mv88e6xxx: Link aggr... Tobias Waldekranz
- [PATCH net-next 2/4] net: dsa: Link aggregation sup... Tobias Waldekranz
- Re: [PATCH net-next 2/4] net: dsa: Link aggrega... Andrew Lunn
- Re: [PATCH net-next 2/4] net: dsa: Link agg... Florian Fainelli
- Re: [PATCH net-next 2/4] net: dsa: Link... Andrew Lunn
- Re: [PATCH net-next 2/4] net: dsa:... Tobias Waldekranz
- Re: [PATCH net-next 2/4] net: ... Andrew Lunn
- Re: [PATCH net-next 2/4] n... Tobias Waldekranz
- Re: [PATCH net-next 2/4] n... Andrew Lunn
- Re: [PATCH net-next 2/4] n... Tobias Waldekranz
- Re: [PATCH net-next 2/4] n... Florian Fainelli
- Re: [PATCH net-next 2/4] n... Andrew Lunn
- Re: [PATCH net-next 2/4] n... Tobias Waldekranz
- [PATCH net-next 4/4] net: dsa: tag_dsa: Support rec... Tobias Waldekranz
