Message ID | 20211228142549.1275412-6-michael@walle.cc (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nvmem: add ethernet address offset support | expand |
On 28.12.2021 15:25, Michael Walle wrote: > Add a helper to add an offset to a ethernet address. This comes in handy > if you have a base ethernet address for multiple interfaces. > > Signed-off-by: Michael Walle <michael@walle.cc> > --- > include/linux/etherdevice.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h > index 2ad71cc90b37..9d621dc85290 100644 > --- a/include/linux/etherdevice.h > +++ b/include/linux/etherdevice.h > @@ -486,6 +486,20 @@ static inline void eth_addr_inc(u8 *addr) > u64_to_ether_addr(u, addr); > } > > +/** > + * eth_addr_add() - Add (or subtract) and offset to/from the given MAC address. > + * > + * @offset: Offset to add. > + * @addr: Pointer to a six-byte array containing Ethernet address to increment. > + */ > +static inline void eth_addr_add(u8 *addr, long offset) > +{ > + u64 u = ether_addr_to_u64(addr); > + > + u += offset; > + u64_to_ether_addr(u, addr); > +} Please check eth_hw_addr_gen() which contains identical code + eth_hw_addr_set(). You should probably make eth_hw_addr_gen() use your new function as a helper.
Am 2022-01-25 11:24, schrieb Rafał Miłecki: > On 28.12.2021 15:25, Michael Walle wrote: >> Add a helper to add an offset to a ethernet address. This comes in >> handy >> if you have a base ethernet address for multiple interfaces. >> >> Signed-off-by: Michael Walle <michael@walle.cc> >> --- >> include/linux/etherdevice.h | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h >> index 2ad71cc90b37..9d621dc85290 100644 >> --- a/include/linux/etherdevice.h >> +++ b/include/linux/etherdevice.h >> @@ -486,6 +486,20 @@ static inline void eth_addr_inc(u8 *addr) >> u64_to_ether_addr(u, addr); >> } >> +/** >> + * eth_addr_add() - Add (or subtract) and offset to/from the given >> MAC address. >> + * >> + * @offset: Offset to add. >> + * @addr: Pointer to a six-byte array containing Ethernet address to >> increment. >> + */ >> +static inline void eth_addr_add(u8 *addr, long offset) >> +{ >> + u64 u = ether_addr_to_u64(addr); >> + >> + u += offset; >> + u64_to_ether_addr(u, addr); >> +} > > Please check eth_hw_addr_gen() which contains identical code + > eth_hw_addr_set(). > > You should probably make eth_hw_addr_gen() use your new function as a > helper. You'd need to copy the mac address first because eth_addr_add() modifies the mac address in place. I don't see that this is improving anything. -michael
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 2ad71cc90b37..9d621dc85290 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -486,6 +486,20 @@ static inline void eth_addr_inc(u8 *addr) u64_to_ether_addr(u, addr); } +/** + * eth_addr_add() - Add (or subtract) and offset to/from the given MAC address. + * + * @offset: Offset to add. + * @addr: Pointer to a six-byte array containing Ethernet address to increment. + */ +static inline void eth_addr_add(u8 *addr, long offset) +{ + u64 u = ether_addr_to_u64(addr); + + u += offset; + u64_to_ether_addr(u, addr); +} + /** * is_etherdev_addr - Tell if given Ethernet address belongs to the device. * @dev: Pointer to a device structure
Add a helper to add an offset to a ethernet address. This comes in handy if you have a base ethernet address for multiple interfaces. Signed-off-by: Michael Walle <michael@walle.cc> --- include/linux/etherdevice.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+)