Re: [PATCH v2 1/2] netdev: driver: ethernet: add cpsw address lookup engine support
From: Joe Perches <joe@perches.com>
Date: 2012-02-20 22:37:34
On Tue, 2012-02-21 at 00:07 +0530, Mugunthan V N wrote:
TI CPSW ethernet switch has a built-in address lookup engine. This patch adds the code necessary for programming this module.
just some style notes.
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/ti/cpsw_ale.c b/drivers/net/ethernet/ti/cpsw_ale.c
[]
quoted hunk ↗ jump to hunk
+struct ale_control_info { + const char *name; + int offset, port_offset; + int shift, port_shift; + int bits; +}; + +#define CTRL_GLOBAL(name, bit) {#name, ALE_CONTROL, 0, bit, 0, 1} +#define CTRL_UNK(name, shift, bits) {#name, ALE_UNKNOWNVLAN, 0, shift, \ + 0, bits} +#define CTRL_PORTCTL(name, start, bits) {#name, ALE_PORTCTL, 4, start, 0, bits}
named initializers might be more readable, embedding the index might be too. []
quoted hunk ↗ jump to hunk
+struct cpsw_ale *cpsw_ale_create(struct cpsw_ale_params *params) +{ + struct cpsw_ale *ale; + int ret; + + ret = -ENOMEM; + ale = kzalloc(sizeof(*ale), GFP_KERNEL); + if (WARN_ON(!ale)) + return NULL;
The WARN_ON is unnecessary. alloc failures get a dump_stack.
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/ti/cpsw_ale.h b/drivers/net/ethernet/ti/cpsw_ale.h
[]
quoted hunk ↗ jump to hunk
+struct cpsw_ale { + struct cpsw_ale_params params; + struct timer_list timer; + unsigned long ageout; + struct device_attribute ale_control_attr; +#define control_attr_to_ale(attr) \ + container_of(attr, struct cpsw_ale, ale_control_attr); + struct device_attribute ale_table_attr; +#define table_attr_to_ale(attr) \ + container_of(attr, struct cpsw_ale, ale_table_attr); +};
Embedding the #defines in a struct makes it difficult to read.
Perhaps this is simpler:
struct cpsw_ale {
struct cpsw_ale_params params;
struct timer_list timer;
unsigned long ageout;
struct device_attribute ale_control_attr;
struct device_attribute ale_table_attr;
};
#define control_attr_to_ale(attr) \
container_of(attr, struct cpsw_ale, ale_control_attr);
#define table_attr_to_ale(attr) \
container_of(attr, struct cpsw_ale, ale_table_attr);