[processor-sdk/pdk.git] / packages / ti / drv / sciclient / soc / sysfw / binaries / system-firmware-public-documentation / 2_tisci_msgs / security / firewall_api.html
3 <!DOCTYPE html>
4 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
6 <head>
7 <meta charset="utf-8">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
11 <title>Firewall TISCI Description — TISCI User Guide</title>
16 <link rel="shortcut icon" href="../../_static/favicon.ico"/>
29 <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
33 <link rel="stylesheet" href="../../_static/theme_overrides.css" type="text/css" />
37 <link rel="index" title="Index"
38 href="../../genindex.html"/>
39 <link rel="search" title="Search" href="../../search.html"/>
40 <link rel="top" title="TISCI User Guide" href="../../index.html"/>
41 <link rel="up" title="Chapter 2: TISCI Message Documentation" href="../index.html"/>
42 <link rel="next" title="Secure AP Command Interface" href="sec_ap_data_transfer.html"/>
43 <link rel="prev" title="Processor Boot Management TISCI Description" href="PROC_BOOT.html"/>
46 <script src="../../_static/js/modernizr.min.js"></script>
48 </head>
50 <body class="wy-body-for-nav" role="document">
51 <header id="tiHeader">
52 <div class="top">
53 <ul>
54 <li id="top_logo">
55 <a href="http://www.ti.com">
56 <img src="../../_static/img/ti_logo.png"/>
57 </a>
58 </li>
59 </ul>
60 </div>
61 <div class="nav"></div>
62 </header>
63 <div class="wy-grid-for-nav">
66 <nav data-toggle="wy-nav-shift" class="wy-nav-side">
67 <div class="wy-side-scroll">
68 <div class="wy-side-nav-search">
72 <a href="../../index.html" class="icon icon-home"> TISCI
76 </a>
84 <div role="search">
85 <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
86 <input type="text" name="q" placeholder="Search docs" />
87 <input type="hidden" name="check_keywords" value="yes" />
88 <input type="hidden" name="area" value="default" />
89 </form>
90 </div>
93 </div>
95 <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
99 <ul class="current">
100 <li class="toctree-l1"><a class="reference internal" href="../../1_intro/index.html">Chapter 1: Introduction</a></li>
101 <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Chapter 2: TISCI Message Documentation</a><ul class="current">
102 <li class="toctree-l2"><a class="reference internal" href="../general/TISCI_header.html">Texas Instruments System Controller Interface (TISCI)</a></li>
103 <li class="toctree-l2"><a class="reference internal" href="../index.html#general">General</a></li>
104 <li class="toctree-l2"><a class="reference internal" href="../index.html#power-management-pm">Power Management (PM)</a></li>
105 <li class="toctree-l2"><a class="reference internal" href="../index.html#resource-management-rm">Resource Management (RM)</a></li>
106 <li class="toctree-l2 current"><a class="reference internal" href="../index.html#secure-management">Secure Management</a><ul class="current">
107 <li class="toctree-l3"><a class="reference internal" href="sec_cert_format.html">Security X509 Certificate Documentation</a></li>
108 <li class="toctree-l3"><a class="reference internal" href="PROC_BOOT.html">Processor Boot Management TISCI Description</a></li>
109 <li class="toctree-l3 current"><a class="current reference internal" href="#">Firewall TISCI Description</a><ul>
110 <li class="toctree-l4"><a class="reference internal" href="#background-information">Background Information</a></li>
111 <li class="toctree-l4"><a class="reference internal" href="#initial-configuration">Initial Configuration</a></li>
112 <li class="toctree-l4"><a class="reference internal" href="#api-description">API Description</a></li>
113 </ul>
114 </li>
115 <li class="toctree-l3"><a class="reference internal" href="sec_ap_data_transfer.html">Secure AP Command Interface</a></li>
116 <li class="toctree-l3"><a class="reference internal" href="runtime_debug.html">Runtime Debug TISCI Description</a></li>
117 <li class="toctree-l3"><a class="reference internal" href="extended_otp.html">Extended OTP TISCI Description</a></li>
118 <li class="toctree-l3"><a class="reference internal" href="dkek_management.html">Derived KEK TISCI Description</a></li>
119 <li class="toctree-l3"><a class="reference internal" href="security_handover.html">Security Handover Message Description</a></li>
120 </ul>
121 </li>
122 </ul>
123 </li>
124 <li class="toctree-l1"><a class="reference internal" href="../../3_boardcfg/index.html">Chapter 3: Board Configuration</a></li>
125 <li class="toctree-l1"><a class="reference internal" href="../../4_trace/index.html">Chapter 4: Interpreting Trace Data</a></li>
126 <li class="toctree-l1"><a class="reference internal" href="../../5_soc_doc/index.html">Chapter 5: SoC Family Specific Documentation</a></li>
127 <li class="toctree-l1"><a class="reference internal" href="../../6_topic_user_guides/index.html">Chapter 6: Topic User Guides</a></li>
128 </ul>
132 </div>
133 </div>
134 </nav>
136 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
139 <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
140 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
141 <a href="../../index.html">TISCI</a>
142 </nav>
146 <div class="wy-nav-content">
147 <div class="rst-content">
154 <div role="navigation" aria-label="breadcrumbs navigation">
155 <ul class="wy-breadcrumbs">
156 <li><a href="../../index.html">Docs</a> »</li>
158 <li><a href="../index.html">Chapter 2: TISCI Message Documentation</a> »</li>
160 <li>Firewall TISCI Description</li>
161 <li class="wy-breadcrumbs-aside">
165 </li>
166 </ul>
167 <hr/>
168 </div>
169 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
170 <div itemprop="articleBody">
172 <div class="section" id="firewall-tisci-description">
173 <h1>Firewall TISCI Description<a class="headerlink" href="#firewall-tisci-description" title="Permalink to this headline">¶</a></h1>
174 <p id="sec-ap-fwl-tisci-desc">This chapter provides information on Firewall API’s provided by system firmware.
175 There are three firewall API as listed below.</p>
176 <table border="1" class="docutils">
177 <colgroup>
178 <col width="23%" />
179 <col width="77%" />
180 </colgroup>
181 <thead valign="bottom">
182 <tr class="row-odd"><th class="head">TISCI Message ID</th>
183 <th class="head">Message Name</th>
184 </tr>
185 </thead>
186 <tbody valign="top">
187 <tr class="row-even"><td>0x9000</td>
188 <td><a class="reference internal" href="#set-firewall-region"><span class="std std-ref">TISCI_MSG_SET_FWL_REGION</span></a>.</td>
189 </tr>
190 <tr class="row-odd"><td>0x9001</td>
191 <td><a class="reference internal" href="#get-firewall-region"><span class="std std-ref">TISCI_MSG_GET_FWL_REGION</span></a>.</td>
192 </tr>
193 <tr class="row-even"><td>0x9002</td>
194 <td><a class="reference internal" href="#change-firewall-owner"><span class="std std-ref">TISCI_MSG_CHANGE_FWL_OWNER</span></a>.</td>
195 </tr>
196 </tbody>
197 </table>
198 <div class="section" id="background-information">
199 <h2>Background Information<a class="headerlink" href="#background-information" title="Permalink to this headline">¶</a></h2>
200 <p>Each firewall in the system is assigned an owner. Ownership is
201 assigned using <cite>Host ID</cite>. Only a owner of a firewall can</p>
202 <ul class="simple">
203 <li>Configure the firewall permissions</li>
204 <li>Query the firewall permissions</li>
205 <li>Transfer the firewall ownership to another owner(host)</li>
206 </ul>
207 </div>
208 <div class="section" id="initial-configuration">
209 <h2>Initial Configuration<a class="headerlink" href="#initial-configuration" title="Permalink to this headline">¶</a></h2>
210 <p>System firmware configures the firewalls in the following manner on startup.</p>
211 <ol class="arabic simple">
212 <li>DMSC internal memories are firewalled. Firewall ownership is assigned to DMSC.</li>
213 <li>Secure proxy and associated resources required for DMSC operation are
214 firewalled. Firewall ownership is assigned to DMSC.</li>
215 <li>All Navss resources not used by DMSC are firewalled and ownership of the
216 firewalls is assigned to Resource Manager(RM). The intent is that RM programs
217 the firewalls for Navss resources based on resource assignment in board
218 configuration.</li>
219 </ol>
220 </div>
221 <div class="section" id="api-description">
222 <h2>API Description<a class="headerlink" href="#api-description" title="Permalink to this headline">¶</a></h2>
223 <div class="section" id="tisci-msg-set-fwl-region-set-firewall-region">
224 <span id="set-firewall-region"></span><h3>TISCI_MSG_SET_FWL_REGION - Set Firewall region<a class="headerlink" href="#tisci-msg-set-fwl-region-set-firewall-region" title="Permalink to this headline">¶</a></h3>
225 <p><strong>Usage</strong>:</p>
226 <table border="1" class="docutils">
227 <colgroup>
228 <col width="75%" />
229 <col width="25%" />
230 </colgroup>
231 <tbody valign="top">
232 <tr class="row-odd"><td><strong>Message Type</strong></td>
233 <td>Normal</td>
234 </tr>
235 <tr class="row-even"><td><strong>Secure Queue Only?</strong></td>
236 <td>No</td>
237 </tr>
238 </tbody>
239 </table>
240 </div>
241 <div class="section" id="tisci-message-id">
242 <h3>TISCI Message ID<a class="headerlink" href="#tisci-message-id" title="Permalink to this headline">¶</a></h3>
243 <p><p><code class="docutils literal"><span class="pre">TISCI_MSG_SET_FWL_REGION</span>          <span class="pre">(0x9000U)</span></code></p>
244 <p>Message to set a firewall region configuration</p>
245 </p>
246 <p><p><strong>struct tisci_msg_fwl_set_firewall_region_req</strong></p>
247 <p>Request for configuring the firewall permissions.</p>
248 <table border="1" class="docutils">
249 <colgroup>
250 <col width="5%" />
251 <col width="6%" />
252 <col width="90%" />
253 </colgroup>
254 <thead valign="bottom">
255 <tr class="row-odd"><th class="head">Parameter</th>
256 <th class="head">Type</th>
257 <th class="head">Description</th>
258 </tr>
259 </thead>
260 <tbody valign="top">
261 <tr class="row-even"><td>hdr</td>
262 <td>struct tisci_header</td>
263 <td>Common TI-SCI header</td>
264 </tr>
265 <tr class="row-odd"><td>fwl_id</td>
266 <td>u16</td>
267 <td>firewall ID in question. fwl_id is defined in the TRM.</td>
268 </tr>
269 <tr class="row-even"><td>region</td>
270 <td>u16</td>
271 <td>Region or channel number to set config info This field is unused in case of a simple firewall and must be initialized to zero. In case of a region based firewall, this field indicates the region in question. (index starting from 0) In case of a channel based firewall, this field indicates the channel in question (index starting from 0)</td>
272 </tr>
273 <tr class="row-odd"><td>n_permission_regs</td>
274 <td>u32</td>
275 <td>Number of permission registers to set</td>
276 </tr>
277 <tr class="row-even"><td>control</td>
278 <td>u32</td>
279 <td>Contents of the firewall CONTROL register to set</td>
280 </tr>
281 <tr class="row-odd"><td>permissions</td>
282 <td>u32</td>
283 <td>Contents of the firewall PERMISSION register to set</td>
284 </tr>
285 <tr class="row-even"><td>start_address</td>
286 <td>soc_phys_addr_t</td>
287 <td>Contents of the firewall START_ADDRESS register to set</td>
288 </tr>
289 <tr class="row-odd"><td>end_address</td>
290 <td>soc_phys_addr_t</td>
291 <td>Contents of the firewall END_ADDRESS register to set</td>
292 </tr>
293 </tbody>
294 </table>
295 </p>
296 <p><p><strong>struct tisci_msg_fwl_set_firewall_region_resp</strong></p>
297 <p>Response for configuring the firewall permissions.</p>
298 <table border="1" class="docutils">
299 <colgroup>
300 <col width="7%" />
301 <col width="11%" />
302 <col width="83%" />
303 </colgroup>
304 <thead valign="bottom">
305 <tr class="row-odd"><th class="head">Parameter</th>
306 <th class="head">Type</th>
307 <th class="head">Description</th>
308 </tr>
309 </thead>
310 <tbody valign="top">
311 <tr class="row-even"><td>hdr</td>
312 <td>struct tisci_header</td>
313 <td>Generic TISCI message header. ACK response indicates that firewall configuration is succesful. NACK response indicates that the configuration was not performed.</td>
314 </tr>
315 </tbody>
316 </table>
317 </p>
318 </div>
319 <div class="section" id="tisci-msg-get-fwl-region-get-firewall-region">
320 <span id="get-firewall-region"></span><h3>TISCI_MSG_GET_FWL_REGION - Get Firewall region<a class="headerlink" href="#tisci-msg-get-fwl-region-get-firewall-region" title="Permalink to this headline">¶</a></h3>
321 <p><strong>Usage</strong>:</p>
322 <table border="1" class="docutils">
323 <colgroup>
324 <col width="75%" />
325 <col width="25%" />
326 </colgroup>
327 <tbody valign="top">
328 <tr class="row-odd"><td><strong>Message Type</strong></td>
329 <td>Normal</td>
330 </tr>
331 <tr class="row-even"><td><strong>Secure Queue Only?</strong></td>
332 <td>No</td>
333 </tr>
334 </tbody>
335 </table>
336 </div>
337 <div class="section" id="id1">
338 <h3>TISCI Message ID<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
339 <p><p><code class="docutils literal"><span class="pre">TISCI_MSG_GET_FWL_REGION</span>          <span class="pre">(0x9001U)</span></code></p>
340 <p>Message to get a firewall region configuration</p>
341 </p>
342 <p><p><strong>struct tisci_msg_fwl_get_firewall_region_req</strong></p>
343 <p>Request for retrieving the firewall permissions.</p>
344 <table border="1" class="docutils">
345 <colgroup>
346 <col width="20%" />
347 <col width="22%" />
348 <col width="58%" />
349 </colgroup>
350 <thead valign="bottom">
351 <tr class="row-odd"><th class="head">Parameter</th>
352 <th class="head">Type</th>
353 <th class="head">Description</th>
354 </tr>
355 </thead>
356 <tbody valign="top">
357 <tr class="row-even"><td>hdr</td>
358 <td>struct tisci_header</td>
359 <td>Generic TISCI message header.</td>
360 </tr>
361 <tr class="row-odd"><td>fwl_id</td>
362 <td>u16</td>
363 <td>firewall ID in question. fwl_id is defined in the TRM.</td>
364 </tr>
365 <tr class="row-even"><td>region</td>
366 <td>u16</td>
367 <td>Region or channel number to set config info</td>
368 </tr>
369 <tr class="row-odd"><td>n_permission_regs</td>
370 <td>u32</td>
371 <td>Number of permission registers to retrieve</td>
372 </tr>
373 </tbody>
374 </table>
375 <p>This field is unused in case of a simple firewall and must be initialized
376 to zero. In case of a region based firewall, this field indicates the
377 region in question (index starting from 0). In case of a channel based
378 firewall, this field indicates the channel in question (index starting
379 from 0).</p>
380 </p>
381 <p><p><strong>struct tisci_msg_fwl_get_firewall_region_resp</strong></p>
382 <p>Response for retrieving the firewall permissions.</p>
383 <table border="1" class="docutils">
384 <colgroup>
385 <col width="5%" />
386 <col width="6%" />
387 <col width="90%" />
388 </colgroup>
389 <thead valign="bottom">
390 <tr class="row-odd"><th class="head">Parameter</th>
391 <th class="head">Type</th>
392 <th class="head">Description</th>
393 </tr>
394 </thead>
395 <tbody valign="top">
396 <tr class="row-even"><td>hdr</td>
397 <td>struct tisci_header</td>
398 <td>Generic TISCI message header. A ACK response in the hdr indicates that the message was processed. successfully. A NACK response indicates failure to retrieve firewall permissions.</td>
399 </tr>
400 <tr class="row-odd"><td>fwl_id</td>
401 <td>u16</td>
402 <td>firewall ID in question. fwl_id is defined in the TRM.</td>
403 </tr>
404 <tr class="row-even"><td>region</td>
405 <td>u16</td>
406 <td>Region or channel number to set config info This field is unused in case of a simple firewall and must be initialized to zero. In case of a region based firewall, this field indicates the region in question. (index starting from 0) In case of a channel based firewall, this field indicates the channel in question (index starting from 0)</td>
407 </tr>
408 <tr class="row-odd"><td>n_permission_regs</td>
409 <td>u32</td>
410 <td>Number of permission registers retrieved</td>
411 </tr>
412 <tr class="row-even"><td>control</td>
413 <td>u32</td>
414 <td>Contents of the firewall CONTROL register</td>
415 </tr>
416 <tr class="row-odd"><td>permissions</td>
417 <td>u32</td>
418 <td>Contents of the firewall PERMISSION registers</td>
419 </tr>
420 <tr class="row-even"><td>start_address</td>
421 <td>soc_phys_addr_t</td>
422 <td>Contents of the firewall START_ADDRESS register This is not applicable for channelized firewalls.</td>
423 </tr>
424 <tr class="row-odd"><td>end_address</td>
425 <td>soc_phys_addr_t</td>
426 <td>Contents of the firewall END_ADDRESS register This is not applicable for channelized firewalls.</td>
427 </tr>
428 </tbody>
429 </table>
430 </p>
431 </div>
432 <div class="section" id="tisci-msg-change-fwl-owner-change-firewall-owner">
433 <span id="change-firewall-owner"></span><h3>TISCI_MSG_CHANGE_FWL_OWNER - Change Firewall Owner<a class="headerlink" href="#tisci-msg-change-fwl-owner-change-firewall-owner" title="Permalink to this headline">¶</a></h3>
434 <p><strong>Usage</strong>:</p>
435 <table border="1" class="docutils">
436 <colgroup>
437 <col width="75%" />
438 <col width="25%" />
439 </colgroup>
440 <tbody valign="top">
441 <tr class="row-odd"><td><strong>Message Type</strong></td>
442 <td>Normal</td>
443 </tr>
444 <tr class="row-even"><td><strong>Secure Queue Only?</strong></td>
445 <td>No</td>
446 </tr>
447 </tbody>
448 </table>
449 </div>
450 <div class="section" id="id2">
451 <h3>TISCI Message ID<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
452 <p><p><code class="docutils literal"><span class="pre">TISCI_MSG_CHANGE_FWL_OWNER</span>          <span class="pre">(0x9002U)</span></code></p>
453 <p>Message to change firewall region owner</p>
454 </p>
455 <p><p><strong>struct tisci_msg_fwl_change_owner_info_req</strong></p>
456 <p>Request for a change owner operation</p>
457 <table border="1" class="docutils">
458 <colgroup>
459 <col width="17%" />
460 <col width="28%" />
461 <col width="55%" />
462 </colgroup>
463 <thead valign="bottom">
464 <tr class="row-odd"><th class="head">Parameter</th>
465 <th class="head">Type</th>
466 <th class="head">Description</th>
467 </tr>
468 </thead>
469 <tbody valign="top">
470 <tr class="row-even"><td>hdr</td>
471 <td>struct tisci_header</td>
472 <td>Common TI-SCI header</td>
473 </tr>
474 <tr class="row-odd"><td>fwl_id</td>
475 <td>u16</td>
476 <td>firewall ID in question</td>
477 </tr>
478 <tr class="row-even"><td>region</td>
479 <td>u16</td>
480 <td>Region or channel number if applicable</td>
481 </tr>
482 <tr class="row-odd"><td>owner_index</td>
483 <td>u8</td>
484 <td>New owner index to transfer ownership to</td>
485 </tr>
486 </tbody>
487 </table>
488 </p>
489 <p><p><strong>struct tisci_msg_fwl_change_owner_info_resp</strong></p>
490 <p>Response for a change owner operation</p>
491 <table border="1" class="docutils">
492 <colgroup>
493 <col width="12%" />
494 <col width="11%" />
495 <col width="77%" />
496 </colgroup>
497 <thead valign="bottom">
498 <tr class="row-odd"><th class="head">Parameter</th>
499 <th class="head">Type</th>
500 <th class="head">Description</th>
501 </tr>
502 </thead>
503 <tbody valign="top">
504 <tr class="row-even"><td>hdr</td>
505 <td>struct tisci_header</td>
506 <td>Common TI-SCI header ACK response indicates that change owner operation is succesful. NACK response indicates that change owner operation failed.</td>
507 </tr>
508 <tr class="row-odd"><td>fwl_id</td>
509 <td>u16</td>
510 <td>firewall ID specified in request</td>
511 </tr>
512 <tr class="row-even"><td>region</td>
513 <td>u16</td>
514 <td>Region or channel number specified in request</td>
515 </tr>
516 <tr class="row-odd"><td>owner_index</td>
517 <td>u8</td>
518 <td>owner index specified in request</td>
519 </tr>
520 <tr class="row-even"><td>owner_privid</td>
521 <td>u8</td>
522 <td>new owner priv-ID returned by DMSC. This field is currently initialized to zero by DMSC.</td>
523 </tr>
524 <tr class="row-odd"><td>owner_permission_bits</td>
525 <td>u16</td>
526 <td>new owner permission bits returned by DMSC. This field is currently initialized to zero by DMSC.</td>
527 </tr>
528 </tbody>
529 </table>
530 </p>
531 </div>
532 </div>
533 </div>
536 </div>
537 </div>
538 <footer>
540 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
542 <a href="sec_ap_data_transfer.html" class="btn btn-neutral float-right" title="Secure AP Command Interface" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
545 <a href="PROC_BOOT.html" class="btn btn-neutral" title="Processor Boot Management TISCI Description" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
547 </div>
550 <hr/>
552 <div role="contentinfo">
553 <p>
554 <a href="http://www.ti.com/corp/docs/legal/copyright.shtml">© Copyright 2016-2020</a>, Texas Instruments Incorporated. All rights reserved. <br>
555 <a href="http://www.ti.com/corp/docs/legal/trademark/trademrk.htm">Trademarks</a> | <a href="http://www.ti.com/corp/docs/legal/privacy.shtml">Privacy policy</a> | <a href="http://www.ti.com/corp/docs/legal/termsofuse.shtml">Terms of use</a> | <a href="http://www.ti.com/lsds/ti/legal/termsofsale.page">Terms of sale</a>
557 </p>
558 </div>
560 </footer>
562 </div>
563 </div>
565 </section>
567 </div>
573 <script type="text/javascript">
574 var DOCUMENTATION_OPTIONS = {
575 URL_ROOT:'../../',
576 VERSION:'',
577 COLLAPSE_INDEX:false,
578 FILE_SUFFIX:'.html',
579 HAS_SOURCE: true
580 };
581 </script>
582 <script type="text/javascript" src="../../_static/jquery.js"></script>
583 <script type="text/javascript" src="../../_static/underscore.js"></script>
584 <script type="text/javascript" src="../../_static/doctools.js"></script>
585 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
587 <script src="http://www.ti.com/assets/js/headerfooter/analytics.js" type="text/javascript" charset="utf-8"></script>
593 <script type="text/javascript" src="../../_static/js/theme.js"></script>
598 <script type="text/javascript">
599 jQuery(function () {
600 SphinxRtdTheme.StickyNav.enable();
601 });
603 var menuHeight = window.innerHeight;
605 var contentOffset = $(".wy-nav-content-wrap").offset();
606 var contentHeight = $(".wy-nav-content-wrap").height();
607 var contentBottom = contentOffset.top + contentHeight;
609 function setNavbarTop() {
610 var scrollTop = $(window).scrollTop();
611 var maxTop = scrollTop + menuHeight;
613 // If past the header
614 if (scrollTop > contentOffset.top && maxTop < contentBottom) {
615 stickyTop = scrollTop - contentOffset.top;
616 } else if (maxTop > contentBottom) {
617 stickyTop = scrollTop - contentOffset.top - (maxTop - contentBottom);
618 } else {
619 stickyTop = 0;
620 }
622 $(".wy-nav-side").css("top", stickyTop);
623 }
625 $(document).ready(function() {
626 setNavbarTop();
627 $(window).scroll(function () {
628 setNavbarTop();
629 });
631 $('body').on("mousewheel", function () {
632 // Remove default behavior
633 event.preventDefault();
634 // Scroll without smoothing
635 var wheelDelta = event.wheelDelta;
636 var currentScrollPosition = window.pageYOffset;
637 window.scrollTo(0, currentScrollPosition - wheelDelta);
638 });
639 });
640 </script>
643 </body>
644 </html>