Skip to content

Commit

Permalink
nfp: calculate total port lanes for split
Browse files Browse the repository at this point in the history
For port splitting we will need to know the total number of lanes
in a port.  Calculate that based on eth_table information.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jakub Kicinski authored and David S. Miller committed May 26, 2017
1 parent 53e7a08 commit f0b8119
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
3 changes: 3 additions & 0 deletions drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ enum nfp_eth_aneg {
* @override_changed: is media reconfig pending?
*
* @port_type: one of %PORT_* defines for ethtool
* @port_lanes: total number of lanes on the port (sum of lanes of all subports)
* @is_split: is interface part of a split port
*/
struct nfp_eth_table {
Expand Down Expand Up @@ -127,6 +128,8 @@ struct nfp_eth_table {
/* Computed fields */
u8 port_type;

unsigned int port_lanes;

bool is_split;
} ports[0];
};
Expand Down
11 changes: 6 additions & 5 deletions drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,17 +186,19 @@ nfp_eth_port_translate(struct nfp_nsp *nsp, const union eth_table_entry *src,
}

static void
nfp_eth_mark_split_ports(struct nfp_cpp *cpp, struct nfp_eth_table *table)
nfp_eth_calc_port_geometry(struct nfp_cpp *cpp, struct nfp_eth_table *table)
{
unsigned int i, j;

for (i = 0; i < table->count; i++)
for (j = 0; j < table->count; j++) {
if (i == j)
continue;
if (table->ports[i].label_port !=
table->ports[j].label_port)
continue;
table->ports[i].port_lanes += table->ports[j].lanes;

if (i == j)
continue;
if (table->ports[i].label_subport ==
table->ports[j].label_subport)
nfp_warn(cpp,
Expand All @@ -205,7 +207,6 @@ nfp_eth_mark_split_ports(struct nfp_cpp *cpp, struct nfp_eth_table *table)
table->ports[i].label_subport);

table->ports[i].is_split = true;
break;
}
}

Expand Down Expand Up @@ -289,7 +290,7 @@ __nfp_eth_read_ports(struct nfp_cpp *cpp, struct nfp_nsp *nsp)
nfp_eth_port_translate(nsp, &entries[i], i,
&table->ports[j++]);

nfp_eth_mark_split_ports(cpp, table);
nfp_eth_calc_port_geometry(cpp, table);
for (i = 0; i < table->count; i++)
nfp_eth_calc_port_type(cpp, &table->ports[i]);

Expand Down

0 comments on commit f0b8119

Please sign in to comment.