mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
cxgb4: Rename sched_class to avoid type clash
drivers/net/ethernet/chelsio/cxgb4/sched.h declares a sched_class struct which has a type name clash with struct sched_class in kernel/sched/sched.h (a type used in a field in task_struct). When cxgb4 is a builtin we end up with both sched_class types, and as a result of this we wind up with DWARF (and derived from that BTF) with a duplicate incorrect task_struct representation. When cxgb4 is built-in this type clash can cause kernel builds to fail as resolve_btfids will fail when confused which task_struct to use. See [1] for more details. As such, renaming sched_class to ch_sched_class (in line with other structs like ch_sched_flowc) makes sense. [1] https://lore.kernel.org/bpf/2412725b-916c-47bd-91c3-c2d57e3e6c7b@acm.org/ Reported-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Alan Maguire <alan.maguire@oracle.com> Acked-by: Potnuri Bharat Teja <bharat@chelsio.com> Link: https://patch.msgid.link/20251121181231.64337-1-alan.maguire@oracle.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
d6eea0048b
commit
380d19db6e
|
|
@ -3485,7 +3485,7 @@ static int cxgb_set_tx_maxrate(struct net_device *dev, int index, u32 rate)
|
|||
struct adapter *adap = pi->adapter;
|
||||
struct ch_sched_queue qe = { 0 };
|
||||
struct ch_sched_params p = { 0 };
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
u32 req_rate;
|
||||
int err = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ static int cxgb4_matchall_egress_validate(struct net_device *dev,
|
|||
struct port_info *pi = netdev2pinfo(dev);
|
||||
struct flow_action_entry *entry;
|
||||
struct ch_sched_queue qe;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
u64 max_link_rate;
|
||||
u32 i, speed;
|
||||
int ret;
|
||||
|
|
@ -180,7 +180,7 @@ static int cxgb4_matchall_alloc_tc(struct net_device *dev,
|
|||
struct port_info *pi = netdev2pinfo(dev);
|
||||
struct adapter *adap = netdev2adap(dev);
|
||||
struct flow_action_entry *entry;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
int ret;
|
||||
u32 i;
|
||||
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ static int cxgb4_mqprio_alloc_tc(struct net_device *dev,
|
|||
struct cxgb4_tc_port_mqprio *tc_port_mqprio;
|
||||
struct port_info *pi = netdev2pinfo(dev);
|
||||
struct adapter *adap = netdev2adap(dev);
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
int ret;
|
||||
u8 i;
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ static int t4_sched_class_fw_cmd(struct port_info *pi,
|
|||
{
|
||||
struct adapter *adap = pi->adapter;
|
||||
struct sched_table *s = pi->sched_tbl;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
int err = 0;
|
||||
|
||||
e = &s->tab[p->u.params.class];
|
||||
|
|
@ -122,7 +122,7 @@ static void *t4_sched_entry_lookup(struct port_info *pi,
|
|||
const u32 val)
|
||||
{
|
||||
struct sched_table *s = pi->sched_tbl;
|
||||
struct sched_class *e, *end;
|
||||
struct ch_sched_class *e, *end;
|
||||
void *found = NULL;
|
||||
|
||||
/* Look for an entry with matching @val */
|
||||
|
|
@ -166,8 +166,8 @@ static void *t4_sched_entry_lookup(struct port_info *pi,
|
|||
return found;
|
||||
}
|
||||
|
||||
struct sched_class *cxgb4_sched_queue_lookup(struct net_device *dev,
|
||||
struct ch_sched_queue *p)
|
||||
struct ch_sched_class *cxgb4_sched_queue_lookup(struct net_device *dev,
|
||||
struct ch_sched_queue *p)
|
||||
{
|
||||
struct port_info *pi = netdev2pinfo(dev);
|
||||
struct sched_queue_entry *qe = NULL;
|
||||
|
|
@ -187,7 +187,7 @@ static int t4_sched_queue_unbind(struct port_info *pi, struct ch_sched_queue *p)
|
|||
struct sched_queue_entry *qe = NULL;
|
||||
struct adapter *adap = pi->adapter;
|
||||
struct sge_eth_txq *txq;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
int err = 0;
|
||||
|
||||
if (p->queue < 0 || p->queue >= pi->nqsets)
|
||||
|
|
@ -218,7 +218,7 @@ static int t4_sched_queue_bind(struct port_info *pi, struct ch_sched_queue *p)
|
|||
struct sched_queue_entry *qe = NULL;
|
||||
struct adapter *adap = pi->adapter;
|
||||
struct sge_eth_txq *txq;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
unsigned int qid;
|
||||
int err = 0;
|
||||
|
||||
|
|
@ -260,7 +260,7 @@ static int t4_sched_flowc_unbind(struct port_info *pi, struct ch_sched_flowc *p)
|
|||
{
|
||||
struct sched_flowc_entry *fe = NULL;
|
||||
struct adapter *adap = pi->adapter;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
int err = 0;
|
||||
|
||||
if (p->tid < 0 || p->tid >= adap->tids.neotids)
|
||||
|
|
@ -288,7 +288,7 @@ static int t4_sched_flowc_bind(struct port_info *pi, struct ch_sched_flowc *p)
|
|||
struct sched_table *s = pi->sched_tbl;
|
||||
struct sched_flowc_entry *fe = NULL;
|
||||
struct adapter *adap = pi->adapter;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
int err = 0;
|
||||
|
||||
if (p->tid < 0 || p->tid >= adap->tids.neotids)
|
||||
|
|
@ -322,7 +322,7 @@ static int t4_sched_flowc_bind(struct port_info *pi, struct ch_sched_flowc *p)
|
|||
}
|
||||
|
||||
static void t4_sched_class_unbind_all(struct port_info *pi,
|
||||
struct sched_class *e,
|
||||
struct ch_sched_class *e,
|
||||
enum sched_bind_type type)
|
||||
{
|
||||
if (!e)
|
||||
|
|
@ -476,12 +476,12 @@ int cxgb4_sched_class_unbind(struct net_device *dev, void *arg,
|
|||
}
|
||||
|
||||
/* If @p is NULL, fetch any available unused class */
|
||||
static struct sched_class *t4_sched_class_lookup(struct port_info *pi,
|
||||
const struct ch_sched_params *p)
|
||||
static struct ch_sched_class *t4_sched_class_lookup(struct port_info *pi,
|
||||
const struct ch_sched_params *p)
|
||||
{
|
||||
struct sched_table *s = pi->sched_tbl;
|
||||
struct sched_class *found = NULL;
|
||||
struct sched_class *e, *end;
|
||||
struct ch_sched_class *found = NULL;
|
||||
struct ch_sched_class *e, *end;
|
||||
|
||||
if (!p) {
|
||||
/* Get any available unused class */
|
||||
|
|
@ -522,10 +522,10 @@ static struct sched_class *t4_sched_class_lookup(struct port_info *pi,
|
|||
return found;
|
||||
}
|
||||
|
||||
static struct sched_class *t4_sched_class_alloc(struct port_info *pi,
|
||||
struct ch_sched_params *p)
|
||||
static struct ch_sched_class *t4_sched_class_alloc(struct port_info *pi,
|
||||
struct ch_sched_params *p)
|
||||
{
|
||||
struct sched_class *e = NULL;
|
||||
struct ch_sched_class *e = NULL;
|
||||
u8 class_id;
|
||||
int err;
|
||||
|
||||
|
|
@ -579,8 +579,8 @@ static struct sched_class *t4_sched_class_alloc(struct port_info *pi,
|
|||
* scheduling class with matching @p is found, then the matching class is
|
||||
* returned.
|
||||
*/
|
||||
struct sched_class *cxgb4_sched_class_alloc(struct net_device *dev,
|
||||
struct ch_sched_params *p)
|
||||
struct ch_sched_class *cxgb4_sched_class_alloc(struct net_device *dev,
|
||||
struct ch_sched_params *p)
|
||||
{
|
||||
struct port_info *pi = netdev2pinfo(dev);
|
||||
u8 class_id;
|
||||
|
|
@ -607,7 +607,7 @@ void cxgb4_sched_class_free(struct net_device *dev, u8 classid)
|
|||
struct port_info *pi = netdev2pinfo(dev);
|
||||
struct sched_table *s = pi->sched_tbl;
|
||||
struct ch_sched_params p;
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
u32 speed;
|
||||
int ret;
|
||||
|
||||
|
|
@ -640,7 +640,7 @@ void cxgb4_sched_class_free(struct net_device *dev, u8 classid)
|
|||
}
|
||||
}
|
||||
|
||||
static void t4_sched_class_free(struct net_device *dev, struct sched_class *e)
|
||||
static void t4_sched_class_free(struct net_device *dev, struct ch_sched_class *e)
|
||||
{
|
||||
struct port_info *pi = netdev2pinfo(dev);
|
||||
|
||||
|
|
@ -660,7 +660,7 @@ struct sched_table *t4_init_sched(unsigned int sched_size)
|
|||
s->sched_size = sched_size;
|
||||
|
||||
for (i = 0; i < s->sched_size; i++) {
|
||||
memset(&s->tab[i], 0, sizeof(struct sched_class));
|
||||
memset(&s->tab[i], 0, sizeof(struct ch_sched_class));
|
||||
s->tab[i].idx = i;
|
||||
s->tab[i].state = SCHED_STATE_UNUSED;
|
||||
INIT_LIST_HEAD(&s->tab[i].entry_list);
|
||||
|
|
@ -682,7 +682,7 @@ void t4_cleanup_sched(struct adapter *adap)
|
|||
continue;
|
||||
|
||||
for (i = 0; i < s->sched_size; i++) {
|
||||
struct sched_class *e;
|
||||
struct ch_sched_class *e;
|
||||
|
||||
e = &s->tab[i];
|
||||
if (e->state == SCHED_STATE_ACTIVE)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ struct sched_flowc_entry {
|
|||
struct ch_sched_flowc param;
|
||||
};
|
||||
|
||||
struct sched_class {
|
||||
struct ch_sched_class {
|
||||
u8 state;
|
||||
u8 idx;
|
||||
struct ch_sched_params info;
|
||||
|
|
@ -82,7 +82,7 @@ struct sched_class {
|
|||
|
||||
struct sched_table { /* per port scheduling table */
|
||||
u8 sched_size;
|
||||
struct sched_class tab[] __counted_by(sched_size);
|
||||
struct ch_sched_class tab[] __counted_by(sched_size);
|
||||
};
|
||||
|
||||
static inline bool can_sched(struct net_device *dev)
|
||||
|
|
@ -103,15 +103,15 @@ static inline bool valid_class_id(struct net_device *dev, u8 class_id)
|
|||
return true;
|
||||
}
|
||||
|
||||
struct sched_class *cxgb4_sched_queue_lookup(struct net_device *dev,
|
||||
struct ch_sched_queue *p);
|
||||
struct ch_sched_class *cxgb4_sched_queue_lookup(struct net_device *dev,
|
||||
struct ch_sched_queue *p);
|
||||
int cxgb4_sched_class_bind(struct net_device *dev, void *arg,
|
||||
enum sched_bind_type type);
|
||||
int cxgb4_sched_class_unbind(struct net_device *dev, void *arg,
|
||||
enum sched_bind_type type);
|
||||
|
||||
struct sched_class *cxgb4_sched_class_alloc(struct net_device *dev,
|
||||
struct ch_sched_params *p);
|
||||
struct ch_sched_class *cxgb4_sched_class_alloc(struct net_device *dev,
|
||||
struct ch_sched_params *p);
|
||||
void cxgb4_sched_class_free(struct net_device *dev, u8 classid);
|
||||
|
||||
struct sched_table *t4_init_sched(unsigned int size);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user