ecu                87 net/can/j1939/address-claim.c 		struct j1939_ecu *ecu;
ecu                93 net/can/j1939/address-claim.c 		ecu = j1939_ecu_get_by_name(priv, skcb->addr.src_name);
ecu                94 net/can/j1939/address-claim.c 		if (!ecu)
ecu                97 net/can/j1939/address-claim.c 		if (ecu->addr != skcb->addr.sa)
ecu                99 net/can/j1939/address-claim.c 			j1939_ecu_unmap(ecu);
ecu               100 net/can/j1939/address-claim.c 		j1939_ecu_put(ecu);
ecu               129 net/can/j1939/address-claim.c 	struct j1939_ecu *ecu, *prev;
ecu               167 net/can/j1939/address-claim.c 	ecu = j1939_ecu_get_by_name_locked(priv, name);
ecu               168 net/can/j1939/address-claim.c 	if (!ecu && j1939_address_is_unicast(skcb->addr.sa))
ecu               169 net/can/j1939/address-claim.c 		ecu = j1939_ecu_create_locked(priv, name);
ecu               171 net/can/j1939/address-claim.c 	if (IS_ERR_OR_NULL(ecu))
ecu               175 net/can/j1939/address-claim.c 	j1939_ecu_timer_cancel(ecu);
ecu               178 net/can/j1939/address-claim.c 		j1939_ecu_unmap_locked(ecu);
ecu               183 net/can/j1939/address-claim.c 	if (ecu->addr != skcb->addr.sa)
ecu               184 net/can/j1939/address-claim.c 		j1939_ecu_unmap_locked(ecu);
ecu               185 net/can/j1939/address-claim.c 	ecu->addr = skcb->addr.sa;
ecu               189 net/can/j1939/address-claim.c 		if (ecu->name > prev->name) {
ecu               190 net/can/j1939/address-claim.c 			j1939_ecu_unmap_locked(ecu);
ecu               200 net/can/j1939/address-claim.c 	j1939_ecu_timer_start(ecu);
ecu               202 net/can/j1939/address-claim.c 	j1939_ecu_put(ecu);
ecu               210 net/can/j1939/address-claim.c 	struct j1939_ecu *ecu;
ecu               217 net/can/j1939/address-claim.c 		ecu = j1939_ecu_get_by_addr(priv, skcb->addr.sa);
ecu               218 net/can/j1939/address-claim.c 		if (ecu) {
ecu               219 net/can/j1939/address-claim.c 			skcb->addr.src_name = ecu->name;
ecu               220 net/can/j1939/address-claim.c 			j1939_ecu_put(ecu);
ecu               225 net/can/j1939/address-claim.c 	ecu = j1939_ecu_get_by_addr(priv, skcb->addr.da);
ecu               226 net/can/j1939/address-claim.c 	if (ecu) {
ecu               227 net/can/j1939/address-claim.c 		skcb->addr.dst_name = ecu->name;
ecu               228 net/can/j1939/address-claim.c 		j1939_ecu_put(ecu);
ecu                19 net/can/j1939/bus.c 	struct j1939_ecu *ecu = container_of(kref, struct j1939_ecu, kref);
ecu                20 net/can/j1939/bus.c 	struct j1939_priv *priv = ecu->priv;
ecu                22 net/can/j1939/bus.c 	list_del(&ecu->list);
ecu                23 net/can/j1939/bus.c 	kfree(ecu);
ecu                27 net/can/j1939/bus.c void j1939_ecu_put(struct j1939_ecu *ecu)
ecu                29 net/can/j1939/bus.c 	kref_put(&ecu->kref, __j1939_ecu_release);
ecu                32 net/can/j1939/bus.c static void j1939_ecu_get(struct j1939_ecu *ecu)
ecu                34 net/can/j1939/bus.c 	kref_get(&ecu->kref);
ecu                37 net/can/j1939/bus.c static bool j1939_ecu_is_mapped_locked(struct j1939_ecu *ecu)
ecu                39 net/can/j1939/bus.c 	struct j1939_priv *priv = ecu->priv;
ecu                43 net/can/j1939/bus.c 	return j1939_ecu_find_by_addr_locked(priv, ecu->addr) == ecu;
ecu                48 net/can/j1939/bus.c static void j1939_ecu_map_locked(struct j1939_ecu *ecu)
ecu                50 net/can/j1939/bus.c 	struct j1939_priv *priv = ecu->priv;
ecu                55 net/can/j1939/bus.c 	if (!j1939_address_is_unicast(ecu->addr))
ecu                58 net/can/j1939/bus.c 	ent = &priv->ents[ecu->addr];
ecu                60 net/can/j1939/bus.c 	if (ent->ecu) {
ecu                62 net/can/j1939/bus.c 			    ecu->addr, ecu->name);
ecu                66 net/can/j1939/bus.c 	j1939_ecu_get(ecu);
ecu                67 net/can/j1939/bus.c 	ent->ecu = ecu;
ecu                68 net/can/j1939/bus.c 	ent->nusers += ecu->nusers;
ecu                72 net/can/j1939/bus.c void j1939_ecu_unmap_locked(struct j1939_ecu *ecu)
ecu                74 net/can/j1939/bus.c 	struct j1939_priv *priv = ecu->priv;
ecu                79 net/can/j1939/bus.c 	if (!j1939_address_is_unicast(ecu->addr))
ecu                82 net/can/j1939/bus.c 	if (!j1939_ecu_is_mapped_locked(ecu))
ecu                85 net/can/j1939/bus.c 	ent = &priv->ents[ecu->addr];
ecu                86 net/can/j1939/bus.c 	ent->ecu = NULL;
ecu                87 net/can/j1939/bus.c 	ent->nusers -= ecu->nusers;
ecu                88 net/can/j1939/bus.c 	j1939_ecu_put(ecu);
ecu                91 net/can/j1939/bus.c void j1939_ecu_unmap(struct j1939_ecu *ecu)
ecu                93 net/can/j1939/bus.c 	write_lock_bh(&ecu->priv->lock);
ecu                94 net/can/j1939/bus.c 	j1939_ecu_unmap_locked(ecu);
ecu                95 net/can/j1939/bus.c 	write_unlock_bh(&ecu->priv->lock);
ecu               104 net/can/j1939/bus.c 		if (priv->ents[i].ecu)
ecu               105 net/can/j1939/bus.c 			j1939_ecu_unmap_locked(priv->ents[i].ecu);
ecu               109 net/can/j1939/bus.c void j1939_ecu_timer_start(struct j1939_ecu *ecu)
ecu               114 net/can/j1939/bus.c 	j1939_ecu_get(ecu);
ecu               117 net/can/j1939/bus.c 	hrtimer_start(&ecu->ac_timer, ms_to_ktime(250),
ecu               121 net/can/j1939/bus.c void j1939_ecu_timer_cancel(struct j1939_ecu *ecu)
ecu               123 net/can/j1939/bus.c 	if (hrtimer_cancel(&ecu->ac_timer))
ecu               124 net/can/j1939/bus.c 		j1939_ecu_put(ecu);
ecu               129 net/can/j1939/bus.c 	struct j1939_ecu *ecu =
ecu               131 net/can/j1939/bus.c 	struct j1939_priv *priv = ecu->priv;
ecu               137 net/can/j1939/bus.c 	j1939_ecu_map_locked(ecu);
ecu               142 net/can/j1939/bus.c 	j1939_ecu_put(ecu);
ecu               150 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               154 net/can/j1939/bus.c 	ecu = kzalloc(sizeof(*ecu), gfp_any());
ecu               155 net/can/j1939/bus.c 	if (!ecu)
ecu               157 net/can/j1939/bus.c 	kref_init(&ecu->kref);
ecu               158 net/can/j1939/bus.c 	ecu->addr = J1939_IDLE_ADDR;
ecu               159 net/can/j1939/bus.c 	ecu->name = name;
ecu               161 net/can/j1939/bus.c 	hrtimer_init(&ecu->ac_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_SOFT);
ecu               162 net/can/j1939/bus.c 	ecu->ac_timer.function = j1939_ecu_timer_handler;
ecu               163 net/can/j1939/bus.c 	INIT_LIST_HEAD(&ecu->list);
ecu               166 net/can/j1939/bus.c 	ecu->priv = priv;
ecu               167 net/can/j1939/bus.c 	list_add_tail(&ecu->list, &priv->ecus);
ecu               169 net/can/j1939/bus.c 	return ecu;
ecu               177 net/can/j1939/bus.c 	return priv->ents[addr].ecu;
ecu               182 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               189 net/can/j1939/bus.c 	ecu = j1939_ecu_find_by_addr_locked(priv, addr);
ecu               190 net/can/j1939/bus.c 	if (ecu)
ecu               191 net/can/j1939/bus.c 		j1939_ecu_get(ecu);
ecu               193 net/can/j1939/bus.c 	return ecu;
ecu               198 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               201 net/can/j1939/bus.c 	ecu = j1939_ecu_get_by_addr_locked(priv, addr);
ecu               204 net/can/j1939/bus.c 	return ecu;
ecu               211 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               215 net/can/j1939/bus.c 	list_for_each_entry(ecu, &priv->ecus, list) {
ecu               216 net/can/j1939/bus.c 		if (ecu->name == name)
ecu               217 net/can/j1939/bus.c 			return ecu;
ecu               226 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               233 net/can/j1939/bus.c 	ecu = j1939_ecu_find_by_name_locked(priv, name);
ecu               234 net/can/j1939/bus.c 	if (ecu)
ecu               235 net/can/j1939/bus.c 		j1939_ecu_get(ecu);
ecu               237 net/can/j1939/bus.c 	return ecu;
ecu               242 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               245 net/can/j1939/bus.c 	ecu = j1939_ecu_get_by_name_locked(priv, name);
ecu               248 net/can/j1939/bus.c 	return ecu;
ecu               253 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               260 net/can/j1939/bus.c 	ecu = j1939_ecu_find_by_name_locked(priv, name);
ecu               261 net/can/j1939/bus.c 	if (ecu && j1939_ecu_is_mapped_locked(ecu))
ecu               263 net/can/j1939/bus.c 		addr = ecu->addr;
ecu               278 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               289 net/can/j1939/bus.c 	ecu = j1939_ecu_get_by_name_locked(priv, name);
ecu               290 net/can/j1939/bus.c 	if (!ecu)
ecu               291 net/can/j1939/bus.c 		ecu = j1939_ecu_create_locked(priv, name);
ecu               292 net/can/j1939/bus.c 	err = PTR_ERR_OR_ZERO(ecu);
ecu               296 net/can/j1939/bus.c 	ecu->nusers++;
ecu               298 net/can/j1939/bus.c 	if (j1939_ecu_is_mapped_locked(ecu))
ecu               300 net/can/j1939/bus.c 		priv->ents[ecu->addr].nusers++;
ecu               310 net/can/j1939/bus.c 	struct j1939_ecu *ecu;
ecu               320 net/can/j1939/bus.c 	ecu = j1939_ecu_find_by_name_locked(priv, name);
ecu               321 net/can/j1939/bus.c 	if (WARN_ON_ONCE(!ecu))
ecu               324 net/can/j1939/bus.c 	ecu->nusers--;
ecu               326 net/can/j1939/bus.c 	if (j1939_ecu_is_mapped_locked(ecu))
ecu               328 net/can/j1939/bus.c 		priv->ents[ecu->addr].nusers--;
ecu               329 net/can/j1939/bus.c 	j1939_ecu_put(ecu);
ecu                65 net/can/j1939/j1939-priv.h 		struct j1939_ecu *ecu;
ecu                92 net/can/j1939/j1939-priv.h void j1939_ecu_put(struct j1939_ecu *ecu);
ecu               120 net/can/j1939/j1939-priv.h void j1939_ecu_unmap_locked(struct j1939_ecu *ecu);
ecu               121 net/can/j1939/j1939-priv.h void j1939_ecu_unmap(struct j1939_ecu *ecu);
ecu               199 net/can/j1939/j1939-priv.h void j1939_ecu_timer_start(struct j1939_ecu *ecu);
ecu               200 net/can/j1939/j1939-priv.h void j1939_ecu_timer_cancel(struct j1939_ecu *ecu);