rt2x00: Optimize get_duration / get_duration_res
We can optimize get_duration and get_duration_res by making them a macro. They are really simple calculation handlers so this doesn't matter much. Often (especially in rt2400pci and rt2500pci, the arguments are hardcoded, and the result value is passed into other hardcoded values. By making the functions a macro GCC can optimize the entire thing much better. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
87c1687d1a
commit
bad13639a3
@@ -327,7 +327,7 @@ static void rt2500pci_config_intf(struct rt2x00_dev *rt2x00dev,
|
||||
/*
|
||||
* Enable beacon config
|
||||
*/
|
||||
bcn_preload = PREAMBLE + get_duration(IEEE80211_HEADER, 20);
|
||||
bcn_preload = PREAMBLE + GET_DURATION(IEEE80211_HEADER, 20);
|
||||
rt2x00pci_register_read(rt2x00dev, BCNCSR1, ®);
|
||||
rt2x00_set_field32(®, BCNCSR1_PRELOAD, bcn_preload);
|
||||
rt2x00_set_field32(®, BCNCSR1_BEACON_CWMIN, queue->cw_min);
|
||||
@@ -373,25 +373,25 @@ static void rt2500pci_config_erp(struct rt2x00_dev *rt2x00dev,
|
||||
rt2x00pci_register_read(rt2x00dev, ARCSR2, ®);
|
||||
rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00);
|
||||
rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04);
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10));
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, GET_DURATION(ACK_SIZE, 10));
|
||||
rt2x00pci_register_write(rt2x00dev, ARCSR2, reg);
|
||||
|
||||
rt2x00pci_register_read(rt2x00dev, ARCSR3, ®);
|
||||
rt2x00_set_field32(®, ARCSR3_SIGNAL, 0x01 | preamble_mask);
|
||||
rt2x00_set_field32(®, ARCSR3_SERVICE, 0x04);
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 20));
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, GET_DURATION(ACK_SIZE, 20));
|
||||
rt2x00pci_register_write(rt2x00dev, ARCSR3, reg);
|
||||
|
||||
rt2x00pci_register_read(rt2x00dev, ARCSR4, ®);
|
||||
rt2x00_set_field32(®, ARCSR4_SIGNAL, 0x02 | preamble_mask);
|
||||
rt2x00_set_field32(®, ARCSR4_SERVICE, 0x04);
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 55));
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, GET_DURATION(ACK_SIZE, 55));
|
||||
rt2x00pci_register_write(rt2x00dev, ARCSR4, reg);
|
||||
|
||||
rt2x00pci_register_read(rt2x00dev, ARCSR5, ®);
|
||||
rt2x00_set_field32(®, ARCSR5_SIGNAL, 0x03 | preamble_mask);
|
||||
rt2x00_set_field32(®, ARCSR5_SERVICE, 0x84);
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 110));
|
||||
rt2x00_set_field32(®, ARCSR2_LENGTH, GET_DURATION(ACK_SIZE, 110));
|
||||
rt2x00pci_register_write(rt2x00dev, ARCSR5, reg);
|
||||
|
||||
rt2x00pci_register_write(rt2x00dev, ARCSR1, erp->basic_rates);
|
||||
|
Reference in New Issue
Block a user