Message ID | 1323150288-28153-3-git-send-email-mchan@broadcom.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
From: "Michael Chan" <mchan@broadcom.com> Date: Mon, 5 Dec 2011 21:44:47 -0800 > + /* traverse list */ > + list_for_each_entry(pos, &o->head, link) > + { Put openning "{" at end of list_for_each_entry(), rather than on a new line. > + if ((counter < n)) { Excessive parenthesis, remove. > + memcpy(next + MAC_LEADING_ZERO_CNT, > + pos->u.mac.mac, ETH_ALEN); Paremeters on subsequent lines don't line up properly. > + next = buf + counter * ALIGN(ETH_ALEN, > + sizeof(u32)); Likewise. > + DP(BNX2X_MSG_SP, "copied element number " > + "%d to address %p element was " > + "%pM\n", counter, next, pos->u.mac.mac); Likewise. > + int (*get_n_elements)(struct bnx2x *bp, > + struct bnx2x_vlan_mac_obj *o, > + int n, > + u8 *buf); > + Likewise. Sigh. Definitely a new-comer wrote this code, but I know more experienced hands reviewed it, therefore I am disappointed. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Miller wrote: > > Sigh. > > Definitely a new-comer wrote this code, but I know more experienced > hands > reviewed it, therefore I am disappointed. Sorry, I'll fix everything up and re-send. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2011-12-06 at 00:46 -0500, David Miller wrote: > > + DP(BNX2X_MSG_SP, "copied element number " > > + "%d to address %p element was " > > + "%pM\n", counter, next, pos->u.mac.mac); > > Likewise. Ideally, the format should be coalesced as well. DP(BNX2X_MSG_SP, "copied element number %d to address %p - element was %pM\n", counter, next, pos->u.mac.mac); -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c index a34362e..da377d1 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c @@ -30,6 +30,8 @@ #define BNX2X_MAX_EMUL_MULTI 16 +#define MAC_LEADING_ZERO_CNT (ALIGN(ETH_ALEN, sizeof(u32)) - ETH_ALEN) + /**** Exe Queue interfaces ****/ /** @@ -441,6 +443,42 @@ static bool bnx2x_put_credit_vlan_mac(struct bnx2x_vlan_mac_obj *o) return true; } +static int bnx2x_get_n_elements(struct bnx2x *bp, + struct bnx2x_vlan_mac_obj *o, + int n, + u8 *buf) +{ + struct bnx2x_vlan_mac_registry_elem *pos; + u8 *next = buf; + int counter = 0; + + /* traverse list */ + list_for_each_entry(pos, &o->head, link) + { + if ((counter < n)) { + + /* place leading zeroes in buffer */ + memset(next, 0, MAC_LEADING_ZERO_CNT); + + /* place mac after leading zeroes*/ + memcpy(next + MAC_LEADING_ZERO_CNT, + pos->u.mac.mac, ETH_ALEN); + + /* calculate address of next element and + * advance counter + */ + counter++; + next = buf + counter * ALIGN(ETH_ALEN, + sizeof(u32)); + + DP(BNX2X_MSG_SP, "copied element number " + "%d to address %p element was " + "%pM\n", counter, next, pos->u.mac.mac); + } + } + return counter * ETH_ALEN; +} + /* check_add() callbacks */ static int bnx2x_check_mac_add(struct bnx2x_vlan_mac_obj *o, union bnx2x_classification_ramrod_data *data) @@ -1886,6 +1924,7 @@ void bnx2x_init_mac_obj(struct bnx2x *bp, mac_obj->check_move = bnx2x_check_move; mac_obj->ramrod_cmd = RAMROD_CMD_ID_ETH_CLASSIFICATION_RULES; + mac_obj->get_n_elements = bnx2x_get_n_elements; /* Exe Queue */ bnx2x_exe_queue_init(bp, diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h index 9a517c2..bf898fb 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h @@ -286,6 +286,23 @@ struct bnx2x_vlan_mac_obj { int ramrod_cmd; /** + * copy first n elements onto preallocated buffer + * + * @param n number of elements to get + * @param buf buffer preallocated by caller into which elements + * will be copied. Note elements are 4-byte aligned + * so buffer size must be able to accomodate the + * aligned elements. + * + * @return number of copied bytes + * */ + + int (*get_n_elements)(struct bnx2x *bp, + struct bnx2x_vlan_mac_obj *o, + int n, + u8 *buf); + + /** * Checks if ADD-ramrod with the given params may be performed. * * @return zero if the element may be added