mirror of
https://github.com/torvalds/linux
synced 2024-10-25 12:49:03 +00:00
ixgbe: Simplify logic for getting traffic class from user priority
This patch is meant to help simplify the logic for getting traffic classes from user priorities. To do this I am adding a function named ixgbe_dcb_get_tc_from_up that will go through the traffic classes in reverse order in order to determine which traffic class contains a bit for a given user priority. Adding a declaration for this new function to the header so that we have a centralized means for sorting out traffic classes belonging to features such as FCoE. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Tested-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
22a4cca2f4
commit
15cbc70ea2
|
@ -231,16 +231,32 @@ void ixgbe_dcb_unpack_prio(struct ixgbe_dcb_config *cfg, int direction,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u8 ixgbe_dcb_get_tc_from_up(struct ixgbe_dcb_config *cfg,
|
||||||
|
int direction, u8 up)
|
||||||
|
{
|
||||||
|
struct tc_configuration *tc_config = &cfg->tc_config[0];
|
||||||
|
u8 prio_mask = 1 << up;
|
||||||
|
u8 tc;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test for TCs 7 through 1 and report the first match we find. If
|
||||||
|
* we find no match we can assume that the TC is 0 since the TC must
|
||||||
|
* be set for all user priorities
|
||||||
|
*/
|
||||||
|
for (tc = MAX_TRAFFIC_CLASS - 1; tc; tc--) {
|
||||||
|
if (prio_mask & tc_config[tc].path[direction].up_to_tc_bitmap)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tc;
|
||||||
|
}
|
||||||
|
|
||||||
void ixgbe_dcb_unpack_map(struct ixgbe_dcb_config *cfg, int direction, u8 *map)
|
void ixgbe_dcb_unpack_map(struct ixgbe_dcb_config *cfg, int direction, u8 *map)
|
||||||
{
|
{
|
||||||
int i, up;
|
u8 up;
|
||||||
unsigned long bitmap;
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_TRAFFIC_CLASS; i++) {
|
for (up = 0; up < MAX_USER_PRIORITY; up++)
|
||||||
bitmap = cfg->tc_config[i].path[direction].up_to_tc_bitmap;
|
map[up] = ixgbe_dcb_get_tc_from_up(cfg, direction, up);
|
||||||
for_each_set_bit(up, &bitmap, MAX_USER_PRIORITY)
|
|
||||||
map[up] = i;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue