* linux-next: manual merge of the net-next tree
@ 2013-10-18 13:05 Mark Brown
0 siblings, 0 replies; 8+ messages in thread
From: Mark Brown @ 2013-10-18 13:05 UTC (permalink / raw)
To: Fabio Porcedda, Bjørn Mork, David S. Miller, Enrico Mioso,
Antonella Pellizzari
Cc: Thierry Reding, linux-next, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 937 bytes --]
Today's linux-next merge of the next-next tree got a conflict in
drivers/net/usb/qmi_wwan.c between ce97fef4 (net: qmi_wwan: Olivetti
Olicard 200 support) in the net tree and 905468fa (net: qmi_wwan: add
Telit LE920 newer firmware support) in the net-next tree.
I've fixed up as below and can carry.
diff --cc drivers/net/usb/qmi_wwan.c
index 818ce90,d03b6b6..0000000
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@@ -714,7 -729,7 +729,8 @@@ static const struct usb_device_id produ
{QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */
{QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */
{QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */
+ {QMI_FIXED_INTF(0x1bc7, 0x1201, 2)}, /* Telit LE920 */
+ {QMI_FIXED_INTF(0x0b3c, 0xc005, 6)}, /* Olivetti Olicard 200 */
{QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */
/* 4. Gobi 1000 devices */
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* linux-next: manual merge of the net-next tree
2013-10-21 15:36 linux-next: Tree for Oct 21 Thierry Reding
@ 2013-10-22 15:10 ` Thierry Reding
0 siblings, 0 replies; 8+ messages in thread
From: Thierry Reding @ 2013-10-22 15:10 UTC (permalink / raw)
To: Eric Dumazet, Helge Deller, David Miller, netdev, Parisc List
Cc: linux-next, linux-kernel
Today's linux-next merge of the net-next tree got a conflict in
arch/parisc/include/uapi/asm/socket.h
caused by commits 62748f3 (net: introduce SO_MAX_PACING_RATE) and 1a0e62d
(parisc: break out SOCK_NONBLOCK define to own asm header file).
I fixed it up (see below). Please verify that the resolution looks good.
Thanks,
Thierry
---
diff --cc arch/parisc/include/uapi/asm/socket.h
index 9f2174f,7c614d0..f33113a
--- a/arch/parisc/include/uapi/asm/socket.h
+++ b/arch/parisc/include/uapi/asm/socket.h
@@@ -75,4 -75,11 +75,6 @@@
#define SO_BUSY_POLL 0x4027
+ #define SO_MAX_PACING_RATE 0x4048
+
-/* O_NONBLOCK clashes with the bits used for socket types. Therefore we
- * have to define SOCK_NONBLOCK to a different value here.
- */
-#define SOCK_NONBLOCK 0x40000000
-
-#endif /* _ASM_SOCKET_H */
+#endif /* _UAPI_ASM_SOCKET_H */
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: linux-next: manual merge of the net-next tree
2013-10-18 12:58 Mark Brown
2013-10-18 13:08 ` Neil Horman
@ 2013-10-18 14:39 ` Vlad Yasevich
1 sibling, 0 replies; 8+ messages in thread
From: Vlad Yasevich @ 2013-10-18 14:39 UTC (permalink / raw)
To: Mark Brown, Neil Horman, David S. Miller, Joe Perches
Cc: Thierry Reding, linux-next, linux-kernel
On 10/18/2013 08:58 AM, Mark Brown wrote:
> Today's linux-next merge of the next-next tree got a conflict in
> include/net/dst.h between e87b3998d (net: dst: provide accessor function
> to dst->xfrm) in the net tree and a4023dd01 (dst.h: Remove extern from
> function prototypes) in net-next.
>
> I've fixed up as below and can carry as required.
>
> diff --cc include/net/dst.h
> index 3c4c944,211dcf1..0000000
> --- a/include/net/dst.h
> +++ b/include/net/dst.h
> @@@ -479,22 -478,10 +478,22 @@@ static inline struct dst_entry *xfrm_lo
> {
> return dst_orig;
> }
> +
> +static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst)
> +{
> + return NULL;
> +}
> +
> #else
> - extern struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
> - const struct flowi *fl, struct sock *sk,
> - int flags);
> + struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
> + const struct flowi *fl, struct sock *sk,
> + int flags);
> +
> +/* skb attached with this dst needs transformation if dst->xfrm is valid */
> +static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst)
> +{
> + return dst->xfrm;
> +}
> #endif
>
> #endif /* _NET_DST_H */
>
Looks right.
Thanks
-vlad
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: linux-next: manual merge of the net-next tree
2013-10-18 12:58 Mark Brown
@ 2013-10-18 13:08 ` Neil Horman
2013-10-18 14:39 ` Vlad Yasevich
1 sibling, 0 replies; 8+ messages in thread
From: Neil Horman @ 2013-10-18 13:08 UTC (permalink / raw)
To: Mark Brown
Cc: Vlad Yasevich, David S. Miller, Joe Perches, Thierry Reding,
linux-next, linux-kernel
On Fri, Oct 18, 2013 at 01:58:14PM +0100, Mark Brown wrote:
> Today's linux-next merge of the next-next tree got a conflict in
> include/net/dst.h between e87b3998d (net: dst: provide accessor function
> to dst->xfrm) in the net tree and a4023dd01 (dst.h: Remove extern from
> function prototypes) in net-next.
>
> I've fixed up as below and can carry as required.
>
> diff --cc include/net/dst.h
> index 3c4c944,211dcf1..0000000
> --- a/include/net/dst.h
> +++ b/include/net/dst.h
> @@@ -479,22 -478,10 +478,22 @@@ static inline struct dst_entry *xfrm_lo
> {
> return dst_orig;
> }
> +
> +static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst)
> +{
> + return NULL;
> +}
> +
> #else
> - extern struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
> - const struct flowi *fl, struct sock *sk,
> - int flags);
> + struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
> + const struct flowi *fl, struct sock *sk,
> + int flags);
> +
> +/* skb attached with this dst needs transformation if dst->xfrm is valid */
> +static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst)
> +{
> + return dst->xfrm;
> +}
> #endif
>
> #endif /* _NET_DST_H */
Looks correct to me.
Thanks!
Neil
^ permalink raw reply [flat|nested] 8+ messages in thread
* linux-next: manual merge of the net-next tree
@ 2013-10-18 12:58 Mark Brown
2013-10-18 13:08 ` Neil Horman
2013-10-18 14:39 ` Vlad Yasevich
0 siblings, 2 replies; 8+ messages in thread
From: Mark Brown @ 2013-10-18 12:58 UTC (permalink / raw)
To: Vlad Yasevich, Neil Horman, David S. Miller, Joe Perches
Cc: Thierry Reding, linux-next, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1183 bytes --]
Today's linux-next merge of the next-next tree got a conflict in
include/net/dst.h between e87b3998d (net: dst: provide accessor function
to dst->xfrm) in the net tree and a4023dd01 (dst.h: Remove extern from
function prototypes) in net-next.
I've fixed up as below and can carry as required.
diff --cc include/net/dst.h
index 3c4c944,211dcf1..0000000
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@@ -479,22 -478,10 +478,22 @@@ static inline struct dst_entry *xfrm_lo
{
return dst_orig;
}
+
+static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst)
+{
+ return NULL;
+}
+
#else
- extern struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
- const struct flowi *fl, struct sock *sk,
- int flags);
+ struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
+ const struct flowi *fl, struct sock *sk,
+ int flags);
+
+/* skb attached with this dst needs transformation if dst->xfrm is valid */
+static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst)
+{
+ return dst->xfrm;
+}
#endif
#endif /* _NET_DST_H */
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* linux-next: manual merge of the net-next tree
2013-10-08 13:44 linux-next: Tree for Oct 8 Thierry Reding
@ 2013-10-08 13:44 ` Thierry Reding
0 siblings, 0 replies; 8+ messages in thread
From: Thierry Reding @ 2013-10-08 13:44 UTC (permalink / raw)
To: David S. Miller, Michael S. Tsirkin, Joe Perches; +Cc: linux-next, linux-kernel
Today's linux-next merge of the net-next tree got a conflict in:
include/linux/netdevice.h
caused by commits 3573540 (netif_set_xps_queue: make cpu mask const) and
f629d20 ([networking]device.h: Remove extern from function prototypes).
I fixed it up (see below). Please verify that the resolution looks
correct.
Thanks,
Thierry
---
diff --cc include/linux/netdevice.h
index 25f5d2d,6d77e0f..2e53b44
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@@ -2264,12 -2273,11 +2273,11 @@@ static inline void netif_wake_subqueue(
}
#ifdef CONFIG_XPS
- extern int netif_set_xps_queue(struct net_device *dev,
- const struct cpumask *mask,
- u16 index);
-int netif_set_xps_queue(struct net_device *dev, struct cpumask *mask,
++int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask,
+ u16 index);
#else
static inline int netif_set_xps_queue(struct net_device *dev,
- struct cpumask *mask,
+ const struct cpumask *mask,
u16 index)
{
return 0;
^ permalink raw reply [flat|nested] 8+ messages in thread
* linux-next: manual merge of the net-next tree
2013-10-01 11:03 linux-next: Tree for Oct 1 Thierry Reding
@ 2013-10-01 11:07 ` Thierry Reding
0 siblings, 0 replies; 8+ messages in thread
From: Thierry Reding @ 2013-10-01 11:07 UTC (permalink / raw)
To: David S. Miller, Brett Rudley, Arend van Spriel,
Franky (Zhenhui) Lin, Hante Meuleman
Cc: linux-next, linux-kernel
Today's linux-next merge of the net-next tree got conflicts in
arch/h8300/include/uapi/asm/socket.h
drivers/net/usb/qmi_wwan.c
drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
include/net/secure_seq.h
I removed the h8300 file and fixed up the other three (see below).
Please check if the resolution looks correct.
Thanks,
Thierry
---
diff --cc drivers/net/usb/qmi_wwan.c
index 3d6aaf7,0e59f9e..d03b6b6
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@@ -714,7 -729,8 +729,8 @@@ static const struct usb_device_id produ
{QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */
{QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */
{QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */
+ {QMI_FIXED_INTF(0x1bc7, 0x1201, 2)}, /* Telit LE920 */
- {QMI_FIXED_INTF(0x1e2d, 0x12d1, 4)}, /* Cinterion PLxx */
+ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */
/* 4. Gobi 1000 devices */
{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
diff --cc drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
index 74156f8,5bc0276..7f1340d
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
@@@ -132,35 -132,33 +132,34 @@@ struct pktq *brcmf_bus_gettxq(struct br
* interface functions from common layer
*/
- extern bool brcmf_c_prec_enq(struct device *dev, struct pktq *q,
- struct sk_buff *pkt, int prec);
+ bool brcmf_c_prec_enq(struct device *dev, struct pktq *q, struct sk_buff *pkt,
+ int prec);
/* Receive frame for delivery to OS. Callee disposes of rxp. */
- extern void brcmf_rx_frames(struct device *dev, struct sk_buff_head *rxlist);
+ void brcmf_rx_frames(struct device *dev, struct sk_buff_head *rxlist);
/* Indication from bus module regarding presence/insertion of dongle. */
- extern int brcmf_attach(uint bus_hdrlen, struct device *dev);
+ int brcmf_attach(uint bus_hdrlen, struct device *dev);
/* Indication from bus module regarding removal/absence of dongle */
- extern void brcmf_detach(struct device *dev);
+ void brcmf_detach(struct device *dev);
/* Indication from bus module that dongle should be reset */
- extern void brcmf_dev_reset(struct device *dev);
+ void brcmf_dev_reset(struct device *dev);
/* Indication from bus module to change flow-control state */
- extern void brcmf_txflowblock(struct device *dev, bool state);
+ void brcmf_txflowblock(struct device *dev, bool state);
/* Notify the bus has transferred the tx packet to firmware */
- extern void brcmf_txcomplete(struct device *dev, struct sk_buff *txp,
- bool success);
+ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
- extern int brcmf_bus_start(struct device *dev);
+ int brcmf_bus_start(struct device *dev);
#ifdef CONFIG_BRCMFMAC_SDIO
- extern void brcmf_sdio_exit(void);
- extern void brcmf_sdio_init(void);
- extern void brcmf_sdio_register(void);
+ void brcmf_sdio_exit(void);
+ void brcmf_sdio_init(void);
++void brcmf_sdio_register(void);
#endif
#ifdef CONFIG_BRCMFMAC_USB
- extern void brcmf_usb_exit(void);
- extern void brcmf_usb_register(void);
+ void brcmf_usb_exit(void);
-void brcmf_usb_init(void);
++void brcmf_usb_register(void);
#endif
#endif /* _BRCMF_BUS_H_ */
diff --cc include/net/secure_seq.h
index c2e542b,52c1a90..f257486
--- a/include/net/secure_seq.h
+++ b/include/net/secure_seq.h
@@@ -3,18 -3,19 +3,18 @@@
#include <linux/types.h>
- extern __u32 secure_ip_id(__be32 daddr);
- extern __u32 secure_ipv6_id(const __be32 daddr[4]);
- extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
- extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
- __be16 dport);
- extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
- __be16 sport, __be16 dport);
- extern __u32 secure_tcpv6_sequence_number(const __be32 *saddr, const __be32 *daddr,
- __be16 sport, __be16 dport);
- extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
- __be16 sport, __be16 dport);
- extern u64 secure_dccpv6_sequence_number(__be32 *saddr, __be32 *daddr,
- __be16 sport, __be16 dport);
-void net_secret_init(void);
+ __u32 secure_ip_id(__be32 daddr);
+ __u32 secure_ipv6_id(const __be32 daddr[4]);
+ u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
+ u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
+ __be16 dport);
+ __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
+ __be16 sport, __be16 dport);
+ __u32 secure_tcpv6_sequence_number(const __be32 *saddr, const __be32 *daddr,
+ __be16 sport, __be16 dport);
+ u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
+ __be16 sport, __be16 dport);
+ u64 secure_dccpv6_sequence_number(__be32 *saddr, __be32 *daddr,
+ __be16 sport, __be16 dport);
#endif /* _NET_SECURE_SEQ */
^ permalink raw reply [flat|nested] 8+ messages in thread
* linux-next: manual merge of the net-next tree
2013-09-30 11:26 linux-next: manual merge of the bcon tree Thierry Reding
@ 2013-09-30 11:26 ` Thierry Reding
0 siblings, 0 replies; 8+ messages in thread
From: Thierry Reding @ 2013-09-30 11:26 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, linux-next, linux-kernel
Today's linux-next merge of the net-next tree got conflicts in
arch/h8300/include/uapi/asm/socket.h
drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
include/net/secure_seq.h
I removed the h8300 file and I fixed up the other two (see below). Please
check if the resolution looks correct.
Thanks,
Thierry
---
diff --cc drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
index 74156f8,5bc0276..7f1340d
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
@@@ -132,35 -132,33 +132,34 @@@ struct pktq *brcmf_bus_gettxq(struct br
* interface functions from common layer
*/
- extern bool brcmf_c_prec_enq(struct device *dev, struct pktq *q,
- struct sk_buff *pkt, int prec);
+ bool brcmf_c_prec_enq(struct device *dev, struct pktq *q, struct sk_buff *pkt,
+ int prec);
/* Receive frame for delivery to OS. Callee disposes of rxp. */
- extern void brcmf_rx_frames(struct device *dev, struct sk_buff_head *rxlist);
+ void brcmf_rx_frames(struct device *dev, struct sk_buff_head *rxlist);
/* Indication from bus module regarding presence/insertion of dongle. */
- extern int brcmf_attach(uint bus_hdrlen, struct device *dev);
+ int brcmf_attach(uint bus_hdrlen, struct device *dev);
/* Indication from bus module regarding removal/absence of dongle */
- extern void brcmf_detach(struct device *dev);
+ void brcmf_detach(struct device *dev);
/* Indication from bus module that dongle should be reset */
- extern void brcmf_dev_reset(struct device *dev);
+ void brcmf_dev_reset(struct device *dev);
/* Indication from bus module to change flow-control state */
- extern void brcmf_txflowblock(struct device *dev, bool state);
+ void brcmf_txflowblock(struct device *dev, bool state);
/* Notify the bus has transferred the tx packet to firmware */
- extern void brcmf_txcomplete(struct device *dev, struct sk_buff *txp,
- bool success);
+ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
- extern int brcmf_bus_start(struct device *dev);
+ int brcmf_bus_start(struct device *dev);
#ifdef CONFIG_BRCMFMAC_SDIO
- extern void brcmf_sdio_exit(void);
- extern void brcmf_sdio_init(void);
- extern void brcmf_sdio_register(void);
+ void brcmf_sdio_exit(void);
+ void brcmf_sdio_init(void);
++void brcmf_sdio_register(void);
#endif
#ifdef CONFIG_BRCMFMAC_USB
- extern void brcmf_usb_exit(void);
- extern void brcmf_usb_register(void);
+ void brcmf_usb_exit(void);
-void brcmf_usb_init(void);
++void brcmf_usb_register(void);
#endif
#endif /* _BRCMF_BUS_H_ */
diff --cc include/net/secure_seq.h
index c2e542b,52c1a90..f257486
--- a/include/net/secure_seq.h
+++ b/include/net/secure_seq.h
@@@ -3,18 -3,19 +3,18 @@@
#include <linux/types.h>
- extern __u32 secure_ip_id(__be32 daddr);
- extern __u32 secure_ipv6_id(const __be32 daddr[4]);
- extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
- extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
- __be16 dport);
- extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
- __be16 sport, __be16 dport);
- extern __u32 secure_tcpv6_sequence_number(const __be32 *saddr, const __be32 *daddr,
- __be16 sport, __be16 dport);
- extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
- __be16 sport, __be16 dport);
- extern u64 secure_dccpv6_sequence_number(__be32 *saddr, __be32 *daddr,
- __be16 sport, __be16 dport);
-void net_secret_init(void);
+ __u32 secure_ip_id(__be32 daddr);
+ __u32 secure_ipv6_id(const __be32 daddr[4]);
+ u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
+ u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
+ __be16 dport);
+ __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
+ __be16 sport, __be16 dport);
+ __u32 secure_tcpv6_sequence_number(const __be32 *saddr, const __be32 *daddr,
+ __be16 sport, __be16 dport);
+ u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
+ __be16 sport, __be16 dport);
+ u64 secure_dccpv6_sequence_number(__be32 *saddr, __be32 *daddr,
+ __be16 sport, __be16 dport);
#endif /* _NET_SECURE_SEQ */
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-10-22 15:10 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-18 13:05 linux-next: manual merge of the net-next tree Mark Brown
-- strict thread matches above, loose matches on Subject: below --
2013-10-21 15:36 linux-next: Tree for Oct 21 Thierry Reding
2013-10-22 15:10 ` linux-next: manual merge of the net-next tree Thierry Reding
2013-10-18 12:58 Mark Brown
2013-10-18 13:08 ` Neil Horman
2013-10-18 14:39 ` Vlad Yasevich
2013-10-08 13:44 linux-next: Tree for Oct 8 Thierry Reding
2013-10-08 13:44 ` linux-next: manual merge of the net-next tree Thierry Reding
2013-10-01 11:03 linux-next: Tree for Oct 1 Thierry Reding
2013-10-01 11:07 ` linux-next: manual merge of the net-next tree Thierry Reding
2013-09-30 11:26 linux-next: manual merge of the bcon tree Thierry Reding
2013-09-30 11:26 ` linux-next: manual merge of the net-next tree Thierry Reding
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).